Archive for February, 2007

Becoming coffee

Wednesday, February 28th, 2007

We do have a bit of love for coffee in the company. A commercial expresso machine was one of the first things we purchased for the office. Each person that works here usually starts of slowly, builds up to 4-8 shots per day, then goes through alternating cycles of cold turkey and moments of weakness.

To smooth those peaks out we spent some time with Nigel Tunnacliffe from Current Coffee who took the whole office through the finer points of pulling a good shot. He’s going to keep working with us on it, bringing in fresh roasted beans every week, teaching us latte art and keeping our caffeine addiction humming along.

Yes, he’s our pusher and we’ll keep going back to him.

Simple, lightweight Java development

Wednesday, February 28th, 2007

Through the short arc in the history of the software development industry, developers have taken on ever larger and more complex problems. Programmed routines became formalized as components; applications were developed to communicate with each other, creating building blocks that allowed software architects to erect ambitious towers of code resembling the Biblical Babel. The result was a crisis in software development in the 1990s, where it became evident that the complex systems under development were becoming impossible to control.

There have been several responses to this crisis, and one of the most promising is the move toward lightweight development. This movement embraces the principle of simplicity, and by reducing the complexity of the code, other aspects of a project — performance, testing, maintenance, management — are likewise made easier to address.

At 2Paths, we focus on Java enterprise development, which allows us to address enterprise-scale problems that are out of reach from more limited technologies such as Microsoft VisualBasic and PHP. We maintain simplicity through our commitment to using lightweight, open source technologies, including Spring and Hibernate — which are well-accepted in the movement — as well as our own Tequila framework. To make the most effective use of these tools, we also incorporate lightweight coding practices whenever possible, such as adhering to an architecture based on REST and a POJO-driven domain.

In addition, we follow lightweight development processes. Our agile methodology is based on XP and Scrum, with elements of each chosen when most applicable to our own business. We practice test-driven development to allow us the freedom to nimbly change direction as our clients’ needs require. The resulting test framework allows us to effectively refactor our code, extending our lightweight development long into the lifecycle of our projects.

The focus on lightweight development contributes to our simplicity, leaving us more free to concentrate on productivity and refinement, while leveraging accepted best practices in our industry.

Tips for Custom Software Development

Tuesday, February 27th, 2007

When OTS (Off The Shelf) software doesn’t meet your needs, it’s time to go custom. Here are some tips to help ensure your next custom project ends up being a success.

1. Are you sure that OTS (Commercial or Open Source) doesn’t cut it?
- Usually the fastest and cheapest way to solve your IT needs is to buy OTS (or use an Open Source product). If you’ve done your homework and are convinced that OTS doesn’t meet your needs, is there an OTS product that comes close? Especially for Open Source products, minor customization (especially of the UI or workflow) may give you the 80% solution for 20% of the cost. Commercial products can also usually be customized, but may cost much more to do so than their Open Source counterparts.

2. Keep the key requirements to a minimum
An analogy with custom software development that I often use with our clients is house renovation or building. You make your wish list, you hire your architect and builder, sketches are made, and then you realize your dream home will cost you 200% more than you wanted to pay and take three times longer to build. At that point, the hard decisions need to be made. “Do I really need two fireplaces?”, you ask yourself, “or a three-car garage? or stain-grade wood windows?”, etc, etc. After prioritizing your needs and desires, hopefully you are much closer to your original vision, both in terms of cost/schedule, as well as the essential qualities you desire in your new house.

It’s the same with custom software development. After the initial brainstorming sessions, it’s time to whittle the project down to it’s essence - that core set of requirements and functionality that will provide you with the greatest business value, and allow you to grow the system (if necessary) over time. Our job is to give you the feedback along the way to help you with this process. We do this by questioning your need for feature x or requirement y. We tell you which requirements are hard to implement (and thus will cost more and take longer) vs. which are easy. This is usually a very enlightening process for our customers. Often, features that you think will cost the moon are trivial to implement using modern technology (many of these are User Interface-related), whereas others are much harder to do that they anticipated, or have cost and schedule ramifications for other parts of their system (complexities in the domain model are prime examples of these). The requirements and features that do not make the cut are kept in the “nice to have” pile, and are implemented as time and money allow, after the core requirements and functionality have been built.

3. Simplify
Do you really need your business rules to be so complex? Do they represent current processes (that are perhaps outmoded and need to be streamlined) or are they new processes that have yet to be implemented in your organization (and are perhaps untried and untested)? Our favourite quote from Einstein is “Things should be made as simple as possible, but no simpler.” This is exactly the attitude we try to take when examining requirements for custom software.

Usually, the people who are commissioning the creation of custom software are not it’s end users, thus their understanding of the real requirements will often be different from the understanding (and needs) of the end users.
In a situation like this, it can be a good idea to build a simpler system quickly, deploy it, and use it in day to day operations for a time, in order to help crystallize and reconcile the different perspectives of the project sponsors and the end users. Then, adding complexity where it is really needed is time and money well spent because you are working with real requirements, rather than hypothetical ones.

This is certainly not an exhaustive list of what to look out for when embarking on a custom software development project, but it should help to put the process in the proper perspective.

Snow Frolic

Tuesday, February 27th, 2007

A few images of the recent 2paths mountain outing à la snowshoe.


An odd unintentional effect.


Ravens were circling, waiting for one of us to drop - no doubt to steal the snowshoes and get the deposit back at MEC.


Near the peak we actually came face to face with the great universal power; turns out he didn’t know where the snackbar was either.


Nick caught mid-chew.


Out of no where, Lorill pulls a conspicuously looking pipe out of her pack and exclaims “Time to get this party started right”.


A giant radiation flash happened when one of us received a work-related call.


We encountered this man on the mountain who’s been living there so long that he actually has a layer of permafrost growing on his face. We traded him some turkey sausage for a bit of alpine wisdom and a chance to use his bathroom bucket.

Michal’s nirvana

Friday, February 23rd, 2007

It’s time Michal - a program that monitors what you do and reports it back to you. No more time tracking

Slife

2Paths blog Widget for OSX

Wednesday, February 21st, 2007

I was messing around with some of the sample Dashboard widget code provided by Apple and came up with a widget that displays the latest entries on the 2Paths blog. Widgets are basically html + css + javascript, with a little ajax mixed in if desired, and as such they’re pretty simple to create and modify. The nice thing about coding them versus something you would access in your browser is that Dashboard is a known variable; you don’t need to worry about what it’s going to look like in 5 different browsers.

On a side note, The Daily Grind is a time tracking widget that allows you to track the amount of time you’ve spent on a number of different tasks/projects. It wouldn’t take a lot of work to interface it with JIRA for our time tracking.

Download: 2Paths Blog Widget (584KB)

SSHKeychain goes universal

Friday, February 2nd, 2007

Let me see if I can get this right.

Michal works at 2Paths.

Michal is a member of antiflux.org, a bunch of old schoolish unix types. The CLI features heavily in their daily life.

Tim is an admin of antiflux.org. Tim worked at 2Paths for a while.

Tim suggested we all use SSHKeychain on our new macs (although I’m still a fan of keychain).

Grant is an admin of antiflux.org. I don’t think I know Grant. But I read his blog because of Michal and Tim.

Grant pointed out that SSHKeychain has upgraded to a universal binary although it isn’t prominent on the website yet.

Eating right

Friday, February 2nd, 2007

I’ve been monitoring a site called tastespotting which features posts about all things food. Each post is a picture (they alone are worth the visit) that takes you to a separate site. Someone recently put up a post of what 200 calories looks like. You should take a look and keep scrolling until you get to the bottom.

200 Calories in pictures

A Dev’s Life @ 2paths

Thursday, February 1st, 2007

My Background:
I joined the team in May of 2006.
Basically a fresh graduate from the computer science department of the University of Manitoba.
Studied typical computer stuff, such as DB, UI, AI, software engineering, networking, applied mathematics. Completed a business minor from the Asper School of business, where my primary courses were international market and business theory.
I had worked for close to a year in Winnipeg for a financial planning software development company, EISI. My job was to make the printout reports look pretty. Very little actual programming was done, as this was more of a Microsoft Word formatting position.

Work Environment:
The office is a nicely laid out open concept. I much prefer this approach than to a cubicle or closed door feel. I get a sense of community as opposed to solitude. I find that my satisfaction and productivity gain from this type of layout. Which of course means I’m happier and more interested in performing well.
We use mac laptops for our daily operations, which I must say, I’ve grown to love. All through university Unix/Linux and Windows were the only platforms I’d worked with, but now that I’ve experienced a finely tuned Mac OS I don’ think i can go back. Simple tasks such as opening a particular file or program are made easy with Mac friendly plugins like quicksilver. The operating system doesn’t bog down my application processes, and so my machine feels smooth and effortlessly working at all times.
- as a junior/newbie java developer i’ve been thrown into projects that I believe were placed on my lap to help train me. I started working on an internal project that was just coming into form, created to help ease the burden of repetitive code hackery with Jsps, controllers and database repository magic
- the next project that i moved to involved learning velocity templates, parsing/persisting xml feeds, database setup, and a lot of debugging. Which is good, as I’ve learned a lot about JUnit tests and the eclipse debugger tool.

The Office View:
I take pleasure in the great view overlooking North Vancouver and the mountains to the North. There’s something about being able to focus one’s eyes at different things in the distance that make working on computers all day easier on the body. I glance to my right often to catch the street traffic on the corner of Water and Cambie. I spin my chair to the left to get the view of the bay. At night the lights from across the way are calming and elegant. A great view indeed.

Special Treatment:
This company has gone the extra mile to provide exciting group activities. And I love it. So far since I’ve started working here I’ve been taken rock climbing in Squamish, kayaking in the Indian Arm, and recently snowboarding in Whistler for our Christmas party. Other less intense events are our weekly yoga meeting, which I must admit is fun, and it’s been helping with my tight muscles, and injuries from playing hockey.
I’ve also taken advantage of the physical activity subsidy we get, and have saved $400 on hockey and gym memberships. There’s a great benefits package for massage / physiotherapy that I haven’t used as of yet, but the massages are calling my name.

The People:
There are definitely no two peas from the same pod at 2paths. Each one of the people I work with is completely different, or has quirks that make them appear different from the rest. It’s hard to explain really… See, many places where I’ve seen groups of people, the groups tend to think alike, and act alike. The only thing that half of us have in common, is we like video games. But that really comes with the territory of computers anyway.
Interesting music tastes, ranging from country and blues to strange Finish folk music to South American techno pop to my personal favorite: rock.
There are a few who try to rock climb as often as humanly possible. Others who like to vegetate in front of the TV. Two World of Warcraft fanatics. I play hockey in a recreational league. We have a few hikers and a couple of people have yachts. A couple dog owners who bring in their pets. So yeah, a pretty diverse group of people.

-Garrett