Monday, November 18, 2013

I'm still here, and thinking about Post Scarcity Economics

Hmm, 388 views in the lifetime of this blog, I am flattered. I even got an email from one person who read this blog and was trying to recruit me, but I wasn't ready to leave my current job so I never replied. I am still not ready to leave my current job, and it is the same job, so that is good. This is the longest that I have been at one company since getting my CS&E degree and I would love it if I was here another 3 years at least, so this is good.

Just wanted to peek in and say, I am still alive. And not really blogging and that may or may not change after this but at least for tonight I have something that I want to share, even if no one else sees it.

James S. Albus wrote this great book before he died about the progress of Automation and Intelligent Systems (and Robots!) and the possibility that in the not too distant future what happened to Farming (90% less farmers now than at the peak of Agrarian society) could happen to Manufacturing and even to white collar work, and then what. This book is a proposal for how we deal with then what: http://www.amazon.com/Path-Better-World-James-Albus-ebook/dp/B006WHQULI

Rick Webb wrote this great article about the Economics of Star Trek specifically, but about a post-scarcity economics generally and how we could get from where we are now to where we want to be in the future: https://medium.com/editors-picks/29bab88d50

Give one or both of them a read, I think they are worth it.

Saturday, March 27, 2010

On chopping trees and developing software...

Today my wife and I went to visit with some friends of ours who live in the middle of the Mount Baker National Forest. They have a cabin and some property in an old mining town there and every time we go to visit there are some tasks that they could use some help in doing (and we love it).

Today a 25 foot evergreen tree, that was standing alone in the middle of the backyard, had to be felled. This meant I got to use power tools, specifically, the chainsaw.

Let me tell you, me and power tools haven't really spent much time together. My dad had a garage full of them when I was growing up, and he and my uncle could take cast off wood and make clocks, benches, shelves, you name it. And not only wood, they worked on electronics, cars and even designed a new musical instrument (not many have heard of the Harpsitar, but Stevie Wonder played it once). I watched and wondered and admired, but I rarely participated, and not because they didn't bring me in, they tried, but I just didn't like it. I think I was too scared of doing something wrong, so it was easier just not to do it at all.

Back to the tree, and the chainsaw. D_ had it all planned out, tie a rope two thirds the way up the tree, then about four feet up he cut out a wedge to encourage the tree to fall in the direction he wants. Then he tugs the rope along the desired path line while I make the finishing cut (with the chainsaw) on the tree ... and TIMBER!!!!

