Trust

Trust yourself, trust your skills, trust your tools.

By nature, any programmer who has worked for any decent amount of time is going to be gun shy about a lot of things.  We say “probably” a lot,as well as “most likely” and “should”.  We’re not comfortable saying yes, is and will. Because things which we were sure of have at some point not been sure.  Some of this is because the people in business that we are coding for look at things differnently than programmers.  We might say, “So, what you are saying is that orders which are delivered are never picked up by a customer?” And the business people nod and say yes, and are glad you get it. So you go back and you make a couple of kinds of orders, ones which are delivered and ones which are picked up by the customer, and over time logic is added to these that are based on those facts: delivery and pickup, and all is well.

Then one day the business people have a problem, see sometimes when an order is out for delivery, the delivery person gets abducted by aliens, and then the customer might want to come and pick up the order instead of waiting for the delivery person to be rescued or replaced by autonomous drones.And now none of it works anymore, and the programmers are mad because the customer said this would never happen, and here it is happening all over the place all the time. And the business people are confused because they were really just talking about a rule that applies 90% of the time.

And over time, programmers learn to be a little bit scared of absolutes, they lose some of their trust of the world being an orderly place (well it isn’t, after all:) and it changes the way we think.

There’s a classic joke:

Three Americans, an engineer, a physicist, and a programmer were all on a train in Scotland. They looked out and saw a bunch of white sheep. The engineer looks out and sees a black sheep. “There are black sheep in Scotland!” he says.

The physicist looks out and says, “Well, there’s at least one black sheep in Scotland.”

The programmer looks out and says, “There’s a sheep in Scotland who is black on one side.

This is okay behavior at one point, but it bleeds out into other things. I’ve seen a lot of good, senior programmers who were scared of their shadows. Anything new was looked at askance. Anything that works differently is inherently dangerous. That, unfortunately can get in the way and lead to inefficient code. This is really true when the technology is really fundamentally different than the one you are used to.  In the case I”m thinking about it, it’s a C# programmer writing code in JavaScript, and just not really being comfortable.  That’s my read on it anyway, and reading code is a lot like reading the mind of the person who was writing it.

We’ve got an iPad app that is writing with Backbone.js, and is a giant mess of complicated JavaScript. Part of my job is to maintain it, add features, and clean it up where I can.  It’s a product that has many implementations and customers, so there’s a product level config that gets read in. Now, product A was created before Feature 1 was created. Only customers who pay for Feature 1 to be incorporated in the product, get that feature, but it’s part of the base code. (There is, I think a better way to have implemented this in the build process, but that’s not what I inherited).  The app object (which is a global javascript object) loads the products config and runs through a process that turns on and off the features of the product, based on what is on.

    var featureOne = app.product.config.hasOwnProperty("FeatureOneFunctionality") ? 
                           app.product.config.FeatureOneFunctionality : 
                           false;
    this.featureOneIsOn = featureOne ? true : false;

Um, okay? I mean, it passes the first test of code, it certainly works. It’s mostly okay. But it shows some fear. What’s a better way to write this code, and have it do the same thing?

        this.featureOneIsOn = !!app.product.config.FeatureOneFunctionality;

Some days I’d drop the “!!” off the front, but that forces it to boolean, which is needs to be. Odds are if it’s set it’s true or false already, so the only other value we’re going to get is undefined and !!undefined is false.

But, in C# if you referred to “app.product.config.FeatureOneFunctionality” and it didn’t exist, then that throws an error. It probably won’t compile, even. in C# the product config page would inherit from a standard one, when you add a feature you’d add it to the parent object, with a default value of false, and you’d be done. You could do this with JavaScript, but that kind of inheritance isn’t really right either, and could potentially break this code.

My guess is that this lack of trust of JavaScript is why they are calling Object.hasOwnProperty. Of course, if the config file ever were inherited like you would do in C# all these hasOwnProperty calls would fail. Because Object.hasOwnProperty is asking does this Object have a property named X which is defined on this property and not on its prototype? If an object has a “FeatureOneFunctionality” property that it got via prototypal inheritance, and wasn’t set, it’ll return false. As long as falseis our default, this code is okay (as it defaults it to false) but if we ever had a global feature that defaulted to true, this would cause it to be falseinstead.

