Lottery Post Journal

Lottery seminar

Bird posted information about an upcoming seminar in the Mystical forum, so many of you may have missed it.

He is giving two seminars on September 3rd, and there are only 30 slots available for each seminar.  So if you are interesting in attending, don't wait to signup.

You need to PM Bird to signup.

Support lifecycle for Microsoft products

Here's an interesting web site I found today.  It describes how Microsoft supports its products over time.

Microsoft Support Lifecycle

At the bottom there are links to various listings for each and every product, showing their current status.

For example, here's is the complete product list:

So, you can see things like the retirement of Windows 98.

Since just about everyone owns a Microsoft product, it is good to know that there is a place to find the up-to-date info on product retirement.

Ultimate Developer and Power Users Tool List

I wish I had seen this blog entry from Scott Hanselman a long time ago.

This list contains some of the coolest developer tools.  I think the struggle will be to keep myself from installing too many of them.

Scott Hanselman's Ultimate Developer and Power Users Tool List

The first one I installed is just incredible — Notepad++.  It is a replacement for the Notepad program that comes with Windows, and does every possible thing you'd ever want to do with text files — in a tabbed interface.  Developers will especially like the colored text, which can be changed to something like 3 dozen different language varieties.

After installing the new Notepad++ program, it's pretty easy to replace the existing Windows Notepad.  First go to c:\windows\system32 and rename notepad.exe to something like notepad_old.exe.  Then, in the c:\program files\notepad++ folder, create and then run the following batch file:

copy /-y "notepad++.exe" C:\WINDOWS\System32\dllcache\notepad.exe
copy /-y "notepad++.exe" C:\WINDOWS\ServicePackFiles\i386\notepad.exe
copy /-y "notepad++.exe" C:\WINDOWS\System32\notepad.exe
copy /-y "notepad++.exe" C:\WINDOWS\notepad.exe

Voilà! Now every time you open a .TXT file, or select "View Source" from IE it opens in Notepad++.

By the way, only people who are, say, intermediate computer users or better, should attempt this. 

My personal reaction to the new ranking and graphics

Well, it's been almost a day since I posted the new ranking system, as well as all the new graphics.

My feeling is ...WOW.

I had no idea that I would have such an emotional feeling attached to the new ratings and graphics.  For me, it's as if the forums are brand-new again, with lots of new things to discover again.

Does that sound wacky?  I hope not.

Normally when I post something new, like a new feature or page, it's a feeling of relief that another weight (out of a long list of weights) has been lifted, and I can move on to the next thing.  With this, it's completely different.  I actually find myself sitting back, paging through the forums, just to gaze at everything.

I am astounded at just how "right" the ratings have turned out.  I think maybe the good feeling I get looking at the ratings comes from the fact that it was something I brainstormed myself, and so when when I put it in place and it worked beautifully, there was some kind of visual confirmation of, "now that was a good idea".

With something like a forum web site, there are something like 10 billion web sites out there, so almost every idea has already been thought of by somebody.  But there are a few times (like this) where I think I've actually come up with something new.

Is this a nauseating post?  Well, it's my blog, so I'm allowed! Big Grin

I think one of the things that makes this ratings system work, where it may not work on most other forums, is the fact that Lottery Post has been around so long, and has so much data and content.  For a site that has not been around so long, or doesn't have many posts or members, it would not be able to create a nice distribution of ratings.

There are a few other adjustments that I'll make to the appearance of the member "badges" on the left side if posts, but nothing too substantial.

At last, a new feature that I can truly enjoy myself.  Life can be good sometimes.

More Lottery Post Site Changes

I made some significant changes tonight that I've been working on for about a week.

  • Added a Permalink to every forum post in a topic, so people can link directly to a post. The permalink can be obtained by clicking the small icon to the left of the post date/time.  (Definition of Permalink.)
  • Added completely new member rankings system, based upon consistency of posting to the forums.  (Blog post describing the new ratings system.)  Long-time participation combined with consistent daily pariticpation yields the highest rankings.
  • Rankings are re-evaluated by the Lottery Post system automatically every night, and every member who was promoted during the night will receive a PM to let them know.
  • Removed 1-5 star display that used to show the member level, and replaced with graphic badges showing the member level.

