Matt Kopala

Software Development, Technology, Travel

Namibia - a 3 Week African Adventure

| Comments

I recently finished a 3.5 week trip around Namibia with my Swedish friend Fredrik, whom I met back in 2003 in Australia. This is our second trip together, after spending 5 months traveling together in Asia in 2004.

We saw a good bit of the country, and spent a good amount of time taking photographs, waking up before sunset many of the days, as Fred was obsessed with the light at sunrise & sunset for photography.

The oDesk Rating System Is Broken

| Comments

I have been using oDesk a lot lately to outsource software development work for clients. It has been working great for me so far, and I now have 6+ people working for me, and I plan to hire more.

oDesk employs a ratings system for feedback for both Clients & Contractors. Although this seems like a good idea on the surface, it has some severe flaws, in my opinion.

A Creative System Migration

| Comments

I recently got to take on the task of migrating a social networking website from an aging system & platform to a new cloud-hosted platform. The old system consisted of Windows 2000 Server, ColdFusion 5, MSSQL 2000, and IIS 5. The new platform is running Ubuntu 12.04 LTS Linux, MySQL 5.5, Railo 3, and Apache 2.2.

The first catch was that all of this had to be done with only FTP access to the source tree.

The second catch was that the site was still running ColdFusion 5, from 2001 – which meant a lot of missing features.

No SSH, Remote Desktop, no SQL Server Management Studio, no ColdFusion admin access, etc. Just FTP.

I was also in a hurry to get it done, as it was all being done on a volunteer basis, and I was moving out of my house in a couple of weeks …

This post serves to document the process a bit for future developers and technically inclined users of the site that might be curious about what was involved.

Software Quality: Some Thoughts

| Comments

In a perfect world, all software would deliver excellent user experience, be free of bugs, never crash, do what you expect, and just work well.

This is not a perfect world.

There is a huge range in terms of the quality of software that is written and released to users.
I love to praise software that works well, and curse software that is doesn’t work right or as expected. More and more, though, I’ve been thinking about what causes software to end up either “good” or “bad”.

Getting Started With Node.js, Coffeescript, MongoDB, and More

| Comments

For the past couple of months, I’ve been writing a task management application for myself using node.js, CoffeeScript, MongoDB, Mongoose, and several other tools. This is a post that covers a lot of that journey, including many of the different tools, packages, libraries, and articles that I ran across or found useful.

There are an overwhelming number of node modules and resources out there. I’ll cover some of the ones that I at least looked over at some point, and hopefully provide a bit less overwhelming guide to getting started. There are no code examples or step-by-step guides here – just a lot of links to pages where you can find them.

Hiring Cheap Programmers Is Bad Business

| Comments

Hiring overpriced developers is bad business too. You want to get the most value from your programmers for the least total cost.

It’s well known to anyone that understands software development that there are huge differences between average programmers and great programmers.

If you’re hiring developers, take the time to read this post and the others I link to. It’s much cheaper than hiring a bad developer.

Creating an HTML Slide Deck

| Comments

Yesterday I gave a presentation on Git at the monthly azPHP meeting. I’ve created most of my presentations in the past using PowerPoint, but now I always found it tedious to get the slides to come out how I wanted, so I decided to look for something different this time around.

I ended up using Slide Show, a free tool written in Ruby, that let me create my presentation using Markdown, and generate an HTML slideshow. It worked decently well, and got the job (mostly) done, but it’s not quite what I was hoping for as a PowerPoint replacement.

Increasing Collaboration

| Comments

One of of the things that I’m very passionate about is collaboration within development teams, within organizations, and in the larger development community as a whole. Of all the places that I’ve worked, and projects that I’ve worked on, I’ve always felt that there was a lot of room for improvement. Communication between groups is always somewhat poor, and this results in a lot of inefficiency. Experts in their areas are not consulted or utilized to solve problems where they should be involved, and learning is much poorer than it could be.

I consider myself quick to learn the levels and skills of people I work with, and who to ask about what. But I could still do better. Improving collaboration is an area for continuous improvement.

This post is a summary of my thoughts on why this is an issue, and some ways to improve it. I focus mostly on the situation for an individual organization, but much of the advice could be applied to small organizations that work in community workspaces surrounded by other small companies.

Building a Development Infrastructure

| Comments

Getting a software development team started and then building up the infrastructure of tools & processes that they use involves a lot of work & problem solving, and is an evolutionary process. You typically don’t want to do everything right at the beginning, because this will cause delay in feature delivery, and it comes with a much greater risk of waste. This post attempts to outline the many different things that you might want to set up in your development organization, and some ideas on when to put them in place.

Stanford Online Class Round-up

| Comments

This past semester (Fall 2011) I signed up and completed all three of the free Stanford Online classes:

Each course offered a basic and advanced track. For the basic track, you just had to watch the videos (and for AI, answer the in-video quizzes). For the advanced track, there were homework assignments (review questions, exercises) and exams (AI, DB) or programming assignments (ML).