There's nothing like a fresh batch of cinnamon rolls to make any day a great one:

Add some icing (made with powdered sugar, vanilla, and milk), and you've got one of the best foods of all time.
There's nothing like a fresh batch of cinnamon rolls to make any day a great one:
Add some icing (made with powdered sugar, vanilla, and milk), and you've got one of the best foods of all time.
A few days ago, I installed "Serious Sam: The Second Encounter," a game I haven't played for many years. Released back in 2002, SS:TSE is an incredibly fun first person shooter. Though the graphics are dated, the gameplay is as fresh and exciting as ever. If anything, playing this game makes me even more excited for the Serious Sam HD remake that's coming soon.
What really surprises me, however, is how much I remember about the game. It's astonishing how, after all these years of having not played Serious Sam, I remember the location of nearly every secret area. I can remember areas where enemies pop up unexpectedly (so I know to be on my guard), and I remember most of the various ammo and health drop locations.
If I were to load up Wolfenstein 3D, I could probably take you to 80% of the secrets in the first chapter of that game. The same thing holds true for Doom, Duke Nukem 3D, and countless other titles that I spent time with when I was younger. Have I really wasted that many brain cells to remember stupid things like this?
It is being reporting that Firefox will replace menus with an Office-style ribbon interface. Personally, I couldn't be more against this. I'm no fan of the Office ribbon (it takes up way too much screen real estate and looks clunky), and I fail to see how this interface will make things better for the user. Mozilla is known for screwing around with the GUI, however, so I won't be surprised when something like this shows up. I can't imagine how this change will affect many extensions out there, like Googlebar Lite, that add UI elements.
What do you think about the Office ribbon interface? And what do you think of this decision? Thankfully for me, someone will undoubtedly come out with a theme to fix this stupid design decision. Consider me signed up for it already!
Has anyone seen the following bug with the Amazon wish list system? When I purchase something from my list, the purchased item is no longer automatically removed. Instead, it reports a "quantity received" value, and apparently must be manually removed from the list. This is highly annoying, and applying the "unpurchased" filter doesn't affect the purchased item's visibility.
Am I the only one seeing this problem?
For this month's useful tool recommendation, I'll be focusing on KeePass, an open-source password manager. Hopefully, everyone has already heard of this application and uses it on a daily basis. KeePass makes it easy for you to manage all of your various passwords in one location, and provides a host of security features for keeping those passwords safe. I personally use the older 1.x line of this tool, but a newer 2.x line has recently been released (and is no longer in beta, so it should be stable and safe to use).
KeePass has a number of features that make it instantly attractive. First, and foremost, it's an incredibly secure application. Your passwords are stored using either the AES or Twofish encryption standards, both of which are rock solid. The 2.x line of KeePass also features some in-memory protection of the various fields, helping to thwart keyloggers and the like.
Another great feature is the password generator, which is incredibly useful for creating very strong passwords. I've used this generator in a number of ways: to create WPA keys for routers, for TrueCrypt file containers, FTP accounts, etc. The password generator offers a host of options on how to format the password you desire, so you can easily fit into any password rule set.
Perhaps the most useful all-around feature is portability. KeePass can be run from a USB key, making it easy to carry all of your passwords around with you. This has gotten me out of some sticky situations at work where I quickly needed a password, and didn't know it off the top of my head.
If you've got a ton of passwords to remember (and who doesn't?), I heartily recommend KeePass. It's a tool no one should be without.
At work, we are being forced to Lotus Notes 8 by the end of the year. I recently rebuilt my laptop, and performed this upgrade at the same time. Since doing this, I've learned a few things that I thought I would share, seeing as Lotus Notes documentation on the web is very poor.
Apparently, copying your data file from one Notes installation to another isn't a good idea (more specifically, when changing Notes versions). However, there are a few things worth migrating so you don't lose all of your previous data. Here's a short list of things I found worth copying:
There are other files worth copying, so I hear, but these were the only ones I cared about.
One of the more annoying features of Lotus Notes 8 is a new "Office Add-in" that will appear in all of your Microsoft Office applications. It's a small toolbar containing three icons and, if you turn it off, it will reappear. You cannot uninstall this feature, but happily, you can disable it. Here's how:
regsvr32 /u officeaddin.dll
This will deregister the plugin DLL, preventing the toolbar from showing up in your Office applications.
I just found out that Intuit will acquire Mint for $170 million. Though I'm not surprised to hear about this, I'm a little disappointed. Intuit is the company that owns Quicken, so there are now fewer players in this game (which is never good). Time will also tell whether or not the service gets any better or worse as a result of this acquisition. The recent updates to Mint were spectacular, so I'm hoping their momentum continues. Being sucked into a large company, however, is never an easy transition. According to the Mint CEO, Mint will remain a free service, though I can imagine Intuit charging users for a "premium" version of this tool in the future. Only time will tell where this goes.
A recent newspaper review for the new computer animated movie 9 warned that the movie isn't necessarily kid-friendly, and that young children will most likely be scared from the post apocalyptic setting. Shouldn't the PG-13 rating indicate that kids under 13 probably shouldn't be watching it anyway? Why does the reviewer jump to the conclusion that, because it's animated, the movie is for kids? It frustrates me that Americans think animation belongs solely to children. The medium should be taken way more seriously than it is. Foreign films like Princess Mononoke (another PG-13 film) are proof that animation can be used successfully for adult topics. Someone out there needs to buck the current trend and develop an animated movie purely for adults; maybe something that's rated R. Though I can only imagine all the angry parents complaining that the movie was "too adult" for their kids.
Why can't Americans just grow up?
I'm going to start a new occasional series of articles covering helpful software tools that I find. To start out this series, I'm going to focus today on FileMon from Sysinternals (now owned by Microsoft). Several of the tools I'll be profiling in the coming weeks are from SysInternals, so I recommend checking them out if you're unfamiliar with them.
FileMon allows you to see file system activity on your computer in real time. It helped me to track down the slow startup bug in Firefox, and it has also helped me track down other issues (particularly during various application startup periods). Wondering why your disk is randomly thrashing about for no apparent reason? FileMon will tell you why! After firing up this tool for the first time, I was simply amazed at how often the file system got touched in one way or another.
It should be noted that FileMon is now a legacy tool. A newer tool, by the name of Process Monitor has replaced FileMon. Although I haven't yet used it, Process Monitor looks very promising. Not only does it allow you to view file system activity, but you can also see Windows registry activity, as well as process, thread, and DLL activity, all in real time. These are very handy tools that every software developer or power computer user should know about. I'll highlight more like this in the coming weeks.
I accidentally blew away the .htaccess file used here at Born Geek. If you spot any links or pages that don't resolve properly, please let me know.
Before we get to the meat of this article, here's a quick introductory story. The next release of Paper Plus will only allow one instance of the application to run at a time. One strange bug I ran into during the testing phase of this new feature, was the case where the application was minimized to the system tray. If a previous instance is already running (and minimized), I wanted the action of trying to start a new instance to restore the old one. For a number of reasons which I won't go into, I couldn't get the level of control I needed to restore things properly. So, to get things working, I turned to user defined messages which, happily, solved my problem. Here's a quick guide to getting custom messages up and running in a Visual C++ application.
This is straightforward, but you'll need to make sure your definition appears in the appropriate place. I put mine in stdafx.h, which is included by nearly every file in the project.
#define WM_MYCUSTOMMESSAGE WM_USER+1
Next, your custom message needs to be added to the appropriate message map. I added mine to the message map down in my CFrameWnd
derived class. Here's how the entry looks in my case:
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
...
ON_MESSAGE(WM_MYCUSTOMMESSAGE, MyCustomCallback)
...
END_MESSAGE_MAP()
Your callback function declaration must adhere to the appropriate form, as shown below:
LRESULT MyCustomCallback(WPARAM wParam, LPARAM lParam);
Custom message callbacks must always return an LRESULT
, and must accept two parameters: a WPARAM
and an LPARAM
(down under the covers, both are simply pointers of varying types).
Once you've got the declaration in place, it's time for the definition:
LRESULT CMainFrame::MyCustomCallback(WPARAM wParam, LPARAM lParam)
{
// Do something clever here
return 0; // Make sure to return some value
}
Now that we've got our custom message callback installed, we need to post our new message in the appropriate place. I decided to use the SendMessageTimeout function, based on some code I saw which used this function to prevent the application from hanging. Here's a variant of the code I used:
DWORD_PTR dwResult = 0;
// The hWnd parameter below is a handle to the window this message
// should be posted to. Setting this up is not shown, in order to keep
// this article as short as possible.
SendMessageTimeout(hWnd, WM_MYCUSTOMMESSAGE, 0, 0,
SMTO_ABORTIFHUNG, 5000, &dwResult);
And that's it! Being able to post your own messages can help you out of some sticky situations, and lets you take control of your application in some interesting new ways.
I have yet to check these out, but it looks like the folks over at Mint.com (which I recently wrote about) have made things easier in various places around the site. The biggest improvement for me is that you can now view a detailed time line of your net income, with way more stats than before. I am very excited about this new feature, and am looking forward to checking it out this evening.
Update: The new updates to Mint are outstanding! Everything I've wanted in the tool, plus more, is here. An already great tool has just gotten even better.
I got the following catalog in the mail today, addressed to me:
I am neither female, nor am I African-American, nor do I plan on becoming either at any point in my life. Any ideas on why I received this?
The Register recently had an an interesting article on GFS2: the replacement for the Google File System. It offers insight on the problems Google is facing with the aging GFS. In today's world of video streaming, GMail account checking, and more, the GFS model doesn't hold up as it once did. According to the article, the new Caffeine search engine that Google is rolling out supposedly uses this new back end, resulting in faster search results. It should be interesting to see what other benefits come our way as Google tinkers with their engine.
Gabe Newell, from Valve software, recently conducted a focus group session with deaf gamers. Three videos are available of this event: Part One, Part Two, and Part Three. Note that the audio quality is, ironically, pretty bad in each video.
One of the most interesting tidbits from these videos involves Valve's desire to introduce a deaf character into a future game (possibly in the Half Life universe). An idea is floated where Alyx has taught Dog sign language, based on a past crush she had with a deaf individual. In essence, it would be an excuse for Valve to develop the necessary technology for characters to sign. Pretty cool.
I think it's great that Valve is doing this. In the accessibility world, blind people get nearly all of the focus. For a gaming company to branch out into this realm is really quite remarkable. I'm looking forward to see how Valve implements this new technology, and I'm excited to see where the Half Life story goes with this (assuming, of course, that Half Life is the intended universe for this work).
Way back in January, I bit the bullet and signed up for an account at Mint.com, a free, web-based personal finance tool. Moving into a new house had brought with it a substantial amount of financial responsibility, and I wanted an easy way to track where my money was going. Now that I've been using it for 7 months or so, I thought I'd post a few thoughts on the service.
Before I get too far into my description of the service, let me talk about security (which was my number one concern when I joined). When you sign up for an account at Mint.com, you give them your personal login credentials for things like your bank account, credit card, mortgage, etc. I'll give you a moment to recover from your heart attack. Now that you're back, let's go over how Mint keeps that information safe. First of all, Mint collects no personally identifying information. When you sign up, all they ask for is:
That's it. No name, no social security number, no address; none of that. Second, and most importantly in my opinion, is the fact that Mint is a read-only service. You cannot pay bills via Mint, you cannot transfer money via Mint, and you cannot withdraw money via Mint. The service is intended to be used as an organization and analyzing tool.
Third, Mint stores your usernames and passwords separately from your financial data. In other words, your credentials are stored on separate physical servers. All of this is handled with the same security used by banks for electronic transactions (in fact, the software being used behind the scenes is, in many cases, the exact same software being used by banks on a daily basis). Even though you're providing login information, I like the fact that, at any time, I can change my login info to essentially lock out the Mint service. If Mint ever gets hacked, it's just a matter of changing my passwords at my various financial institutions to keep any "bad guys" out.
The security page at Mint.com has lots more information, along with a video from the CEO describing how their security works in more detail. I recommend checking it out.
For most folks, the meat and potatoes of Mint.com comes in its budgeting and cash flow tools. Mint allows you to set a budget for various categories each month, and it will even modify your budget over time as it analyzes your spending habits (which I think is a great feature). I only casually use budgets, so I'm going to gloss over that part of the site for now.
One of my favorite parts of Mint is the cash flow analysis graph. Unfortunately, this graph is limited to six months at a time (I wish I could specify a larger duration, such as a year). I'm hoping that Mint will improve this functionality, but for now I can live with it. Here's a snapshot of my cash flow graph as of last night (the values have been censored to protect the innocent):
With this handy graph, I can see whether or not I'm making money each month. As you can see, March was a great month for me income-wise, thanks to a first-time home buyer's loan, and a sizable return on my taxes. The following month was a net loss since I made an extra mortgage payment (again, thanks to that sizable income in March). And each month since that time, I've been saving more than I spend (August is in the red, but I haven't been paid yet). When I log into my Mint account, this is the first graph I look at and the one I find most interesting.
The other most useful view to me is the Transactions view. It lists all of the transactions in all of your accounts: withdrawals from ATMs, purchases you've made on your credit cards, interest earned in your bank accounts, etc. In this view you can categorize various purchases and filter the data a number of ways. Rules can be created to automatically rename and categorize recurring transactions. Think of it as a ledger specifying each and every transaction that happens. I personally use this view to keep track of whether or not I've made certain payments, and to keep track of how much interest I'm earning each month in my bank accounts.
Mint makes it easy to set up alerts for various things. I have several alerts set up to watch for unusual spending. For example, whenever a very large transaction comes through (> $1000, for example), I can get an email or text message. This capability is very useful for keeping an eye on your accounts, allowing you to quickly respond to transactions that you may not have made. I consider this an extra safety net in watching for stolen credit card information, a hacked bank account, etc. You can also elect to get weekly summary emails, making it easy to keep tabs on your funds without even having to log in.
Spending trends is a great way to see how your money is divided up each month. Here's a snapshot of my spending trends for this month (it's admittedly not as exciting as a full month's worth of data would be):
I pay the vast majority of my bills at the beginning of the month, which accounts for the large chunk of money being sent to that category so far. Usually, my mortgage payment (filed under the 'Home' category) is the largest chunk, but I have yet to make that payment this month. As I said, the more data you have for a month, and the more categories are represented, the more interesting this pie chart becomes. It's cool to see where the bulk of your expenses goes each month.
It's also worth pointing out that the graph is interactive. Click a slice of the pie, and the chart will zoom into that slice, and break down how that slice is, itself, broken up. Very slick.
One other spending view that Mint offers is the "SpendSpace" view. I rarely use this, but it's occasionally fun to look at. Here is my grocery spending over the past six months as compared to other folks in North Carolina:
As you can see, I spend way less than the average family for groceries (which makes sense, seeing as I'm only feeding myself). The missing data for July is odd; either the data has yet to be loaded up, or no one in North Carolina bought groceries in July. I'm guessing it's the latter. ;-)
I only have a few gripes with Mint. Every so often, Mint will have trouble connecting to my bank accounts. This can occasionally become an annoyance, especially when the connection failures last for a few days. All of the problems eventually clear up, however, and the service catches up with all the transactions it missed in the mean time.
There are ways the tool could be improved. I wish the cash flow view allowed you to view longer periods of time, and I've seen people calling for a cash flow predictor, which is an interesting idea. The folks at Mint seem willing to listen to the public, which is great. Hopefully some of these improvements will show up at some point in the future.
Overall, I'm incredibly pleased with Mint. There are plenty of other features that I haven't listed here, many of which you may find useful (learn more at the Mint features page). Signing up for an account is free and easy, as long as you're willing to provide your financial login information.
Jeffrey Zeldman has written an interesting article on URL shortening and, more specifically, how he rolled his own using a plugin for WordPress. He also points to an excellent article written by Joshua Schachter, describing the benefits and pitfalls of link shortening utilities. Both articles are worthy reads. I suggest reading Joshua's article before Jeffrey's.
Do you use URL shortening services? I mainly use bit.ly at Twitter, mostly because that's what everyone else seemed to use. Have you found some services to be better than others?
When I moved into my house last year, I bought an LG front-load washing machine. Having never owned or operated a front-load washer, I didn't quite know what to expect. For those who don't already know, front-load washing machines typically spin clothes at a very high rate of speed (mine tops out at 1050 RPM), removing a large amount of excess water in the process. This high speed spin process usually results in substantial vibration. The problem is compounded when the washer is located in an upstairs room (as mine is), and not on a solid, ground level floor (I've read that concrete floors are ideal).
Not knowing about this at the time, I was really surprised to see that my entire house vibrated when I washed a load of laundry. The shaking and noise got bad enough that I decided to look into solutions to the problem. I read some about vibration reducing pads online, and picked up a set at a local home improvement store (for about $30, if I remember correctly). After installing the pads with the help of my dad, I noted an improvement in the amount of vibration in the floor. However, the vibration was still bad enough to cause some sympathetic vibrations in my dryer (a major source of noise, oddly enough). Also, these pads were flat on top, so the washer tended to 'walk' off of them when a load was particularly unbalanced. Like before, the problem became bad enough to look for another solution.
I found another pair of pads online that had good reviews, and picked up a set (here's a link: Good Vibrations Washing Machine Pads). These pads are round, not square like the others I had bought, and have a recessed area for the foot of the washing machine.
Wow! Not only does the washer no longer walk off of the pads (thanks to that recessed area), but the vibration in the floor has been reduced by what seems like an order of magnitude! My dryer no longer suffers from "sympathetic-vibration-syndrome," and the entire wash cycle is noticeably quieter. A set of four pads are $36.95 as of this writing (plus shipping). The sellers accept PayPal, so if you've got some money stored up (like I did, thanks to a recent donation to Born Geek), you can pick up a set pretty easily.
If you've got a front-load washer and have issues with large vibrations, I recommend the "Good Vibrations" pads. They work remarkably well.
I have tweaked the style sheet here at Born Geek, adding eye-candy support to WebKit enabled browsers (Safari and Chrome). I've also squashed some minor bugs. Let me know if you spot something that needs correcting.
[I originally tweeted some of the following thoughts, but decided a blog post would be a better place to share them, hence the disappearance of said tweets.]
I've recently been going through the original Star Trek movies (with William Shatner, et al). Prior to watching the films, I started with the first season of the original series, which is available instantly on Netflix. Sure it's dated, but I think the original show is terrific. There are a number of interesting moral dilemmas which occur through various episodes, and often some interesting conclusions to said problems. After watching the first season (I actually have one episode left, as of this writing), I started watching the films. Here are some thoughts on the ones I've seen so far.
I have two more films to go: Star Trek V: The Final Frontier and Star Trek VI: The Undiscovered Country. I'm looking forward to both. I'll probably tweet my thoughts on those two, once I've seen them.