This is not my father’s workshop

I have been spending a lot of time in the garage reclamation project.  It started with the construction of a single rolling utility bench, and now I have visions of building a giant 4’x8′ CNC thing.  Along the way, I’ve had various thoughts and experiments as I discover bits and pieces in the garage.

At one point, I had these giant wire rack shelves in there, with all sorts of plastic boxes, stuffed full of tools and toys from years of accumulated tinkering about.  One of the goals I have is to get as much as possible out of the plastic boxes, and into more visible forms, so that I’ll actually use up the supplies, rather than buying new each time I do something because I didn’t know I already had it.  For example, I swear I have at least a mile’s worth of ethernet cables stashed away.  Who knows how that much accumulates.  And that’s with getting rid of a bunch already.

I recently took apart 4 rolling peg board stands which I had built up for rolling around a much larger shop.  They don’t work so well in the garage as there’s not enough space for them to roam around.  So, I have a bunch of swivel locking casters now available for other things.  Why on earth did I purchase these giant casters then?  These casters are rated for 750lb each!  If I use 4, then we’re talking 3000lb of capacity.  I’m not sure my car weighs that much.

To make things more interesting though, I also purchased some adjustable height floor locks.  These things are also massive.  I could imagine hoisting up my house and rolling it around on these.

Why am I purchasing industrial grade equipment for home use?  Foolish tinkerer is the best explanation.  But, it’s also fun to think from the ground up.  I want to build a fairly large workbench/space.  Of course I want it to be on casters, because I want to move it around.  But, I also want stability, because some heavy duty torquing action might be taking place atop the thing.  So, I start with the giant wheels and jacks.  Honestly, If the bench is more than about 400lb (which is likely), the swivel locks on the wheels will likely be good enough.  But, having the adjustable jacks gives me the option of a relatively flat workplace as well as even more stability.

To digress, when I was a little kid, the garage workshop consisted of a giant 4×8 plywood sheet (at least my 5 year old mind remembers it being that big), mounted on a 2×4 into studs against the wall, with some legs holding it out on the other end.  My dad had various plastic bins of stuff, and pegboard on the wall for tools and whatnot.  Of course camping and picnic supplies stored below.  We had hand tools, and a power drill.  No circular saw, no table saw.  Tape measure, and whatnot.  And that’s about that.

Roll forward a few decades, and in my slightly oversized 2 car garage, I managed to have a contractor’s delta, a nice JET bandsaw, bench top drill press, compound sliding miter, and an assortment of dewalt battery operated things.  I even had a compressor and nail gun (very scary stuff).  That was good for building things like tables, shelving units, trimming baseboards, building strip kayaks, and generally being handy.  But alas, that all disappeared when I moved to India.

To rekindle the garage workshop, when I moved back to the US, I purchased a sawstop contractor’s saw.  That’s the saw that will stop before cutting off your finger.  A good thing to have in a table saw for weekend shop warriors I think.  That came from a recommendation of a woodworker who had already lost a bit of one of his fingers.  The saw itself is not giant, but I did get the 52″ extended fence, which is actually 81″ long.  That makes it quite a beast.

One more move, and finally we’re in a house with a long 4 car garage.  At first, we just shoved all manner of stuff into the garage, including those tall steel racks, and more steel roller racks, and tons of plastic bins, storage containers, wood, shelving pieces, and whatnot.  The table saw was not assembled because there was not room for it.  but, I did managed to create the rolling workbench/assembly table.  Very handy that.

After some nights and weekends, I did managed to put up some storage solutions against the walls.  On one wall, a french cleat system, which allows for attaching anything, currently using those slotted shelf attachment things you typically find in quick closet makeovers.  Then, along the other long wall, I put up the same slotted shelf stuff, but without the cleats.  With wall storage in place, many storage bin contents were emptied onto the walls, consolidated, discarded and what have you.

