Eventual Consistency taster

If I send an update to one system, then a minute later send that update to another system, my system will be inconsistent for that minute. Not quite. In my system there’s only one application that creates new data. Think of that application as the author of a novel. Updates to the novel are sent… Read More »

Duplicating data can save money

I have lots of records in my database. One application writes these records, many applications read these records. So I put them all in one database, and have all the applications access that database. Simple. But then I run into some problems. Dependencies There are times I need to change the schema. If I change… Read More »

Prototyping, fighting layout bugs, and model-based testing

Recently, I’ve ran into a few interesting talks related to testing.  In this first talk, Steven Dow talks about some early studies on how prototyping has an effect on the performance of the end result.  As you’ll see in the Q&A, people are hungry to know more about how we can structure tests for our… Read More »

Clean Code

The Clean Code Talks concentrating on writing testable code. In his talk, Unit Testing, Miško Hevery explains unit testing and makes a case for unit tests. … In his talk, Don’t look for things, Miško Hevery provides a practical guide to the Principle of Least Knowledge (aka Law of Demeter, aka Don’t Ask, Tell) …… Read More »

Using instant messaging for distributed application communication

During the first session of the Lightweight Languages 3 workshop (includes video of the talks), Dana Moore and Bill Wright presented ACME: Toward a LL Testing Framework for Large Distributed Systems (abstract), in which they described a distributed application which used the XMPP (aka Jabber) instant messaging protocol to communicate between nodes. XMPP addresses many… Read More »

Network theory – detecting cascades

In his talk, Dynamics of real-world networks, Jure Leskovec discusses where to place sensors in a network to detect cascades such virus outbreaks or rising memes.  I particularly enjoyed Jure’s explanation of how the cost-effective lazy forward-selection algorithm, which his team developed, helps to balance the cost of the sensors versus the reward of early… Read More »

Debugging on Software Engineering Radio

Another podcast I listen to is Software Engineering Radio.  The Debugging episode talks about how testing does not prevent the need to debug, that debugging is a search problem, and tools for estimating where source for bugs are located. Related links: Why Programs Fail: A Guide to Systematic Debugging by Andreas Zeller – book on… Read More »

Time and attention: THE soft skill of every knowledge worker

In his talk, Time and Attention, Merlin Mann talks about being conscious of what grabs your attention, negotiating requests for attention, and communicating organization culture around communication. I enjoyed the part about defaults.  Simple tips for improving concentration: Configure your email client to not notify you when an email arrives. Configure your instant messenger to… Read More »


Parleys.com publishes talks from software conferences.  I like seeing high-quality slides alongside video of the speaker.  Paryleys’ podcast is an audio only version of the talks you can watch on their site. Two of my favorite talks are: Flow of Change which discusses managing change in source control systems Speaker: Tony Smith, European Technical Services… Read More »

TV Ontario’s Big Ideas

I’ve received some requests to share some of my favorite podcasts. The first I’d like to share is a non-technical podcast called Big Ideas.  It’s the only regularly scheduled program dedicated to the art of the lecture and the importance of ideas in public life.  One of my favorite Big Ideas lectures is by Oxford… Read More »

Creative use of closures in testing.

Having moved to Java, I do miss closures. xUnit.net has a creative use of closures in their unit testing framework: 1 2 3 4 5 6 7 8 9 [Test] public void DivideByZeroThrowsException() {   Assert.Throws<System.DivideByZeroException>(   delegate   {   DivideNumbers(5, 0);   }); } This code snippet was taken from xUnit.net’s documentation. Previously,… Read More »

Phishing and other scams.

I always find these security talks entertaining. In his talk, Searching for Evil, Professor Ross Anderson discusses research done by himself, Dr. Richard Clayton, Tyler Moore, Steven Murdoch, and Shishir Nagaraja. Related links: Security Engineering: A Guide to Building Dependable Distributed Systems by Ross J. Anderson – book on Amazon

Design by Contract

I would like to see design by contract become mainstream. JSR-305, Annotations for Software Defect Detection, is a step in the right direction. The applicability of this standard is broader than the name suggests. Here’s a talk about the JSR by Bill Pugh: I would like to see compile-time and full IDE support for design… Read More »

