| Matthew Loar | Contact Me > |
2009:
2008:
2007:
2006:
2005:
2004:
2003:
2002:
Categories:
Ever since my friend Elton made a post about what he wished he had learned in college, I have been meaning to make my own post about my experiences at UIUC, er, I mean, ILLINOIS. I don't disagree with the things he wishes CS programs would teach, though I do disagree with the value of the education I received in college. While Elton seems to have enjoyed his time at UT and done well, the three years I spent at UIUC were the most miserable of my life so far. As I often find myself explaining to people today, there is surprisingly little overlap between the skills required to be a good software engineer and the things they teach you as an undergrad in what is supposedly one of the top 5 computer science programs in the country. My classes there were far more about obtaining a pretty piece of paper to hang on my wall than preparing to enter the workforce. This was exemplified by the CS grad student I met who appeared to be incapable of writing "Hello World" in C if his life depended on it.
Anyway, today I was going through my RSS feeds and found Joel Spolsky's post on the subject, and he hits it on the head. Let's teach our students Scheme! It's so functional and elegant! Nobody in industry uses it, but that's because they're all unsophisticated heathens! One of my colleagues once remarked on my zeal for producing a quality product by saying that "If you ignore a bug long enough, Matt will fix it." Apparently if I delay a blog post long enough, Joel Spolsky will write it.
While I'm on the subject of Joel Spolsky, however, I need to take exception to something he said in his post on "Duct Tape Programmers":
Duct tape programmers have to have a lot of talent to pull off this shtick. They have to be good enough programmers to ship code, and we'll forgive them if they never write a unit test, or if they xor the "next" and "prev" pointers of their linked list into a single DWORD to save 32 bits, because they're pretty enough, and smart enough, to pull it off.
As a member of the team which recently became the not-so-proud owner of GDI and
GDI+, I will say that if you do a crazy what-the-eff-is-he-doing "optimization"
like munging bits in a pointer and then fail to supply any unit tests for the
poor bastard who has to maintain your code after you run off to work on the Next
Big Thing, then you deserve to be fired. Or shot. Maybe both.
Nothing major, just another build with all the latest patches.
Packages on the Vim page.
I'm making a post here - HUGE SUCCESS.
Wow, it has been four months since my last post. Let's see what I have to report.
Work has been fairly slow, though it's starting to pick up now. There's a big reorg to prepare for the next release going on at the moment. Luckily I get to stay with my current manager and work on more-or-less the same feature team. However that feature team is moving to a different department, so our priorities going forward will likely be quite different. Right now I'm knee-deep in trying to port all of the clients of a clunky old API to the shiny new API so that we can kill the clunky old API which we currently share responsiblity for with another feature team which is going to a different department. Fun stuff.
In July I took a vacation to San Francisco. Mostly I explored the public transit system. I rode BART from SFO to my hotel just off Market Street. While I was there I rode the Muni Metro out to the zoo and saw their interesting mixed-traffic LRV operation. I also took Muni to AT&T park to catch a Giants afternoon game for which I got box seats. On Saturday I met a bunch of ACM people for lunch at a little French bistro, and then that evening I took BART over to Berkeley to see a Death Cab for Cutie concert (oh, the irony!). All-in-all it was a fun trip.
I did finally call an interior decorator to pick colors for me, and I'm glad I did. I really like the two colors she selected for my living room (Benjamin Moore colors "Atmospheric" and "Glacial Till"). She also selected colors for the rest of my place, but so far I have only painted the living room. I also bought a desk for my living room, and I bought some posters at a place in San Francisco and had them mounted on foam and shipped home.
In July the new light rail opened. I actually was at Westlake Center at 0945 to get on one of the first trains, which gives you some idea of how excited I was about this. It's really nice, and it will be even better once it reaches the airport in December. I can't wait for the future expansions.
I'm thinking about getting a new computer. The keyboard on the Thinkpad is starting to give me trouble, and it spends its life on my desk anyway, so I think I should get a desktop. Preferably one with a good graphics card so I can play my Steam games at home instead of on my ridiculously-good-for-gaming work machine. I've played through the entire Half-Life 2 series. I've been trying to work my way through Half-Life: Source mostly to learn the backstory for HL2, but I got stuck at one point and haven't been at it for a while. Speaking of which, if you like Half-Life, you should check out Freeman's Mind. It's really funny.
Well, I think that's enough for now. Hopefully I'll post more frequently in the future.
I have just uploaded Windows binaries for remctl 2.14.
You can find them on the remctl page.
It has been a while since I made a personal post. I'm fully moved out of my apartment and mostly settled into my new condo. I'm slowly getting everything put away. I have numbers for a couple of interior decorators, and I intend to consult one on what colors would work well for my living room. But before I do that, I want to really get my place squared away. I'm very glad that I asked the seller to leave behind the pantry-type thing in the kitchen - there is very little cabinet space and it is very useful. The thing in the bedroom I asked him to leave is a lot less useful, however. It looked very wrong where it wasplace, so I pulled it out of the bedroom and it is currently out in the living room on its side supporting my server machine. I think that it would probably be best for me to get a real desk for my server and to put my laptop out there as well. But I am slowly making this place my own, and once I get the walls painted a consistent color, I plan to have a housewarming party.
Otherwise I have been enjoying my new place. I have set a goal for myself to
sit at every bar in Belltown (a goal which is very difficult to achieve, but
that is kind of the point). Belltown is a great neighborhood, and it doesn't
hurt that a lot of my friends live around here too.
A few weeks ago I replaced my broken Blackjack with an HTC Fuze. So far it seems to be an improvement. The HTC Fuze combines a touchscreen with important things like Send and End keys and a slide-out QWERTY keyboard. The slide-out keyboard is definitely an improvement on the Blackjack's tiny keys and allows the Fuze to be narrower than the Blackjack, if twice as thick. The Fuze is pretty heavy, and I have the feeling that it would not take well to being dropped. Another thing I like is that unlike the Blackjack, it has a standard Mini-USB port.
Software-wise the phone is marginal. It runs Windows Mobile 6.1 and comes loaded with HTC TouchFLO(tm) software which provides a shinier and more touch-friendly home screen. Of course it's not very customizable, so the first thing I did was turn it off. I like how it files SMS messages into conversations. I never used SMS on the Blackjack, so I don't know if this is a recent feature or not. When using the web browser I have run into an issue where it returns a "403 Forbidden" page for all sites. I suspect this may be an AT&T issue rather than a phone issue, as disconnecting and reconnecting to the network fixes it. This is made easier by the fact that the function performed by holding the End key is configurable, and I have configured it to toggle "airplane mode."
The voice quality on the Fuze is fine, but using it as a phone can get very irritating. The keypad is through the touchscreen. When a call is active, the display has a number of buttons for functions such as turning on the speakerphone, and you have to hit a softkey to bring up the keypad. Also, the screen turns off after a second while a call is active (presumably to avoid inadvertent touchscreen presses), so you have to press the power key to turn it back on. This makes using touchtone interfaces (like voicemail) very frustrating.
Today I woke up to find my phone frozen and had to remove the battery to restart
it. I think the phone had been up for about a week. It's a sad state of
affairs that I think a phone crashing after a week of uptime is marginally
acceptable, but hey, it's WinMo.
Sigh.
So I picked up the keys to my new condo a week ago Friday, and due to various issues I decided it was best to hold off moving in until later today. In the meantime I decided to paint the living room. The room is quite large and two of the walls were a very dark green color. This color is also used in the kitchen and bathroom, but it just seemed wrong for the living room. The living room has a window which faces west, so I figured a brighter color was in order. I figured that since I wasn't moving in right away, this was the perfect time to do it. And I guess I had this need to assert my ownership of my new home.
So I went to the hardware store. For whatever reason I decided that the right color for my wall was a Benjamin Moore hue called "Mellow Yellow." Well, let me tell you, it wasn't so mellow once I got it on the wall. It is very overpowering, and I'm not sure if it really works with the pale green on the adjoining wall. My sister was undecided, her boyfriend thought it clashed. So today I went back to the store and looked at some more color cards, and brought home a sample of a much paler yellow to try on the wall. I think this one might work, but I was dumb and bought two gallons of the "Mellow Yellow" color before I had so much as brought a color card home to compare it with. Well, live and learn, I guess.
Speaking of tomorrow, I have to go pick up a truck at 8 AM, and here I am typing this at after 1 AM. And I still need to walk back to my old place, where my bed remains until tomorrow. I still don't have everything packed up.
Plus just to spite me, my cell phone decided to stop working today. I can hear
people, but they can't hear me. It's funny, just last week the PM was saying
his phone had broken in exactly the same way. This is ridiculous - I already
had to replace the Blackjack once. I don't think it's in warranty any more, so
I won't even have that option this time. Argh.
Methods of transferring funds between banks:
ACH: Takes two to three bank business days.
Wire transfer: Possibly same-day. Both the sending and receiving bank
are likely to charge you an obscene fee.
SneakerWire: Withdraw cash from ATM, walk to teller window.
Instantaneous and free if you do it right.
Methods of fraud prevention:
Rational: When suspicious transactions occur, call the customer and ask
if they are authorized.
Reality: Just start declining transactions at random. Wait for
customer to call from their home phone and deal with your automated phone
system.
In theory, credit unions are supposed to be less obnoxious, as all the depositors have an ownership interest. In reality, the only credit union I've ever been a member of will charge you a dollar "Foreign ATM Fee" if you withdraw cash at any ATM outside their extensive network covering both Champaign and Urbana.
Considering what interest rates are like these days, I just wish my mattress was
FDIC-insured.
Recently I had vos dump start sending the contents of a directory before all of its ancestor directories had been sent. I suppose that a sane ordering of the dump was too much to hope for. This release of afsbak changes tarvol to write orphaned entries into a tempfile. Then once the entire dump has been read, the orphan file is processed to see if ancestors have been found. This repeats until the orphans are eliminated or the orphan file stops shrinking.
This release also adds a new utility called aestar. This is my solution to the problem of how to make an encrypted, rsync-friendly backup of the BackupPC pool. Duplicity won't work because it does not support hard links. Rsyncrypto uses a dubious decision function for resetting the IV in CBC. What aestar does is read a tar file and encrypt the data for each file separately. Thus the size of the change when using CBC is limited to the size of the changed file, not the entire tarball. This utility requires the aespipe utility available in Debian for now; in the future I may rewrite it against a crypto library for better performance.
You can find it on the afsbak page.
This release corrects a couple of problems with the first version of afsbak. Firstly it removes the -omitdirs argument to vos dump. I hadn't realized that only looks at the mtime and ctime on the directory, so it will miss updates to existing files. Secondly I now filter what is written to stderr, since BackupPC doesn't like things it doesn't recognize being written to stderr.
You can find it at the afsbak page.
| Matthew Loar | Contact Me > |