The Art of Coding I would define programming (and software engineering) as the art of coding. I enjoy coding and hacking in general, regardless of platform or application or language. I would consider myself language-agnostic for the most part. However some languages, platforms and applications are far more enjoyable to work on than others. Some tasks take more time and effort to achieve depending on the strengths and weaknesses of the language and platform. I specialize in Android, Java (JSP/Servlet/SpringMVC) web, desktop and Linux programming. I am currently transitioning more and more of my Java skills, knowledge and experience into working with Python.
Coding Projects Volunteer/Open Source and University
- Rookeri.es – A task centric web productivity suite whose emphasis is around achieving your goals in a realistic manner. Built in Python (Flask, SQLAlchemy, etc.) and inspired by time management techniques including Pomodoro, Getting Things Done and Eat the Frog. [An AGPL’ed OSS project hosted on Github!]
- justCheckers – An advanced checkers game written in Java. Originally developed for desktop Java and now in the process of transitioning to Android devices. [A GPL’ed OSS game project hosted on Github!]
- Visual Computing – A series of projects done for a visual computing course in university.
- Realtor.ca Android App – Android app developed for real estate client at Indusblue.
- Replicon’s Time Clock – AJC & Associates – Android based tablet system that allowed for remote maintenance and extended client’s time and expense management SaaS product.
- Golf Association of Ontario – Android app for a sport association. Included a GPS enabled/Google Maps powered golf course finder.
- Hockey Canada Mobile – Android version of the Hockey Canada Mobile app.
- Digicel Internal Portal – Worked on building a postpaid credit approval workflow in a supply chain management Java EE application. Also developed and maintained backend for e-learning/self-support system.
- Nationwide Appraisal Systems – Maintained and enhanced the JSP and MVC Servlet website.
- Python: Probably the awesome-est programming language ever crafted! (Excuse the ranting of a budding Pythoneer.) Get past the white spaces and other oddities, and Python is a beautiful language for building anything from small system administration scripts to full fledged enterprise applications. And the community behind Python and its various frameworks and libraries is incredibly friendly, welcoming and professional.
- Java: This is the language where I do most of my professional programming. Both as a web app and Android developer I have honed much of my experience with this modern language.
- C: Nothing feels cleaner than a nice, elegant small application written in C, in my opinion. Like a finely honed sword, C can be an incredible tool in an experienced programmer’s hands. It also has been the downfall and scourge for many a junior programmer.
- Clojure: I have a soft spot for the elegance of LISP-like functional languages. Clojure is one of the nicest and usable being based on top of the JVM. While not the first language I reach for, learning aspects of Clojure have greatly improved my programming and appreciation of different programming paradigms.
- PHP: Not the most elegant of languages, but if you need a small to medium sized web application you can’t go wrong with PHP.
- Linux: This is my operating system of choice. Contrary to popular believe, Linux is both a great OS for developers and end users. High-end media artists might miss some professional (but unfortunately proprietary) tools, and prefer Mac OS X for a multitude of reasons. As for specific distributions, I’ve gone from Mandrake (now Mandriva) to SuSE (pre-Novell) to Gentoo. After the joys of Gentoo, I settled on Kubuntu being the nicest and easiest distro with the largest selection of packages.
- KDE 4: I started using KDE since 3.0, and loved using this great desktop environment. The recent releases of KDE has made it one of the most usable and comfortable desktop environments.
- Google Chrome: As a web application developer, a good web browser becomes my best tool for the job. I have used and loved Firefox in the past. However Chrome is an amazing WebKit browser with tons of amazing extensions and is amazingly fast.
- Qt: Java is cool, no doubt. But Qt looks like an awesome library, and it is on my high priorities of things to learn and master.
- IntelliJ IDEA / PyCharm: While starting to learn Python, I started using PyCharm since it made writing idiomatic Python code and sticking to conventions really easy. But in a short while I realized how comfortable and effective the Jetbrains family of IDEs are. (The refactoring capabilities, usability and simple revision control tooling is simply incredible.) So I even though I was a long-time user and fan of Eclipse, I switched to using IntelliJ IDEA for my Java web and Android programming. I highly recommend it and use it in my day-to-day job at least from a coding aspect. As with any fully featured IDE, it can take some time to master but it is a great tool for a developer.
- Qt Creator: This is “the IDE” for Qt programming: simple, powerful and fully-featured. I’ll occasionally use it even for simple experiments with C and C++.
- Kate + Vim: Ever developer who has embraced the one true operating system design of UNIX, has a favourite text editor. I have two: Kate when working in a full graphical environment and Vim in a console-only environment.
- Git: I use Subversion at work, but it is not the most elegant revision control system invented. Git on the other hand is an amazingly flexible and powerful RCS that really frees developers to do amazing experiments, and yet allow for control of the codebase.