I've been thinking lately about what my ideal, realistic job might be, and what concessions I might make to get close to that job.  I'm going to just spew those ideas here, in no particular order.

My ideal job would have a corporate office close to home, and have the ability to work from home on days when it would be preferable to have focused solitude away from the office or necessary to participate in home activities, like A/C installation or other home maintenance. "The office" would be in a building that is not a soulless corporate center building filled with sterile cubicles and Ikea-Lego desks, but would have some character all its own -- something you would enjoy showing off to family and other people in the industry, who would envy your daily environs.  It would be a place you would look forward to going.  And yet, the company would be flexible enough to let you work completely remotely for months at a time, for whatever reason.  As opposed to the sentiment I hear a lot where people who work remotely come into the office and learn to like coming into the office, I'd like the sentiment to be more one where the office is just one of many potential tools that builds team cohesion.

The team would be a diverse but allied crew of developers, designers, marketers, and managers. No position would be valued more than any other, because they would all be essential to the operation of the business day-to-day.  The environment would be casual, perhaps with optional "dress-up Fridays" (note the contrast to "dress-down Fridays"), emphasizing that the work product is more important than dressing for a role. Employees would not be encouraged to bring their pets to work, but a co-worker's love of a dog or cat or bird or marmot would be respected by his/her peers.

It's important to me that the team gels socially.  There has always been that separation for me from people who really like sports, which I can take or leave, but don't really get excited about at all.  I'm not looking for everyone to want to hang out all the time, but it would be nice if the people I worked with were mostly people that I would want to spend or enjoy spending time with outside of work.  Ideally, there would simultaneously be enough diversity in interests to keep things interesting, but enough similarity in interests to prevent alienation.

I don't really want to put in my time at work and then go home.  I'd like to believe in the work that I do. That certainly does not mean that I'd want to "do good works" all the time. There's a time and place for philanthropy and charity, and while I recognize that there are companies that focus on doing good works, that's not precisely what I'm interested in.  I'd be interested in any type of work where I could go home at the end of the day and feel good about the work I had done.  That could be contributing to a video game, or making it easier for business people to collaborate, or even enabling the transfer of large sums of money between companies. I suppose there is the care in the back of my mind that I would prefer the companies with which I do business to be "good", but I wouldn't rule out anything but obviously sleazy partners. I want to do "good work" not necessarily "good works".

As to the work itself -- Maybe it seems strange, but I'm not really picky about that.  I'm actually more interested in the technology stack that gets me there, and the ability to have something new and advancing to work with often enough that I don't get bored by drudgery. The web, desktop, mobile... It doesn't matter to me.  The product itself - as crazy as it may sound - isn't too important to me, as long as it's interesting enough to hold my attention and ultimately make money for the company.  In fact, the more interesting-sounding projects from a "hey friend, guess what I work on!" perspective tend to also have the characteristic of being the least exciting to actually work on.  While working on a fancy project ("I make the special effects software that they used to make the latest Hollywood blockbuster!") might be fun to tell friends, it might also be less rewarding from my "good work" perspective ("Oh great, more matrix math in the CPU...") than something that seems more mundane to an outsider.  It needs a good balance.

In terms of technology, where I am right now is working in a lot of PHP.  What I'd like though, is a company that understood a need to transition from PHP (maybe not immediately) to something more modern and/or upcoming as a team.  Have everyone on the team learn Ruby or Python or node.js all at once and get good at implementing it together, as a team.  More mobile would be good. Yes, some employer should teach me to write native mobile. But really, periodically evaluating what technology the company uses introspectively and encouraging employees to contribute to any decision for change is something very attractive to me.

