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.
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.
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.
The simplest way to improve things – provide an installer that automates the process. The problem is, most installer tools are ridiculously complex to work with because they attempt to provide a way to do anything you could ever want. It would have taken us days just to get our heads around how to use the tools.
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.
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 pmYou 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.
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).
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.
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?
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.
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.
Knowing The Importance Of Code
Sometimes you write code that is really important, sometimes you write code that is not and other times you write code that is somewhere in between. Should you apply the same quality standards to all of that code?
It really comes down to a question of value – code that you write once, run and then throw away obviously doesn’t need to be pretty and certainly doesn’t need any documentation. What about code that you keep around, make the odd change to and run regularly but is of low importance? What if it just doesn’t matter if the code breaks? Where is the value in making the code robust and easy to maintain?
Return Of The Killer Smart Tags
Well maybe not so much “killer”… Anyway, Scoble mentions the return of SmartTags due to bloggers choosing to add them to their site. I pretty much never actually go to bloggers sites unless I want to write a blog post about them in which case I open a new tab in NetNewsWire to remind me for later, so I don’t notice them much. When I do see them though they really annoy me – they look far too much like hyperlinks and distract far too much from the content.