There are other ways to check if an object has a property or not, that don’t depend on Object.hasOwnProperty, but that’s neither here nor there. In this case, it’s just a value property, and it’s a boolean. Not having it means it’s false. Pretty straightfoward.

And never mind that ternary operator later. That was also elsewhere in the code, where two variables were compared, thusly:

    var showThing = showITMode == "showIt"? true : false;

And this is also a lack of trust, either in themselves or in the code. Why not just this:

   var showThing = (showITMode == "showIt");

I added the parentheses because it makes it clearer to the next person than what it would look like before. It’s no more necessary than the ternary operator, but there’s a reason we call that the “obfuscation operator”.

This is part and parcel of the attitude I’m dealing with at work. JavaScript is seen as a scary thing without rules or logic. So we spend a lot of time writing rules around what you can and can’t do with it, and it takes the power away form the language. JS’s truthy and falsey values are weird, but understanding them can help you write cleaner looking, easier to reason about code. Closures and lexical scoping are hard concepts, but can help you get rid of this and the complications it creates. [this is one of those examples that drives OO programmers from type-safe languages nuts. The idea that this can change based on where and how a function is called? That’s foreign and anathema to them. I’m not a huge fan of it either, but that’s a later article]

Just a note that this example does not come directly from work code. It’s an amalgamation of things that are in the code, which is why it might seem worse than it is. This is code that’s running out in the wild and doing its job, it’s just not pretty, and doesn’t pass the second test of code: easy to read and reason about.

Mastery

The last post on this site before this one is from almost three years ago.  At the time, I was working as a temp for a web development and marketing company. About half my time was spent implementing WordPress sites. I worked on the Ohio Lottery page redesign, mostly implementing from the graphic designer’s photoshop file. I was pretty proud of my skill then, and it is pretty good — it’s pixel perfect to what the designer did on all the browsers of the time.  Today, just saying “pixel perfect design” sends a bit of a shiver down my back, because we can’t predict much about the user’s world except that we aren’t really sure what it is. As developers often say, “If I did it today, I’d do it differently.”

The other half of my time was spent working on digital signage.  That it, we’d sell you a TV screen, and a small (but powerful) computer, let you design what goes on your screen in the cloud, and do the magic that puts together the videos, events, tweets, and other content you want to appear on your screen. We had a product written by another company, tied to windows which worked fine, but needed more features. The vendor was a windows company, and we were more mac/open source focused. So, given that and the fact we couldn’t afford more from our vendor, we rewrote it in javascript, using node. Eventually the whole thing dumped on my lap, and then two months later, we were bought out by our vendor.

I got a full time job, and in the intervening time, my node javascript code has been pretty much retired in favor of the vendor’s (ie, our) C# solution.  Well, we’re the whole company now, and of the dozen or so developers, I’m the only one who doesn’t like C#. It makes me feel about the same way as “Pixel perfect design.”  Can I write it? More or less, it’s not that different than anything else, and there are clean ways to write things, and mostly all we’re doing is what I used to do in PHP, which is shuttle data from a database to a web page.  And I’m way way more comfortable on the front end of this, taking data, and making it into interactive web sites.

That part of my job hasn’t changed greatly — the signs we made were HTML5/css/JS things, often interactive, with maps and events and lots going on in some cases (less in others). It was all, for me, ultimately just providing the best user interface possible. I wrote a video game (a two player video game, in a single browser –that was a challenge!), we put signs in every major rest area in Ohio, connected by unreliable 3G mobile phones, but still had weather and news that was kept current. If I did it today, I’d do it differently.

I’d still choose JavaScript and node as my middleware (and possibly back end).

