This always made me curious. It definitely wasn't the number of fire alarms in the building. That wouldn't make much sense and would be hard to determine if the building burns down.
Here's a good explanation I found.
Wednesday, December 30, 2009
Friday, December 25, 2009
[OTHER] Adding an internet radio station to itunes
Internet radio can be a great source of new music once you've become the type of person who no longer listens to radio regularly (specifically, people who don't have/drive in cars often).
iTunes comes with a good selection already, but in case you know of one that isn't in the list and that you want to add, try this.
iTunes comes with a good selection already, but in case you know of one that isn't in the list and that you want to add, try this.
Monday, November 23, 2009
[FUN] Google search suggestions
Wednesday, November 11, 2009
[FUN] Rock band on a flute
I need to work on these tags... someday.
Anyway, this girl from SUNY discovered that you can play rock band on the flute. It's quite seriously one of the most amazing things I have ever seen.
Which might be a little sad if you think about it.
Anyway, this girl from SUNY discovered that you can play rock band on the flute. It's quite seriously one of the most amazing things I have ever seen.
Which might be a little sad if you think about it.
Monday, November 9, 2009
[IDEA] Need an html editor on the fly? Use a blogger!
For those who aren't aware, my work consists of making improvements to a web based application. A large number of users work with the application, and despite our best efforts at perfect, "no training required" usability some people still need a little help.
We outsource our help files to a guy who doesn't actually receive any training from us. We give him a login to the application, he clicks around checking what changes we've made, and he updates the help files. I swear, the guy is a genius. I can't imagine writing help files for the stuff that I built.
Anyway, he's been doing his work in Microsoft Word, and saving it as an html file. He then sends us all the help files before a release to be put in "as is" into the application. Word being what it is, it saves the files and and formatting with a bunch of other garbage. Some of that can actually be dangerous. We found out the other that some of the embedded HTML in the help file linked to an external site. It wasn't harmful, but it could have been.
We realized we needed to get him a no frills, free HTML editor. Something simple like notepad wouldn't work because he didn't know how to write HTML (and it'd be a pain to do the formatting even if he did).
Browsing around, I realized that a blog editor works perfectly. It has everything you could possibly want- fonts, bolding and italics, size changes... All you need to do is make a dummy account.
Ironically, we also realized that we had a built in HTML editor in our application and that's what he ended up using, but I thought this was a good idea if anybody is stuck in an electronic desert and is wracking their brains for an HTML editor on the fly.

We outsource our help files to a guy who doesn't actually receive any training from us. We give him a login to the application, he clicks around checking what changes we've made, and he updates the help files. I swear, the guy is a genius. I can't imagine writing help files for the stuff that I built.
Anyway, he's been doing his work in Microsoft Word, and saving it as an html file. He then sends us all the help files before a release to be put in "as is" into the application. Word being what it is, it saves the files and and formatting with a bunch of other garbage. Some of that can actually be dangerous. We found out the other that some of the embedded HTML in the help file linked to an external site. It wasn't harmful, but it could have been.
We realized we needed to get him a no frills, free HTML editor. Something simple like notepad wouldn't work because he didn't know how to write HTML (and it'd be a pain to do the formatting even if he did).
Browsing around, I realized that a blog editor works perfectly. It has everything you could possibly want- fonts, bolding and italics, size changes... All you need to do is make a dummy account.
Ironically, we also realized that we had a built in HTML editor in our application and that's what he ended up using, but I thought this was a good idea if anybody is stuck in an electronic desert and is wracking their brains for an HTML editor on the fly.
Saturday, September 26, 2009
[INDUSTRY] Browser load times
Before I post these, what do you think would be the fastest of these browsers:
-IE 6, 7, 8
-Firefox 3
-Chrome
-Opera
Now check out the actual results.
The commentators make some good points. FF isn't an internet "suite", and many people download addons on to it that make it slower and eat more memory. Chrome is fast, but it has very few bells and whistles.
Internet Explorer has no excuse, of course.
-IE 6, 7, 8
-Firefox 3
-Chrome
-Opera
Now check out the actual results.
The commentators make some good points. FF isn't an internet "suite", and many people download addons on to it that make it slower and eat more memory. Chrome is fast, but it has very few bells and whistles.
Internet Explorer has no excuse, of course.
Wednesday, September 9, 2009
[INDUSTRY] Visual Source Safe is...
...neither visually appealing nor a safe repository for source code. Ha ha, what a lame play on words.
While we're on the subject of source control, I thought I'd bring up Visual Source Safe (VSS), which many companies out there still use.
VSS is a joke. I've used it. A few quick reasons why VSS is a terrible source control system:

This article that does a better job summarizing the argument against VSS than I ever will.
While we're on the subject of source control, I thought I'd bring up Visual Source Safe (VSS), which many companies out there still use.
VSS is a joke. I've used it. A few quick reasons why VSS is a terrible source control system:
- It costs money. That in and of itself should dissuade you, when there are better implementations out there that are free. It'd be like paying for Windows- oh wait. I mean, it'd be like paying for Internet Explorer. Six.
- You can permanently delete files. How exactly is this different from a normal file system, again?
- You can't make branches.
- "User-unfriendly" does not even begin to describe it. It could easily be used as an example of bad usability design, sort of like Microsoft Word's "Clippy". Some (mostly fabricated) quotes by the infamous character, and a quick overview of the problems with it. I mean, the thing was parodied on the Simpsons. Multiple times.

This article that does a better job summarizing the argument against VSS than I ever will.
[CODE] SVN emails and an ethical struggle
One of the things I really loved about my time at Citi was the SVN emails that were sent out whenever a commit was made. No, the awesome people and the incredible amount I learned were secondary to that. These emails were NEAT. :)
Basically, whenever you made a commit to the repository, an email would be sent out with your changes and commit message (i.e. "bug fix to prevent server from crashing") formatted nicely in HTML. Also, it would go to the correct team based on regular expressions. For example, any file path that contained "connectivity" would go to the Connectivity team.
I took a look at the code and actually had to modify it a few times while I was there. It really wasn't that complicated. At my new job, I tried to duplicate the same functionality.
It's been much, much, much more difficult. Any guess why? A W__dows environment vs. our Unix (Solaris) server. Fill in the blanks.
A short list of the problems I've encountered:
As for the text manipulation stuff, Windows' built regular expression search/replace functionality is laughable. My batch file basically just calls a java file that does all the work for me in a very verbose way (Java is quite frustrating at times when you're trying to do something simple).
I wish I could have done it in a scripting language (hello, perl? Or I could get off my lazy butt and learn Python...) but I wasn't sure those were installed on the server, and it'd be an administrative hassle to get them to do so.
After clearing all those obstacles, I'm nearly done with a product that looks even better than the old version. I have nifty additional features like autosizing the divs containing the diffs to be a certain size (if it's a small number of lines, it expands so you can see it without scrolling) and I alternate the text color of consecutive diffs.
For example...
Changed paths:
A /test/myFile1.txt
M /test/myFile2.txt
D /test/myFile3.txt
Exact diffs:
Index: /test/myFile1.txt
+hello world!
Index: /test/myFile2.txt
-hello world!
+goodbye world!
Index: /test/myFile3.txt
-foobar
It looks much cooler than that, but sadly I can't really email myself a copy of it. Which leads me into the second part of this post:
What do you do when you develop a really cool tool that you feel other developers out there could benefit from, but it was made on company time?
After I get my work jar-ed up and documented, I think this could be really neat for anybody out there who wants SVN email functionality on a Windows machine. Literally all you'll need to do is extract the jar and provide the path to your local java installation.
However, this was built on company time, and standard language in any contract is that any work you do while under company time is strictly the property of the company. Even if I build it separately on my home machine outside of work a case could be made that it's basically just copying it from work.
This is unfortunate, because it's such a handy little piece of software (well, in my mind anyway, but then again I built it so I'm biased) and has no real "cash value" since it's so small that nobody would want to buy it. It'd be like trying to sell a specialized text editor. It'd be nice to have, but there are so many other similar implementations that you couldn't charge a penny for it.
There's nothing I can really do about this right now (and don't have the energy to try anyway) but it's something that I'd like to explore in the future. It also raises a point that constantly nags at me. What if I build an awesome tool that doesn't have an equivalent out on the web, but the company restricts its distribution (even if it's not part of the application itself)? I'm not arguing the legality of this, so much as lamenting how many pieces of great software are being held back from public consumption even if they're not turning a profit.
Basically, whenever you made a commit to the repository, an email would be sent out with your changes and commit message (i.e. "bug fix to prevent server from crashing") formatted nicely in HTML. Also, it would go to the correct team based on regular expressions. For example, any file path that contained "connectivity" would go to the Connectivity team.
I took a look at the code and actually had to modify it a few times while I was there. It really wasn't that complicated. At my new job, I tried to duplicate the same functionality.
It's been much, much, much more difficult. Any guess why? A W__dows environment vs. our Unix (Solaris) server. Fill in the blanks.
A short list of the problems I've encountered:
- I'm just not as familiar with the Windows batch file language (is there even a formal name for this?) as I am with Unix. I don't blame Windows for this per se, but keep reading.
- The Windows syntax is terrible. I mean seriously, it's archaic. It's just plain ugly. "REM" on every line for comments? It looks like freaking Basic.
- The general structure of the language practically enforces a single minded procedural approach. Now, if you're trying to rig up something really complicated in a bash script you're probably doing something wrong already, but I have one word that forever invalidates any argument used to defend the language: You are forced to use "labels" for any conditional statements.
- The fact that the Windows file system accepts spaces in file names is absurd.
- Why isn't there a built in email sender? Writing a barebones SMTP client program is a trivial task you could give to a college freshman.
- I struggled with how to redirect the standard error stream to standard out (useful to checking if javac and java worked) until I found this.
As for the text manipulation stuff, Windows' built regular expression search/replace functionality is laughable. My batch file basically just calls a java file that does all the work for me in a very verbose way (Java is quite frustrating at times when you're trying to do something simple).
I wish I could have done it in a scripting language (hello, perl? Or I could get off my lazy butt and learn Python...) but I wasn't sure those were installed on the server, and it'd be an administrative hassle to get them to do so.
After clearing all those obstacles, I'm nearly done with a product that looks even better than the old version. I have nifty additional features like autosizing the divs containing the diffs to be a certain size (if it's a small number of lines, it expands so you can see it without scrolling) and I alternate the text color of consecutive diffs.
For example...
Changed paths:
A /test/myFile1.txt
M /test/myFile2.txt
D /test/myFile3.txt
Exact diffs:
Index: /test/myFile1.txt
+hello world!
Index: /test/myFile2.txt
-hello world!
+goodbye world!
Index: /test/myFile3.txt
-foobar
It looks much cooler than that, but sadly I can't really email myself a copy of it. Which leads me into the second part of this post:
What do you do when you develop a really cool tool that you feel other developers out there could benefit from, but it was made on company time?
After I get my work jar-ed up and documented, I think this could be really neat for anybody out there who wants SVN email functionality on a Windows machine. Literally all you'll need to do is extract the jar and provide the path to your local java installation.
However, this was built on company time, and standard language in any contract is that any work you do while under company time is strictly the property of the company. Even if I build it separately on my home machine outside of work a case could be made that it's basically just copying it from work.
This is unfortunate, because it's such a handy little piece of software (well, in my mind anyway, but then again I built it so I'm biased) and has no real "cash value" since it's so small that nobody would want to buy it. It'd be like trying to sell a specialized text editor. It'd be nice to have, but there are so many other similar implementations that you couldn't charge a penny for it.
There's nothing I can really do about this right now (and don't have the energy to try anyway) but it's something that I'd like to explore in the future. It also raises a point that constantly nags at me. What if I build an awesome tool that doesn't have an equivalent out on the web, but the company restricts its distribution (even if it's not part of the application itself)? I'm not arguing the legality of this, so much as lamenting how many pieces of great software are being held back from public consumption even if they're not turning a profit.
Monday, August 31, 2009
[IDEA] Wow, this would be mean.
One of my friends had his bike stolen recently despite being locked to a bike rack. Both the lock and the bike were missing when he got back.
That got me thinking.
What if the rack was a fake? You know, a "tricky" bike rack that had hidden parts to disassemble quickly?
Stick that sucker out someplace convenient, paint it up so that it looks new and shiny, and come back in the middle of the night.
I shudder at the thought.
That got me thinking.
What if the rack was a fake? You know, a "tricky" bike rack that had hidden parts to disassemble quickly?
Stick that sucker out someplace convenient, paint it up so that it looks new and shiny, and come back in the middle of the night.
I shudder at the thought.

