reflecting on the year that was 2011

Last year saw a lot of small changes, both bumps in the road and course corrections. Things have gotten better in more ways than not and I’m inclined to count that as an overall win ;)

I’m still not rich, but I really don’t want to be as I’m able to do what I want, have a job and a house.

I still am not healthy or fit as I want to be, but I’m working on it.

I still have way too many interests and projects, but I would rather have that issue than be bored all day.

The biggest thing is that Elaine and I are still together and we seemed to have “turned the corner” and left behind the cloud that arrived over us in the final year before her father passed. We still miss him, her much more so than me.

So yea, 2011 is gone and guess what – there be dragons out there. Yep, 2012 is the year of the dragon!

Fall Baking – Banana Bread

My mom used to make this all the time, but she never used a recipe that I knew of. So when I got the urge the other day to make some (nothing like the site of over ripe bananas to bring that urge up,) I first had to try and remember what she did and then look up in my copy of Fanny May a recipe to make sure I got the proportions right.

BananaBread_20111015_205008.jpg

I’ll find out in about 55 minutes :)

  • 3 or 4 ripe bananas
  • 1/3 cup melted butter
  • 1 cup sugar
  • 1 egg
  • 1 teaspoon vanilla
  • 1 teaspoon baking soda
  • Pinch of salt
  • 1 1/2 cups of all-purpose flour
  1. Preheat the oven to 350°F (175°C)
  2. Mash bananas and then add the butter into a large mixing bowl
  3. Mix in the sugar, beaten egg, and vanilla
  4. Add baking soda and salt and mix in
  5. Add the flour
  6. Pour into a buttered 4×8 inch loaf pan
  7. Bake for 1 hour.

Dennis Ritchie 1941 – 2011

A very sad week so far, Tim Bray says it better than I would so I’m just going to quote him:

Some things we now know to be good ideas:

  • Writ­ing op­er­at­ing sys­tems in a com­piled ma­chine-in­de­pen­dent lan­guage
  • Per­form­ing file I/O by read­ing, writ­ing, or over­writ­ing in­te­gral num­bers of bytes at in­te­gral off­sets.
  • Cre­at­ing processes by du­pli­cat­ing ex­ist­ing processes.
  • Null-ter­mi­nated byte strings.
  • In­vest­ing a sub­stan­tial pro­por­tion of pro­gram­mers’ time in build­ing tool­ing to make them­selves more pro­duc­tive.
  • When ex­plain­ing a new pro­gram­ming tech­nique, start­ing with “Hello, world”.

It’s hard to be­lieve that there was a time when any of these weren’t con­ven­tional wis­dom, but there was such a time. Unix is com­posed of more ob­vi­ous-in-ret­ro­spect en­gi­neer­ing de­sign choices than any­thing else I’ve seen or am likely to see in my life­time.

It is im­pos­si­ble — ab­solutely im­pos­si­ble — to over­state the debt my pro­fes­sion owes to Den­nis Ritchie. I’ve been liv­ing in a world he helped in­vent for over thirty years.

screen shot for Disqus support

Getting an error when I try to load disqus dashboard – here is the screen shot:

Screen shot 2011-10-02 at 6.52.43 PM.png

websockets – the bell-bottoms of the web?

Now that more browsers are supporting (or have enabled support) for websockets, I am starting to see more people touting the benefit for them because, like this ycombinator comment suggests:

“Do you anticipate that the use of WebSockets will improve performance? If so, can you estimate to what degree?”

It will since you don’t need to open and close connections all the time. I can’t estimate at what degree, but I think the communication will be much faster since currently some time is used to re-create connections.

But I see that as a false benefit. The original model for HTTP was to use the “classic” open, request, retrieve, close sequence; now all modern web servers support a single (or a small number of) connect per web session to allow for more efficient data throughput. What is false is that websockets will now run into the same problems that web servers and other client-to-server applications have been running into: NAT traversal and cross-domain issues.

Remember that websockets are just that – the browser allowing you to open a persistent socket to another tcp/ip endpoint – it doesn’t provide any of the services that are now required on the back-end. The javascript coder will need to start layering on top of their code routines that implement STUN, TURN, ICE and/or SIP.

This leads me to think that current server implementations that already support these technologies could/should be modified to support websockets – I’m looking at you XMPP :)