I designed the new membership badges myself.  I'm not really an artist-type, so they went through several iterations and different ideas before I came up with that design.  The "glossyness" of the badges was an idea I came up with after seeing some of the new Windows Vista UI.  Every time I need to come up with new graphics, I'll probably add them with Vista's new look & feel in mind.

I used Adobe Photoshop to create the images, for those who care about that kind of stuff.

I hope everyone enjoys the new changes, and gets value out of rankings that are a huge improvement over raw post count.  It won't be perfect, but I really like it.

Things you would like to say at work

  1. I can see your point, but you're still full of crap.
  2. I don't know what your problem is, but I'll bet it's hard to pronouce.
  3. I see you've set aside this special time to humiliate yourself in public.
  4. I'll try being nicer if you'll try being smarter.
  5. Ahh...I see the screw-up fairy has visited us again.
  6. I like you. You remind me of when I was young and stupid.
  7. I'm already visualizing the duct tape over your mouth.
  8. The fact that no one understands you doesn't mean you're an artist.
  9. What am I? Flypaper for freaks!?
  10. And your cry-baby whiny-assed opinion would be...?
  11. This isn't an office. It's Hell with fluorescent lighting.
  12. If I throw a stick, will you leave?
  13. Whatever kind of look you were going for, you missed.
  14. Can I trade this job for what's behind door #1?
  15. Chaos, panic, & disorder — my work here is done.

New IE7 RC1 Available

The latest version of Microsoft Internet Explorer version 7 is now available.  It is called "Release Candidate 1", or RC1.

Release Candidates are created when the feature set for the product is complete, and all that's normally left is bug fixes.

I am writing this right now using IE7 RC1, and everything appears to be working quite well on Lottery Post.  I really like the new IE.  It's much better than Firefox, IMHO.

New Member Ratings

In the near future I will be adding a new member classification system that distinguishes members based upon their length (years) of steady commitment to posting and sharing at Lottery Post.

Actually, I started developing this as a way to cut down on the number of people who register a membership for the sole purpose of spamming the boards.  I was looking at identifying new members based on the number of days in which they come back to Lottery Post and post new content to the forums.

That's a lot different from the number of posts, and a very important concept.  Someone who shows the commitment to come back several times and post in the forums show that they are most likely interested in lotteries in general, rather than just posting a quantity of messages in order to reach a certain level and gain access to what they need.

Therefore, a "New Member" will not become a "Rookie" until they have posted for a certain number of days.  (For example, they post a message on August 1st, and then wait another month and post a message on September 1st.  That counts as 2 days, not 31.)

That got me thinking about how the concept of posting days, in comparison to the overall number of days that Lottery Post has been around (somewhere around 2,300 days at this point), would give a nice unbiased indication of how consistent someone has been in sharing ideas, numbers, discussion, etc., without regard to number of posts or membership level.  (I refer to the number of days that Lottery Post has been around as Lottery Post days.)

I refer to the calculated ratio (number of posting days divided by the number of Lottery Post days) as the member's rating.

If a person posted every single day since the site was launched (or close to it) they would have a rating of 100.  If they posted a handful of days or less they would have a rating of zero (0).

This is a new idea that I've come up with.  I have never seen another web site use this kind of rating, so this is some real out-of-the-box stuff.

It is my feeling that someone who has a high rating is by extension someone who has developed a very deep knowledge base of lotteries in general, as they would have been exposed to literally years of every type of information about the lottery, and in fact have participated to a very high extent, regardless of whatever their opinions may be, or whatever games they enjoy playing.  If you were to mention any particular lottery topic to a member with a very high rating, it is very likely they will have a good deal of knowledge about it, and would be able to help others to understand the topic.

In short, such people would be excellent resources on Lottery Post, and that is exactly what a rating system should capture!  Hence, I would consider this new rating system to be a breakthrough concept for identifying important resources on Lottery Post.

Will there be people who receive too high a rating?  Maybe.

Will there be people who receive too low a rating?  Perhaps.

Will there be people who agree with the ratings system?  Yes.

Will there be people who disagree with the rating system?  Yes. 

Will some people be resentful of their rating?  Almost definitely.

Despite whatever flaws will exist (nothing is perfect) I believe the rating system gives a much, much better measure of lifetime achievement/participation than a raw post count.

