Two months ago I started work as a Java developer at Bluerush Media Group. Shifting gears back into Java EE/JSP/Servlet and mostly backend work from Android development definitely took a while. On one hand my work now is hidden behind layers and layers of servers, middleware and other “businessy” systems. I definitely miss being able to have my work appreciated by many people. Now only my fellow developers can compliment or complain about my work. But on the other hand, I enjoy working with tested and tried technologies and platforms. No more worrying about inconsistencies between devices. No more fretting about what systems I communicate with. No more frustrating moments of dealing with performance and optimization issues. Instead there is more than enough computational power lying around that automation and abstraction become powerful tools to approaching and solving problems. I feel less guilty about using some crazy library to configure itself, gather the necessary data and build part of the system for me. In short, as with everything in life there are pros and cons to my work.
Just recently I discovered the joy of using JAXB. It is mindbogglingly convenient to build entire packages of Java model classes from a single XML schema, and having JAXB handle the serialization and deserialization of Java models into XML and back again. Using JAXB, some XML configuration files, a TestNG suite and some result data in CSV form, I could build out a pretty sweet and rather involved automated testing setup. This let me run real stress tests on the application I am working on and letting me flesh out the code much faster and with greater confidence. Or take the use of dependency injection from Spring or Guice, to help a developer initialize a large number of objects with complicated dependencies without getting lost. The amount of automation and abstraction in Java EE is simply overwhelming. However it does come with a price: complexity. So while using the full power of Java EE and various libraries gives my applications a lot of capability, they also make the applications terribly complex. It only gets more complex, the more “enterprisey” the application becomes. There is simply no way I could even build the applications that I do, without having lots of complex tools such as a full-on IDE like Eclipse.
This brings me to the point of my post. At same time as I delved further into Java EE, I am getting more and more interested in Python and Django. After playing around a tiny bit with PySide building Qt apps in Python, and looking into Django I am surprised by how terse yet functional Python is. Yes, Python being a scripted language will never outperform a compiled program (or even byte-code compiled Java app) in terms of performance. But looking at how much computing power is available and how many more steps it takes to write a Java or other compiled source app… I wonder if programming in something like Python can not be more efficient. What I am especially curious to find out is if one can build and maintain a large complex web app as one can in Java EE, but in Django and Python. Basically I am curious of the capability of an app is proportional to its complexity. Or is this just an illusion from living with a language and platform that lets you easily craft monolithic monsters? Can one get the same results with good architecture, some smart engineering and a flexible language?
This week, I’ve started working on my delayed projects again. I feel exhausted from the week. But I also can not wait to play around with my projects.
I’ve always admired the KDE and Qt developers. They make some of the most innovative and interesting technology in the consumer-desktop-mobile land. I’ve decided to pick up learning Qt and C++. So far I’ve read the beginning of C++ GUI Programming with Qt 4 (1st ed). I need to play around with C++, which I plan on doing it while using Qt Creator. One of my first major Qt experiments might be getting the TEA text editor working on my Nokia 5800 XpressMusic. I know that Nokia just released the tech preview of Qt 4 for S60 devices. But I’ll give it a shot. Hopefully the GUI will port over nicely.
Yes, the project that I left for dead still lives. I want to work on it, as portfolio material. I first plan on building a website in PHP (or maybe JSP?) that renders beautiful CSS and XHTML. And then I need to give the project much love. But I owe it to myself to finish this application. I won’t build any crazy game servers. But I want to make something totally configurable and fun. And in the process I want to create something that proves that I am a strong Java developer.
Writing A Collection of Shards
I am going back to writing. Unfortunately I need to start almost from scratch, since many of my written sections simply will not work. The ideas are there. I just need to get them down on paper.
This one is the ultimate in the tire kicking sense. I plan on getting my driver’s license really soon. Aside from parking, I feel comfortable driving. Once I figure out all this parking stuff, then I’ll be ready. I’m exciting since this will give me a lot more mobility and flexiblity. I’ll be able to solve a lot of problems and have even more time to do things in the day. And I’ll be able to sleep and live in normal time periods.
I’m blogging this entry fairly late in the day today. I will enjoy sleeping longer and missing being in the office before the sunrises. At least I will enjoy these guilty pleasures for the next couple of weeks. Hence my blogging schedule will be thrown out of whack. But I don’t mind the extra sleep. I am definitely less cranky and more productive.
I should pick a better time to write this. But I need a creative outlet. Fighting with Perl and web applications, and reading reams of documentation can wear a person out. I look forward to taking a change from Java. But Perl is not a pretty language. You can easily write code that you can’t maintain. At least not easily. The same could be said about Python, C or C++. Still Perl can easily win a code obfuscation contest. And my Perl skills need work. Still I welcome to the shift from Java and JSP to mixture of Perl and my firm’s in-house RAD tools. Even if it means wading through tons and tons of documentation.
Another shift is writing I guess. I’m doing more of it, and enjoying it. The effort of writing novel still drags on. I blame my compulsive reading of RSS feeds, and magazines. Still I like to stay in touch with the parts of the tech world that I enjoy and see future promise. Also other tasks hang over my head, so it can be difficult to concentrate at times. Writing and coding projects seem to move at a glacial pace nowadays. Still they move forward. I need to shift in Qt, C++ and Python coding again.
Lastly I have a trip to plan and random life tasks to do. I’m excited about the results obviously. But such tasks often involve decisions that take time and some can be life-altering. I’d prefer that the tasks would do themselves. But unfortunately my not doing them, is just procrastination. That is what I’m doing right now, procrastination by writing. I should get back to work now.
Made the plunge today into FOSS development again. As I mentioned in my previous post, I considered and started work on the next version of justCheckers. There are a few reasons why I restarted the project. I want to play around with Java web technologies. I also want to experiment with project management and FOSS development, again. And I am emotional attached to the project.
One of the failures of my past involvement with the project, was the assumption that people would be as excited about the project as I was. I assumed that people would flock and essentially build my dream for me. I underestimated the challenge of motivating people and managing progress. Drafting an excellent design, a todo list and increasing communication throughput would result in vast source code contributions. Managing a non-commercial open source project turns out more complicated than that.
The future of justCheckers requires a more nimble approach. That is one of first task is to streamline developing the codebase.
As I mentioned the next version of justCheckers will use Java web technologies. The majority of work for version involves migrating the Swing GUI to JSP. Also I plan to refactor the code to use the Model-View-Controller pattern.
Part of streamlining the development process, includes a serious reduction on other activities. Since I am sole remaining developer, I decided to reflect in reality. My team members no longer contribute to the project. So I removed them from the team. Since I don’t have a team, I am also removing the team mailing lists. I never found the current mailing lists useful. Instead of that, I will come up with a simple way for the community to communicate with the project. It probably won’t be a world writable forum or wiki. I can’t be bothered with cleaning up spam.
I’ll keep you posted.
If you wish to contribute to justCheckers, please leave me a comment.
I am currently looking for work, so if anyone is interested in a software developer or software engineer position please let me know. I have experience from university (finished my B.Sc. in Computer Science at the University of Toronto) and from my open source projects in:
PHP and JSP scripting.
Database (MySQL and SQL Server) programming.
Technical, computer manual writing.
Graphics: mostly Java AWT and SDL.
I am looking something that I can either do at home or commute to in Brampton, Mississauga or Toronto. So if anyone is interested please send me an email at: