Don’t Be Ashamed

Posted February 6, 2011 under General, Keryx

Something that has been on my mind recently is the quality of software I produce. I’ll be graduating in a few short months. I feel it’s absolutely crucial that I write elegant code so that when I begin applying for jobs, I’ll have great code samples.

This is an idea I don’t actually believe. It’s been engrained in my mind and I don’t know why. Throughout school I’ve been trained to do things “better” so that I can get better grades.

In reality, I’m not sure this translates well into the business world. Writing “better” software means getting things done sooner and iterating more often. Assignments in school are one shot. You either do well or you don’t and it’s over after that.

Building businesses and software typically aren’t like this. You’re given the it a go, and you present it early, draw feedback, revise, and launch. Once you’ve launched, you can continue iterating and maybe even recover from a somewhat failed launch.

It all depends on your heart and motivation. Are you ready to accept failure? Heck no! Are you willing to pivot? Yeah, it’s what I have to do.

I know a lot of fellow developers and students who dislike showing their work until it is finished. One class project I am a part of consists of our team building a website to manage campus tour visitor registrations. Since this is our first and only major project of our entire Bachelors degrees, we decided an agile approach would be best. We iterate, present it to the client, make sure it’s something that will help them in the end. Not surprisingly, one of my team members is completely against showing our client the product before it is polished and complete. No matter how much arguing we do, he stands his ground that testing is not very important until the product is finished.

We only have a semester for implementation and have class and work outside of this project. There is certainly no time to rewrite the project from scratch if the client doesn’t like our approach so it is imperative we start getting feedback right away.

Of course we aren’t going to present them with bug ridden code, but as we complete features, we certainly want to know if they like them.

I felt the same way when I launched Keryx. This was a project I spent many months on. I was naive at the time, and just release an incomplete application to the public. Not expecting anyone to care, I was pleasantly surprised when people started talking about it. Without releasing early, I wouldn’t have felt any drive to continue development. It did enough of what I wanted, still horribly incomplete, but people’s reactions drove me the extra mile. Now I have something I can be proud of, I have continued iterating on Keryx with help from several unbelievable volunteers and we have surpassed 50,000 downloads. This naive approach could have ended there, but instead it has brought me much more, even to tears at times through some incredibly heartfelt thank you’s I have received.

So don’t be ashamed of anything you do. Show everyone you can, be proud of what you accomplished. If someone says it’s crap, be humble about it. Ask them what is wrong, how you can improve it, and do so. Nothing can stop you if you hustle hard enough.


Podcasts!

Posted December 23, 2010 under General, Keryx

Quite a while back I had the idea of doing a podcast. Of course, like everything else, the idea got tucked underneath a huge pile of papers in the filing cabinet you might call my brain. I’m happy to say that I’ve joined a podcast called Techie Trio with a couple of my friends Oliver Krystal and Michael Secord. Sure we might ramble and get lost in conversation a bit, it’s kind of a fun project (or should we call it experiment?) that we have all been working on. The Techie Trio homepage is over at http://tt.g2k5.us for anyone interested. :-)

Along with that, today I was put on trial for my good friend Zach Thibeau’s podcast. We talked about Keryx, Linux, and some other random topics. Check it out if you’d like to hear a little background on Keryx, how it got started, over at: http://zachthibeau.com/blog.php/podcast-episode-2/

It’s interesting to say that I have never met anyone of them in person, but we chat all the time online. Pretty cool to see what a little internet sprinkled on things can do. Or is it creepy? All in all I’d have to say I would have liked to get started doing podcasts a while ago. I’m sure I’m terrible at it, but given enough hours droning on and on about random tech, we should eventually be good at it right? o_O


Ubuntu Quickly, Python, and DistUtils

Posted December 20, 2010 under Keryx, Python

Preparing for the Keryx 1.0 release over the past couple of days, one of the things I’ve been learning is how to build Ubuntu and Debian packages. Sure sure, I’ve been “cheating” using Quickly. :)

Quickly is probably one of the coolest tools I have used. All the hassle of building an Ubuntu application is already taken care of, and it takes the Ruby on Rails approach to guiding you through development. It’s quite great.

As I was packaging Keryx 1.0 last night, I ran into an issue. DistUtils could not find my python modules. I was getting an ERROR: Python XXXXXXX module not found. when I would run quickly package.

Well that’s no good. Keryx runs just fine, all those modules are imported just fine. What the heck is going on??

I spent a few minutes trying to configure DistUtils py_modules to try to add them manually. No dice. It turns out that DistUtils really does not like relative path imports. Seriously?? Yeah. :( Sad story huh?

The most convenient solution I could come up with was to change ALL of my imports. My directory structure was pretty simple:

bin/keryx
keryx/
keryx/unwrapt

bin/keryx is the main application. keryx is a folder of extra GTK code. keryx/unwrapt is the entire backend for Keryx. The backend is a separate module and uses relative imports so that it can function independently.

I decided to move Unwrapt into Keryx’s source tree instead of making it a separate package. This would reduce dependencies and overall make things less complicated. The solution to DistUtils problem was to simply go through and change all of my imports from relative import XXXX to import keryx.unwrapt.XXXX. You reference modules from the top level which is where DistUtils will be run from. This lets Keryx still run, and everyone be happy.


Python binary executables with Pyinstaller!

Posted October 24, 2010 under Keryx, Python

We’ve had a hard time finding a decent Python binary builder. This is of course coupled with our requirement that it needs to build the wxWidgets binaries with it. I’m sure that it’s not a terribly easy task to build such a library that is capable of this. We’ve finally found a pretty decent solution I think.

Pyinstaller has hit version 1.4 and supports quite a few popular libraries out of the box. This turned out to be a godsend after we had fiddled for a long time with py2exe and then had to figure out yet another tool to build a Linux binary. Pyinstaller can build for Windows, Linux and OSX!

The only downside I have seen to using Pyinstaller so far is that we have to consistently build individual releases of Keryx along with each release of Ubuntu. As so many things regarding libraries between each release, it’s incredibly hard to have a binary that works across multiple releases.

That’s about all I can say about Pyinstaller, it works, and it works quite well. You can grab the latest release of Pyinstaller over at www.pyinstaller.org if you are looking to build a Python binary for your application.


Keryx on OMG!Ubuntu!

Posted September 24, 2010 under Keryx, Ubuntu

It’s been a while since I’ve posted anything on here. Life has been hectic, senior year of college has begun, and I’m working quite a few hours each week. Little free time means I’m usually too exhausted during those hours to actually accomplish something productive. That’s going to change and I needed a little boost to get motivation. I submitted Keryx as a tip for OMG!Ubuntu! yesterday to help spread the word.

I certainly did not expect such an overwhelming and encouraging response from the community. :-) It really touched me, as this blossomed out of an itch I had, and I never expected to have contributed to so many users along the way. It’s been a rough 4 years learning Python, version control, proper programming styles, and managing a decent sized project for a college student with no experience. I never dreamed I’d have over 32,000 downloads.

I just wanted to stop for a moment and thank each and every one of you. Each download sparks another ounce of motivation, and the contributions of code, translations, and bug reports has been unbelievably helpful in teaching me and helping to build a better product. Again, thanks for being such a wonderful community, I’m just happy that I could be of help to at least one other Linux user. :D

For those of you that haven’t read the article or the comments, here is the link: omgubuntu.co.uk/2010/09/keryx-offline-package-installation-made-easy-in-ubuntu/


« Older |