Open Source

I had the opportunity to sit on a panel at the Nashville .NET user group tonight on developer careers. The goal was to open the floor and try to help tear down some walls between developers and recruiters. On the panel were several recruiters from our local area to represent that side. I got to sit up there with Elijah Manor and Derek Greer to represent the developers. Overall I think it was a good experience to let everyone ask some questions.

I was there to represent how I feel about developers contributing to open source projects. It's late, but I want to get my thoughts down in writing before sleep washes them away.

Contributing to open source software has had a positive impact on my career. I really haven't really contributed anything major, but my point tonight wasn't that you need to go out and write the next big thing. You see, there are gaps and voids all around us. Everyone is capable of finding something that needs to exist and creating it. I've benefited so much from open source software, it's only fair I give back.

There was a lot of apprehension for me leading up to pulling the trigger on my first project. Should I put it out in the open? Will anyone find it useful? Are people going to ridicule me on how crappy my code is? The answer to those questions turned out to be yes, yes and sometimes. When I put my stuff out there for people to see, I got feedback (both good and bad) and I was able to iterate on my project and make it better. Any feedback you get is a good thing because that means people care at least a little. It was really a learning experience to see how people use the thing you've created.

To potential employers getting a product "out there" means a few key things:

  • You care enough about something to take initiative  and make it a reality.
  • You are capable of finishing something you started.
  • You are detailed. There is a big difference between a proof of concept and live production ready code. A polished project has been tested and documented.
  • You love what you do so much that you used your own free time to improve yourself.
If you are a developer reading this I can only encourage you to open yourself up and throw some code to the wild. Writing some code that gets used is a very rewarding experience. You WILL get criticized by some, even if what you made is the best thing ever. None of that matters though, because you did something that you liked and shared it with others. Take that feedback and make your project better. I guarantee it will make you better.

Do It Yourself

We've gone soft. It feels like the entire country has. Gone are the days of the "workin' man". Now we just have a sense of entitlement. Gone are the craftsmen. Now we purchase goods made of cheap materials assembled by non-skilled workers overseas. Gone are those who are self sufficient. Now we depend on the media to tell us who we should be.

I'm so frustrated with the current state of mind within this country. People think they deserve more while having to do less. It's time to take back your sense of being, get up off your lazy asses and do something productive. Fix something. Build anything. Heck, go outside and plant a tree. Just do something worthwhile.

I'm not sure if you are aware of this, but there is this thing called the Internet. Here you can find way more than videos of kittens and farm games to waste your life. You now have at your fingertips the ability to find out anything you ever wanted to know about any subject. How to build a deck, how to change the oil on your car or even how to fix your air conditioner; it's all there for the taking. With the advent of high bandwidth, many times you can find a video to help you along. This means you can become proficient in almost any topic within hours.

There are several reasons I enjoy doing my own work:

I get the kind of work that I'm happy to live with. Almost every time I've hired someone to do work for me, I end up disappointed. I often find myself wasting effort to have it re-done or just finishing up the loose ends myself. When I do things for myself, I know exactly what I'm getting. If the results aren't perfect enough, I'll do it again. If it turns out really terrible (hasn't happened yet), then I can always hire someone to finish up.

I can have things that I wouldn't otherwise be able to afford. The house we moved into had some issues with the duct work. With approximately $200 worth of materials I was able to repair, seal, and insulate my duct work. For another $400 I had a guy come out and clean that duct work. There were a few ducts that I had issues getting to, so I paid the duct cleaning guys to replace those for an additional $200. The cost to pay someone to do that for me would be a few thousand, and I still would have had to pay to clean the supply and return trunks. If I wanted to scrap it all and start over, it would have cost approximately $4,000. That's money I just don't have laying around.

I can learn new skills. This continuous stream of knowledge compounds what you can do. Skills acquired working on one project might be useful on another project later. If you learn how to solder then you can repair damaged wires, replace a capacitor in your TV or put together an electronic project. At the very least, you may learn something that will keep you from getting taken advantage of. There are some jobs I won't do, but I'll at least know the terminology and be able to speak intelligently with the people I hire. Knowing a little about the subject will let you know if the work estimates are reasonable.