Twenty years ago, turning off JavaScript in my browser was just one of those things I did, like turning on file extensions in explorer, and moving my Windows toolbar from the bottom to the left. (I’m not the only person I know who does this;)  A decade ago, I was starting to really like JavaScript. At the county, I wrote my first AJAX, and used my first MVC Framework (CakePHP). At my last job (which is sort of my current job) I learned WordPress, and Node, and my happiness with PHP finally wore off. I’ll never be a hate of PHP, it has its place (and this is a wordpress site, for now). ut JavaScript? Well I’ve lived with it long enough that I’m starting to get to know it.

Being at a company with such a strong C# has actually made me care more about my JavaScript. I’ve learned that I, personally, don’t like strongly typed languages. Our C# code has some beginnings of the kind of stuff I saw in Java a decade ago.  Lots of nouns. Things that did things to themselves, but only in this one way. If you wanted something different, make another. A few weeks ago, I wrote an app that made use of a full service layer. Matching the patterns set by my co-worker (because this is what you have to do in a professional environment) in order to add four operations on a table: Edit, Save, List, and Set Password (it was a user table), required creating a dozen files, and editing 3-4 more. (This includes the controller getting the data, but not the models and view models I was using).

That code, for the large part, was cut and pasted from another sequence of code. I don’t know why we do it this way, I know it’s been like that for years, and to change this pattern is more than I can do.  The thing is, I don’t really understand it deeply. I know what each piece does. I even understand why we’re using a service later on this project. I don’t understand why it was implemented this way. I do understand that every programmer at my work understands it enough to implement it. The code, in large part because it doesn’t do much, is clean. It’s easy to reason about what it does — just not why.  (And I’m very happy with “easy to reason about” as a definition of code which is good enough.  Good enough code is what we’re shooting for here.)

On the other hand, I’m starting to see the Ossification of classes that came with Java. And the “this is the way it’s done best practices blah blah blah” speech that goes with that. Maybe you’re happy with that, but I could write the SQL queries to do my 4 things in about 10 minutes. (And writing them, as stored procedures was part of the task).  That gets me the data. Another half-hour to pass it through my service layer in any reasonable system (and Javascript, being typeless can handle this pretty well, one JSON string is pretty much like any other JSON string)  Instead,I sent 2-3 hours writing (copying) rote code, and then another hour going through and fixing all my syntax errors. Every line of code, every file added to implement something adds syntax errors. I’m not a perfect typist, and I’d be worse without the Intellisense in Visual Studio (then it would probably take me another 2-3 hours to fix the syntax errors instead of one). By the time I’m done, I have this byzantine thing that works, and I’m mentally tired, and I haven’t made anything that does anything much.

It’s huge, complex and it feels like gears that don’t do anything. I get the feeling that I could probably simplify this by having all the models implement an interface, and having all the service stuff implement an interface, and then the number of files I need drops in half or more. Everyone implements the same basic interface, and even the controller code is simpler. But it’s far far too late in this project for that. But all this type safety and structure makes someone happy, I think. It just isn’t me.

I read through the code that has been written by some of these C# people – people of intelligence and capability whose C# code is excellent, and I marvel at it a bit.  The amount that they try to shape it into C# is where it becomes crazy. JavaScript is not C#. It’s not strongly typed. And most very importantly JavaScript isn’t and Object Oriented language. Stop trying to make it work like one. (React.js does this some, the way that Backbone is implemented in on of our projects really wants to be OO).

I’m not saying you can’t do this with JS. ES6 has added the keyword class. But just talk to someone who’s done more than a few months of JS about lexical this and scoping. JS’s this does not work like any OO language ever. Even PHP is clearer on $this.

And I feel like I’m starting to get it. I write JS code, I listen to people who know JS online, and I find my code is like theirs. My code is nothing like the code I wrote a year ago, or even a few months ago. It’s better, and simpler in a way that I can’t explain.  I think I’m starting to get this.

Want to know how much I think I get it? So much I know how little I get it, that’s how much.  And it’s that learning and the experience I’m getting (and the fact that I’m working harder and better than every before) which is why this loosely typed, open source guy is working at a windows/C# shop. So long as I keep learning what I want, and keep getting better, I’m going to stay. Because Mastery is of the primary things that motivates me. (It’s more important than Authority and Purpose in the MAP style, at least for work).  I don’t think I’m the only programmer like this.