Then along came the 80×30″ electronics workbench.  Really this was a precursor to the more giant general workstation, but it’s been good to gather all the bits and pieces of electronics minutia laying around the shop.  finally the soldering iron has a place, and the caps and resistors are on display, ready to help the micro controllers on bread boards.  Anything else of interest has found wheels under it, like the floor standing drill press (finally usable with some eBay purchased parts).  Lumber against the wall, sorted by type and thickness.  And finally the table saw can be assembled.

I assembled it.  It actually takes a fair bit of work to get the fence rail situated correctly.  But there it is.  Also, there is a router stand (kreg) with router (bosch), and router lift (jessem).  I still don’t have the pocket holed, and the giant band saw, but basically back to a full strength shop.  But what’s different about this vs what my dad had?

After assembling all this stuff, and finally making it usable, I find that I want and can have different things out of the shop than what my dad had.  CNC machines are relatively cheap, compared to the days of my dad’s garage.  In fact, back in those days, we did not even have ‘home computers’, let alone micro controllers flying quad copters.  So, home milling would be an extremely specialized manual apprentice sort of thing reserved for people who were actually in the trade.  But not so today.  Today, I can work in metals.  Given an appropriate CNC, and a MIG welder, I could probably assemble a lot of serious stuff from raw materials.

The CNC offers other possibilities as well.  I purchased the table saw with the idea that I’d be cutting up wood in various configurations for furniture mostly, but possibly to make different types of machines as well.  But now what?  Can the CNC just do everything the table saw could have?  In general yes.  It can easily make any of the straight or angled cuts I would have done on the table saw.  It can even do the various beveled cuts, and at a lot more interesting angles to boot.  The CNC can also take place of what I might have done with the jig saw, and a lot of the easier profiling work I might have done with the router.  I can even take on a lot of the simple drilling work that I would have done with the drill press.

My gosh!  How could I ever need any other tool?  The CNC can/will do it all!!  Well, maybe not absolutely everything, but I’m willing to bet that most of the stuff I would have done with those other tools can easily be handled by the appropriate CNC machine.  So, what’s appropriate?

Starting from the desires, and working my way up.

I want to be able to work in metal.  At the very least, I want to work in aluminum.  I want to be able to work with a plasma cutter for the most interesting metals.  I want to work in wood.  All of this at least in 3-axis.  I’m willing to assuming a 5-axis machine is a separate deal altogether.

I want to be able to handle 4’x8′ sheet goods, straight from the home improvement store.  I want to be able to carve foam, way, frozen rubber, acrylic, whatever.  I want it to be relatively safe, and I want enough variety to be able to change it over time, adding tools, and capabilities.

Whew, that’s a tall order, and mothing like what my dad had in the garage.

What I need is a giant universal workstation which can support various activities, least of which might be a giant gantried CNC machine.  But, I’m willing to start small.  In the small, there are two things I really need.  First, is a rolling cabinet for the saw stop.  I’ve gone back and forth a few times as to whether this is the giant end all be all workbench, but I think I’ve finally settled on a much simpler ambition.  I need something that can carry the saw, and act as a general wood cutting station.  It will need to hold the sawstop, and it’s super long fence.  It does not have to double as a router table, because one already exists, but it should be the same height as the first rolling workstation so it can act as an out feed table.  I’m thinking something like this plan.  The saw already moves around now, because it has the contractor’s stand under it, but this will make it more convenient, and provide storage for all those little bits and pieces that are related to shaping wood with power tools.

That leaves the giant station.  This thing will have to hold a CNC machine of fairly large girth.  I’m thinking something on the lines of this large support structure.  At first, I’m not going to build that giant machine, but I will build the workbench that might support it.  In the meanwhile, I’m going to put together this much more diminutive Grunblau Platform machine.  Over time, these CNC machines will no doubt weigh in the hundreds of pounds, thus justifying the giant workbench, so that’s where I’ll apply the industrial equipment.

The garage workshop is in transition.  I’m a lunatic in terms of playing around with stuff, so I’m way out on a limb with my considerations and requirements.  But, I would not be surprised if within a few years, instead of seeing table saws, routers, and jig saws in the local home improvement center, we don’t start to see CNC machines, with the options of working in wood, metals, and other materials.  They’ll have tool heads, so you can add a 3D printer if you like as well.  It’s all about automated motion and software at that point.