Saturday, August 29, 2009
[PROJECTS] When writing fiction and writing code combine
Side note: I really need to come up with a good tag system, this is getting silly.
Something that I've always wanted to do is make a role playing computer game, in a similar vein to the Final Fantasies.
Why? A few reasons:

A problem I've faced for a long time is getting an engine working. It's a ton of work and it's not easy. I've scrapped and rebuilt engines at least eight or nine times, each time improving on them. However, I've reached the point where I have a mostly working game engine, and now I need to put in actual content.
This is where I stalled up until recently. Why? I spent so much time thinking about the game mechanics that I didn't think about the plot. Now, typing up a story into very small chunks scattered throughout your in game world defined in Java objects is very tedious. That kept me from really approaching this seriously.
My solution? Combine my love for writing with my love for coding. What was that? You didn't know I love writing? Well, now you do. :)
I've been writing the story as it plays out in my head separately, as a stand alone story. As it develops, I adjust and edit it like I would any piece of writing. When I feel like it is complete, I transfer it into terms my game engine can understand.
Come to think of it, this is almost definitely the way real games are built, but I came up with this idea completely on my own and thus take all credit!
...yea.

Sephiroth, courtesy of deviantart.
Something that I've always wanted to do is make a role playing computer game, in a similar vein to the Final Fantasies.
Why? A few reasons:
- I've played games all my life. Making one just seems awesome.
- The technical challenge of creating a full fledged game from scratch is alluring. How do you handle the basic actions in a game? Opening and managing your inventory? Running combat? Leveling up characters? All of that requires a lot of (hopefully) smart design to put together.
- I always play games and feel, "wow, I wish they had done this game mechanic a little differently." Or, "man, this ability is really overpowered, you can ruin the challenge of the game by just abusing this." See reflect magic in the FF line of games, or psychic types in the original Pokemon Red/Blues (longggg time ago), or small guns in Fallout 3. There are tons of examples of not just "effective" strategies but "killer" ones. Strategies that are so strong they counter virtually everything and make the rest of the choices in the game pointless. I hate that, and making my own game allows me control over fixing those things.
- Speaking of game mechanics, I love looking at them. When I was younger I'd read manuals of games I didn't even own, just to see how they worked and figured out strategies. I could do that for hours without ever playing the game. I'd pick up a book on a board game or pen and paper RPG that I had never and would never play, just to see the rules and devise one possible effective strategy. Building my own rules is a natural extension of that urge.
- Face it, I'm a sucker for telling stories. Ever since I was a kid I've loved to let my imagination run wild. Making a game is just one way to do that.