One of my goals this year is to extend my Mastery of what I love in code. Primarily this is JavaScript, but it’s also everything in the Human Interface sphere. Graphics tools, animation, responsive design. In the past few months, I’ve gotten a good grounding of Adobe Illustrator and that’s made me more productive than anything I ever knew about Photoshop. The most recent project has gained me kudos at work (and from the customer) for it’s look and feel. It’s simple, and most of my work has been in picking tools, and parts of tools that most cleanly express what the customer wants. But that’s the job, and I’m feeling good about it.

This week I talk to my boss about all of this, and where I’m going. Because I am a bit of an odd man out at work — my skills are needed because not everyone has them, but they also mean I don’t ‘fit’ in the way I could. I like my job, so let’s deal with it while it isn’t a problem. This is also something I’ve never done. Maybe I’m mastering this too.

The New Project

One of the things I’ve really enjoyed about my current assignment is that I’ve learned a lot about  new web technologies. One of the secrets to longevity in technology is to keep your skills and knowledge up to date.  The trick is often picking which technologies to watch and which ones to ignore.  Several years ago, I had the choice between learning Flash or HTML5/Canvas and JavaScript.  My thought was that while Flash was pretty healthy (at the time), it’s days were numbered.  This wasn’t a hard guess – Canvas was widely supported, and it didn’t look like Flash was ever going to be properly supported on iOS.

The advantage for working for a company doing web and interactive tech is that I can see what tools are being used, what technology other developers are excited about and find out about things I’d not seen uses for in the past. Then what I need, of course, is a project to work on. Sometimes work provides those, but it’s usually a good idea to build something yourself before you commit to your work that a thing can be done.  Plus you then have a good idea of what the sweet spot for the tech is, and how to use it — or know to stay away from it.  My hard dives are littered with half-started projects that I abandoned after seeing how the library functioned in a real project — or didn’t.

A few weeks ago, I was considering a text editor, or rather, a word processor.  I use Google Docs for a lot of my personal text editing, but there’s a feature that I want that it doesn’t have — and it’s not open enough for me to write a plugin for it. The idea was that I wanted an index alongside my document, but not part of it.  I’m not looking for headers, but rather an outline. I want the outline to be there when I’m editing, but not be there in the document, cluttering things up.  The document sections can be any size, so it needs to visual expand as I type, but keep the outline it’s attached to right there with it, so I know what section I’m working on. Google Docs doesn’t have a plugin architecture, and I don’t really want to rewrite a word processor just to get this feature, so I shelved and let it sit.

Over the next few weeks I developed some extensive code in node.js for work, as well as a simple video game that also used socket.io. That was fun, and I’m really liking some of the things you can do with the two technologies (I even wired up some php server code to talk to socket.io.) I have, over the past few years become a huge fan of JavaScript and what can be done with it.  I know there are complaints about it, but that’s been true of every major language ever, and following best practices tends to help. [There’s a post in here about  callback hell and how I never really got into it because of the way I code, which I’ll write later.]

One of my co-workers is working on an internal app that’s data-centric, and using angular.js for that.  We talked about it a bit, and I grabbed a copy of it, and messed around with it. It’s kind of interesting, I can see using Yii or Cake’s REST API routing  (and dropping their front end generation)  to build an app with it  At the same time, that feels like overkill for a lot of things.

But what I did realize is that angular.js and some clever JS and HTML could deal with the data issues I would have with the text editor + outline. I could have an app that could save and load files locally perhaps, or use cloud storage. I did a bit of research on databases with node, and most things are supported. However, I’ve been spoiled by the models in Cake and Yii, so I don’t want something where I’m constantly writing SQL statements and messing around at that level.

The key storage for node, though, seems to be MongoDB, via mongoose.  MongoDB is a no-sql database that’s quite different from what I’m used to.  I loved my DB classes in college, relational algebra, set theory, it’s all nice. The first half of my career was really writing SQL code, stored procedures and things like that. But the world is changing, and exactly that kind of experience is starting to age a bit.

