All Posts

I’ll Tell You Where You Can Drag Your Icon…

I love the fact that most OS X software is installed simply by dragging it to your Applications folder but there is one thing that really, really annoys me and I just can’t understand why developers who are clever enough to write useful software are so utterly incompetent that they distribute their software on a dmg that hides the sidebar in the finder so you can’t see your Applications folder. For instance, here’s the window that opens automatically when you mount the dmg for Microsoft Messenger:

Continue reading: I’ll Tell You Where You Can Drag Your Icon…

Setting Up Jabber Build Notifications

We took a little time this morning to set up Jabber notifications of build failures since we now have a dedicated pairing machine with no email account (plus the sooner you find out about a failed build the better really).

It’s all pretty straight forward to set up, the latest CruiseControl includes a jabber publisher so you just put the details in an it all happens. I’d suggest you put it inside an onfailure element to avoid getting a message every time a build occurs (and if you’re checking in regularly that will be often).

Continue reading: Setting Up Jabber Build Notifications

Testing Your Way To Bug Diagnosis

Sometime you run into a bug that you can reproduce off an on, and you just get this feeling that it’s because each time you try to reproduce it you’re doing something slightly different and that’s causing it to appear and disappear. I encountered just such a bug today.

The bug report came in, select a word at the end of a list item, hit backspace and the word is deleted correctly but the next list item is incorrectly moved up and appended to this one (as if you’d hit forward delete at the end of the list item with no selection). I’d seen this problem happen with my own eyes, the first time I tried it I reproduced the problem. So I made a change to the code base to try and track down what caused it and all of a sudden the problem disappeared.

Continue reading: Testing Your Way To Bug Diagnosis

Unlockable Features In Games

It’s not often that Slashdot comes up with something genuinely interesting that I haven’t seen from somewhere else before, but they managed it today. Puritan Work-Ethic, How I Loathe Thee really struck a chord with me:

Nearly every video game since “tank pong” has buried its best content behind layers of work. Unlike any other retail product I can think of, when you buy a video game, the chances that you will actually get what you paid for are infinitesimal. I can’t think of a single game I’ve played where I am confident that I’ve seen every single level; unveiled every coveted secret; unlocked every whatsit and pretty and soundtrack left like kipple by the designers in the dark corners of the code.

I bought it. I want my game.

Continue reading: Unlockable Features In Games

Using Ant As An Installer

Since its inception, our IWWCM integration has been a bit of a pain to install – the instructions differed based on which version of IWWCM you where running and which version of WebSphere or Workplace you used and you had to move and edit files in various locations. Nothing difficult but it was just too easy to forget a step and have things go wrong.

Continue reading: Using Ant As An Installer

Ephox Is Hiring

Ephox current has two job openings available – a technical role in our Brisbane (Australia) office and an administrative type role in our San Mateo (US) office.

Application Support Analyst (Brisbane Office)

  • Combine your software engineering skills with extensive client contact
  • Work with a dynamic, innovative team doing eXtreme Programming
  • Particpate in developing the Client Services team for a growing international business

Overview

We are looking for an Application Support Engineer with excellent communication and problem solving skills to join our technical team. With a focus on client service, your role will be varied and challenging and will include analysis of client’s integrations of EditLive!, provide advanced technical support, liaising with Sales, and provide professional services directly to customers or partners, mainly remotely. Some limited amount of travel may be required.

Continue reading: Ephox Is Hiring

Pasting Images Into EditLive! for Java

I got some nice feedback over night on an old post about WYSIWYG editors:

# Pedja Says:
June 6th, 2006 at 11:49 pm

You are the greatest.

You are the only web rich text control where I can simply paste image from clipboard.

Congratulations!

I had forgotten about that feature – it has often been one of my favorites, particularly when I want to include screen shots in technical documentation I’m writing.

Continue reading: Pasting Images Into EditLive! for Java

Content Authoring vs Site Design

I’ve come to realize that there is a world of difference between requirements for content authoring and requirements for site design. This really becomes clear when I look at the different view points between myself (The Challenge Of Intuitive WYSIWYG HTML) and Alastair (This Is What You See, This Is What You Get and now Responding to Adrian) regarding WYSIWYG editing. (Snide comment: see, I can use cite and emphasis too).

Continue reading: Content Authoring vs Site Design

Selling XP To Sales

XP is a process that requires constant communication and a strong commitment to making XP work. While you can do XP subversively without getting the rest of the business to buy into the process, the benefits you get will be significantly diminished. For a software development company, adopting XP affects every single part of the business and it’s important that everyone understands their role in the process and wants to help make it succeed.

Continue reading: Selling XP To Sales

Multiplexing An XP Team

All of the writings on XP that I’ve seen seem to assume that a development team only ever works on one project at a time – there’s one product to develop and deploy, one client, one timeline etc. Oh what a nice world that must be to live in.

At Ephox we work on a large number of products - all centered around the same core editor – and each product has it’s own requirements, clients and timelines that we have to satisfy. So how do you juggle these different projects so that you make optimal use of your time and keep all the products moving forward?

Continue reading: Multiplexing An XP Team

Publishing MathML

Ah the synergies, Sam Ruby talk about getting MathML supported in planet, and the Ephox weblog talks about getting EditLive! for Java to automatically upload image versions of MathML equations so they render in any browser. The nice thing about this function of EditLive! is that you can still just double click the equation image to edit it again – the MathML is stored as an encoded attribute so that information isn’t lost.

Continue reading: Publishing MathML

When Should You Rewrite?

Greg picks up on my previous post about XP principles and how it helps avoid rewrites. I thought I should explain in more detail why rewrites are a bad thing and my thoughts about when and how you should do them anyway.

Programmers for some reason seem to think any code they didn’t write, and often any code they wrote some time ago, is poor quality, misguided and generally crap. Often this is quite true, but the degree to which the code is bad is usually significantly less than the initial impression it gives. That is, when you first look at a piece of code and start working your way through it, you feel as if the programmer was completely brain-dead and it’s amazing the software worked at all.  Except in very rare occasions the code does work with just minor bugs or even no bugs (at least that have been discovered) so the inclination to think that it can’t possibly work is just a form of panic reaction from your brain while it struggles to comprehend the new code. It’s very easy to condemn a piece of code in those first few moments when you don’t actually understand it and are just seeing a mess of symbols and a bunch of bad coding practices, but doing so condemns your rewrite.

Continue reading: When Should You Rewrite?