A problem I've faced for a long time is getting an engine working. It's a ton of work and it's not easy. I've scrapped and rebuilt engines at least eight or nine times, each time improving on them. However, I've reached the point where I have a mostly working game engine, and now I need to put in actual content.
This is where I stalled up until recently. Why? I spent so much time thinking about the game mechanics that I didn't think about the plot. Now, typing up a story into very small chunks scattered throughout your in game world defined in Java objects is very tedious. That kept me from really approaching this seriously.
My solution? Combine my love for writing with my love for coding. What was that? You didn't know I love writing? Well, now you do. :)
I've been writing the story as it plays out in my head separately, as a stand alone story. As it develops, I adjust and edit it like I would any piece of writing. When I feel like it is complete, I transfer it into terms my game engine can understand.
Come to think of it, this is almost definitely the way real games are built, but I came up with this idea completely on my own and thus take all credit!
...yea.

Sephiroth, courtesy of deviantart.
[TOOLS] Handy flowchart to give to all your friends...
...who insist on having you fix their computer issues.
http://www.xkcd.com/627/
Courtesy of Randall Munroe, who has done it again.
By the way, in case you were curious what he looks like...
Randall Munroe Wikipedia
http://www.xkcd.com/627/
Courtesy of Randall Munroe, who has done it again.
By the way, in case you were curious what he looks like...
Randall Munroe Wikipedia
[CODE] Yet another reason internet explorer fails
In javascript there's a command called
window.open( myUrl, myWindowName, myAttributes )
I was helping out a friend today and put this line of code into her script:
window.open( "www.google.com", "My Window", "height=200" );
It didn't work. I knew it was a syntax error since an alert I put right after it didn't fire.
After fiddling with this for 15 minutes, I tried it out in firefox on a hunch. Sure enough, it worked. I immediately googled "window.open not working in internet explorer" and found what I needed.
Turns out IE does not support a space in the name of a window. "My_Window" is acceptable, but "My Window" is not.
I don't even know what to say.
window.open( myUrl, myWindowName, myAttributes )
I was helping out a friend today and put this line of code into her script:
window.open( "www.google.com", "My Window", "height=200" );
It didn't work. I knew it was a syntax error since an alert I put right after it didn't fire.
After fiddling with this for 15 minutes, I tried it out in firefox on a hunch. Sure enough, it worked. I immediately googled "window.open not working in internet explorer" and found what I needed.
Turns out IE does not support a space in the name of a window. "My_Window" is acceptable, but "My Window" is not.
I don't even know what to say.
Friday, August 21, 2009
[CODE] A couple of good articles to read if you're thinking about interviewing
Java vs. C++, the eternal struggle and the topic of many an interview question.
"Singleton considered stupid", a well written article on how obnoxious it is that everyone lists "Singleton" as a pattern and doesn't know the others.
"Singleton considered stupid", a well written article on how obnoxious it is that everyone lists "Singleton" as a pattern and doesn't know the others.
Thursday, July 16, 2009
[HARDWARE] Video card rankings
For those who are interested, here's a decent, no-frills site that lists video cards approximately best to worst. It's not perfect but it'll give you a rough idea of where your card sits.
http://videocardrankings.com/
My vid cards through the years:
http://videocardrankings.com/
My vid cards through the years:
- TNT2 (I played the original counterstrike beta on this)
- GeForce2 MX 40 (starcraft, c&c and diablo days)
- GeForce4 6800 (last used 1 year ago; played CoH and TF2 for the first times on this)
- NVIDIA 6800 (last used a week ago)
- ATI Radeon 4800 (current; free upgrade too, thanks ben!)
Thursday, July 9, 2009
[INDUSTRY] Google finally tackles operating systems
http://googleblog.blogspot.com/2009/07/introducing-google-chrome-os.html
Google OS Chrome, the web-friendly free OS. I have full faith in Google as a company to develop good, useful products and I don't think this will be any different. I see it as targeted towards the average user who pretty much just uses their computer for browsing the web, online communications and "productivity applications" like Microsoft Office.
Not something that applies to me, but nonetheless something neat to look forward to :)
Google OS Chrome, the web-friendly free OS. I have full faith in Google as a company to develop good, useful products and I don't think this will be any different. I see it as targeted towards the average user who pretty much just uses their computer for browsing the web, online communications and "productivity applications" like Microsoft Office.
Not something that applies to me, but nonetheless something neat to look forward to :)
Friday, July 3, 2009
[INDUSTRY] USB 3.0 coming out this winter? Also, explanation on data sizes!

Link is here.
Apparently USB 3.0 may come out in the fourth quarter of 2009. For those who don't know, USB is the type of plug (a simplification) that many compute peripherals use. It's the rectangular, usually black, plug/wire that your keyboards, mice, headsets, external hard drives, cameras and many other devices use. When it first released it was a tremendous replacement over PS/2 plugs (circular plugs that your mice and keyboard used) due to its higher transfer rate and "plug and play" ability.
USB 3.0 means that soon you'll have even faster transfer rates, useful if you do backups regularly (which you should!) or hate having your photos take hours to transfer from your camera. It also might be fast enough to do 1080i HD streams, meaning that you could have your computer store high def TV shows or movies and play them on your TV with no buffering.
Here's a list of USB versions, their release years and their transfer rates:
USB 1.0 (1996): 12 Megabits per second
USB 2.0 (2000): 480 Megabits per second (40x faster than 1.0)
USB 3.0 (2009?): 5 Gigabits per second (~10.6x faster than 2.0, ~427x faster than 1.0)
For those who don't know, a bit is the smallest representation of data in the world of computers. It is quite literally a digit that stores one of two values: 0 or 1. Those who are more mathematically inclined may realize that it's just a base 2 digit. All data, without exception, is composed of bits. Explaining how that works would make this post too long, but I'll try to tackle that in the future.
The next step up from bit is a byte. A byte is 8 bits. 10010011 would be an example. This is still too small for most people to care about it though.

The next step up from that is a kilobyte (kb). A kilobyte is 1024 bytes. Notice that despite the "kilo" prefix, it's not exactly 1000. A one page Microsoft Word document that has some formatting with it (bold, italics, etc.) is about 25 kb.
The next step after that is the megabyte (mb), and you should definitely know this one. It's 1024 kilobytes. The average compressed song (mp3, for example) has approximately 1 megabyte per minute. A 4 minute song is about 4 megabytes.

A megabit is just 1/8 of a megabyte (remember, 8 bits = 1 byte). Data transfer rates tend to be given in bits rather than bytes for precision. A gigabit is 1/8 of a gigabyte. Thus, if something had an 8 gigabit/second transfer rate, that is the same as transferring at 1 gigabyte/second.
How long would it take to transfer:
- 12 1 page Word documents (300 kb)
- 100 4 minute songs (400 mb)
- The entire contents of a hard drive (250 gb)
USB 2.0: .004 seconds, 6.6 seconds, 71. minutes
USB 3.0: .0004 seconds, .625 seconds, 6.6 minutes
How's that for a speed increase? You could copy your entire hard drive in almost seven minutes over a plain, cheap cable available anywhere.

Note: hard drive manufacturers in particular tend to be imprecise with their sizes. A 500 gb hard drive, for example, is actually (500 * 1000 kilobytes * 1000 bytes) 500,000,000 bytes. Technically it should be (500 * 1024 kilobytes * 1024 bytes) 524,288,000 bytes. You ended up losing out on 24,288,000 bytes, or about 23 actual megabytes.
They do that because it makes their sizes look bigger than they actually are, even if it's a headache for everybody else.
My calculations above are based on the "ideal" numbers, not the actual ones. A 250 gb hard drive using 1024 as the prefix multiplier instead of 1000 is larger, so the times I listed above for transferring a hard drive should be slightly faster in reality since there's less data.
Wednesday, July 1, 2009
[CODE] Eclipse, and my frustration
One of my many complaints about the Eclipse IDE is that it's just plain hard to type things. I'm used to the "never need to use a mouse" VIM editor, where I can use that and GNU screen to quickly build, edit, view, compare and do whatever else I want quickly and without taking my hands off the keyboard.
In contrast, I find myself using the mouse all the time with eclipse, mainly to switch between windows.
Yes, I've seen the eclipse shortcuts:
http://www.javaworld.com/javaworld/jw-08-2005/jw-0829-eclipse.html
But no, they still don't allow me to switch windows the way I want to. The best that I've found is navigating to your previously and next used windows. I wished alt-left and alt-right just moved your tab left and right, respectively. It also doesn't allow the ease of jumping to the end or beginning of lines without leaving the main keyboard (need to press home and end) and other such standard text editor tricks.
I tried using vimplugin, but that was terrible. It took forever to open new files, the regular view didn't show special operations at the bottom of the screen (anything based off of a : or a /) and it ended up causing crashes. I don't know if it was a problem particular to my machine, but even when it WAS working it didn't seem worth it.
In contrast, I find myself using the mouse all the time with eclipse, mainly to switch between windows.
Yes, I've seen the eclipse shortcuts:
http://www.javaworld.com/
But no, they still don't allow me to switch windows the way I want to. The best that I've found is navigating to your previously and next used windows. I wished alt-left and alt-right just moved your tab left and right, respectively. It also doesn't allow the ease of jumping to the end or beginning of lines without leaving the main keyboard (need to press home and end) and other such standard text editor tricks.
I tried using vimplugin, but that was terrible. It took forever to open new files, the regular view didn't show special operations at the bottom of the screen (anything based off of a : or a /) and it ended up causing crashes. I don't know if it was a problem particular to my machine, but even when it WAS working it didn't seem worth it.
Friday, June 26, 2009
[INDUSTRY] I'm back and I bring presents!
Sorry for the extended leave, but I've been really caught up with a rough academic semester and the new job.
To mollify your unhappiness, have a look at this. The sourceforge finalists are up, and you can see some of the best stuff open source has to offer. Take a look through, and check out anything that looks interesting.
I use several projects listed there, most notably TortoiseSVN, Mumble and OpenOffice. You'll be impressed at all the incredible and legally free software there is out there.
To mollify your unhappiness, have a look at this. The sourceforge finalists are up, and you can see some of the best stuff open source has to offer. Take a look through, and check out anything that looks interesting.
I use several projects listed there, most notably TortoiseSVN, Mumble and OpenOffice. You'll be impressed at all the incredible and legally free software there is out there.
Friday, May 22, 2009
[OTHER] See Reddit's goldfish live!
Tuesday, May 19, 2009
[OTHER]Frisbee catching dogs
So, as some people know, one of my favorite hobbies is ultimate frisbee. I also love dogs. Thus, dogs that catch frisbees = AMAZING in my book.
Here's a video of the first dog to catch a frisbee on national television at a Caeser's palace appearance.
And just for kicks, here's a really impressive freestyle disc dog video.
Now that I've got you warmed up, here's an even better one. The dog literally does 360s in the air (watch it).
And to end on a strong note, here's that same pair in the purina finals.
Here's a video of the first dog to catch a frisbee on national television at a Caeser's palace appearance.
And just for kicks, here's a really impressive freestyle disc dog video.
Now that I've got you warmed up, here's an even better one. The dog literally does 360s in the air (watch it).
And to end on a strong note, here's that same pair in the purina finals.
Friday, May 15, 2009
[INDUSTRY] Browser market share
For those curious on what the current browser situation is, take a look:
If you're too lazy, here's the summary:
66% IE
20.25% Firefox
6.1% Safari
If you're too lazy, here's the summary:
66% IE
20.25% Firefox
6.1% Safari
Wednesday, May 13, 2009
[OTHER] Google rank increasing!
This blog is now on the front page of google searches for "Alexander Jou". Amazingly enough, it's also on the front page (albeit at the bottom) for "my code's compiling."
Not even close to top for "Alex Jou" though.
Not even close to top for "Alex Jou" though.
[OTHER] XKCD
For those who haven't yet read it, the XKCD web comic is probably one of the best out there. It's especially funny if you're science/programming/math oriented, but that's not necessary to enjoy most of them.
Here's a good one on integer overflow:
http://xkcd.com/571/

And another on bug reproducing:
http://xkcd.com/583/
Here's a good one on integer overflow:
http://xkcd.com/571/

And another on bug reproducing:
http://xkcd.com/583/

Friday, May 8, 2009
[TOOLS] Google calculator
For those who don't know, google has a built in web calculator for you. Just type in a search result as a mathematical expression. For example, "2+2" will return a special page that tells you the answer.
Being the nosy computer scientist that I am, I naturally tested it for its maximum processing ability. For factorials, it caps out at 170!.
Look at the results of 170! here, and 171! here.
It can even do complex expressions, such as
2+2/15%100+987*32
This is useful if you ever find yourself with net access and need to calculate something complicated.
P.S. My tags are getting kind of ridiculous. I feel like I'm making a new one for every post.
Being the nosy computer scientist that I am, I naturally tested it for its maximum processing ability. For factorials, it caps out at 170!.
Look at the results of 170! here, and 171! here.
It can even do complex expressions, such as
2+2/15%100+987*32
This is useful if you ever find yourself with net access and need to calculate something complicated.
P.S. My tags are getting kind of ridiculous. I feel like I'm making a new one for every post.
[IDEA] Gratuity tracking
I'm a pretty generous tipper when it comes to leaving gratuities for waiters and waitresses at restaurants and also service personnel in general (I tip 25% at the hair salon I go to). Having worked in the food service industry before, I know how stressful the environment is and that good tips can go a long way to improving your mood. I always tip at least 15%, on average probably 18% or so.
However, I had an especially bad night recently at a local restaurant that shall remain nameless. The service was abysmal. Let me list the number of things that went wrong:
The general idea of tips is to provide a range in which a diner can reward good service. Even if I thought I had a subpar dining experience, I would still tip 15%. This night was such an incredible exception that I had to tip 10%. I still felt really guilty about it and almost changed my mind, but stuck to it in the end.
My concern is that from the waitresses' point of view, we just look cheap. After all, we clearly look like college students, and there's an unfortunate but probably truthful stereotype that college students are bad tippers. How could she distinguish between cheap students and legitimately pissed customers?
That's when I wished there was some sort of unbiased way of tracking your tips, like an online database. You could provide a code at the end of your meal that links to your tipping history. A waitress who sees that you have been an 18% tipper in the past and gave a 10% tip this meal would know that she should have improved her behavior. It conveys a lot more meaning when an outlier like that occurs than if you always tipped in the low teens.
I know this won't ever get implemented, if nothing else then because of all the practical barriers, but that night's experience still bothers me. I feel guilty for leaving a poor tip and not fully explaining why. Anybody else ever have this experience?
However, I had an especially bad night recently at a local restaurant that shall remain nameless. The service was abysmal. Let me list the number of things that went wrong:
- There was considerable confusion between the waitresses as to who was actually serving us, leading to delays and repeated questions.
- It took forever for them to take our order or give us the check. It wasn't even that busy for most of the dinner.
- One of the drinks we ordered (a lemonade) never showed up. We weren't billed for it, but still...
- We asked for two of the dishes to come out together. Didn't happen.
- We had one water refill the whole hour we were there, and they didn't even check on us to see if we needed anything. I had an empty glass for at least ten minutes while we tried to get their attention. To make matters worse, we were eating a somewhat spicy meal.
- Their overall demeanor was fairly lackluster and not very engaging.
The general idea of tips is to provide a range in which a diner can reward good service. Even if I thought I had a subpar dining experience, I would still tip 15%. This night was such an incredible exception that I had to tip 10%. I still felt really guilty about it and almost changed my mind, but stuck to it in the end.
My concern is that from the waitresses' point of view, we just look cheap. After all, we clearly look like college students, and there's an unfortunate but probably truthful stereotype that college students are bad tippers. How could she distinguish between cheap students and legitimately pissed customers?
That's when I wished there was some sort of unbiased way of tracking your tips, like an online database. You could provide a code at the end of your meal that links to your tipping history. A waitress who sees that you have been an 18% tipper in the past and gave a 10% tip this meal would know that she should have improved her behavior. It conveys a lot more meaning when an outlier like that occurs than if you always tipped in the low teens.
I know this won't ever get implemented, if nothing else then because of all the practical barriers, but that night's experience still bothers me. I feel guilty for leaving a poor tip and not fully explaining why. Anybody else ever have this experience?

Monday, May 4, 2009
[INDUSTRY] Linux, and why you're not using it
Linux is one of the most interesting software stories of our time. It is the paradigm of open source software. It's not a small desktop application that does some neat tricks for you that you'd otherwise have to pay $20 for. It's a huge (relatively) collaboration of thousands of volunteers building an entire operating system that is given out for free. For comparison, Windows Vista is selling at $100.
And yet it still has a tiny percentage of the market share. It's the fringe word that average people hear but don't really understand. What is Linux? What does it do? Why should I ever care about it?
Neal Stephenson (author of famous books Snow Crash and Cryptonomicon among others) put it best in this hilarious and well written story.
"The people who live there are making tanks (Linux). These are not old-fashioned, cast-iron Soviet tanks; these are more like the M1 tanks of the U.S. Army, made of space-age materials and jammed with sophisticated technology ... But they are better than Army tanks. They've been modified in such a way that they never, ever break down, are light and maneuverable enough to use on ordinary streets, and use no more fuel than a subcompact car... Anyone who wants can simply climb into one and drive it away for free."

The main reason why people aren't lining up to pick up their free tanks is because there just isn't enough software out for it. It's a vicious circle. You can't find such common consumer products such as Photoshop or Microsoft Office on Linux because there aren't enough Linux users. There aren't enough Linux users because there aren't enough products out for them. See the problem?
This article does a good job summarizing the problems facing Linux right now, and why we still aren't likely to see it become common any day soon. I have the same reservations as the ones listed by McAllister. I'd have to download and install it myself, praying that I can find compatible drivers for all my hardware. I would have to search for, learn and install alternates to all my software. I couldn't play games (WINE is a good fill in but not fast enough for competitive gaming without a decked out system) or run Internet Explorer if I absolutely had to go to a non-Firefox friendly site.
This is all coming from someone who is not only technically inclined but already fluent in Unix. I shudder to think of how a "normal" person would approach a monstrous task like installing a Linux distro.
"Hey, it's just like installing Windows... hit a few 'next buttons' and you're nearly done. By the way, you might need to compile some of the packages yourself, and maybe write drivers for your old sound card..."