So it’s time to move on, and while we’re moving on, let’s use all knew technologies, and basically write everything in one language: JavaScript.

So, that’s the new project: an outline-based word processor written as a web application, using AngularJS for the frontend and  Node/MongoDB as the backend.  There’s a few features that we’ll have to support, but I’ll go into them in the next blog.

Labor Day

Today is one of those holidays that feels particularly ironic.  Everyone gets a day off, except those of us with no work days.  It almost feels like I should get more done today than I would normally (aka: nothing).  I do think that I can’t really afford breaking my schedule, so I went ahead and followed it today.   Of course, it was helped that our family’s wage earner went to work today, probably getting overtime pay.  So I have to honor that by doing my own part.

Ultimately, getting back into routing was what cleared my head last week. I got a lot of comments from various sectors about keeping your mind clear and not abolishing hope — which wasn’t my intent, but it can feel that way when you’re depressed.  I spoke with one of the connections I had, and learned that I did make a good impression, there just wasn’t work (or money for work) yet.  That job may not be full time, but if things come up, it can be a source of much needed income.  Plus, it feels much better to know why you’re being rejected (at least when it isn’t about you.)

This week, I’m putting together my consulting profile, and I’m going to see if I can get some of those kinds of jobs.  I’m reasonably good at doing them (it’s keeping them coming in the pipeline that is hard).  It also means I can work from home, which I like — but which I don’t prefer.  It depends on who I’m answering to — I’ve found driven small business owners to be good bosses in that respect: they demand excellence and feedback, which keeps me on my ‘A’ game.  It’s a good synergy, if you will.

I also got good news about the unemployment situation which looked like it might take another week or two to resolve.  The good news is that it’s resolved.  We now have some cash flow, that will keep the rent paid and food on the table. It’s still going to be tight, but we’re making strides there.  It concerns me a bit how we can get by on half what my take home pay was.  It implies to me that we weren’t being good stewards of our income.  And that we can do some of the things we thought weren’t possible, if we’re more careful.

Finally, I got invited to the StoryNexus beta, which is interesting, and which I doubt I’d have done much with if I’d been working.  Now, however, I’m considering entering their Fall contest.  It gets me some recognition on the site, which might ultimately turn into profit.  (They have a plan for story creators to be able to monetize their work.)  I’ve also almost completed the novella for Amazon.  Drafting that is today’s big goal.

Unreasonable? Hope

There comes a time in the process where you become afraid of hope.

This is not good place to be in the fight against the depression, and I admit, I’m not sure how to battle it.  But let me explain it a bit more, since I’m living it today.

A recruiter calls, says, “I can have you working today or tomorrow, even.”  He describes the job, it’s one you can do, and you get excited. He negotiates with you about when you can do phone calls, if you’ll have time for ” a callback today.” You make the time, of course, you’re out of work. You Google the place you might work, you get directions on how to get there.  You contact the family and let them know things might change for the better. You tell you best friends.

Then, two days later with no call you sit alone at your desk and feel like shit.

And you feel like that bad feeling is in direct proportion to how excited you got, and you don’t want to get excited about anything, anymore. It’s hard to do your daily routine, it’s hard to do all the other things you need to take care of yourself. Your mind plays it’s soundtrack of all the other times people have talked to you and nothing came from it.  “If I’m so great,” the thinking goes. “Why does no one call me back?”

It’s that feeling of “they want me they really want me! no they hate me”.  You’ll get whiplash with changes like that.

And the rational part of me knows I was writing about this feeling two weeks ago. I know I need some patience, and with the direct hire positions, I have that.  But with the fast turn around stuff, when it doesn’t turn around fast, that’s hard.  I knew I’d have days like this, and I have my routine to keep me going.  Of course, in the excitement I’d let some of my routine go, after all I was going to be working again, soon. And that was part of the mistake.