In short, software rules the day, linear motion is easy, garage workshops are transformed.  This is not my father’s workshop, but I’m sure he’d be proud and fascinated to use it.

One more from the dust bin

At one point, I had counted 8 ‘computers’ in the house.  That was a few years ago.  Recently, I looked at the logs of the home router and saw 21 connected devices.  That’s cell phones, tablets, printer, desktops, laptops, rokus, apple TV, experimental boards, etc.  Things sure add up.

Going through the various boxed up electronics, I came across one that was fairly interesting when I purchased it.  The Via Embedded ARTiGO line started a few years back.  I have one of the earliest (doesn’t even have a name on the front).  This thing probably originally ran either Windows XP or a form of Linux.  When I booted it, I had Ubuntu running on it.  Well, an Ubuntu desktop is not particularly snappy on such a small device, but it was running.  When I purchased it around 2009, I was exploring different forms of home entertainment system.  In the end, it couldn’t really deliver the goods, so it languished since then.  Turns out the Roku box has been the best all-rounder for the past few years.

But here it is, this hunk of metal in one of those “don’t I look cute as a giant heat sink” cases.  It speaks “Industrial installation”, although there are no mounting holes on the case itself.  What to do with it now?

It has 10/100 ethernet and wifi, vga output, 3 USB 2.0 ports, audio in/out, and that’s about it.  It’s fairly warm to the touch, even when it’s not actually doing anything but displaying the terminal screen, and not actually running anything.  The size is that of a thick paperback novel.

I’m thinking hard about what I want to do with this thing.  Should I hook it up to some cameras and let it do security work around the house?  Can it be a web server?  Can it run XBMC?  Maybe it’s a better proxy server?  All very interesting questions.  I don’t know for sure right now, but if I had to guess, I am imagining some application where it finds itself in the garage, attached to some machine or another.  Possibly doing work to automated moving something every once in a while.  Perhaps operating a conveyor belt or equipment lift.  It’s not fast or robust enough to serve up media.  It doesn’t have fast enough connectivity to really do the proxy thing for the whole house, and I decided home routers are better at that anyway.  It consumes too much electricity (although less than a desktop) to be constantly on.  So, some occasional use scenario.

How does it compare to today’s crop of contenders?  The closest thing in my mind would be the cubitruck metal case with battery (cubieboard 3).  This is the cubieboard, based on AllWinner A20.  It has vga, hdmi, audio, SPDIF, IR, micro SD, gigabit ethernet, b/g/n wifi, OTG, 2x USB 2.0.  The metal case kit includes a 5300mAh battery, and 128Gb SSD.  All this for $169.  These days, all these ARM boards run various forms of Linux from tinyCore, to Arch, to Lubuntu and full blown server Ubuntu.  They don’t typically run Windows, but I’m sure future versions will run a form of Windows as well.

The box is the size of a packet of cigarettes, and runs off a 5v 2A power supply.  The case design itself is the same “hey look, I’m a giant heat sink” as the Via machine that I am purposing, and it even has mounting holes.  But darn, what a difference a few years makes!  This machine could easily be left on all the time.  It’s silent (no fans), and it has its own internal battery backup.  I guess that makes it more like a laptop, but without screen and keyboard.

I think one of these could do nicely in the garage for a couple of uses.  One might be running the giant CNC machine I’m currently planning.  That’s an “occasionally on” usage, which would not leverage the “always on” capabilities of the device, but it’s so small it could almost be hidden within the framing of the machine.

Another usage could be as the XBMC host for the garage audio system.  That should always be on, and the fact that the device has an IR built in would make it that much easier to use in some situations.

I like the direction things are headed in tech.  Smaller, less power consumed, more capable.  The machines can be purpose built, at relatively low costs.  The machine choices aren’t so much about operating systems any more for me either.  What’s important is what piece of software it’s going to run.  If it’s going to be an XBMC box, then the OS must be the one that runs XBMC best on this particular device.  I’m not going to lock into a vendor ecosystem just for the sake of it.  So, vendors need to think the same way.  It’s all about value, and that means the ecosystem must provide value to developers so they’ll target and create awesome applications.