P.S. I would underline those book titles if I could figure out how :(
And yet it still has a tiny percentage of the market share. It's the fringe word that average people hear but don't really understand. What is Linux? What does it do? Why should I ever care about it?
Neal Stephenson (author of famous books Snow Crash and Cryptonomicon among others) put it best in this hilarious and well written story.
"The people who live there are making tanks (Linux). These are not old-fashioned, cast-iron Soviet tanks; these are more like the M1 tanks of the U.S. Army, made of space-age materials and jammed with sophisticated technology ... But they are better than Army tanks. They've been modified in such a way that they never, ever break down, are light and maneuverable enough to use on ordinary streets, and use no more fuel than a subcompact car... Anyone who wants can simply climb into one and drive it away for free."

The main reason why people aren't lining up to pick up their free tanks is because there just isn't enough software out for it. It's a vicious circle. You can't find such common consumer products such as Photoshop or Microsoft Office on Linux because there aren't enough Linux users. There aren't enough Linux users because there aren't enough products out for them. See the problem?
This article does a good job summarizing the problems facing Linux right now, and why we still aren't likely to see it become common any day soon. I have the same reservations as the ones listed by McAllister. I'd have to download and install it myself, praying that I can find compatible drivers for all my hardware. I would have to search for, learn and install alternates to all my software. I couldn't play games (WINE is a good fill in but not fast enough for competitive gaming without a decked out system) or run Internet Explorer if I absolutely had to go to a non-Firefox friendly site.
This is all coming from someone who is not only technically inclined but already fluent in Unix. I shudder to think of how a "normal" person would approach a monstrous task like installing a Linux distro.
"Hey, it's just like installing Windows... hit a few 'next buttons' and you're nearly done. By the way, you might need to compile some of the packages yourself, and maybe write drivers for your old sound card..."

P.S. I would underline those book titles if I could figure out how :(
Saturday, May 2, 2009
[OTHER] Post Tags
In an effort to better organize my blog for different types of viewers, I'm experimenting with subject tags before the post title. For example:
[CODE] Java Interview Questions
[PROF] My Interview Experiences
[OTHER] I love dogs!
And so forth. I'm not sure whether this will make things look messier, but I'll give it a shot. Everything is editable afterward anyway.
Rubric so far (subject to change):
CODE- programming related
PROF- professional subjects such as interviews
PERS- personal stuff I would like to share
OTHER- miscellaneous stuff
[CODE] Java Interview Questions
[PROF] My Interview Experiences
[OTHER] I love dogs!
And so forth. I'm not sure whether this will make things look messier, but I'll give it a shot. Everything is editable afterward anyway.
Rubric so far (subject to change):
CODE- programming related
PROF- professional subjects such as interviews
PERS- personal stuff I would like to share
OTHER- miscellaneous stuff
Linked In
I finally gave in and signed up for LinkedIn, and have started the process of adding the people that I know or have known. I see LinkedIn as the professional network- what you use to see how former coworkers are doing, look for new job opportunities and find people that you already know are very good at their jobs.
That's in contrast to Facebook, which I use for personal contacts and keeping up with friends and family. It's not that there is anything I couldn't show an employer on my Facebook page, it's that there isn't anything that I'd want to show them. Nothing relevant to my skills or qualifications is on my Facebook page. There's also the awkward social component of inviting people who know you only from your workplace to view your personal interests, photos and friends, but a good argument could be made that nothing with your name on it on the Internet should ever be the kind of thing that you would feel uncomfortable about showing to strangers.
My public LinkedIn profile: LinkedIn
That's in contrast to Facebook, which I use for personal contacts and keeping up with friends and family. It's not that there is anything I couldn't show an employer on my Facebook page, it's that there isn't anything that I'd want to show them. Nothing relevant to my skills or qualifications is on my Facebook page. There's also the awkward social component of inviting people who know you only from your workplace to view your personal interests, photos and friends, but a good argument could be made that nothing with your name on it on the Internet should ever be the kind of thing that you would feel uncomfortable about showing to strangers.
My public LinkedIn profile: LinkedIn

Weblogic trivia
One of the web servers I work with is BEA Weblogic. It's an extremely popular webservice provider, especially among major companies.
http://en.wikipedia.org/wiki/WebLogic
It's Oracle Weblogic now, after they bought BEA (big deal a while ago). One of my IS professors actually used to work in BEA directly under the CTO there, and he said that the company CEO's public line was that they'd never sell. Interesting how that turned out.
Digression aside, I learned a few days ago that the way to access the weblogic console (where you configure your web server and such) is to type in the address followed by "console". For example, http://localhost:7001/console.
A cool application of this is that you can go to random websites of major companies and see if they use weblogic. Try:
http://www.thomsonreuters.com/console
http://en.wikipedia.org/wiki/WebLogic
It's Oracle Weblogic now, after they bought BEA (big deal a while ago). One of my IS professors actually used to work in BEA directly under the CTO there, and he said that the company CEO's public line was that they'd never sell. Interesting how that turned out.
Digression aside, I learned a few days ago that the way to access the weblogic console (where you configure your web server and such) is to type in the address followed by "console". For example, http://localhost:7001/console.
A cool application of this is that you can go to random websites of major companies and see if they use weblogic. Try:
http://www.thomsonreuters.com/console
Monday, April 27, 2009
New updates coming soon!
I apologize for the lull recently in updates. I've been really busy with finals and just started my new job today. I promise I'll have real posts coming soon!
Thursday, April 23, 2009
Farewell, Citi
This is my farewell email I sent out to my coworkers today. I decided not to send it tomorrow since I might not get to see all the responses.
-----Original Message-----
From: Jou, Alexander [CMB-IT]
Sent: Thursday, April 23, 2009 3:01 PM
To: Jou, Alexander [CMB-IT]
Cc: 'ajou07@gmail.com'
Subject: Farewell
For those who don't know already, my final day at Citi will be tomorrow, Friday the 24th. I wanted to take this opportunity to say how much I have enjoyed my two years here and to thank all the people who made it possible.
I have had the good fortune of working with many talented and helpful individuals. They made an enormous effort to help me improve as a person and a software developer. Many of the faces I see everyday I will surely miss and be sadder for that loss. I am indebted to my current and former coworkers for making my time not only educational and productive but also fun and a pleasure to be here. I honestly believe that I was lucky to be given such a great opportunity here where I loved my job.
As for my future, I am in my final year of college and planning to work at a small software development company in Boston while I complete my degree. I hope any of you who wish to keep in touch aren't afraid to do so, and hopefully I will meet up with some of you again.
Thank you very much for being with me in the good times and offering your support in the tough times. I wish all of you the best of luck in your current and future endeavors. Thanks again!
-Alex
ajou07@gmail.com
-----Original Message-----
From: Jou, Alexander [CMB-IT]
Sent: Thursday, April 23, 2009 3:01 PM
To: Jou, Alexander [CMB-IT]
Cc: 'ajou07@gmail.com'
Subject: Farewell
For those who don't know already, my final day at Citi will be tomorrow, Friday the 24th. I wanted to take this opportunity to say how much I have enjoyed my two years here and to thank all the people who made it possible.
I have had the good fortune of working with many talented and helpful individuals. They made an enormous effort to help me improve as a person and a software developer. Many of the faces I see everyday I will surely miss and be sadder for that loss. I am indebted to my current and former coworkers for making my time not only educational and productive but also fun and a pleasure to be here. I honestly believe that I was lucky to be given such a great opportunity here where I loved my job.
As for my future, I am in my final year of college and planning to work at a small software development company in Boston while I complete my degree. I hope any of you who wish to keep in touch aren't afraid to do so, and hopefully I will meet up with some of you again.
Thank you very much for being with me in the good times and offering your support in the tough times. I wish all of you the best of luck in your current and future endeavors. Thanks again!
-Alex
ajou07@gmail.com
Saturday, April 18, 2009
Intermission #2
Moving furniture larger than the size of a lounge chair should really be done by professional movers. It is not only dangerous and inefficient but incredibly painful as well to do it with just friends.
Monday, April 13, 2009
Networking around
One of my managers at Citi was laid off recently and is now in the process of looking for work after giving... 15? years to the company. He just started his own blog about his search process and life in general which I think is pretty interesting.
For those who also want to see it (or perhaps hire somebody :) ) click here for the blog.
For those who also want to see it (or perhaps hire somebody :) ) click here for the blog.
Wednesday, April 8, 2009
A job decision made, and a future selected
I decided to choose Power Advocate over the other company. It was an extremely hard choice, and I've spent the past two days agonizing over it. I asked all my friends, my family and my co-op adviser for advice.
Ultimately, it came down to two things- one, the great location; and two, the personal interest and effort that one of their employees made to bring me on. Nonetheless, I don't think I could have made a wrong decision. I'd like to think that either job would help me grow my career and be someplace I can be happy in, and pay the bills of course. :)
Calling the VP at the other company to turn him down was FAR more nerve-wracking than the original interview, which I thought was ironic. I felt terrible turning down such a great offer.
Ultimately, it came down to two things- one, the great location; and two, the personal interest and effort that one of their employees made to bring me on. Nonetheless, I don't think I could have made a wrong decision. I'd like to think that either job would help me grow my career and be someplace I can be happy in, and pay the bills of course. :)
Calling the VP at the other company to turn him down was FAR more nerve-wracking than the original interview, which I thought was ironic. I felt terrible turning down such a great offer.
All the things that make up life
I got this from a former manager of mine, Arthur Bright. I assume he got it from somewhere else as well, but I don't know who to attribute it to. Nonetheless, it's still a touching little piece.
When things in your life seem almost too much to handle, when 24 hours in a day are not enough, remember the mayonnaise jar and the 2 Beers. A professor stood before his philosophy class and had some items in front of him. When the class began, he wordlessly picked up a very large and empty mayonnaise jar and proceeded to fill it with golf balls. He then asked the students if the jar was full. They agreed that it was.
The professor then picked up a box of pebbles and poured them into the jar. He shook the jar lightly. The pebbles rolled into the open areas between the golf balls. He then asked the students again if the jar was full. They agreed it was.
The professor next picked up a box of sand and poured it into the jar. Of course, the sand filled up everything else. He asked once more if the jar was full. The students responded with a unanimous 'yes.'
The professor then produced two Beers from under the table and poured the entire contents into the jar effectively filling the empty space between the sand. The students laughed.. Now,' said the professor as the laughter subsided, 'I want you to recognize that this jar represents your life. The golf balls are the important things---your family, your children, your health, your friends and your favorite passions---and if every- thing else was lost and only they remained, your life would still be full. The pebbles are the other things that matter like your job, your house and your car. The sand is everything else---the small stuff. 'If you put the sand into the jar first,' he continued, 'there is no room for the pebbles or the golf balls.
The same goes for life. If you spend all your time and energy on the small stuff you will never have room for the things that are important to you. Pay attention to the things that are critical to your happiness. Spend time with your children. Spend time with your Spouse. Spend time with your parents. Visit with your grandparents. Play another 18. There will always be time to clean the house and fix the disposal. Take care of the golf balls first---the things that really matter. Set your priorities. The rest is just sand.
One of the students raised her hand and inquired what the Beer represented. The professor smiled and said, 'I'm glad you asked.' The Beer just shows you that no matter how full your life may seem, there's always room for a couple of beers with a friend.

