Sunday, January 20, 2013

The "Science" in Computer Science

When I was an undergraduate, it was very common for many of us to view the "science" in Computer Science as an oxymoron. The proof was that all the "real" sciences had names like "Physics", "Chemistry", "Astronomy", and "Biology", while we were lumped in with "Political Science", "Social Science", and of course, "Military Science". Many took the position that Computer Science should be considered a branch of mathematics, while those of us who were liberal arts majors (I count myself and Jonathan Blow as the major advocates of this) considered Software Engineering a branch of the literary arts as the goal was ultimately to produce code that was easy for humans to read, since machines didn't care what your code looked like.

If you read Thomas Kuhn's The Structure of Scientific Revolutions, however, there is a sense in which Computer Science is a science. Consider the construction of a program to be a sociological construction of a theory about how best to approach a problem. You start out with version 1, which solves some portion of a problem. Later on, as the problem is better understood through the lens of your theory (i.e., your users start using your program and start providing you with feedback), you tinker with your theory to make it better fit the evidence (user feedback or market feedback). As a result, your program becomes more complicated and your program's structure (theory) starts to show it's datedness. When things go to a head, however, you either refactor or rewrite all the offending crufty code, throwing it away and replacing it with a new program (theory )that accommodates all the evidence to date. This is equivalent to perhaps relativity supplanting Newtonian physics. Note that the analogy even holds here --- old versions of your program continue to work, but the newer program (better theory) is more elegant, and fits better with the problem space. If your rewrite fails, the result is less useful than the previous version and society refuses to adopt your new program. For instance, Vista was not widely adopted and most users stayed on Windows XP instead.

There's even space in there for unit tests and systems tests: those tests are the empirical experiments by which you attempt to prove that your theory (program) works. In effect, when writing tests, you're trying to prove that your theory about how the problem should be solved is wrong. If you have the resources, you might even want such experiments be run/written by a third party, so they have no cognitive biases with which to approach the problem.

Obviously, this view of software engineering as actually "doing science" can only be carried up to a limit, but I find it to be an interesting analogy, and would be interested in hearing your thoughts.

Friday, January 11, 2013

Review: Odd and the Frost Giants

I somehow missed Odd and the Frost Giants when it came out. I usually check books out from the library, but since this book was $1.99 on the Kindle store for the rest of the month, I decided that it was worth the risk when I read the first chapter to my son and he didn't immediately start screaming. (It's too much to expect him to pay rapt attention --- my wife told me that he runs around at story hour even at the library)

The book's got beautiful language, and has lots of little scenes that are funny. You could imagine a Disney movie made from the book. I enjoyed the character of Odd, the little boy who kept up a great attitude no matter how tough a life fortune hands him. The story has a slow, lilting dream-like cadence, and the events unfurl smoothly and naturally.

All in all, a short book and a quick read. Recommended.

Sunday, January 06, 2013

My New Job

When I announced my retirement almost 3 years ago, I got three reactions:
  1. "I can't imagine staying home to feed the cats and watch TV." Those folks couldn't be more wrong. I don't have any cats, and I barely had time to finish a couple of video games, let alone watch TV. Instead, I wrote 3 books, traveled a lot, started a consulting business, got married, had a baby, and in general lived a pretty good life that never left me feeling bored or unfulfilled. My personal experience is that the kind of people who make those statements are people lacking in imagination: they can't imagine leading a self-directed life, so they imagine a life of boredom if they left work. 
  2. "You're too young to retire, you'll be back at work." They were partly right. Writing books is significant work, and my consulting business was also work, as is getting married and coping with baby.
  3. "Would you ever consider leaving retirement?" My response was "Of course, for an appropriate role and an opportunity that gets me excited enough."
My life has been full enough that I didn't think that there would be an opportunity big enough to get me excited. However, when I met the team at Quark Games, it was quite clear that this was a team that was something special. Passionate about games,with lots of talent (both engineering and otherwise), I was impressed by their designs and vision for what the next generation of games are going to look like.
So when the team asked me to join as the VP of Engineering for the company I was delighted to say yes and prove that yes, there are opportunities that will get me to return to the workforce. (I did discuss positions at other Silicon Valley startups, and yes, I am happy to report that Silicon Valley is as full of opportunity as ever for those of us for whom big companies are undesirable work environments)