At any rate, I’ve found another device that might find usage in a targeted application in the workshop.  At the same time, I have decided I must have the modern day equivalent (possibly more than one) to use for various other applications.

Life is good in computing these days.

When Scripts Roamed the Earth

Way way back in the day, I played with Tcl.  What a nice little compact thing that was.  Then along came this thing called Python.  Kind of funky with it’s indentation thing, but wow, what it has become!  I was cutting my CS chops when ‘p-code’ meant something.  Then along came this Javascript thing.  For the longest time, I think it kind of puttered along, until BAM!  The internet exploded, and more recently node.js happened.  Now suddenly it’s becoming a ‘de-facto’ go to language of the day.

But, another thing has happened recently as well.  With the V8 javascript compiler comes JIT compilation.  Then along comes Lua, and Go, and Python again, and suddenly ‘script’ is becoming as fast, if not faster, than statically compiled ‘C’, which has been the mainstay of computer programming for a few decades now.

And now, two other things are happening.  LuaJIT has this thing called dynasm.  This Dynamic Assembler quickly turns what looks like embedded assembly instructions into actual machine instructions at ‘runtime’.  This is kind of different than what nasm does.  Nasm is an assembler proper.  It takes assembly instructions, and turns that into machine specific code, as part of a typical ‘compile/link/run’ chain.  Dynasm just generates a function in memory, and then you can call it directly, while your program is running.

This concept of dynamic machine code generation seems to be a spreading trend, and all JIT runtimes do it.  I just came across another tool that helps you embed such a JIT thing into your C++ code.  Asmjit is the tool that does a thing similar to what luajit’s dynasm does.

These of course are not unique, and I’m sure there are countless projects that can be pointed to that do something somewhat similar.  And that’s kind of the point.  This dynamic code generation and execution thing is rapidly leaving the p-code phase, and entering the direct machine execution phase, which is making dynamic languages all the more usable and performant.

So, what’s next?

Well, that got me to thinking.  If really fast code can be delivered and executed at runtime, what kinds of problems can be solved?  Remote code execution is nothing new.  There are always challenges with marshaling, versioning, different architectures, security, and the like.  Some of the problems that exist are due to the typically static nature of the code that is being executed on both ends.  Might things change if both ends are more dynamic?

Take the case of TLS/SSL.  There’s all these certificate authorities, which is inherently fragile and error prone.  Then there’s the negotiation of the highest common denominator parameters for the exchange of data.  Well, what if this whole mess were given over to a dynamic piece?  Rather than negotiating the specifics of the encryption mechanism, the two parties could simply negotiate and possibly transfer a chunk of code to be executed.

How can that work?  The client connects to the server, using some mechanism to identify itself (possibly anonymous, possibly this is handled higher up in the stack).  The server then sends a bit of code that the client will then use to pass through every chunk of data that’s headed to the server.  Since the client has dynasm embedded, it can compile that code, and continue operating.  Whomever wrote the client doesn’t know anything about the particulars of communicating with the server.  They didn’t mess up the cryptography, they didn’t have to keep up to date with the latest heart bleed.  The server can change and customize the exchange however they see fit.

The worst case scenario is that the parties cannot agree on anything interesting, so they fall back to using plain old TLS.  This seems useful to me.  A lot of code, that has a high probability of being done wrong, is eliminated from the equation.  If certificate authorities are desired, then they can be used.  If something more interesting is desired, it can easily be encoded and shared.  If thing need to change instantly, it’s just a change on the server side, and move along.

Of course each side needs to provide an appropriate sandbox so the code doesn’t just execute something arbitrary.  Each side also needs to provide some primitives, like ability to grab certificates if needed, and access to crypto libraries if needed.

If the server wants to use a non-centralized form of identity, it can just code that up, and be on its way.  The potential is high for extremely dynamic communications, as well as mischief.