When things in your life seem almost too much to handle, when 24 hours in a day are not enough, remember the mayonnaise jar and the 2 Beers. A professor stood before his philosophy class and had some items in front of him. When the class began, he wordlessly picked up a very large and empty mayonnaise jar and proceeded to fill it with golf balls. He then asked the students if the jar was full. They agreed that it was.
The professor then picked up a box of pebbles and poured them into the jar. He shook the jar lightly. The pebbles rolled into the open areas between the golf balls. He then asked the students again if the jar was full. They agreed it was.
The professor next picked up a box of sand and poured it into the jar. Of course, the sand filled up everything else. He asked once more if the jar was full. The students responded with a unanimous 'yes.'
The professor then produced two Beers from under the table and poured the entire contents into the jar effectively filling the empty space between the sand. The students laughed.. Now,' said the professor as the laughter subsided, 'I want you to recognize that this jar represents your life. The golf balls are the important things---your family, your children, your health, your friends and your favorite passions---and if every- thing else was lost and only they remained, your life would still be full. The pebbles are the other things that matter like your job, your house and your car. The sand is everything else---the small stuff. 'If you put the sand into the jar first,' he continued, 'there is no room for the pebbles or the golf balls.
The same goes for life. If you spend all your time and energy on the small stuff you will never have room for the things that are important to you. Pay attention to the things that are critical to your happiness. Spend time with your children. Spend time with your Spouse. Spend time with your parents. Visit with your grandparents. Play another 18. There will always be time to clean the house and fix the disposal. Take care of the golf balls first---the things that really matter. Set your priorities. The rest is just sand.
One of the students raised her hand and inquired what the Beer represented. The professor smiled and said, 'I'm glad you asked.' The Beer just shows you that no matter how full your life may seem, there's always room for a couple of beers with a friend.

Tuesday, April 7, 2009
X vs. Y
If I offered you a job with a 40 minute longer commute a day, but you made an additional $18, would you take it?
I'm currently down to two competing offers involving two great companies that I'd love to work for, and it really is coming down to things like that. I really like the employees and the work at both, and it's the small details separating them now.
Another question to consider:
Would you prefer being a "big fish in a small pond", or a "small fish in a big pond"? Would you rather go someplace where you're really wanted and valued but have extremely high expectations, or someplace where you're just another face in a crowd of very talented individuals but there isn't as much pressure to succeed? Neither answer is wrong, just different.
I'll make my decision on jobs tomorrow. I feel really bad about declining an offer from the other company however, since under any other circumstance I'd take their offer in a heartbeat.
I'm currently down to two competing offers involving two great companies that I'd love to work for, and it really is coming down to things like that. I really like the employees and the work at both, and it's the small details separating them now.
Another question to consider:
Would you prefer being a "big fish in a small pond", or a "small fish in a big pond"? Would you rather go someplace where you're really wanted and valued but have extremely high expectations, or someplace where you're just another face in a crowd of very talented individuals but there isn't as much pressure to succeed? Neither answer is wrong, just different.
I'll make my decision on jobs tomorrow. I feel really bad about declining an offer from the other company however, since under any other circumstance I'd take their offer in a heartbeat.
Monday, April 6, 2009
More interview questions
Some good questions I got asked today with answers as well:
I also received a logic question at the end which I found interesting. I'll repeat it here:
There are three jars which you cannot see into. One of them contains black marbles, one contains white marbles, and one is mixed black and white (proportion unknown). There are already labels on the jars with "Black", "White" and "Mixed". However, every label is incorrect.
How many marbles do you need to draw out of which jars in order to figure out what should be the correct labeling?
Spoiler (Copy and paste):
The correct answer is 1, and it's out of the mixed jar. The key to the problem is that every jar is labeled incorrectly. If the marble that comes from the "mixed" jar is white, then that jar is actually ALL white. It can't be mixed because all the labels are definitely wrong. Via process of elimination you can figure out the other ones without drawing more ("black" must be mixed and "white" must be black).
- When is machine code generated for java classes? (google Just In Time [JIT] compiler)
- If I compile java code on one OS, can I move the class files to another machine and run them there? (yes)
- Are primitives passed by reference or value to methods? (value)
- What does Microsoft's OLE stand for? What is ActiveX? (Object Linking and Embedding, and google ActiveX)
- Is Java a managed or unmanaged language? Are memory leaks possible? If so, how would you make one? (managed, yes, and too complicated to explain briefly)
I also received a logic question at the end which I found interesting. I'll repeat it here:
There are three jars which you cannot see into. One of them contains black marbles, one contains white marbles, and one is mixed black and white (proportion unknown). There are already labels on the jars with "Black", "White" and "Mixed". However, every label is incorrect.
How many marbles do you need to draw out of which jars in order to figure out what should be the correct labeling?
Spoiler (Copy and paste):
The correct answer is 1, and it's out of the mixed jar. The key to the problem is that every jar is labeled incorrectly. If the marble that comes from the "mixed" jar is white, then that jar is actually ALL white. It can't be mixed because all the labels are definitely wrong. Via process of elimination you can figure out the other ones without drawing more ("black" must be mixed and "white" must be black).

Downsizing

