Empty Feeds are Okay

Yesterday I noticed that there is a No Fluff Just Stuff stop planned for Denver in November. Then I notice that even though it is listed in the tour stops there is not a page for that stop. In the past this would probably not have bothered me, I mean if they do not have anything useful to say yet why have a page, right? But the other stop specific pages have feeds which means that if the Denver stop had a page I could subscribe to the feed. The fact that the feed would be empty right now is okay. I use an aggregator so I can just ignore it until there is something interesting, like “registration now open” for example. As it is I will probably just forget to check the website until December and then I will be disappointed that I missed it.

Grammar

Elliot has started to grasp grammar. This week-end he started constructing his own sentences. Previously he had only been repeating phrases that he had heard us say. Now he seems to grasp that a phrase is a series of composable words, rather than just one long word. Which is good because he does have a lot to say lately, not that anyone except Catherine and I can understand most of it.

Jumpin’ Juice & Java

REXML could not parse this XML/HTML: 
<div class="hreview">
  <div class="vcard">
<h4 class="fn org summary">Jumpin'; Juice & Java</h4>
<a href="http://maps.google.com/maps?q=10710+Westminster+Blvd%2C+Westminster%2C+co" class="adr"><span class="street-address">10710 Westminster Blvd</span>, <span class="locality">Westminster</span>, <span class="region">C0</span></a>
<a class="url" href="http://www.jumpinjuiceandjava.com/denver.htm">www.jumpinjuiceandjava.com</a>
</div>
  <h4>Rating: <span class="rating">4</span> out 5</h4>
  <p class="description">I finally got around to trying out this <abbr class="type" title="business"><a href="http://en.wikipedia.org/wiki/Coffeehouse" rel="tag">coffee house</a> and <a href="http://en.wikipedia.org/wiki/Smoothie" rel="tag">smoothie</a> shop</abbr> located in the Westminster Promenade next to the Sun Ice Centre.  My <a href="http://en.wikipedia.org/wiki/Americano" rel="tag">americano</a> was quite tasty.  It was a little too hot, and a bit more character would not have killed it, but it <em>was</em> a good cup of coffee.  The menu included the usual variety of coffee and tea based refreshments one expects from a coffee house.  Jumpin'; Juice & Java also servers a variety of smoothies which looked good, but I did not try one so I cannot comment directly. The ambiance was warm and inviting, with large windows, comfortable looking leather couches and a gas fire place.  A sign on the door claimed that wifi was available.  I can definitely imagine my self hanging out there this winter and drinking espresso and watching the snow.</p>

</div>

Being Your User

I just finished what my company calls a “tour of duty”. A tour of duty amounts to being an operations employee for 4 hours. You show up at 8 am because that is when the day shift starts. A senior ops person shows you what to do and then they sit behind you while you do it.

REXML could not parse this XML/HTML: 
<p>I was a bit skeptical when I first heard the idea but after experiencing it I am a convert.  It is interesting to see what things about your software are annoying when all you want is to get the job done.  More importantly though, the experience inspires passion and passion is the most valuable asset any company can have &#8212 especially in their employees.  Without passionate employees there is very little chance of having passionate customers.</p>

For me the there were a couple of things that where nice to see. First, the products my company produces are quite visually pleasing. It is easy to be passionate about things that are pretty. Second, I finally saw ops using a tool I wrote. That gave me a little “I rule” moment. Finally, it confirmed something I have suspected for a while now: Applications that do not have a RESTful web interface are pure, unmitigated evil.*

  • There are, of course, exceptions but the application you are working on is not one of them.

Update: Corrected some grammar and spelling errors.

Source Control

I am currently engaged in a battle with my source control system, CMSynergy. Generally speaking source control is an invaluable bit of kit, but this one is crap. I am beginning to believe that I would be better off with just keeping this code on my local, failure prone, hard drive. I would definitely be better off with something like CVS or Subversion.

For those of you lucky enough to unfamiliar, CMSynergy is described on it’s website as a “a task-based configuration management solution”. Basically that means that it views the world as a series of tasks. All changes must be associated with a task. However, a task it not change set, a task cannot be committed or rolled-back atomically, it is merely a traceability device.

The problem with CMSynergy is that is not designed to facilitate software development. It is designed to give managers a warm comfortable feeling that they are controlling all the changes to the system. So all changes must be associated with a task, which should (and optionally must) be associated with CR which is associated with a requirement. In agile environments, which we claim to have, maintaining traceability is pretty close to meaningless busy work because I am going to refactor quite a bit of code that is only tangentially related to the feature/bug I am working on.

The policy enforcement role of CMSynergy is embedded deep in the systems design. It truly believes that it is the center of the software development process. For example, it you modify a file and then do an update, so that you can test your teammates changes with your own, CMSynergy will happily, and without asking you, replace your modified file with the version of the file it thinks is most appropriate. Now there is a way to tell CMSynergy that the local copy of the file is the appropriate version but you have to take an explicit step for every file you modify to prevent it from being overwritten.

If you develop a source control system please realize that it is not the center of the development process and that it’s primary job is to facilitate the development of software. Pretending otherwise will cause your users significant amounts of pain and suffering.