Socket sprint
Problem one
A recent prototyping project went unfinished when I realized that a custom proxy server would be required. It's shaken me a little, because the idea of writing a fairly simple socket server shouldn't intimidate me. If I was the programmer I'd like to be, I should be able to bust out a socket server in a couple of hours.
Problem two
My workstation at the office is broken. Due to aggressive automated patching policies, my box gets some software patches nearly every night. When this happens, the machine loses network connectivity. This will bite me in the ass very soon, because I often need to log in from home to develop or for releases. The solution that I can think of is to create a system service that executes some network activity every five minutes or so (say, pull a web page). If an error occurs, restart the machine. If I can't write this as a batch script, I'll use C, so there's another cause for learning sockets.
So...
I'm on a socket sprint this weekend. I'm writing a boilerplate socket client and socket server, over and over, until it's trivial and mostly committed to memory. This way problems one and two (and countless future problems) will be that much easier. I'll let you know how this works out. Covey called this "Sharpening the Saw" in his Seven Habits of Highly Effective People.