I just don’t know if having real hope and getting excited is also a mistake.  How much is too much? If I get my hopes up too high, does it hurt more to have them dashed?  Or is it just that I was already stressed from two weeks without work that I’m feeling a bit fragile today?

How do you deal with this kind of thing?

Stress

The stress is building up, which is part of why I’ve not posted in two days, or walked.  That’s bad, and I need to deal with it, so let’s start with the easier of the two for now, and the one that will clear my head.

I’ve had a lot of recruiter contacts, I’d estimate I’ve been approached for 4-5 positions, some full time some contract.  Now we’re in the waiting part of the game.  Which for me is stressful. I can wait fairly well, but I’ve got little to do but think about what might or might not happen.  This can be bad in it’s own way, which is why I have other projects to work on.

On the other hand, we misunderstood how unemployment worked, and instead of restructuring our bills earlier, we paid them.  This isn’t necessarily a bad thing, but we’re not getting any income until mid September, and that’s stressful. We aren’t alone here, at least, — I remember being alone in Charlotte and really bottoming out on life.  I’ve never been alone here in Columbus, even if you don’t count Tam. We’ve got a few close friends, and family so things are going to be okay.  Our landlords, at least, will work with us if we communicate, so that’s good too.

The real problem, of course, is that we weren’t prepared for any kind of financial emergency.  We can’t just exist for a month with no income and not stress about it.  That’s a real problem, and one we’re going to fix.  I think we can even start now, and Tam and I have had some conversations about it.  It means changing the way we use and think about our money, but as Americans, that’s probably a good thing.

I want to say that we’re much better than we were ten years ago, when I was making a lot more money, and our household brought 2-3 times what it does now. Our bills weren’t appreciably higher (food was slightly higher, as there were more people involved), but we were still scratching by, paycheck-paycheck.  This isn’t about resources so much as how you deal with them.  We can do better, and we have to.

Noting all this stress is important, as it’s a potential driver of depression.  There has to be some to move you forward, but too much and it gets into “I can’t handle it” land, and things fold.  Paying attention is one of my five important rules and this is no exception.

And like I said, there’s potential good news: there’s a lot of nibbles out there, but as my grandfather used to say, nibbles could just mean all the minnows are eating your bait.  That ties into something else I worry about, and will write about tomorrow: unreasonable hope.

Recruiter Contacts

So today I have two recruiter contacts.  I call them that instead of interviews, basically because recruiters can’t hire you.  They’re just a middleman/contact person.  Someone you can tell your story to who can then turn around and sell you to the company.  They’re important in that way even if they are often difficult to deal with.  Some are much better than others at treating you like a person instead of a product with certain attributes (eg, PHP 12 years; SQL 19 years). I’ve been lucky this time around to deal with a few of the better kind of recruiter, although I’ve seen the others as well.

Part of it is that the skill set that makes you a technical person is often very different (and sometimes counter to) the skill set that makes you a recruiter.  We’re very different kinds of people, and it often doesn’t mesh well.  Yet, they need us as (at it’s base level) products to sell, and we need them because of that selling skill set.  Because often we are not very good at it.  I know I”m not a great salesman, I’ve tried it in the past.  I have to have an incredible belief in the product to sell it. It’s got to be somethign I value and like and think other people would benefit from.  In that way I do okay selling myself, and often my friends.  There are very few actual things I do well at selling.

The thing about these contacts is that they are so preliminary you may walk away with them with nothing.  I had one last week that was “Hi, My name is X, a recruiter for Y company.  I’m just catching up to you to tell you I’ve got nothing.”  Usually the contact is good, just so you can talk to someone and tell them your story.  Because the resume, while it is a list of facts that becomes a story, when you talk to a living person, you have a story to tell.  It’s your story, the story of how you got to where you are now, and what you want to be doing, and you want to tell a compelling one.

An important component of the story is to be as positive about things as possible.  You didn’t leave the last job because they were a bunch of shitheads — even if that’s possible.  Maybe you went on to pursue a more interesting technology.  In IT one good reason to move from job to job is to keep your skills fresh.  It shows that you are career minded, and moving forward with your career. A lot of IT people are happy doing the same thing they were always doing; for me that’s not who I am.  Both stories are good ones, but they are about different people.  Figuring out what that story is is important.

