Free Soft
Oct 28

I consider this the golden rule of source control:

Check in early, check in often.

Developers who work for long periods -- and by long I mean more than a day -- without checking anything into source control are setting themselves up for some serious integration headaches down the line. Damon Poole concurs:

Developers often put off checking in. They put it off because they don't want to affect other people too early and they don't want to get blamed for breaking the build. But this leads to other problems such as losing work or not being able to go back to previous versions.

My rule of thumb is "check-in early and often", but with the caveat that you have access to private versioning. If a check-in is immediately visible to other users, then you run the risk of introducing immature changes and/or breaking the build.

I'd much rather have small fragments checked in periodically than to go long periods with no idea whatsoever what my coworkers are writing. As far as I'm concerned, if the code isn't checked into source control, it doesn't exist. I suppose this is yet another form of Don't Go Dark; the code is invisible until it exists in the repository in some form.

I'm not proposing developers check in broken code -- but I also argue that there's a big difference between broken code and incomplete code. Isn't it possible, perhaps even desirable, to write your code and structure your source control tree in such a way that you can check your code in periodically as you're building it? I'd much rather have empty stubs and basic API skeletons in place than nothing at all. I can integrate my code against stubs. I can do code review on stubs. I can even help you build out the stubs!

But when there's nothing in source control for days or weeks, and then a giant dollop of code is suddenly dropped on the team's doorstep -- none of that is possible.

Developers that wouldn't even consider adopting the old-school waterfall method of software development somehow have no problem adopting essentially the very same model when it comes to their source control habits.

Perhaps what we need is a model of software accretion. Start with a tiny fragment of code that does almost nothing. Look on the bright side -- code that does nothing can't have many bugs! Test it, and check it in. Add one more small feature. Test that feature, and check it in. Add another small feature. Test that, and check it in. Daily. Hourly, even. You always have functional software. It may not do much, but it runs. And with every checkin it becomes infinitesimally more functional.

oyster

If you learn to check in early and check in often, you'll have ample time for feedback, integration, and review along the way. And who knows -- you might even manage to accrete that pearl of final code that you were looking for, too.

[advertisement] Peer Code Review. No meetings. No busy-work. Customizable workflows and reports. Try Jolt Award-winning Code Collaborator.


Tagi: rule of thumb, dollop, golden rule, stubs, coworkers, caveat, doorstep, rk, waterfall, poole, fragments, headaches, old school, repository, software development, ace, periods, developers, peoe, broken code

Oct 28
One of the biggest â??improvementsâ?? that Mozilla claims has made its way into Firefox 3 is improved memory usage, in particular, the vanquishing of memory leaks: Memory usage: Several new technologies work together to reduce the amount of memory used by Firefox 3 over a web browsing session. Memory cycles are broken and collected by an [...]

Tagi: memory hog, memory leaks, memory usage, firefox, improvements, improved memory

Oct 28
Ever since Steve Jobs first unveiled the next version of OS X, dubbed â??Snow Leopard,â?? the internet has been abuzz with excitement and wondering about the supposed â??evolutionaryâ?? qualities of OS X 10.6. One of the most-hyped improvements is the promised revamp of the SMP capabilities of OS X, with a â??breakthroughâ?? in SMP performance. The [...]

Tagi: snow leopard, steve jobs, scheduler, os x, excitement, breakthrough, improvements, capabilities

Oct 28
Alright, here's the skinny on what's changed in the new iPhone firmware (1.0.2):

- /private/var/db/localtime has been changed from a file to a symlink, looks like a fix related to time zones.

- The kernel caches in /System/Library/Caches/com.apple.kernelcaches/ have been changed. So a few changes in the kernel. The new kernels are actually smaller by about 6 kilobytes.

- The Info.plist for the Multitouch driver in /System/Library/Extensions/AppleMultitouchSPI.kext has been changed. This corresponds with what appears to be reprogrammed multitouch firmware, possibly fixing some multitouch issues for some.

- A few files have been rearranged, for the IOKit, MultitouchSupport, OfficeImport, and System frameworks (/System/Library/Frameworks). Looks like they've replaced some static folders with symlinks into the Versions folder of each framework. Possibly a backward compatibility move? I'm just thinking...

Read the rest of this post


Tagi: iphe, backward compatibility, system library, iphone, localtime, symlinks, symlink, kilobytes, kernels, caches, kernel, folders, new features

Oct 28
Several years ago, GOAT Store Publishing contacted a bunch of homebrew Dreamcast developers about putting together a commercial disc with homebrew games on it. DCSquares to be included on GOAT Games, Volume 1, and I started working on several improvements to the game, improving single player mode by adding challenge levels, and adding multiplayer support.

GOAT Games Volume 1 was never released, but below is a video showing off the updated DCSquares. The sound effects were not working on this Mac build, as it was only tested on the Dreamcast. Multiplayer is also difficult to demo on the Mac, as it requires multiple controllers.

Tagi: goat store, challenge levels, homebrew games, sound effects, dreamcast, volume 1, improvements, developers, demo, game

next >