Yes, Quark Games does have job openings, including engineering positions. All engineers will report to me, so if you've enjoyed working with me in the past or you know my management philosophy and like it, consider applying for a job!

This has implications for my negotiation business. Effective immediately, I will take on no more new customers. If you're an existing customer, don't worry, I won't abandon you. I will keep on your case until you are satisfied or give you a full refund. Existing customers who basically treat me as a sounding board for financial advice don't have to worry either --- I will keep servicing your requests as there's no conflict of interest with my new job. My books will always be available on Amazon and on-line.

Wednesday, January 02, 2013

Long Term Review: Resmed Swift FX Nasal Pillow System

I just replaced the nasal pillow on my Resmed Swift FX Nasal Pillow system due to wear, so I'm guessing that it's time for a long term review. I'd always used full-face masks before, but they had several problems: first, they were heavy and bulky. Secondly, they leaked. Finally, they were costly to replace and maintain. For a while, discount retailers on the internet would get them to me for a relatively cheap price, but the manufacturers recently clamped down on them so they're now very pricey.

I thought I wasn't a good candidate for a nasal pillow system because my brothers were all mouth breathers, and so I thought I was one as well. I took a loaner from SleepQuest, along with a chin strap so I could tie my mouth shut if it stayed open at night. (Yes crack all the jokes you want about my wife wanting me to use it during the day) After two days, however, I stopped using the chin strap as it would slip off at night. The nasal pillow would cause a nasty backflow through my mouth if my mouth slipped open, so obviously I wasn't a mouth-breather, since I would have woken up the minute my chin strap slipped off!

There was an initial adjustment period. Basically, my nostrils would get sore from the pillows in my nose. I guess despite the name, they're not particularly soft or comfortable, at least at the beginning. I would swap between my full-face mask and the nasal pillow every 2-3 days to give my nostrils a rest. I used vaseline as well on my nostrils so as to lubricate the pillows and not chafe my nostrils.

Then during the Hawaii trip I basically went cold-turkey and used only the nasal pillows. They worked great. Basically, my nose has gotten use to the pillows now and I can use them all the time with no problems. I was told that the pillows would last about 6 weeks or so, but in practice I got 3 months out of each pillow set. Replacements are about $21 each on Amazon, so there's no reason not to replacement whenever you notice wear. (Basically, my wear indicator was that the inside silicone wears larger and larger)

The best thing about the pillows is that they don't leak, and they feel very comfortable. On a secondary basis, the pillows are also much lighter than the full face mask and easier to pack, making future tours of the alps potentially easier on my body.

Highly recommended.

Tuesday, January 01, 2013

Review: The Perfect Woman

Happy New Year! And what better way to start the year on this blog with a book review.

The Perfect Woman sounds like a self-help book or some kind of romance, but is actually a police procedural. The novel revolves around two detectives, John Stalling and Tony Mazzeretti, who are rivals on the police force. When a serial killer goes on the loose, the two men are put together on the same team.

Stalling is clearly the book's protagonist, and the novel portrays a police detective's attempt to balance his life, his past, and his obsession with work and keeping killers off the street. Mazzeretti's a less well-rounded character, but as the story unfolds we begin to see the person behind the facade.

Unlike many police procedural, the novel gives you a clear idea of who the killer is right at the start, hence the novel reads more like a suspense genre book than a detective novel. The question is whether the police will catch the killer before he nabs another victim.

While a more than slightly entertaining first novel, there are moments when it feels like the author tried to cram more into the book in the name of "character development". I didn't feel my time was wasted reading the novel, but it didn't give me much that Silence of the Lambs didn't, for instance. But if you enjoyed that novel, I see no reason why you wouldn't enjoy this one. Mildly recommended  as an airplane novel.