It helps you remember who you are, and to communicate it to other people.   And if you’re an IT person who thinks stories are just stories, or just fiction, and that you can’t tell “stories” since they aren’t true by some measure of things.  (Or not completely true, as part of storytelling is to pick what to focus on and what to leave out.) I just want to remind you that as human beings we are story telling creatures. (It seems that even some of the other high-order mammals may also be story tellers.) It’s something that we share across all humanity, and it’ something you share with that recruiter sitting across from you.

A compelling story is one they buy into and carry on to the client/future employer.

As a friend of mine often says, “So, what’s your story?”

Scheduling

So, yesterday’s post was about scheduling, and I broke my schedule yesterday (although I may make a refinement of it to allow for Wednesdays).  As far as things go, yesterday was a four-checkmark day when I was done, which is good enough. It just wasn’t the checkmarks I’d planned on.  Add that to a bout of self-doubt and feeling like a fake/failure last night, and I’m not excited about how my day went.  So today, I need to be productive and get the wheels back on the road.

So we’ll start with one of the things I didn’t do yesterday, namely: write about my schedule.

I admit I do very well with a regimented day.  I’ve got a morning routine that gets everything done and me out the door (or I did, anyway).  I had a rhythm to my day, and that helped.  Since I worked in a job that was very flexible in its duties, there were a lot of varied things to be working on, and having a schedule helped me to focus on which ones I’d be working on, and set aside certain parts of the day for that. It didn’t always work, as I also had to respond to emergencies or support calls, and those can’t be scheduled. (I.T. WISHES!)

When I was unemployed the last time, I didn’t have a schedule, and I also got very depressed, so I slept a lot.  And my schedule rotated around. If I didn’t have my family and my time obligations with them (date nights, gaming nights, that sort of thing) then my schedule would have been worse. I still have that kind of structure, but I can do better.  As I wrote, on Sunday I sat down and wrote down four major projects.   Then I broke them down some into larger tasks, and the closer in tasks got broken down some more in to check-mark worthy chunks.

I changed my alarm from 5 to 6, since I don’t have a morning commute anymore.  My commute was the one time I regularly walked (to and from bus stops), so I added in a morning walk, which I still need to figure out how long it is. After that, I shower and get dressed. A mundane element of my schedule, perhaps, but it means something to be clean and to be dressed.  It means I’m not just lazing around, and I’m here to do some work.  Breakfast is in there as well (still finding it’s best spot, and with the dotter starting school this may be a bit flexible for now).

Then I sit down at my task lists on Any.Do and I decide which things I’m doing every day. I’ve got coding, writing, and job-finding tasks I can do at my computer, and a house-cleaning task for each day which also needs to get done. Today, for instance, I’m pulling the couch out and going on an archaeology mission. I mean, cleaning out from under it.  But more on cleaning tasks later.  They are an important part of the depression-fighting, though.

Hopefully by 3 or 4 o’clock, I’ve gotten 4-5 check-marks.  Then I can assess how I’m feeling: Am I almost done with a task? Am I at a good stopping point? Is there anything urgent that still needs doing?  Whose cooking dinner? At that point, I can unwind — I’ve probably been working for 8-9 hours at that point, so it seems fair.  That leaves my evening open to relax, recharge and focus on my family.  Yesterday, I did that part in the middle of my day, and came back to it later and got one or two things done.  That might be okay, but it’s much harder to relax during those times that I haven’t quite finished yet — as there’s always the chance I won’t get them done.

The other reason that that afternoon review is important is that part of this isn’t just getting things done, but me knowing and acknowledging that I got things done.  One of my goals is keeping my spirits up and depression at bay, and you can’t do that unless you keep self-aware of what is going on.

Organizing

The first thing I need to do is get some control over what’s going on.  I think that’s a human reaction to massive change and uncertainty, even if I may sometimes be a bit control-freaky.  I just like things in a certain order, and now the order I had is all gone.  And that feeling of disorder is part of what I’m fighting against.