The tree fell about 30 degrees off the desired line, which was not ideal, but it was better than the 75 degrees off the line it would have fallen if cut right through with no rope and no guiding wedge (that would have killed a greenhouse, this way only hurt a small maple tree, and more importantly did not hurt myself or D_). Once the tree was on the ground we cut the remaining four feet down then marked off the tree in sixteen inch sections and proceeded to 'sausage' it up. We produced about a quarter of a chord(4'x4'x8') of wood, neatly stacked, which is about a weeks worth of heat for them next winter, not a bad afternoons work.

But what does this have to do with developing software, you may appropriately ask, since I did title this post the way I did. The short answer is not much, on the surface, but I think there is a good metaphor in there and I am going to try to dig it out.

I think that developing software can very much be like chopping down this tree. You make detailed plans based on past experiences and best estimations and then when you put the plan into action what you get is not exactly what you set out for. In the strictest sense that's a failure, but failure is really just another chance to learn on your way to success.

With 25 feet of tree chopped into 16 inch sections there were plenty of cuts to be made, especially since all the branches needed to be chopped off of the core logs. So I got to fail a lot, in order to get to the point where I was succeeding regularly. You see you have to learn to use the chainsaw to your best advantage, and you have to learn to be aware of surroundings when you use it (no blood was shed by anyone in this learning process, thankfully).

When cutting a branch off the core, you use the tip of the blade to slice it off like skimming butter with a butter knife, not like a potato peeler digging out a eye. When cutting the segments you want to let gravity work for you, so if the log is on uneven ground cut on either end of a mound first so the segment you cut wants to fall away from the saw. If you have to cut into a mound, watch that you don't saw dirt, or rocks, or wires, it's no fun, and it dulls the blades. Have extra blades ready, for when you dull the blades. When cutting a big log, push the blade all the way forward so that the teeth at the base of the chainsaw grip the log so you can pivot the blade through the the tree and move down in stages. Don't try to force it or turn the blade, or hold the blade in space and 'saw' back and forth like you would with a hand saw, all of these will cause the chain to seize up and the motor to run hot. By the time I did the last half dozen cuts the chainsaw and I were a well oiled machine, but I had to 'fail' several times and make a lot of the mistakes listed above in order to figure out what works well and would make me an efficient chainsaw operator.

Well the same goes for Software Development, substitute a product release for the 25 foot tree, and construction sprints for the 16 inch sections and you have yourself a real metaphor.

A team has to learn to 'fail' together in order to learn how to become the well oiled machine that you want them to be. They will sometimes develop what was designed, but not what was requested. There will be bugs based on misunderstandings and miscommunications, or even oversights. There will be resistance to learning new techniques, and estimates based on prior experiences that do not apply to the current project and are too long or too short. There will be conflicts of kinds personal, professional, scheduling, and resource availability. And all of this is normal and good for a team to go through as long as it does not become a chronic condition, as long as the team makes it a regular practice to learn from these failures and incorporate what they have learned into the next iterations.

So in the course of one afternoon I went from being a chainsaw newbie to a person who could make most cuts where pointed and chop through a trail blocking log with little fuss. Cutting wood with a chainsaw is a relatively easy task, developing software is a lot more complex, if less physically strenuous.

A good team can go from a group of random engineers to an agile quality software developing machine in the span of a major release or three. But they have to earn it and learn it through failing together and preventing repeats of those failures so that future iterations contain a lot more WIN and a lot less FAIL.

It can be done, and fun can be had while doing it. Providing heat for a week in the winter, or a SaaS Web Application for managing IT operations you have to be willing to risk doing something wrong, and learn from the times you do, so that you end up doing things right a lot more often in the end, and remember to have fun while doing it.

Thursday, March 25, 2010

Employed again, and none too soon...

Just a quick note to share the good news that my interview with the Local Online Book and Shopping Giant went really well and they made me an offer that I'd be a fool to turn down, and while I have been called a fool before, and probably will be again, I was not a fool this time, I accepted the offer and should start some time next week.

I went dark during the actual interviewing and the offers stage because I didn't want to say too much and risk anything going wrong, and I may come back and fill in some of what happened in that time, or I just may move on. For now I just want to figuratively shout it from the rooftops, and so I am, in many a forum.

Wednesday, March 17, 2010

A quick update then rest...

When apt-get is telling you it's going to take another hour to finish downloading eclipse and the sun-java6-jdk and there are a couple more steps to do after that before you can start coding, and its already 8pm, then it's time to give up the ghost for now and get some rest before your first interview.

What I did accomplish today were several problems coded on paper to approximate whiteboard coding, then answers researched online to see how I might have done better, MongoDB integration into a small C# WinForms application as proof of concept that I can do it (using Sam Corders mongodb-csharp driver library), and finishing up with some review of test theory and vocabulary review.

Then rest...

Tuesday, March 16, 2010

Things are heating up...

The job front is starting to look good, or at least it's not looking disheartening, but first let me give an update on my Ubuntu trials.

I was able to get 10.04 installed in a Sun Vbox but then was stymied by the same problem with mouse capture and the vbox additions not installing correctly. A quick spin using my friendly neighborhood search engines ("Bing vs Google" a Firefox add-on by Kanapaua) and I find out that I am not alone and there are known issues on that. It looks like I may be able to get it working if I upgrade Vbox to the latest version and install 10.04 again (and add a manual workaround to /etc/X11/xorg.conf) but I need to hold off on that because I am upgrading my Ubuntu 9 install from 04 to 10 so I can't upgrade Vbox till that is finished. Meanwhile I am downloading the Windows 32bit version of MongoDB so I can take it for a spin on the Windows/C#/C++ stack and compare and contrast with the Linux/Java/C++ stack when I get one of my Ubuntu distros in good working order.

The saga continues...

Now, the job front news.

Over the past two weeks I have had several phone pre-screens and technical screens and most of them have gone well and as a result I am moving to the next phase which is in-person interviews. I have an interview scheduled at a Local Online Book and Shopping Giant on Thursday and with the Search Arm of a Local Software Giant on Friday, and should have an interview through a vendor company for a Buisiness Intelligence and Internal Tools group at the same Local Software Giant early next week. I have a couple of other conversations going that are not as advanced in the pipeline but hopefully they will start advancing very soon.

Phone screens in the past have been a hit or miss thing for me, but currently I am having a bigger string of hits than misses except for the first one which was an unfortunate miss. This Local Casual Gaming Company has a lot of open positions right now, and my initial conversations with the recruiter there went great and moved me forward to the technical phone screen. This was my first technical call of this round and I was not really prepared for it psychologically and probably not fully technically either.

The person screening me ask me a question that caught me off guard about defining a commonly known concept in object oriented programming, the first thing that went through my mind was that this question took me back to my college days, unfortunately my filter was not on so the first thing that went through my mouth was "this question takes me back to my college days" which was THE WRONG THING to say, especially since right after saying it my mind blanked and I couldn't for the life of me define the concept, even though I had referred to it, without naming it, earlier in my conversation with him.

It was one of those concepts that we use and refer to, without naming it, every day when we develop software and like trying to remember the name of the band that sings that song that you loved for that one summer and you can't remember it right when you need to in order to make a good impression, no amount of thinking about it can make it come off the tip of your tongue and save the situation. The call went mostly sideways if not outright downhill from there and I am sure that at the end of that interview the screener decided that I was not technical enough, it's what I would have thought if I was on the other side of the conversation.

That was a good wake up call though, if you are a job seeker you should take nothing for granted, brush up on the things you did back in your college days, concepts of OOP, Data Structures, Classifications of Testing Domains, the works and while you are at it the kitchen sink.

Let's face it, it's still a buyers market out in the IT/Software Engineering job market, but if you have the skills and experience to make you a prime property the worse thing you can do is sell yourself short by not touching up the paint job (ok, enough with the Real Estate metaphors already).

On another note, one of these posts soon I will get around to explaining what I think a QualityMaster is and why I think it needs to exist in the Agile and Scrum world, in the meantime I will keep applying my skills the best way I can, hopefully soon for a new employer.

Sunday, March 14, 2010

If at first you don't succeed...

What is it they tell you right away in Scrum, fail fast, fail often, eliminate the bad paths in order to discover the good ones. I am having no problem with that, my attempt to create a VPC Virtual Machine and create an Ubuntu 10.04 instance on it failed, I couldn't even get it to run the live disk version, it would go to the golden orange screen and show the wait icon, and wait I would, and nothing more would happen. I'll try VPC when I need to create a Windows vm, I suspect that will go smoothly.

I went back to Sun VirtualBox and was able to get past the wait cursor, through the 8 pre-install steps and to the end of the install where the virtual machine needs to be rebooted, at this point, I horked things up good.

On reboot it requested that the cd be removed (unmounted) but the mouse was still trapped inside the vm window because the vbox additions have not been installed yet. I now know that I could initiate a reset Host-R then cancel and get mouse control back, but at the time I only knew I could get mouse control back after the screen saver initiated (a 20 minute wait). I tried to short cut that time by hybernating my computer, and wouldn't you know it when it came out of hybernation it went all BSOD on me (that's Blue Screen Of Death).