And what else?  Well, I guess just about anything that can benefit from being dynamic.  Learning new gestures, voice recognition, image recognition, learning to walk, learning new algorithms for searching, sorting, filtering, etc.  Just about anything.

Following this line of reasoning, I’d expect my various machines to start talking with each other using protocols of their own making.  Changing dynamically to fit whatever situation they encounter.  The communications algorithms go meta.  We need algorithms to create algorithms.  Threats and intrusions are perceived, and dealt with dynamically.  No waiting for a rev of the OS, no centrally distributed patches, no worrying about incompatible versions of this that and the other thing.  The machines, and their communications, become individual, dynamic, and non-static.

This could be interesting.


How goes that home data center?

So, last time around, I was using an old ASUS EeeBox pc as a proxy server.  That was actually working pretty well, to the point where I had forgotten that it was even running.  That’s an interesting lesson in how easy it is to forget any agregious thing that anyone does to your technology behind your back.  Eventually you’ll forget about it.

All was well until… the thunder/lightning/wind storm.  The house experienced several black/brown outs over the course of a couple of hours.  During the first blackout, most of the electronics in the house simply shut down, and didn’t come back when the power did (requiring manual resets).  The EeeBox probably took one shot too many, and in the end simply would not boot up.  Not even getting to the Bios post screen.  So much for that.  Of course, at a couple hundred dollars, not too big a loss, compared to losing a workstation say, but the proxy experiment came to an abrupt end.

I have another EeeBox sitting right next to it, and I can similarly build it up with ArchLinux, but I take a pause here and consider.

The Asus router lived through the same storm, and didn’t skip a beat.  The Synology NAS box faired similarly.  With it’s redundant power supplies, and forever spinning disks, nothing keeps that spinning rust offline for long.  But, this consumer grade repurposed PC, not so much.

I think for the home data center to work, the hardware needs to be be carefully selected for robustness.  It needs the kind of robustness you get out of your tv, or NAS box, or cable box, or router, or whatever.  They work most of the time, with a failure every few years, at which time you replace the thing with the latest and greatest, and move along your merry way.  For this case of the proxy server, I think there are two options.   Rely on the proxy capabilities built into the router, or the NAS box, or create a custom proxy box which has better reliability.  Going the router of relying on an already reliable piece of equipment is a no brainer, so I’ll ignore that.  What will it take to build a proxy box that is reliable, and doesn’t cost more than a standard home PC?

I’m not sure, but now I’m thinking about it.  The base might start with a piece of kit that already does most of what I want.  The WrtNode, for example, is in fact a router core, but you can add stuff to it.  Since I like Odroid though, that might be an interesting core to start from because it can deal with some standard Pc peripherals.  The question is whether the core is robust enough, or can be easily made so.

For now, I’m back into the research phase.  I have another EeeBox, and another similar box (Inspire), so more little boxen to fry.

I might also move the kit to the garage where it can be closest to the electrical and the cable coming in from the street.  Then I’ll have a better chance of controlling the quality of the electrical line, including robust backup for all the sensitive little bits.

And so it goes.


Configuring a home data center

I had this old school thought.  I need a 48u rack in the garage.  I’ll put a gigabit swatch at the top, and load it up with all these gigabit fast machines, and just party like a data center fool.

Then I went to Fry’s electronics to replace a failed hard disk in a very old Atom based machine.  One terabyte, for $59…  Because these are tiny little 5400 RPM laptop drives.

This made me rethink my rack madness.  First thought, what is storage all about these days?  First of all, there’s the cloud, with all its infinite amounts of storage at somewhat reasonable prices (if you’re a business).  But, what about the average home user.  What do you really store?  Well, there’s the Gobs and gobs of images that will never likely leave your phone.  Then there’s your aging DVD and CD collection, if you haven’t already gone full over to the streaming side of media consumption.  scanned documents? (all 1Gb of them).  What else is there?  Not much that I can think of really.  1 or 2 terabytes is plenty, and a NAS box that you never think about is probably the best way to go for most of that.