Plus, the fact that people cannot manipulate post-count ratings (because it is based upon days, rather than quantity of posts) means that hopefully people will not feel the need to post higher quantities to either achieve a higher "top poster" rating, or to keep their existing rating.

To date, I have built most of the back-end database code required to generate the ratings.  I have also built new graphics and terms for the various rating categories.  I still have a bunch of inter-connecting code to write, but hopefully it won't take too much longer.

Undoubtedly, I will continue to fine-tune the rating system over time.

As always, I welcome feedback, whether it is positive or negative.  I cannot promise that I will agree, but I promise that I will listen to, and seriously consider, all input.

CSS Changes for IE7

For developers: great blog post by the IE7 team detailing all of the CSS changes and enhancements in the new IE7.

By the way, from what I can gather the latest version of IE7 -- RC1 -- will be released soon, maybe even tomorrow.  (RC1 stands for Release Candidate 1.)

Rating of Topics

I'm sure lots of people have noticed the 5-star rating control at the top of each topic.  Lots of people have been rating various threads, which is just great.

So far the ratings are only shown at the top of the topic, but in the future they will also be shown on the forum page (the page that shows all the posts in a forum), as well as the Active Topics page.  You'll be able to sort by rating, among other things.

The other thing I will be adding is that people will be able to click on the rating and see exactly who rated each topic, and what rating they gave.  That will hopefully put peer pressure on people to not abuse the rating system by arbitrarily giving bad ratings just because they're not feeling happy that day.  There is absolutely nothing wrong with people giving ratings of "poor", but at the same time we all want a system in which the ratings are honest and helpful -- like ratings of books at

I suppose this is also a way of putting people on notice that I will be opening up the ability to see who posted each rating, so please only provide ratings that you can stand behind.

A Joke!

How  do you get a sweet little 80-year-old lady to say the F-word?

Get  another sweet little 80-year-old lady to yell *BINGO*!

Site transformation update

Things have really been stabilizing on Lottery Post, after a period of a 2-3 of weeks of constant changes.  The architectural changes to the web site are dramatic, and include code and concepts that I have been working on for about 6 months now.

I am happy and relieved that it appears those efforts have been successful, particularly with regard to improving the general performance of the site.  Pages that took close to a second to generate on the server are now taking a few hundredths of a second. 

And the improvements have only just begun.  I have certainly gotten over the biggest hurdle of implementing a completely new thread page -- the most complicated page on the site -- as well as new pages for posting new topics and replies, but there are many more pages to convert.  As each page is converted over to the new technology the performance of the entire web site is improved, as some of the strain of the older pages is lifted.

Transforming a page from the old technology (classic ASP code) to the new technology (ASP.NET 2.0 with Atlas technology) involves completely rebuilding the page from the ground up, so it does unfortunately take longer than I would like.  The positive aspect of it is that because I have to rebuild the entire page, it gives me an opportunity to implement changes to the page that I've intended to do for a while, but didn't previously have the opportunity to address.

Thus, every time a new page is converted, the performance of the site improves, and there are normally functional improvements as well.  Plus, with the pages rebuilt in ASP.NET, they become easier for me to change later on, as it is a much more capable and extensible programming language.

One of the things that I have been working on this week is the RSS feeds.  I'm not sure how many people have been taking advantage of the RSS feeds, but if this is the first time you've heard of "an RSS feed", then you owe it to yourself to find out about it.  Hmm..... I feel another blog post coming.  I think I'll save this topic for another post.

Much, much faster

Anyone else noticing the big performance boost since late last night?

I have been trying to get an advanced caching technique to work, and finally figured out what I needed to change last night.  Good thing I didn't give up at 1:00 AM when I started getting tired!

Basically the way it works is that I set up a sort of message conduit, called a SQL Dependency Cache, between the SQL Server 2005 database and the ASP.NET 2.0 server.  The web server notifies the database that some of the important queries that are made often should be monitored, and new values retrieved only if a change has been made to the affected row(s) in the database.  Then the web server stores the results of the latest query in memory (in "cache").

So the database watches those rows, and if a change is made, it sends a message to the web server, notifying it that what it has in cache for those rows is no longer valid, so the next time the web server needs that data, it fetches the data from the database rather than the cache.  And then a new database monitor is placed on those rows until the next time it is changed again, and so on.

