I’ve started doing development work for about a week now. My focus is in the mobile space. The first thing I wanted to do is to create a solid development process and infrastructure. I wanted a source control system and I wanted an automated build for each application — actually some enterprises don’t use automated build system.
I don’t have a lot of money to splash out on hardware and software so I make do of what I have (Open Source and cheap hardware). For example, I use my old Samsung Galaxy Y as a SMS Gateway server by IceColdApps for free. My Mac Book Pro is my development machine. I use Eclipse as my primary development tool.
The Asus netbook has SVN server and Git Server for source control — right now I’m experimenting with Git. It also host Hudson automated build server — every time a code is committed into the source control, Hudson pulls down the source, builds the application and it’s ready for deployment. In addition, I can add features like code analysis, test coverage reporting and etc that can give various perspectives on the soundness of each application design. With this, I have a continuous integration process working.
I chose ProstgreSQL database as my database for storing data. It’s easy to use, robust and free. I’ve also installed Openfire (Jabber) XMPP server for instant messaging service. Since the netbook keyboard is really bad to type and the screen is tiny, I installed VNC server on it so that I can remotely control the screen on my Mac Book. Much easier.
Power flow in Laos is not as smooth as I would like it to be. I use uninterrupted power supply to protect the computers against power surges and dips.
What binds these devices together? A network hub of course. I use my Note 2 as the network hub so that I can send code from the development machine to the source control system on another machine. As well, it’s also allow other devices to access the internet.
At the end of the day, I commit all codes to the source control system then run Time Machine on the development machine (Mac Book). This way, the freshest code is on the Mac Book, on the source control system (Asus Netbook) and on the Time Machine.
There you have it. A personal development environment that can grow and expand to fit an enterprise.