But, I want to do more with the bits and pieces of compute that I have laying around.  Alright, so long time back, I purchased two ASUS EeeBox EB1006-B machines.  Probably got them off Woot at a decent price.  Back then I wasn’t sure what I’d do with them, but I knew cheap was good.  I took one and eventually put it in my workshop, just to browse the internet on occasion.  The other sat in the box, until just recently.

These little boxen come with 1Gb of RAM, and a 160Gb hard disk.  The processor is an Atom N270, with who knows what kinds of graphics capabilities.  I upgraded the RAM to 2Gb, because $35.  I added the 1 Tb drive, because $59.  Now what?

The OS.  Well, they originally came with Windows XP, and it didn’t make sense to stick with that particular choice.  Nor did it make sense to upgrade to Windows 8.1, because that’s just not a match made in heaven.  So, I turned to… Linux.  I don’t really know what I’m going to use each box for, but I know that I can pretty much dedicate a single box to each feature I might want.  So, the first box I decided will be a proxy server for my home (outbound).  I have been playing with proxy servers at work for the past couple of years, so I thought it was high time that I actually use one at home for kicks.

Box1 – After some gnashing of teeth and wringing of hands, I settled on installing Arch Linux on the first box.  Why Arch?  Because I wanted a fairly minimal install.  I’ve installed Ubuntu on various machines in the past, and that’s a good enough environment.  Works great with just about any hardware I have.  But, for this proxy server, all I need is network and disk drive, and CPU cycles, and that’s about it.  I figure an Atom is a good enough processor for the types of proxying that are typical of home usage, so I don’t need some honking beefy server CPU here.  The 2Gb of RAM is plenty to hold the OS and most stuff that’s likely to be cached.  But, in case I want to cache large chunks of the internet, there’s the 1Tb drive sitting there doing mostly nothing most of the time.

I installed Arch, then I installed; alsa-utils (for audio, which I’m not using)

git – just in case I want to pull down and compile other interesting stuff

openssh – so I can manage the box without having an attached monitor

sudo – so I can sudo

nodejs – just in case I want to run some simple web server

squid – because that’s the actual proxy server that I need on the box


Realistically, I don’t need anything more than SSH and Squid, and if I reimage the machine, which is just a USB stick away, I’ll configure it with just those two packages.

After installing all the stuff, and configuring Squid (primarily cache location, and a couple of acls), I booted up.  I started by pointing FireFox from my desktop machine at the proxy.  That seemed to work.  Then I pointed the MacBook, and that works.  Then it was the iPad, which also seems to work.  To check and see if things are actually working as expected, I took a look at the Squid access log files, and sure enough, there were the expected entries for the web traffic.  Well, big woot!  Now I can go through the rest of the devices in the house and start pointing them at the proxy.

Now that the proxy machine is up and running, I can think about doing enforced, automatic proxy settings and the like, just like with big secure companies.  Then I want to play with fun ways to visualize the web accesses.  It would be really cool if I could integrate with Microsoft’s cloud app discovery service.  That would make it extra useful in terms of ready made visualizations.

The machine is nice and silent, just sitting there under a desk with it’s blue power indicator light, silenty proxying the internet.  I just put the other machine right next to it.  This one I think I’ll go with TinyCore Linux.  It’s even more stripped down than Arch Linux.  Almost nothing more than the kernel, shell and package manager.  But, when you’re going single purpose per device, that’s often enough.  For this machine, I’m thinking of making it a git server.  It’s a toss up though because my Synology box has git services as well, and for storage related stuff, the NAS is better equipped for dealing with redundancy, failures, and the like.  So, if not git server, then perhaps it will become the dhcp server for my network, relieving the router box of that particular duty.  Something like a pogoplug might be even more reasonable.  Very small compute required to serve this particular purpose.  If not, then it might just become a generalized compute node, perhaps server as a Docker thing, or as a TINN experimental server.

