October 2012 - Another Gig Completes

by October 30, 2012 12:39 PM

A couple weeks ago I wrapped up my last contract. I mentioned it in Drowning in New Technologies. Again, awesome, awesome contract – I learned a ton and got to work with some really cool people.

What’s Next

The last time I had a break between contracts I started playing with electronics (see ZigBee Garage Door Opener – yes, it's still working like a champ). I've thought about picking that adventure back up, but am hesitant because of a couple roadblocks I had started to run into before. First was cost – tinkering with electronics isn't crazy expensive or anything, but if you wanted to replace every plug in your house with a smart plug for example, it adds up quick. The true low cost solutions are really only present in bulk – massive bulk. The other road block was simply my hesitation to truly devote to something so big. You see, I tend to over-do everything I get into. If I was going to get serious about it, that meant starting a journey of mastering all aspects of electronics – everything from the basic electronics knowledge needed to get a circuit working to learning all I could about physics. Knowing how to do something doesn't cut it for me. I have to know exactly why every piece of the puzzle works. People spend years and sometimes entire careers mastering this. I'm not sure I'm excited enough to devote myself that completely to it. Maybe being a hobbyist is the key here; not working out how to profit from it.

I think I'll stick to software and stick to the aspect of it I know best - enterprise web development. For a while yet, that means continuing to consult. I still hope to create a product of my own though and consulting might be the key to that as well. You see, I've worked out a cobbled together way of managing my gigs, billable hours, invoices, and whatnot. It's a mixture of folder structure, documents, an Outlook calendar for keeping time, Excel templates for the invoices, and a lot of copying/pasting followed by printing to PDF.

I'm pretty sure there are solutions out there for this, but creating my own will do two important things for me. First it will potentially turn some profit if it turns into something others find useful as well. Second it will give me the codebase of a real world application that I can use for both pointing potential consulting clients to and as an example when trying to explain a concept to another developer. It is sometimes rough when someone wants to see some of what I've done or they want to see an example of whatever pattern I'm prattling on about, but everything I've done is internal and proprietary. I'm good at coding on the fly and coming up with sample applications, but nothing speaks truer than code running in production.

So that is my immediate plan. I've upgraded to Windows 8, Visual Studio 2012, and ReSharper 7.0. I've also purchased ASP.NET MVC 4 in Action to make sure I haven't missed anything over the last year. Once I've gone through that, I'll get started on my first product. My intention is code it publicly (GitHub of course) and blog along the way about why I've done this or that in the codebase.

That is, unless I change my mind 12 seconds after clicking publish on this post, or unless another gig comes along much sooner than I expect it to. Wouldn't be so bad if I could manage to write some code in the evenings and weekends. Stupid Warcraft! Yes, I still play - have long since given up raiding, but I do indeed have a level 90 Druid already and have a young panda monk decked out in heirloom gear anxiously awaiting my attention.

Wish me luck!

Tags: , ,

July 2012 - Drowning in New Technologies

by July 22, 2012 09:14 AM

Since April (around the time of my last blog post!), I've been on a gig with a company out of Indianapolis. It's your classic big corp, big ball of mud, type of application. Nothing new to me since I've spent my entire career in corporate America and I'm pretty sure I've created a few balls of mud myself.

The cool thing about this gig, however, is the team. After some turn-over and apparently a breaking point that caused them to get much more picky about hiring decisions, the team I joined seems to be a team of rock stars. Most have figured out they can come to me with questions on just about anything code related and here's the cool thing - answering their questions is always easy. I mean, they just get things insanely fast - every single one of them! Now, I've worked with some freaky smart developers before (last team I worked with at Tyson for example), but rarely do you see a team of dozens where all of them are freaky smart. There is always a handful of laggards (no, I don't think you are one of them).

Additionally, I've gotten to learn a few new things on this gig.

SOLR

I haven't become a SOLR or Lucene expert or anything, but I've had to do a couple things with SolrNet. Seems to be all that I've read about over the years. Can't say I'm enjoying this from a developer's perspective though. You see, they have all the environments setup for it, but when developing locally, the internal SOLR abstractions hit DEV instead of local. This means if you're working on UI that uses the search indexes, it sucks because your local changes obviously aren't going to show up in the indexes from the DEV database. It also means I must be connected to VPN to touch UI using SOLR.

An implementation of the gateway and/or facade patterns would take care of this nicely I think.

Automapper

I'm not entirely sure how I feel about AutoMapper yet. I've heard nothing but praise about it for years now, but this is the first time I've been on a project where it is actually being used. Maybe it's the way they're using it, or maybe I just haven't seen the light yet, but at this point I'm not digging it.

Sure, it does make your controller actions much smaller. It also takes care of DRY if you're mapping between two objects in many places. But mostly I find myself constantly having to hunt down the mapping logic to figure out exactly what is being copied between the objects, or, more frequently, to find out why something is not mapping correctly. I'm sure I'll come around, but right now it seems like a mix of voodoo and magic. Most importantly, there is no "go to definition", search results is the only way to find the mapping.

Topshelf

This one was fun. I played briefly with Topshelf in the past as a spike - never made it to production if memory serves. This time though, we're using it to take care of the Windows service that handles all of the project's scheduled background work. The API is crazy easy and lightweight. Can't think of anything negative to say about this at all.

NServiceBus

Holy crap this thing is cool. NSerivceBus has been on my radar for a long time - as well as Mass Transit. We had a bit of trouble with MS DTC and permissions and whatnot, but it has otherwise been nothing but goodness. I love the feeling of isolation and extremely small units of work you get when dealing with service bus architecture - each message is its own unit of work and tends to be a small one.


I think that pretty much covers it. Well, there are a couple of others (like their internal email handler/service/thingy), but I'm afraid a recruiter might see and start offering me gigs utilizing them. Kind of like the fact that you won't find assembly, C, C++, or BASIC on my resume. I don't want people knowing I know that stuff!

Tags: , , ,

My Software Consulting Gets Kicked Off This Week Thanks To TEKsystems

by October 3, 2011 12:35 PM

This week I start my first gig as a software consultant thanks to Megan Coger with TEKsystems. I'll be working with TD Williamson for approximately a month. Couldn't have asked for a better start. They're located in Tulsa, but I'll be working 100% remote and they were fine with my working a slightly shorter day - a six hour day working 9-3. That rocks!!

The interesting thing about this is what it took last week to set this up. You might recall that I started a business called Iroh Services. Originally, I had just created the LLC and was just going to leave it at that which would have made it a disregarded entity in the IRS's eyes and I would have simply been a sole proprietor. In order to work with TEK though, I needed to be a W-2 employee - either of theirs or of my company. So the scramble began! I talked with a lawyer and my accountant and eventually got everything going and all the paperwork done. So now I, Rob Tennyson, am an employee of a company called Iroh Services, which I also happen to own. It turns out both the lawyer and the accountant like it better this way anyway because the delineation between me the person and my company is much more solid now.

As things were being printed, signed, scanned, and emailed back and forth, I remember saying at one point, "I never realized how fun this working-for-myself-thing would be!" :) Truth be told though, it was kind of fun. It feels completely different doing admin crap like that when you know exactly how important it is. This is compared to the admin crap I used to do where I just knew it was a worthless waste of my time.

All in all, I'm really looking forward to getting started. I love zen-like days of pumping out code and I think that's exactly what this contract is going to be.

Tags: ,

Two Weeks Down and No Software Ideas Yet

by September 26, 2011 11:20 AM

I've officially been unemployed for two weeks now (today starts the third week). In that time I've created a DBA, created an LLC with the state of Arkansas, gotten an EIN for that LLC, and I've put out the initial website for the company. Nothing sexy and definitely not the final version, but I of course needed to grab the domain name and wanted something there other than just a godaddy parked page. And just for kicks, I put it in Azure even though I don't need the scale and I'm not even using the storage. I did this for two reasons. First I wanted the experience and nothing teaches better than using something for real. I plan on adding content management features and things that while unnecessary for a simple web presence website, will provide richer Azure experience. The second reason is because I read about changes they are about to implement to make it much more affordable for small time websites and businesses. A great move on their part if they want developers to start playing with it and becoming advocates.

What business name did we decide to go with? Iroh Services

Iroh is from our favorite Avatar character, Uncle Iroh. Everyone in the family is a huge fan of the cartoon and we all love the zen-like uncle and his hedonist ways.

Of course the business is really just for accounting and liability safety when I do consulting. My real goal of becoming a micro-ISV has been on my mind and has occupied the vast majority of my time with research and grand pondering. I've had several friends offer their thoughts and software ideas and am still thinking of getting into a large project with my uncle and cousin. Nothing as of yet has really set me on fire though and I'm apparently brain dead when it comes to coming up with my own software project ideas. Still hopeful.

The freedom has completely rocked. I love dropping my daughter off at 8:30 instead of 7:15 and picking her up at 4:30 instead of 5:30-6:00. I'm also home when my oldest gets off the bus around 4:00 which is way cool. Originally I was going to pick up the little one early enough to have both of us home by the time the bus arrives, but she kept getting on to me about missing afternoon activities - especially the case on dance and soccer days. That's cool though - we're still home before the 5:00 traffic hits and our evenings seem so much longer now.

Regardless of coolness though, money will have to start flowing soon. Guess I'll get back to my grand ponderings :)

Tags: ,