So my first task, which I did on Sunday was to start getting things organized.  That meant applying for unemployment, getting set up with food stamps, and going through all my automated payments, and trying to make decisions.  I cancelled my kickstarters, except for one which is totally awesome.  I cancelled some of the tools I use that have monthly payments: todo.ly for instance — it’s only $3, but I don’t need it anymore.  The same is probably true of DropBox, since I only have the home network to share with anymore.  I doubt I need all that space.  I’ll probably clear it out today and shut down the service there. [And, frankly, I’ll probably go to Google Drive if I need the space again, it’s cheaper/GB.]

I set down a schedule for the work I need to do, giving myself four major projects: getting a job, finishing and publishing a video game, finishing and publishing my writing (on Amzaon), and getting the house in shape (particularly my office).  That’s a lot of work, and maybe more than I had going before since I was just idling away at these tasks, and now I’m ramping them up.  I do better with too much work than too little — one of the problems I was having (exacerbated by the budget crisis there) was that I just didn’t have enough work to do to keep me busy and engaged.  I won’t have that problem as my boss, in fact it’s just the opposite.

I’ve decided to use Any.do  for tasks, as it looks great on my Nexus 7.  I’m using Joe’s Goals  as well, as it serves a different function.  Basically, Any.do is a task list, with folders/projects that have specific tasks and goals in them. (The trick is making these the right size, so they’re all about the same energy cost.)  Joe’s Goals is more like a checklist — you list things you want to do every day or on a schedule, and when you do them, you give yourself a check mark.  Some of my goals are “Do a Get Hired Task” or “Write 300 words”.   I can look at the total number of checkmarks for a day, and I can know whether I had a good day or not.  And that’s how I can give myself permission to relax and enjoy myself.

Because we can work our butts off trying to accomplish something — and feel like failures until we do accomplish it.  Or we can set reasonable goals, and take care of our needs.  Needs which include time with family, time relaxing and recuperating from the stress of work.  Just like programmers shouldn’t be working 10 hour days 7 days a week, you can’t either.  But the thing about being unemployed is that it never, ever leaves your mind. No matter what you are doing, what you aren’t doing is earning any money.  And you know that, and it hurts.

So you want to play cards with your daughter? You can’t do it, or you can’t do it and not feel guilty.  Or, you can set reasonable goals, and know you did enough that day, and give yourself permission to enjoy life.  You’ll need that recharge to keep things going in the long run.  And you have to plan for the long run — if things work out in a week or two, no big deal; but you can’t count on that.  Doing this and having things work out early is awesome.  Not doing this and having it not work out: totally not awesome.

 

 

And so things change

So, I started this blog as I was starting my job hunt.  I wish I could say, “And now that job hunt is done”, but it isn’t.  In fact, now it has begun in earnest.  The position that I had (where I was a Temp waiting to be hired permanently) is now gone — it was never funded, so really the position is gone.

I’m home today and my mission to find work has broadened and been pushed to 100%.  That doesn’t mean everything I will be doing will be job hunting, but that everything I’ll be doing will be in support of that.  Part of that is blogging here — because keeping myself focused and in good spirits is a large part of being successful at anything, and I really need to be successful.

I’ve started today, putting in some routine, and applying for jobs.  I’ve also done things to take care of my family: I’ve filed for unemployment, we’re discussing food stamps (my wife was also laid off a few weeks ago, so getting all this in order is necessary for us to survive. It’s a bit scary and daunting, which is pretty motivating as well.  It’s not just me, and it hasn’t been in a long long time.

The last time I was unemployed, it didn’t go super well. It was rough on my marriage, it was rough on me, and we had real problems.  I don’t want that to happen now, so I’m taking some of the lessons I learned then (and since) and applying them now in the hopes I’ll be doing better. And since it’s possible I’ll learn something interesting that can help other people, I’ll blog about it as well.

So, here I am.  I’m ready to work, and ready to go.

Let’s do this thing.