Favorite JavaOne Videos

I’ve moved over to Java. Here are my favorite sessions from JavaOne. Videos require free registration. You only need to register once for all the videos. Language: Languag-Oriented Programming and Language Workbenches Scala is a functional and object-ortiented language that runs on the JVM, it’s similar to F# (F sharp) Closures for Java Fast x86… Read More »

Automated Testing – Model-Based Testing

In his talk, Model-Based Testing: Black or White?, Mark Utting discusses the difference between black-box and white-box models and their affect on the ability to automate testing. Related links: Practical Model-Based Testing: A Tools Approach by Mark Utting and Bruno Legeard – book on Amazon

Signals, Truth, & Design

In her talk, Signals, Truth, & Design, Judith Donath discusses intentional and unintentional signals as well as truth in signals. Related links: The Future of Reputation: Gossip, Rumor, and Privacy on the Internet by Daniel J. Solove – book on Amazon

Closures for Java

In his talk, Closures for Java, Neal Gafter provides a description of and an argument for closures in Java.

A new human interface

In his talk, Dasher: information-efficient text entry, David MacKay introduces a unique human input mechanism, Dasher. I’ve used Dasher and quite like it. There’s a Java applet version of Dasher, but I encourage you to try a native version. Contributions to Dasher have been made by David MacKay, David Ward, Alan Blackwell, Phil Cowans, Tim… Read More »

Faster sites mean more money.

Google found that when pages took only half a second longer to appear, usage of their site dropped 25%.  In her talk, Scaling Google for Every User at the Seattle Conference on Scalability, Marissa Mayer communicated these results. The explanation of the statistic starts around 9 minutes into the video and takes about 3 minutes.… Read More »


In his talk, Drive-By Pharming and Other WebApp Bummers, Sid Stamm discusses creative exploits.

Managing Email

In his talk, Inbox Zero, Merlin Mann discusses one of the most important soft skills of a knowledge worker. Related links: Getting Things Done: The Art of Stress-Free Productivity by David Allen – book on Amazon Lifehacker: 88 Tech Tricks to Turbocharge Your Day by Gina Trapani – book on Amazon

Using @ infront of literal strings

Using @ infront of literal strings lets you do: instead of: “C:\\directory\\file.xml” or “SELECT field FROM table where field=var” you can do: @”C:\directory\file.xml” and @”SELECT field FROM table WHERE field = var”

FTP with streams in .net c# vb.net

There needs to be a good opensource ftp library for .net.  I want to be able to write to the FTP stream, not pass a byte array or even a pointer to a file.  Why can’t I get a Stream Upload(string filename) closing the stream would just end the file upload, not the network connection. … Read More »

Screen scraping poker web sites

Screen scraping is very brittle. It will require continual maintenance and will never be complete. A good screen scraper is like writing a parser. Extracting semantic meaning from text with a poor signal to noise ratio is non-trivial. Ideally, you would access the data via an API or a feed. Google, Amazon, Flickr and many… Read More »

Faster first byte.

override render(HtmlWriter) HtmlWriter.Flush DoSomeExpensiveOperation // or join with a thread that’s loading state base.Render(HtmlWriter) This way, you can send the headers and navigation to the client so they’ll see something while you’re waiting for something to finish. Perhaps the client won’t even finish downloading the headers when the render completes, you’ve gotten the first byte… Read More »

Consider restoring view state from the previous sessions.

Many Integrated Development Environments do this.  Stickies on Mac does this.  Email clients retain sort preferences.  Why not save sort preferences in a web application? Why doesn’t my Instant Messaging client bring up the conversation windows I didn’t explicitly close?  My DVD player asks me if I want to continue from the last time I… Read More »

Should you be persisting more state?

Lost state is state that has been destroyed, deleted, garbage collected or otherwise removed from storage not because of some domain specified reason.  In the best case because of limited storage capabilities, but because the value of the state is underestimated. Microsoft Word has autosave.  By default, every ten minutes the document you’re editing is… Read More »