view my latest photos at flickr
toronto democamp
February 7th, 2007monday night i attended toronto democamp 12. i was at democamp 2, a year ago but couldn’t never make the others since they were on tuesday and i had conflicts with other activities. this one was on a monday so i made sure to make it. even through a snowstorm, the turnout was huge and packed No Regrets restaurant in King West, the tech hub of Toronto. thankfully, we arrived early, got a great table in the center and settled back for an evening of tech demos. i won’t give the rundown on each presentation, but i snapped a few photos, so they should count as 13,000 words of explanation for the night.
in general, good presentations, i’d like to see a few more demos, but the updates from past presenters showed how successful some have been ($3M acquistion for bubbleshare!) and how much press and recognition people are getting thanks to democamp. i’ll definitely try to be a regular at more of these events.
View the larger photos at flickr.com by clicking on the thumbnails below.
|
|
|
|
|
|
|
|
|
|
|
|
|
Photos from Toronto Democamp 12
ps3 shopping is dangerous business
November 26th, 2006A useful Hungarian Notation
May 20th, 2005I just finished reading Joel On Software’s latest essay on Making Wrong Code Look Wrong and it actually presents a good case for using Hungarian Notation.
Read the rest of this entry »
Free Sun Java Developer Days in Toronto
May 6th, 2005I wonder if I could go to this instead of being at the office:
Code Maneuvers 05, is a series of Developer Days, hosted by Sun Microsystems, that combine tactical developer insights with practical programming execution, to provide vision, direction and in-depth knowledge training for developers, thought leaders and architects. This event will present state-of-the-art intelligence about Sun’s software technologies, strategies and development methodologies.
Admission is FREE, but you must pre-register to attend.Agenda
8:00 am Registration Opens
9:00 - 9:30 am Sun Keynote: Vision & Strategy
9:30 - 10:15 am J2SE 5.0 Watch and Hear the Tiger Roar!
10:15 - 10:30 am Break;
10:30 - 11:15 am Java Web Services: Building Service Oriented Architectures
11:15 - 12:00 pm J2EE Persistence: Exploring Persistence Options
12:00 - 1:00 pm Lunch
1:00 - 1:45 pm Java Studio Creator: Rapid Applications & Solutions
1:45 - 3:15 pm CodeCamp: J2SE & J2EE Performance
3:15 - 3:30 pm Break
3:30 - 5:00 pm CodeCamp: End-2-End Security, Architecting Secure and Robust Solutions
5:00 - 5:30 pm Q & A
Which Java MVC Framework to use?
April 5th, 2005I’ve got an idea for a web application I want to prototype and I was originally going to try to whip it up in Ruby on Rails (oh no! another convert!) but then I remembered I don’t know RoR yet and I think my time right now would be better spent actually coding something instead of diving into yet another thing to learn. I’ve been reading Ruby tutorials but it would probably take me a while to grok the switch and then implement my idea in Ruby. So, I’m sticking with Java. But I want to keep it lightweight. It doesn’t need a full J2EE backend. I’ve used Hibernate on a few projects, so I’ll probably stick with that for persistence. I’m looking for something lightweight on the front-end, comparable to Rails. Struts has always seemed too complex for what it needs to do, so I think that’s out of the question. I stumbled upon Rife the other day when reading a comparison on Java vs Ruby & the TadaList implementation.
Ideally what I’m looking for in a framework:
- quick to learn
- low configuration
- not trying to do more than I really need it to do
- view shouldn’t contain much/any code
What do you suggest? Leave me some comments.
Update: WebWork has been getting lots of positive feedback. I think I’m going to go ahead with Matt Raible’s Appfuse. I’ve done some investigation into it and it looks quite solid and I really like the ability to get up and going quickly. I don’t know Struts, but I’ve investigated Spring in the past and the combination of Struts + Spring + Hibernate looks pretty solid and well-proven. I also like the flexibility to pick & choose different components.
Informa API Summary
February 25th, 2005I’ve been looking through the Informa API recently for RSS work in Java and making some rough notes in hopes of understanding the classes (some are interfaces, but I list them in general as implementations). I haven’t listed all classes, just ones that look important to me or which I might actually use. But there’s not that many that I have excluded. This is based on version 0.5.5. 0.6 is the most recent version.
User - holds Channel subscriptions for user objects
Category - a category for the Channel/item (software/work)
Channel - what I usually call a RSS feed or stream. The entire contents of a feed
ChannelBuilder - like a Channel factory
ChannelGroup - a container for multiple channels. Used as the entry point for an app using Informa
ChannelSubscription - holds the details on if/when a Channel should be updated.
Cloud - ? no idea, never seen used
Feed - metadata carrier about the Channel (content-type, last updated, copyright, location, etc)
IdGenerator - used to generate an ID key (weak algorithm based on system time)
Image - image object in the Channel object model
Item - a Channel item, link to an article. Usually multiples per Channel.
ItemEnclosure - RSS enclosure item (attachment)
ItemGuid - news item guid identifier (can be the permalink)
ItemMetadata - metadata for news item (read status, score (relevance in search))
ItemSource - the source of the item source (location & timestamp)
TextInput - text input field. never seen used. could be a search form as an example
ChannelFormat - Atom & RSS constants
FeedParser - reads in RSS Channels. there’s a main() here as well - testing?
OPMLParser - reads OPML format to get a collection of Channels
ChannelRegistry - maintain Channels with update intervals
ConditionalGetValues - only get Channel updates if it has been modified
FeedManager - manage feeds, not sure when to use this over other classes
FeedManagerEntry - entry in FeedManager for each feed
FeedRefreshDaemon - refreshes feeds periodically
FormatDetector - determine RSS or Atom & version
HttpHeaderUtils - use to only get Channel if updated
ItemComparator - for sorting feed Item order
Can anyone explain what Cloud is? I’ve never seen this concept in terms of syndication feeds.
Don’t use null or -1 in your unwritten methods
January 20th, 2005
Doesn’t feel quite this bad.
Tim Bray’s error in unit testing gives a great suggestion on a better way to test, rather than putting return null; and return -1; in your empty uncompleted methods. Instead, throw an exception: throw new RuntimeException ("Method not implemented");
I know this will be useful in the future, and possibly save some time when I realize after 2 hours that I forgot to actually finish those null & -1 methods.
Debugging Resin in Idea 4.5
December 3rd, 2004
Working on a webapp at work, I decided to check if anyone has successfully figured out how to debug Resin apps within Idea 4.5. In the past, I’ve tried the Resin plugin from Intellij.org, but it’s very old and beta version for Idea 4.0. This doesn’t help when I’m using Idea 4.5. Luckily Google turned up better results to another Intellij plugins page for Resin which has been updated recently. I dropped in the plugin and amazingly it worked great. Resin is great for rapid web development apps. I think deploy it to Tomcat once it’s deployable.
If you’re about to hit something…turn. Get back on track.
November 30th, 2004Last night I got down to business actually coding again. After one of my last posts on not working fast enough, I entered the evening mentally willing myself to try to work as fast as possible. Soon after starting, I hit a wall. This is the first time I’ve used Idea 4.5 with it’s new project/web module setup and I was trying to use the integrated Tomcat support. Only it would never pick up my jars which I’d included in my classpath inside of Idea. As a brute force method just to get me on track, I was going to just copy all the jars into the tomcat lib, but I knew this would give me errors later down the road. As a quick fix to get me back on track to coding, I switched to trusty, fast Resin. I’ll figure out the Tomcat issue later when I have some idle time to mess around with it. (Anyone have this problem?)
And soon after I was back on track, actually getting my code running fine on Resin. I can’t debug on Resin via Idea (I’m sure there must be a way - leave me comments if you know how), but that’s for later as well.
The key is to realize when you get off on a tangent and aren’t being productive. In the past there have been times when I’ve hit one of these bumps, then spent an hour trying to find an elaborate way around it and gone further down a path which isn’t useful. I’ve gotten better at recognizing this as I’m going and I don’t get down the wrong path for as long anymore. Question yourself - is this going to lead to my end goal? Do I really need to spend 2 hours writing an ant task to perform this job when I can do it manually a couple times over the life of the project and it will take me 15 seconds each time to do it?
Recognize when you’ve hit a wall, take a turn and get back on track.
Work faster. Plan later.
November 22nd, 2004Paul Graham has another essay to ponder. One point he makes is that good software developers don’t overly plan their entire program.
“Systematic” is the last word I’d use to describe the way good programmers write software. Code is not something they assemble painstakingly after careful planning, like the pyramids. It’s something they plunge into, working fast and constantly changing their minds, like a charcoal sketch.
In software, paradoxical as it sounds, good craftsmanship means working fast. If you work slowly and meticulously, you merely end up with a very fine implementation of your initial, mistaken idea. Working slowly and meticulously is premature optimization. Better to get a prototype done fast, and see what new ideas it gives you.
I think I should try working faster. When writing code, I plan and diagram all sorts of UML, sometimes even write out requirements and timelines. By the time I finish all this work, the fire in my idea is a glimmer of light and I’ve had to move onto something else. And there’s also the fear of where to start. Joel on Software wrote about this in “Fire and Motion” and it’s something I keep in the back of my head. Just code something. I need to dive right in and get coding.
I’d like to do a little personal survey around the office to see if our good developers dive right in or do they sit back and carefully plan.

















