Category Archives: Development

What’s left @todo

A couple of different developments cropped up in the last couple of months that’s pulled me away from the blog.  One of them was a job change.  The company I’m working on a contract to hire basis is great and I’ve had the opportunity to learn many things in my short time there.  I do PHP programming and I had the opportunity to freshen up on PHPDoc.  PHPDoc is a documentation standard much like JavaDoc where you can comment code and drop in identifiers to help with the status of a certain function or class.  One of the identifiers is ‘@todo.’  After working with the history of the ‘@’ symbol and how it relates in context, especially with GTD,  I came to realize how much this 5 character identifier has affected my life.

The ‘@todo’ identifier states one thing clearly:  The following information is what’s left or what’s next to do.  It can be compared to the @NextAction context in GTD.  Once that action is completed, there may be another one next and subsequently a ‘@todo’ identifier with that information will be listed.  The difference between that and GTD is that it’s left in the code.  But, with a good IDE or a simple awk command, you can compile the list of @todo’s for a project thus returning it to a GTD like state.

I’m the kind of person who’s insane attention to detail will leave me always uncovering a rock or looking at a problem from all perspectives.  Some people call this being a pefectionist.  One of the major problems with being a perefectionist is that they will refine and tweak themselves into never getting anything done.  Analysis through paralysis is a common phrase for the problem.   And yes, I have that problem.

As some of you may know, a couple of years ago I hit rock bottom in paralysis and have somehow climbed my way step by step by implementing the GTD mehtod (as well as making other life changes).  The perfectionist in me still lives.  The initial mind dump and inbox organization took me about 3 days.  One of the hardest things to do while implementing the methodology was not being sure I was doing it right.  The common voice of the perfectionist.

So I’m slowly learning ot become an almost-perfectionist.  I still do my tweaks and twinges, but set a time limit before sending the product off.  Whenever I do so, there’s that voice that doubts whether or not I’ve done right.  Even when I use a time limit, it reaches out and pulls me down to make sure I double check and triple check everything.  It’s going to be with me forever.

Last month, an ‘ah-ha’ moment came.  And no I’m not talking about jumping up and singing ‘Take on Me.’   What I’m talking about is when I started brushing up on PHPDoc, I realized that the ‘@todo’ was the trademark for the perfectionist.  I can roll some code out but appease the perefectionist in me with the simple 5 letter incantonation.  The code is out and I can always come back to it to tweak and twinge.

I’ve accepted the fact that I will never be happy with my work.  I’ve also accepted that I will always find something wrong with it and attempt to fix it on the spot.  But with the ‘@todo’ action I can drop the noted fix and move on.  I feel much more relieved and am producing more now that I’ve left @todo’s not only in my code, but also in my other projects, my friends, my family, and my life.

Subversion Install Swankiness Part 2

Nothing Like A Fresh Subversion Import
Nothing Like A Fresh Subversion Import

Welcome back to part 2 of my Subversion install series.  What we are going to go over is developing the right structure for the repository, importing a website, updating a website, then testing and deploying the website using some of Subversion’s command sets.  There were some road blocks along the way and I will talk about that as well as some other thoughts about the process.  After that I’ll talk about what’s next but first let’s setup and deploy some code.

Continue reading Subversion Install Swankiness Part 2

Subversion Install Swankiness Part I

Here we go with the newly decided first part of my Subversion install series.  I decided to break it up into smaller chunks of articles as the first part really is the installation/setup part and the second is the integration/deploying part.  So with this first part we’re gonna talk about downloading, verification, repository setup, and Apache integration.  I’ll make it short and sweet as possible but grab a cup of joe so we can get started.

When figuring out how I should download Subversion, I weighed many options.  I could either grab the source from their website at Tigris or install from Ubuntu’s repository.  The hardcore geek in me wanted to compile from source, but I really wanted to roll out the software quick so I can focus on the blog code.  Also  updates trickle down from Ubuntu with relative automation, so I went with acquiring the binary from Ubuntu.  It really makes sense to knock out the binaries for tools surrounding a project and focus on source for project related code.  Why waste your time setting up a utility when it’s the poject you should be working on?

Continue reading Subversion Install Swankiness Part I

Java Redux

It’s been awhile since I worked with Java.  Well, more specifically, I last seriously worked with Java around the beginning of the century.  I figured, well why not set it up on the server and see what’s going on nowadays?  I knew that the package install for the Java platform is sticky on linux machines.  So a quick cache search yielded me lots of results, with Iced Tea being the most interesting one.

As I was eyeballing the search results, IcedTea stuck out in my head.  I remembered over the summer an episode of FLOSS Weekly briefly touching upon IcedTead.  Dalibor Topic and Bruno Souza from OpenJDK were interviewed about IcedTea and the satus of OpenJDK altogether.  It was very nice to see a fully open sourced implementation of the Sun Java platform.