After my (probably) last interview today, I realized that I'm most likely going to be working at a small software company for the first time in my life. Having spent most of my professional life working at such giants as Thomson Financial and Citi, it could be quite a shock to transition to a tiny company with less than a hundred total employees.
There are advantages to being in either situation, and I hope to write a well-informed post contrasting both when I get a chance to get some workplace experience in at my new job.
Northeastern as a rising university
Boston Globe article on how Northeastern is changing toward higher standards due to increased numbers of applicants.
Sunday, April 5, 2009
Intermission #1
Completely unrelated to programming, but one of my female friends I went out shopping with today said:
"I go out shopping to find clothes to wear when I go out shopping."
The clothing industry has won. That is all.
"I go out shopping to find clothes to wear when I go out shopping."
The clothing industry has won. That is all.
Thursday, April 2, 2009
Great (and funny) programming quotes...
... because they're so depressingly true.
Programming quotes
My favorite:
That's the thing about people who think they hate computers. What they really hate is lousy programmers.
My second favorite:
There are only two industries that refer to their customers as "users".
Some other goodies:
Programming quotes
My favorite:
That's the thing about people who think they hate computers. What they really hate is lousy programmers.
My second favorite:
There are only two industries that refer to their customers as "users".
Some other goodies:
- And the users exclaimed with a laugh and a taunt: "It's just what we asked for but not what we want."
- Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why.
- If there's one thing worse than a program that doesn't work when it should, it's a program that does work when it shouldn't.
- If automobiles had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.
- Computer Science is no more about computers than astronomy is about telescopes.
- Any code of your own that you haven't looked at for six or more months might as well have been written by someone else.
- There is not now, nor has there ever been, nor will there ever be, any programming language in which it is the least bit difficult to write bad code.
- Measuring programming progress by lines of code is like measuring aircraft building progress by weight.
- There are two ways of constructing a software design. One way is to make it so simple that there are obviously no deficiencies. And the other way is to make it so complicated that there are no obvious deficiencies.
- Before software can be reusable it first has to be usable
- First, solve the problem. Then, write the code.
- Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.

I'm a coder, damn it.
A conversation at work today got me thinking about my dual major in computer science and information science. I originally picked IS to supplement my CS focus, not to replace it. At heart I am definitely a computer science major, and hopefully no employer will ever think less of my development skills because they see that "Information Science" tacked on to the end of my major. My IS knowledge is mostly aimed at improving and adding to my CS skills.
Or, to put it more simply- I could live with my friends and family introducing me as just a CS major, but I'd blow a gasket if they ever introduced me as an IS major.
Or, to put it more simply- I could live with my friends and family introducing me as just a CS major, but I'd blow a gasket if they ever introduced me as an IS major.

Wednesday, April 1, 2009
DoG Ultimate connections
One of the guys I interviewed with today was a member of the Death or Glory Masters Ultimate Frisbee team! Pretty awesome. He even played with a former high school frisbee coach of mine a while back.
DoG UPA championships
They had a bunch of open club championships a few years ago, and the masters team won fairly recently.
DoG UPA championships
They had a bunch of open club championships a few years ago, and the masters team won fairly recently.

Unit tests- worth it?
The last employer I interviewed with mentioned that they used an agile software development process. For the uninitiated, a good description is below:
http://en.wikipedia.org/wiki/Agile_software_development
A key part of agile is having good automated unit tests that you can run after every build to make sure your new and old code works. That brings forth the question of just how many unit tests you should have when time is a factor.
From my experience at a large financial company, business pressures usually means that your automated tests are patchwork at best. There was no real effort to make sure that all your logic was tested and confirmed. Through the course of test case walkthroughs that may have happened, but it was never explicitly checked as such.
That is unfortunate since I think it encourages developers to manually test their software for the bare minimum. Essentially, they check that their product handles all the typical cases, and then do package breaks and follow up releases when the software breaks on exception cases. The business is trading a somewhat longer initial development period in exchange for a significantly longer support period. This is also a problem when future developers get the code and have no real way to figure out whether it's working as designed.
If I do end up signing on with Power Advocate, I hope they do comprehensive testing. It's far less pressure on the developer when tests are thorough and working.
http://en.wikipedia.org/wiki/Agile_software_development
A key part of agile is having good automated unit tests that you can run after every build to make sure your new and old code works. That brings forth the question of just how many unit tests you should have when time is a factor.
From my experience at a large financial company, business pressures usually means that your automated tests are patchwork at best. There was no real effort to make sure that all your logic was tested and confirmed. Through the course of test case walkthroughs that may have happened, but it was never explicitly checked as such.
That is unfortunate since I think it encourages developers to manually test their software for the bare minimum. Essentially, they check that their product handles all the typical cases, and then do package breaks and follow up releases when the software breaks on exception cases. The business is trading a somewhat longer initial development period in exchange for a significantly longer support period. This is also a problem when future developers get the code and have no real way to figure out whether it's working as designed.
If I do end up signing on with Power Advocate, I hope they do comprehensive testing. It's far less pressure on the developer when tests are thorough and working.
Thoughts on my first job interview in two years...
Just came back from a job interview at a small (~70 employees) software company in Boston. I was ecstatic about how well I did, especially how I could remember pretty vague technical questions that I don't deal with regularly.
Some of the tougher (more obscure) ones:
I won't bore you guys with the filler ones (abstract class vs. interface, definition of encapsulation/polymorphism and why are they good, etc.).
Some good questions I got from coworkers:
Random stuff about the job itself...
Still have two phone interviews tomorrow. There are probably more coming since my resumes just got sent out very recently. We'll see how things play out.
Some of the tougher (more obscure) ones:
- Can you get the JVM to garbage collect on command? If so, how?
- What's the difference between final, finally and finalize in java (only question I "missed"- I didn't remember what finalize was until they hinted at garbage collection. Now, if they had said finalize(), that would have been much easier :D )
- When you override equals(), always override...
I won't bore you guys with the filler ones (abstract class vs. interface, definition of encapsulation/polymorphism and why are they good, etc.).
Some good questions I got from coworkers:
- What's the difference between final methods/classes and final variables? Bonus points if you know why final objects are not immutable.
- When implementing a hashtable, what do you do with collisions? Be specific.

- It's in the old Teradyne building by the Pike in Chinatown! I always wondered what would happen to that place. They tore out some of the interior and made it look nice, but the ceiling and brick walls are still exposed and look old.
- One of the employees budgeted 15 minutes to test me with technical questions, then apologized because I'd answered so fast we had 5+ minutes left.
- The company is a Java/JSP/Ajax shop. It'll be good for me to get experience with web front end software like that, since it's a noticeable hole in my resume.
- The location and the people are nice, and the work seems very interesting. My #1 problem is that I'd be making a lot less than I would at Citi in July. While their rate is competitive with other small software development companies, it's still hard to swallow a pay cut.
Still have two phone interviews tomorrow. There are probably more coming since my resumes just got sent out very recently. We'll see how things play out.
Hello World
Opening post of "My Code's Compiling". Welcome everybody!
For those who don't know me, I'll give you the brief "about me" list.
Who am I?
This blog will be devoted mostly towards my professional and academic pursuits. I know blogs can get pretty long-winded, so I'll try to keep them short and to the point. I'm not the most concise person to begin with so that's doubly bad. Let me know how it goes :)
P.S. I'll try to make updates at most two weeks apart, but I get the feeling that will be as likely as me taking a job that involves coding in C++.
P.P.S. The blog title is a reference to an XKCD comic.
For those who don't know me, I'll give you the brief "about me" list.
Who am I?
- Northeastern University Undergraduate (graduating May 2010)
- Dual major in Computer and Information Science
- Primarily a Java developer, with plenty of perl/sql/shell scripting experience to go along with it
- Hardcore vim user. VIM > Eclipse
- Born and raised in the Boston area
This blog will be devoted mostly towards my professional and academic pursuits. I know blogs can get pretty long-winded, so I'll try to keep them short and to the point. I'm not the most concise person to begin with so that's doubly bad. Let me know how it goes :)
P.S. I'll try to make updates at most two weeks apart, but I get the feeling that will be as likely as me taking a job that involves coding in C++.
P.P.S. The blog title is a reference to an XKCD comic.

Subscribe to:
Posts (Atom)