The company would emphasize doing things well over doing things quickly.  The marketing and sales people would understand development at least enough to do their jobs well and respect both the customers and the developers, which has been a problem at places I've worked in the past.  Development itself wouldn't live and die by best-practices (there's a handy and quick way to kill innovation), but discover a reasonable process that they'd be proud to introduce to new hires who are familiar with more traditional methodology.  This is not to say that some emphasis wouldn't remain on speed, just that it would be pragmatic and tempered by process, to adequately address things like technical debt and scalability.

While I appreciate the rigor of a positive work-life balance, the 9-to-5 workday does not resonate with me as a way to produce the best work for work I love to do.  Development, as much as it is a rigorous and meticulous practice, is actually incredibly creative.  It is sometimes difficult to convince people that staring blankly at a monitor for a couple of hours to sort out a problem in my head truly is hard work.  Sometimes, staring blankly isn't the best use of time, and it's rather better to shake the cobwebs out with some completely other distraction.  This is where the Foosball tables come from.  This is why there are coin-op consoles in some good development studios.  But the hours that you work can make a big difference, too. I know I'm more "business-productive" at certain times of the day.  I know that I'm worthless to put in front of the computer at other times of day.  If I have to worry about putting the kids on the bus and then rushing in to the office, that's stress that work should not cause in me.  These ranges of time shift throughout the year. Having flexible and yet reliable work time is really important, not just for my happiness but for company productivity.

What about compensation and benefits?  It would be nice to have a health plan available, even though Berta's does well for us. A retirement plan, even a simple one, would be useful. Vacation is a big deal for me, since working from home has gotten me into a habit of never feeling like I can take or deserve one even though, after two years on my own without one, I think I desperately need one. Pay is important, when it comes down to brass tacks. I've looked at what a developer of my experience makes in my area, and I think I'm worth that salary -- I'm currently billing out hourly at well beyond that rate. I think of equal importance to all that is the ability to improve the situation.  At many previous positions there have been no reviews and no raises even for general inflation. It would be nice if that was just part of the deal - no questions 3%/inflation per year, within the company's ability to do so, with opportunity for bonuses based on performance - without having to beg for it.

A lot of these concerns seem like places where a worker could take advantage.  I think when I present these ideas to prospective employers, that's how they hear them.  But it's not about trying to pull one over or get something for nothing.  When it really comes down to it, I want to provide my best work.  These conditions are what produce that best work.

So.  Given that my "dream job" doesn't exist, where am I likely to trade off and what would I trade for?  

I could probably live with a longer commute.  Most people commute longer than I do (since I work from home, currently).  Maybe it seems strange, but I scoff at the idea of having to drive 30 minutes to get to work.  It seems excessive to me.  Plus there's gas and car maintenance to think about, especially if I'm driving every day.  There's also the issue of a commute becoming dangerous in inclement weather, which has been a perplexing problem for employers to understand in the past.  ("I'm in the office. Why aren't you in the office?" "Maybe because I'm not as willing to stupidly risk my life as you to get to your cube farm?")

I could probably live with regular hours.  It's tough because right now I have to get the kids on the bus in the morning.  Riley's too young yet to be responsible for this himself, alone.  I don't really have any reliable recourse for the kids if I don't do it myself.  If my commute for a new job would require me to leave the house before 8:30, then that pretty much rules that job out.

I suppose I could live with having to replace my entire wardrobe.  Berta would probably approve.  I'm a jeans and t-shirt guy.  Not "ratty t-shirt", but "humorous print t-shirt". (See also: Woot!) In most cases where I must impress someone with my clothes, I'm not going to do any justice to the interaction with what I say, either.  But hey, if everyone else is doing it, sure, I'll blow a thou' on some new khakis.

I'd easily give up the charismatic office for a good, friendly, competent team to work with.  I'd give up Foosball (really? Foosball?) and the like for a manager that understands the creativity that is sometimes required to do this work.  I'd allow for even a non-existent development process as long as the desire and intent to develop and apply one existed.

Remote work is hard to give up after nine years.  Companies should really consider not whether they'd allow remote work, but how they will eventually accommodate remote workers. The price of gas is an issue.  Getting the best workers is an issue.  I see the benefits of face-time, but even for teams that are always completely on-site, the tools used for disparate teams are an advantage.  Why not get started early?  Be lithe.  Anyway, I suppose I could always work in an office, depending on how far away it is (read: how much of my life/free time is drained by commuting to your remote location).

The trade-offs for these things are few.  More pay?  More vacation?  Is an employer willing to pay me for a full 10-hour day on a 8-hour day job with a 1-hour one-way commute?  Someone should compensate me for that time, no?  Maybe that's built into the salary.  It seems... unequal somehow, to trade being willfully strapped into a moving prison for cash.

I also wonder if I'm missing or overlooking anything. Some of the perks here have the potential to be pretty great. And realistically, I know plenty of people who aren't in a position to demand the conditions that I'm even considering as "standard", so I feel plenty privileged. I mean, I never forget when I was living in Johnstown above the barber shop, working at Little Caesar's and ditching the landlord because I wasn't making enough to cover rent.  I've been there.  I am appreciative.  Perhaps even some of these things I consider negatives are actually positives in disguise.  I could certainly stand to dress better.

I suppose now that I've gotten into words what I'd love to work at, I should determine what each of my concessions is worth to me, in terms of time or other compensation.  Then maybe I can use that to figure out what I want to do with myself, overall.

I have joked with co-workers about giving up programming and going into a profession that doesn't involve technology at all.  Usually, the profession is farming, selected because it's so far removed from technology, and obviously - literally - fruitful.  

But the reality is that I would not make a good farmer. The hours are long and bad.  The money is not good.  I'm actually not good at growing things, in general.  So while saying "I'm giving up all this web insanity and becoming a farmer" makes the point easily, it's not really practical.

Instead, I've decided to choose a practical fallback profession:  Bread making.

It's probably a little strange to say, but I do like making bread.  It's something you can do with your hands that produces an obvious useful output - food.  There's enough science involved to make it interesting to experiment with.  Altogether, it's a significant improvement over farming.

I also have some great ideas about how to improve the production and distribution of bread in general.  The type of shop I would work from would produce small loaves of bread for use in sandwiches.  The story I usually tell about how this idea came to me involves the loaves of sandwich bread you get from the store.

Have you ever noticed how supermarket-bought commercial bread can sit on the counter for weeks and not get moldy?  Yet if you buy fresh bread from a bakery, it'll go bad after a couple days?  You have to wonder what chemicals are in that commercial bread to keep the mold away for so long, and whether that's a good thing to be eating.

I want to make small loaves, and deliver them to homes on a schedule.  You'll never run out of bread that you have to buy loaves at the grocery store, and the bread will be fresh within a couple of days.  You can select the type of grain you like, and get artisan-quality bread instead of pre-packaged, mass-market, big-label brands.  Overall, I think people will like this idea, and I will like making it.

Anyway, that's the "plan" if all else fails.  Or working as a fry cook at McDonalds.  Who knows at this point.

An automated domain name renewal tripped today, reminding me of yet another project I had intended to work on, but haven't had the time to start abandoned.

program_a_problem.jpgThe idea started - and forgive me if I've written about this before, but I can't find it in the archives - when thinking about my old Bytes Brothers books.  The Bytes Brothers mysteries were a series of books with short "mysteries" that the brothers solve using the family computer and some BASIC programming.  The stories present a problem (usually quite fabricated) and usually a short program listing as part of the solution.  By following along with the story, readers get interested in solving the mystery and can try to solve them on their own by writing their own versions of the programs, or expanding on the ones provided.

What interests me about the book is that while it's geared toward kids who are beginners, it requires a minimal knowledge of BASIC to get going.  You can probably figure out the code if you read through it, and it's explained well in the examples, but you need to know how to, for example, run BASIC programs in advance of applying any of this knowledge.  So what is this book?

It's directed practice.  Each story presents an interesting puzzle that can be solved by practicing programming.  The fun part of these books is that the exercises are not pointless drills.  This is unlike most classroom learning, where a concept is discussed, a set of meaningless data is provided, and the solution must be found.  It's practice, but it's not compelling.

But this is just an example of one practice domain.  I think it would be useful to have a self-directed library of practice materials for many domains.  If you wanted to learn woodworking, for example, a set of practice routines could be available that would give you mastery over specific woodworking techniques while also completing useful projects.  This way, you may end up with a birdhouse (or hopefully something more useful) or two, rather than just a bunch of wood with dovetail joints cut into them.

Anyway, this was the plan for the domain that renewed today.  A website to allow people to produce and access these practice materials.  I'm not sure where the materials would come from, although my initial plans had something to do with getting the kids off the couch for the summer to have fun and/or make money while gaining some practical skills.  But that's yet another plan for yet another day...

Microsoft killed Zune, and now I'm using WinAmp... again.  I'm not surprised.  I suppose that somewhere deep in their accounting department they were showing losses, or maybe not enough gains, and word worked its way out of Accounting and up to Management and eventually down to the users.  Canceled.

It's not really canceled.  You can still use it.  You can still pay them.  But they're not bothering to update the Zune software, which is what made paying them worthwhile.  I should explain.

There are a handful of things that made Zune appealing to me over other, "similar", services.  When you pay for Zune, you have DRM'ed access to the entire Zune library of music.  This means you can not only stream, but also download and transport your music with you wherever you go, without an internet connection required.  With my Zune player, this is easy.  Obviously, I don't do a lot of that, but that's what made the other property of the Zune service good for me -- If you like a track, your monthly subscription gives you an allotment of credits you can use to remove the DRM from files, leaving plain MP3s.  And my other devices use MP3s.

The software itself had some flaws.  Yeah, serious flaws.  But it worked.  And it wasn't that ugly iTunes-looking business.  The Zune player was actually... pretty.  Maybe I'm weird, but I like the album and photo visualizations.  Getting to certain tracks shouldn't have been so difficult, and the software was often slow.  This is still a problem in other software.  iTunes is crap in this regard, too.  But Zune was no worse to navigate than the others.

I thought I would try the XBox Music app that is in Windows 8.  I can't stand it.  Like the revelation I've had with the XBox, I'm tired of buying software that then tries to sell me things I don't want.  Why XBox Music thinks I want to hear Kenny Chesney, given my complete lack of Country music in my inventory, I can't tell you.  With all of the upsell on the main interface, it's impossibly hard to get to my own music.  Even when I remember, the search feature is stuffed in a Windows 8 "charm" instead of being a primary UI feature, which is simply wrong.

The straw that broke the camels back alighted this morning when I realized that not all of my music was listed in the player.  I looked at the instructions the XBox Music app provided for getting music into it.  I observed that my music was already in the required location, and yet only some of the tracks were present.  When I tried to drag the track I wanted to play onto the XBox Music app, it didn't work.  Ah yes, Windows 8/Metro and cross-app interactivity is non-existent.  So I gave up and went back to WinAmp.

I know I'm missing out on all of the streaming services.  I don't care too much.  Maybe I'm "getting old", but the pop/house garbage that is the bulk of streamed new music these days doesn't do it for me.  There's only so much of that genre I can endure.  Usually about 2 seconds worth.  I don't feel like I'm missing much ignoring Spotify's crappy app interface, either, and I simply can't be bothered with a web interface to music, since my job would have me rebooting my music when I'd most enjoy listening to it (ie "while my web browser is restarting").

So it's back to WinAmp for me.  Look at it, sitting "quietly" at the top of the screen, doing it's thing.  Playing music.  Just like I told it to.  Imagine that.

This years gardenA couple of years ago, we assembled a raised-bed garden in the back yard, and we've been planting in it with varying levels of commitment year-to-year.  Last year, we planted a bunch of interesting items, but most of our crop was eaten by deer.  Hopefully we won't have the same problem this year.

We stopped by Pickering Valley Feed and Farm Store to select our plants.  They tend to have a better selection and variety of vegetables than you can usually This years gardenfind  at big stores like Lowes.  Our selection of veggies included corn, string beans, broccoli, tomatoes, and green bell peppers.

We didn't get cucumbers this year.  I'm not sure why; maybe last year's weird cucumbers were a bit of a turn-off.  We also didn't get any melons, because in years past they never got enough water (my guess), and never grew beyond a couple of inches in diameter.

Our cool pick of the season this year is a peanut bush!  Peanuts grow under ground, so it's hard to see if they're creating fruit.  But they're supposed to grow all summer and into the fall.  When the first frost comes, you pull the whole plant out of the ground, and the peanuts are in the roots!  You hang the plant up to let the peanuts dry, and then you can eat them.  I'm excited about the peanut plant, because it's unique and reminds me of planting/harvesting the peanut plants at the bay when I was a kid.

Office planterWe also got a few plants for my office planter.  There are three basil and four jalapeno plants.  I think I've given up on growing the exotic peppers for now.  The jalapenos should be enough.  I planted them all yesterday and re-filled the planter with water, which it was desperately in need of.  The special soil in the planter is very water-absorbent so that you can leave plants in it un-watered for a while and the plants will survive.  I will be using the new watering can (which has this very cool detachable head) that Abby got me for Christmas to regularly water the plants, which was the problem last year -- the watering can leaked like a sieve and couldn't be used.

HopsAlso to be noted is that the hops are once again growing in the back yard.  I fed them some plant food last night just before the rain, and this morning they are about six inches taller than they were yesterday.  These things grow fast!  Hopefully this year we'll see some healthy vines and some cones, which didn't appear at all last year.  I'll have to keep watering them to make sure they stay healthy, which I think was last year's issue.