An example of a data that is cached would be information about a particular member, such as their username, profile info, number of posts made, board settings, etc.  It is accessed every single time a new page is presented, so it's obviously a very good candidate for caching.  An example of changed data would be if the member posted a new message to the forums, so their number of posts counter would be incremented by one.  Once that happens, the old data stored on the web server for that person is no longer valid, so the next time the data is needed it is gotten from the database instead of the cache.

It is actually as complicated as it sounds, which is why this kind of stuff can be so difficult to implement, and why it's a big deal once it finally works.  It's also very cool, from my perspective, to see the huge direct impact it has on everything working much faster.

New 'Latest Blogger' View

I have changed the Lottery Post home page section that displays the latest blog entries.

That section was intended to point people to the lastest blogs that have been updated, to provide visibility for blog authors to make people aware of their posts.

What has happened, that I did not intend, is when a few people do a mass-posting of several entries to their blog, that home page section becomes pretty useless, because only a couple of blogs are shown, as the others are pushed off the page.

So I've renamed the section to "Latest Bloggers" and changed the way it works.  Now, instead of just showing the last 15 blog entries, it shows the most recent blog entry for the 15 latest bloggers (blog authors).

This will keep new entries on the home page a little longer, and hopefully encourage more people to post to their blog, because it will make sure they don't get lost under people who post many entries.

Those who post a lot of entries:  keep posting away!

New ASP.NET technique for hybrid site

I finally finished the new Active Users page at Lottery Post, which gives a much more accurate count than the old page.  There are a couple of entries in the Change Log that talk about some of the issues I faced in rebuilding it.

As people reading this may be aware, I have been slowly transforming Lottery Post from a classic ASP site to a site based upon ASP.NET 2.0.  Although it is possible to run a "hybrid site" consisting of both technologies, it can be very difficult to manage, especially with a complex and sophisticated site like Lottery Post.

One of the biggest issues I face is that even though the classic ASP and ASP.NET pages run in the same web site, they do not share the same session object.  Therefore, the ASP.NET sessions tracker is not "aware" of page clicks on classic ASP pages (and vice-versa).

This issue has several deeper ramifications for Lottery Post, centering mainly around usability issues, but the Active Users page is the clearest way to demonstrate the need for a solution.

There is very little information out there on running hybrid applications using classic ASP and ASP.NET, and most of what I've seen requires complex custom code using SQL server to store session state, etc.  Over the past several months I've been mulling this around, trying to come up something more elegant.

I finally developed a very cool technique that gets the two environments talking to each other.  I haven't seen this technique used elsewhere, so I guess I'm the originator of it, at least for this particular issue.

In ASP.NET I created a special page which generates a 1-pixel image and writes the image to the output stream.  That special page also looks at the Request object's QueryString to take values passed into the page to do whatever manipulation is necessary in ASP.NET.  It could also look at the values in the cookie, since the cookie is passed to the server during an image request, but I didn't need to use the cookie in this case.

I'll refer to this special page as an "image-page".

In the classic ASP pages, I added an <img /> tag to every page, which uses the image-page URL in the src attribute, and passes a couple of values in the QueryString.

So, in effect, every classic ASP page is "calling home" to ASP.NET and sending whatever values it needs.  The 1-pixel image in every classic ASP is invisible to the user.

One other important detail is that in the QueryString of the <img /> tag I include a quasi-random number at the end, so that the classic ASP page does not use a cached version of the image-page.  (It will always retrieve a fresh copy from the server, because the URL is different every time.)  The added number I create is based upon the DateSerial() number, plus the Timer() number.  I prefer not to use Rnd() because I don't like the idea that Rnd() creates patterns of numbers, rather than numbers that are guaranteed to be different every time.

This is the framework of the ASP.NET page that captures the classic ASP session and returns a 1-pixel image.

<%@ Page ContentType="image/gif" %>
<%@ Import namespace="System.Drawing" %>
<%@ Import namespace="System.Drawing.Imaging" %>
<script runat="server">
     Sub Page_PreRender(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.PreRender
          ' Look at QueryString, processing... 
           Dim objBitmap As New Bitmap(objPage.MapPath("space.gif"))
          objBitmap.Save(objPage.Response.OutputStream, ImageFormat.Gif)
     End Sub