OpenJDK is an open sourced implementation the Java Platform, Standard Edition.  Sun just in 2006 decided to open source Java and this year some traction took hold.  IcedTea (and OpenJDK) is the first to pass the Technology Compatibility Kit tests and can claim to be a fully compatible Java 6 implementation.  It showed up on Fedora but I forgot that it was on Ubuntu too.

I went the one liner route and installed IcedTea the quick and easy route:

hokey@tardis:~$ sudo apt-get install icedtea-java7-jdk

Which yielded me a bunch of other recommended packages, which I’ll revisit later, but I was ready to hit the big ‘Y’:

Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
icedtea-java7-bin icedtea-java7-jre
Suggested packages:
binfmt-support icedtea-java7-demo icedtea-java7-source icedtea-java7-plugin sun-java6-fonts ttf-baekmuk ttf-unfonts ttf-unfonts-core
ttf-kochi-gothic ttf-sazanami-gothic ttf-kochi-mincho ttf-sazanami-mincho ttf-arphic-uming
Recommended packages:
liblcms1 lesstif2 libgnome2-0 libgnomevfs2-0 libgconf2-4 libgl1-mesa-glx
The following NEW packages will be installed:
icedtea-java7-bin icedtea-java7-jdk icedtea-java7-jre
0 upgraded, 3 newly installed, 0 to remove and 3 not upgraded.
Need to get 36.8MB of archives.
After unpacking 117MB of additional disk space will be used.

After installing the package a quick test verified its install:

hokey@tardis:~$ java -version
java version "1.7.0"
IcedTea Runtime Environment (build 1.7.0-b21)
IcedTea Client VM (build 1.7.0-b21, mixed mode, sharing)

It’s nice to get back to my Java roots using something completely open source and Java 6 compatible.  I’ve read up on a couple of things like JavaFX that I play around with and this is a good first step.  Plus, it’s helping me dust some cobwebs that have been lurking in my head for a couple of years.  Who knows?  Once I get knuckle deep back into Java I might turn out some projects or maybe even something enterprise for headquaters.   At any rate, the Java mixes well with my morning coffee addiction and IcedTea mixes will with my afternoon green tea addiction.

Xampp’ed Up But Turned Off To Portability

Before I rolled out the relaunch, I spent a good month trying to figure out the right kind of development environment for tools the I had available.  I have three laptops but all of the batteries are toast and the motherboard on one of them has gone the way of the dodo.  I convinced myself to develop exclusively off of a big ole Western Digital 80 GB Passport USB external drive.  First step done.  After doing some research I decided on XAMMP to drive my environment.  It was nice but there were some issues.

My real focus for this development environment setup was to be able to plug in the hard drive and code directly off of it.  I work off of multiple platforms at home and at the office.  Almost all of the apps do not have a single application to launch.  I already run some portable apps that support clients in Windows, Mac, and Linux flavors, like KeePass.  XAMMP advertised clients for each platform so I decided to give it a try.

XAMMP is a fully integrated web application development server.  The purpose of XAMMP is to roll out a fully workable, out of the box *AMP stack.  The packages include an Apache2 server, PHP version 4 or 5, MySQL 5, and a torrent of management utilities and open soruce libraries/modules.  There are some differences between platforms for the package set, however.  The beauty behind it is that you can pick and choose what you want and start work within minutes.

At first, I wanted to setup all of the platform packages on the flash drive.  Due to the desire for cleanliness on the drive, however, I tried to install the software locally on all of my workstations.  Most of my time is spent on these machines anyway.  Linux was the easiest to turn out, mainly because it just dropped everything into the ‘/opt’ directory.  I could change the doc and database links and move forward from there.  Windows was also a snap as I could modify configuration and turn services on and off with the included XAMMP control panel.  The Mac OS X client was not so easy.

The installer package for the Mac does not allow for choice.  It scans you computer to see if it’s okay to run on and then drops it straight to the Applications folder.  The folder it installs to is not entirely encapsulated.  When the configuration points to the database files on the flash drive,  the service will crash upon startup.  I’ve already been exposed to issues on lock file management on Mac OS X Server, and the workaround didn’t work for this issue.  The Apple puts the lock file in a directory other than the MySQL default setup.  When I symbolically linked the lock file, the database would start up.  This was not working with XAMMP.

After spending some small time here and there for about two weeks on it, I ended up just letting it go.  Attempts to find out on their forums page led me nowhere.  Also in my research on this topic, I discovered a Portable Apps version of Xammp but it is Windows only.  Not much help there.  Maybe one day the devs on the project will look for better portable support.  Until then, I’m focusing on version management and working off my lil server in my apartment.

I’m still coming to terms with getting distracted on small setup roadblocks.  I really didn’t need to waste the time figuring this out when what I really needed to do was to turn out this blog and other projects.  Struggling with Xammp taught me that sometimes the perfect environment will trickle down from actually working on things first rather than focusing on a perfect setup for work that hasn’t started yet.  Plus it’s alot more fun when you actually have projects in progress instead of dreaming of working on projects.