Besides these couple older boxes, I have a couple of Odroid XUs, some even more ancient x86 machines, and a beefy server from a bygone era (just put a new modern graphics card in it).  Each one of these devices can serve a single purpose.  This begs the question for me.  Do I need beefy multi-purpose machines in my home data center?  I think the answer is, I need a few beefy special purpose machines for certain purposes (storage, compute, graphics), and I need some more general purpose machines to do much lighter weight stuff (browsing, emailing, editing documents).

So, thus far, the home data center has gained a proxy server, recovered from a long decommissioned device.  I’m sure more specialized servers will come online over time, and I probably won’t be purchasing that 48u rack.

Microsoft Service Achievement Award

So, if you’ve been at Microsoft long enough, and you’ve done favorable work, and you’re of a certain level, you might be granted this MSAA. It’s basically time off, where you can think, rejuvenate, and come back swinging.  Some might call it a sabbatical, but you’re not headed off to another company to teach computing.

I was given one of these awards way back in the day, but never took the time… until now!

I’ve got 8 weeks, off the hook to play around, play with my kid, do some traveling, and of course some tinkering around with code, 3D printing, landscaping, and the inevitable home improvement projects.

I gave my coworkers the link to this blog so that they could follow along my exploits if they so choose.  The clock starts ticking on Sept. 29th, but I’ve already got a list of 20 things, which I know will not all get done in any way shape or form.  We’ll see.

For now, my short list is:

Write a simple graphics system in C (for what, the 3 or 4th time?)

Play around with FPGAs

Construct some cabinetry in the garage

Teach my son to walk, and the true meaning of ‘inside voice’


I’ve been at MS since Oct/Nov 1998, so coming on 16 years now.  I was recently doing some phone screens for college hires, and they invariably asked me the same question; “What motivates you to stay at Microsoft”.

There were two core answers that seemed to come to me easily.

1) Whenever we do anything at Microsoft, it has the potential have impacting a great many people around the world.  One key example I gave was, ‘we all Google, but Microsoft runs the ATMs and cash registers’.

2) I have been able to grow and learn a great many things within the company.  I’ve been a large scale manager, an individual contributor, worked internationally, worked on core frameworks, and whole cloud systems.  I’ve been able to switch teams and divisions, and the whole time, I’ve managed to keep a paycheck, and gather stock which is actually worth something.  Of course, I’m not a multi-billionaire, but, I’ve perfectly happy with the lifestyle my MS generated income affords me.

And so, instead of taking the payout for my sabbatical, I took the time off.  I’m looking forward to rejuvenating, ideating, and ultimately going back to work renewed and ready to kick some more serious computing butt!


Goodbye to colleagues

July 17 2014, some have called it Black Thursday at Microsoft.

I’ve been with the company for more than 15 years now, and I was NOT given the pink slip this time around.

Over those years, I have worked with tons of people, helped develop some careers, shipped lots of software, and generally had a good time.  Some of my colleagues were let go.  I actually feel fairly sad about it.  This is actually the second time I’ve known of colleagues being let go.  These are not people who are low performers.  In fact, last time around, the colleague found another job instantly within the company.

I remember back in the day Apple Computer would go through these fire/hire binges.  They’d let go a bunch of people, due to some change in direction or market, and then within 6 months end up hiring back just as many because they’d figured out something new which required those skilled workers.

In this case, it feels a bit different.  New head guy, new directions, new leadership, etc.

I’ve done some soul searching over this latest cull.  It’s getting lonely in My old Microsoft.  When you’ve been there as long as I have, the number of people you started with becomes very thin.  So, what’s my motivation?

It’s always the same I think.  I joined the company originally to work on the birth of XML.  I’ve done various other interesting things since then, and they all have the same pattern.  Some impossible task, some new business, some new technical challenge.

This is just the beginning of the layoffs, and I don’t know if I’ll make the next cull, but until then, I’ll be cranking code, doing the impossible, lamenting the departure of some very good engineering friends.  Mega corp is gonna do what mega corp’s gonna do.  I’m and engineer, and I’m gonna do some more engineering.



Get every new post delivered to your Inbox.

Join 47 other followers