So after a full reboot, I restarted vbox unmounted the live disk iso, and restarted the newly installed vm and after the GRUB screen there was a big fat nothing, black screen, white cursor, blink, blink, blink.

So I'm starting over on the 10.04 install, this time no funny stuff, meanwhile I fired up the 9.04 Ubuntu vm, am downloading Eclipse and MongoDB on it, and will do some practice runs in C/C++ and then the same in Java. One way or another the rust will be removed before the interviews begin.

And so it begins...

Some might question the wisdom of starting a professional blog while in transition (read: not currently employed), but I say when else am I going to have the time to start this ball rolling, so wise or not, this is when I start.

I have been a full-time computer professional since my first post-college job at a local Computer Software Giant in 1996, but have gotten paid to work in the software/information technology industry on and off since my first post-high school summer job in the TSO Lab at the headquarters of a Savings And Loan Corporation in 1990. Since then I have worked for a Mortgage Brokerage, two different Computer Hardware/Software Manufacturers, a Closed Circuit Educational/Entertainment News Channel, an Online Learning Company, a Large Insurance Company, and a Mainframe/OnPremise/SAAS Applications Development/Solutions Company. All that is by way of saying, I have been around the block, at least a few of times, but I still feel that I have a lot to learn.

I have been practicing some form of Agile Development since 2004 when I was introduced to XP (eXtreme Programming), I have since worked on teams using AUP and Scrum. I became a Certified ScrumMaster and Certified Scrum Product Owner in July 2009, and finally signed the Agile Manifesto last week in March 2010. So I've been around that block as well, but not as many times, and look forward to experiencing and learning more.

Ok, now that I have established who I am, and what I've done, I may like many a blogger go dark and never be heard from again, but I think that will probably not be so. As I said earlier I am in transition, and the act of interviewing, preparing for interviews, recovering from interviews, etc. will probably supply the content of some of my early blog posts, past that, who knows. I read interesting ideas, and have some of my own, and now I have a place to share them, and that should ultimately be a good thing.

Right now, as I type this post I just finished downloading VPC 2007 SP1 and the Alpha3 candidate of Ubuntu 10.04 (Lucid) and am creating a new virtual machine so I can brush a little rust off of my Linux tech muscles to prepare for coding questions. I've done this before using Sun xVM VirtualBox (with Ubuntu 9.04 and Fedora Core 11), and used VMWare before, but this is my first attempt using the Microsoft product.

I'll keep you posted on my progress....