I push my limits. Many times I start out a job with a good bit of uncertainty. These are the things I've never done before and haven't done anything even remotely similar. Sometimes there are phobias adding to the uncertainty. I'm not fond of heights, so patching my roof was a scary proposition. I'm terrified of getting stuck in confined spaces, so squeezing myself into the back corner of my crawlspace really freaked me out. Regardless, each time I successfully do something that I was initially worried about, I feel empowered. That confidence will help you do a little bigger job next time.

I'm not saying you need to take on every project around your house. I feel like we all need to be more responsible for the things we own. Take care of your home, your vehicle and all the things paid good money for. Buy good tools and put them to use. Do something to reduce your dependence on other people. You'll have a new respect for things around you.

Geek Harvest

What got you excited about developing software?  Were you interested in moving buttons 10 pixels to the right because a business owner wants to nitpick every last detail?  Did you see a VB3 CRUD app and say to yourself "Wow, I want to do this every day of my life?" Maybe you wanted to sift through thousands of lines of stored procedures generated by some offshore development team. Was that it? Is that what got you hooked on computers? Hell No.


Tonight at the Nashville .NET User Group, we had a geek harvest.  I know Bryan Hunter was nervous about how the group would respond to the talk, but I'm here to say that it turned out great. We had one kid show off his Simon Says game written in Scratch. I think the initial draw for any kid to computers is the ability to create their own game, right?  Scratch makes that really easy.

The other presentation was from a friend's daughter. She has been working through Project Euler problems in Python. Then she showed off a fractal she also coded in Python. She's doing all of this on her own on her PC running Ubuntu.  Let that soak in for a second or two. Yeah, that's right. This teenage girl is more hardcore than most of the developers I've dealt with professionally.

Seeing those kids get excited about the things they had accomplished reminded me of the time I first became interested in computers. I wanted to learn how they worked. I wanted to reach out to people far away from my hometown. I wanted to create things. Tonight I got to relive that feeling vicariously through these kids.

I think it's far too easy to drown in the non-creative parts of our job. Dealing with users, crazy deadlines and supporting poorly developed solutions - these are all things we have to deal with that are mind-numbing at best. They distract us from the fact that our job is to tell computers what to do. We get to create a solution, put it into action and get immediate feedback on its success.  That's the good stuff right there.

If you are reading this and you are drowning in corporate hell writing CRUD apps in VB6, do yourself a favor: go home and find something cool that's going on in computing.  Learn a new programming language for the heck of it. Maybe you could write a silly game in javascript. Do something fun with a computer that lets you be creative again.

If you are a geek parent with children, do your kids a favor and show them how amazing it is to be able to build something that does exactly what it's told to do - nothing less and nothing more. Maybe you can spark a fire in them to create great things. At the very least, they'll understand the value of what you do for a living and appreciate the things they use on a day to day basis.

Computers aren't much magic to me anymore, but they can be for my child. Here's our chance to be a magician to our kids. Pull back the curtain and show them how empowering writing software can be.  Maybe it will even revive those old feelings you used to have hacking away late at night to the glow of a green screen.

devLink 2011

I was lucky enough to get subbed in last minute to give my CouchDB talk at devLink this past week. This was my first time speaking at a technical conference and it turned out to be a great experience.  I did the same bucket demo that worked so well at the user group and it was just as messy and just as awesome as before.

I'm guessing there was 40-50 people there and I had 30 people fill out response forms. The audience was really engaged and asked a lot of good questions.  The feedback was positive, so that's a bit of a relief. I really hope everyone enjoyed the talk as much as I enjoyed giving it.

The slides from my talk can be downloaded here. The sample app I demoed can be found on github (https://github.com/digitalBush/couch-samples) and the CouchDB/Wikipedia demo is also up on github (https://github.com/digitalBush/Couchipedia).

CouchDB Talk at Nashville .NET User Group

I'm excited to be giving my first technology talk next week. I'll be presenting CouchDB and all of its awesomeness to the Nashville .NET User Group. With this being my first time presenting a technology topic, I'm sure it will suck big time. You have to start somewhere, right?  :)

The talk will be a gentle introduction to CouchDB and how it compares/contrasts with relational databases. I'll be showing off some sample .NET code that talks to CouchDB. My goal isn't to say mean things about relational technologies; I just want people to consider the alternatives. There is a lot of cool stuff out there to store data that doesn't have SQL in its name.

If you are in the Nashville area, come watch me make an ass out of myself speak next Thursday.

« Previous PageNext Page »