Monthly Archives: January 2010

Duct tape, pine cones, a Swiss Army knife and a virtual machine or two

Today, two things that amaze me to no end:

First, a set of tools for functional testing, that allow me to write .NET code that talks to a Java server which starts a web browser, and makes it load JavaScript which then calls back to the server, and somehow this setup works and allows me to control multiple web browsers in a coordinated manner!

Second, something I thought about today only after I left work was still bugging me when I got home. So I fired up my Windows XP Mode, used it to open a VPN connection (via a web browser!) to work. Through the VPN I then used Remote Desktop to connect to my work desktop. On that desktop, I fired up my Windows XP Mode, and used it to open a VPN connection (standalone client, this time) to a network hosting a production server. Through the VPN I then used Remote Desktop to connect to the server, wherein I fired up SQL Server Management Studio to run a query against the production db.

what would mcgyver do

The most amazing thing?

While in Management Studio, I selected the query I had written, and hit Ctrl+C.

Then, I moved focus back to the computer I was physically on, opened Notepad, and hit Ctrl+V.

And it worked.

Don’t let anyone tell you programmers can’t get their shit together. If copy-paste can work reliably through that many layers, it can’t all be doom and gloom. 😉

PS. Longer-than-usual wait on Chapter 5. I’m not procrastinating, I’ve answered most of the questions already. Some of them, however, were exercises spread out to the next two weeks, and I can’t really write down the results until I have them. 

So I switched jobs again

This is not a lolcat.Like I wrote in a previous post, I’ve now began my first week as a developer working for Sininen Meteoriitti. Today was day two. Time to put down a few impressions.

First, the most important thought that bubbled up in my sleep-deprived consciousness today (while watching The Big Lebowski and recovering from a rather heavy pizza – there goes the diet!) was that I’m now part of a larger community of developers that give a crap. Obviously not a very well integrated part, this being day two and all, but a part nonetheless. This has some rather profound implications, chief among them that I no longer have an excuse to not get shit done.

In previous positions, I’ve had ideas on how to build up the collective competence of my team, to do geeky, fun stuff while learning in the process. So far, my follow-through rate has been abysmal, and I’ve always had at least one obstacle that I could point to and say “see, that’s why I can’t make this work.” Possibly I’ve even been right a couple of times. This time, though, I’m told from the get-go that if I’ve got ideas, I’ve got support too. It’s all up to me.

Today I got several interesting nudges from Jouni, wicked bastard that he is. :) One of them resulted in an idea: learn F# and hold a brown-bag lunch presentation where I introduce it to others. I’m not committing to a date, but it would combine two goals of mine: practicing the art of presentation and learning a new language. So yeah, I think I’ll put that on my to-do list. Starting with the “learn” part.

I also got my first assignments, and in the process realized how poorly I really know ASP.NET, especially the Visual Studio tooling. The stuff I do know was probably current sometime back in 2004. Crap. Far from being a technical leader – if this is the yardstick, I’m a crappy follower.

Speaking of leadership: I don’t think I mentioned why I’m blogging my answers to questions presented in a book. I suck at sticking to doing something, be it physical exercise, a diet or answering difficult personal questions in the name of learning. The point of these posts is to force me to think about each question, and write the answer down. I hope the content is interesting enough to warrant the search engine hits I seem to be getting…

In Chapter 4 I set myself a goal of practicing my guitar playing for 15 minutes every day. It’s a sad testimony of my piss-poor commitment that I managed to miss two days from the last seven. I also recalibrated my expectations: instead of trying to play and sing at the same time, I’m concentrating on playing riffs right, with a metronome. It seems to be working, too. Who knew? 😛 I’m combining daily practice with what I got from reading The Talent Code: I’m trying to split the problems into chunks, then practice the chunks in a way that allows me to fail in a controlled way, and then hone that failure away. Once that’s done, I can do the same thing with the chunks, and so on. (I’m paraphrasing heavily here.)

On the study front, I failed again to sign up for the study techniques course. This time I remembered it, and even had a reminder to sign up. Unfortunately, while my other spring courses opened up for registration yesterday, registration for that one ended last Friday. They’re doing this on purpose, I frigging know it. I did manage to sign up for two grueling math courses that should keep me occupied for the spring. In fact, when I plotted them on my weekly calendar, the idea that I might have tackled more seems absurd. I also decided to not re-take the exam for Theory of Computation. I’m not going to learn anything significant in the exam, and improving the grade would only serve my ego.

Also, finally got me an iPhone, which explains the gratuitous cat photo. This concludes my status update. I promise I’ll follow up with Chapter 5 soon.

Chapter 4: How Leaders Develop

(This is part 4 in a series of posts where I document my progress through reading Becoming a Technical Leader: An Organic Problem-Solving Approach by Gerald Weinberg, answering the questions at the end of each chapter)

1.  Do you have some skill that you have improved over a long period of time?

“Can you plot your progress, and can you apply your methods of learning to that of learning to be a better problem-solving leader?”

I guess programming is the best I can do here. The method, so far, has mostly been solving real-world problems. Applying the same methods for learning leadership would require actually trying to be one. Sure, it’s possible. But we’ll have to wait a while to see if I’ll do that or not. Then again, the question was can you, not will you.

2. Can you describe a plateau you are now occupying?

“Are there signs that you may be approaching the ravine [the drop in skill just before a rapid rise to the next plateau]? Are you trying to stay out of the ravine, or learn what you can from tumbling in?”

I write reasonably good code, and I have a good overall grasp on the landscape of programming. However, I still haven’t managed to do anything properly with functional programming, because it’s damn hard. That’s a ravine right there. I’m actually trying to leap in, but I get tired of it fast, and eventually quit.

3. How long has it been since the last time you climbed to a new plateau?

“Are you still enjoying the feeling of being on the flat? What are you doing to get ready for the next one?”

The plateaus, ravines and sharp climbs in my progress seemed to come in two-year cycles in the beginning. I’ve been doing this for ten years, but the last time I observed a sharp increase was about four years ago. So either I’ve been on the same plateau for four years, or I’ve been paying less attention to the change.

I’m trying to study Computer Science, to brush up on the theory behind the practice. That’s my number one strategy for preparing.

4. In the course of your life, what have you learned about learning?

Learning requires intense focus, passion and a tough skin to tolerate the constant failing. It’s also a lot of work.

5. Set yourself some personal achievement that you can practice for fifteen minutes every day for a week.

“Keep a record of your progress. Next week, pick another achievement.”

I’ve been practicing the guitar riffs to HIM’s cover of Wicked Game. Now I’m going to try to sing and play at the same time. :)


Previously: Chapter 3: A Problem-Solving Style  Next up: Chapter 5: But I Can’t Because…