Archives for August 2008

Hoptoad

Taking my cue from Scott I implemented the Hoptoad exception catcher in reeplay.it. It was a breeze to implement even though we had a customized ExceptionNotifier plugin. Their interface is clean and I like that it clearly shows the environment the exception occurred in.

20/08/2008 14:26 by Matt Mower | Permalink | comments:
More about:

Digging Tumblr

I'm really enjoying the ease and freedom Tumblr brings. When I write on this blog I feel the need to be consistent with how I have used it before. It has constraints which keep a lot of things out of it. Oddments has different constraints and that creates a sense of new possibilities.

At the moment I am going to try and use Tumblr to capture the emphemeral thoughts, ideas, content of the moment, because that seems to be what it's very good at. Hopefully that will relieve the sense of tension I have developed about this blog and the functions it does not satisfy.

20/08/2008 11:01 by Matt Mower | Permalink | comments:
More about:

Change of format

This blog isn't going anywhere (in more ways than one) but as an experiment I am going to use Tumblr to collect oddments.

19/08/2008 21:32 by Matt Mower | Permalink | comments:
More about:

No market. No motivation.

Despite a re-warmed interest in all things Cocoa I find myself curiously unmotivated in developing applications for the iPhone platform. I think this post by Steven Frank, of Panic software, offers some leads on my own lack of motivation:

I've been trying to reconcile the App Store with my beliefs on "how things should be" ever since the SDK was announced. After all this time, I still can't make it all line up. I can't question that it's probably the best mobile application distribution method yet created, but every time I use it, a little piece of my soul dies. And we don't even have anything for sale on there yet.

He enumerates something akin to a "developers bill of rights" and goes on to note how the App Store violates the spirit underlying each of them. I don't think I've ever thought in these terms before but that may be because I've never been presented with an environment so hard nosed about what is actually possible.

Note "possible" not "easy."

The whole opinionated software movement (epitomized by Ruby on Rails) is about saying "This is the way we think it should be. If you follow the path things will be easy, to the extent that you stray off the path they will become more difficult."

Note "difficult" not "impossible."

There is an unbridgeable gulf between things being difficult and things being impossible. The App Store seems to make a lot of things impossible at Apple's discretion.

When I first came across the "I am Rich" application I thought it was a brilliant idea. The restrictions of the App Store made it like a piece of digital jewelry. If the app could be freely copied it would be pointless. But because of the DRM anyone who cared enough could have an exclusive piece of digital art|jewelry|crap.

Now I'm not saying I'd ever buy it. But then I wouldn't buy a £16,000 gold plated Nokia mobile phone either. Yet, if you hang around the mobile phone section in Selfridges on a Saturday you will probably find some wealthy idiot buying his girlfriend one of these.

My point is that the wealthy idiots want the crappy bling phone and someone makes a lot of money selling it to them. And since nobody is being coerced there is nothing wrong with this. I think it is the same argument for I am Rich.

I was incredulous at the number of developers jumping on some kind of socialist "Applications on the App Store should only be pure and holy" bandwagon. What the fuck is with that? Don't you want to write an app that people will pay you a lot of money for? Okay maybe you don't but why piss in the pot of those that do? And sure I would rather my expensive app did something useful but it takes all sorts of people to make a market.

What we have learned is that Apple seem to be willing to deform the App Store market simply because some people whine about it. Who knows what half-assed decision they will make next. Maybe it will be your app that people whinge about or, worse yet, my app. If someone is going to mess with my rice bowl they'd better have a better reason than a bunch of whiners complaining that it offends their delicate sensibilities by only glowing red.

Okay maybe it's not so much of a mystery why my interest in writing Cocoa Touch apps is, effectively, zero. I'm quite happy to buy apps for my iPod Touch. But the way today's App Store operates for developers is nothing I want a piece of.

19/08/2008 10:23 by Matt Mower | Permalink | comments:
More about:

Turning noise back into signal

My DG834 stats daemon has been collecting data all day, some 3387 samples at last count. Since Apple's Numbers (no matter how pretty) makes an appalling data analysis tool I turned instead to R.

samples <- read.csv( '/Users/matt/Projects/ruby/dg834statsd/log/dg834.csv', header = FALSE )
attach(samples)
data <- table(V4)
plot( data )

It took me 5 minutes with my copy of Statistics: An introduction using R to remember the <- and attach invocations needed, otherwise generating the data was a breeze. Here are the raw numbers:

Margin45678910
Samples1318736116118724744

and a basic plot:

Quartz 2 [*]
Uploaded with plasq's Skitch!

All of which shows that my connection is fairly stable except for those moments when it's not. Given that there are no 2's or 3's at all and the margin is solidly 9, not 6, something seems to have changed since Friday. Given that there are 4's and 5's I'm hoping that the new line filter has improved things and some effort from BT might improve them further. It's possible of course that BT have responded to Nildram's fault ticket and this is as good as it will get.

I also note that I have connected at 5.4mbps today which is about 1mbps slower than normal. In ways I don't quite follow I think this may be connected to a higher margin when the connection was established. But at 5+mbps I'd certainly trade a little speed for not getting constantly disconnected. And I haven't noticed being disconnected today.

18/08/2008 20:25 by Matt Mower | Permalink | comments:
More about:

DG834 stats daemon

Since I moved I've had a lot of problems with my ADSL connection intermittently dropping out for as much as 10-15 seconds. While any drop-out is annoying because it interrupts my browser, gmail, loses my IRC and iChat connections and so on, it's back quickly enough that I'm not motivated to complain. Last Friday, however, it dropped out for nearly 30 minutes and that's over the line.

Three months ago when the BT engineer came to install my line (the previous tenant having moved it elsewhere) he tested it and told me it was good for a line of this length (I'm about 1.5km from the exchange IIRC). However testing on Friday the Nildram engineer told me that the signal-to-noise ratio was too low.

I have a DG834v1 ADSL router with a web interface. Whenever I went and checked the noise margin was about 6db. According to the engineer 6 is very marginal and is the lower limit the DSLAM requires to hold onto the ADSL connection. During testing I saw it drop below 6. Presumably this is the reason for my dropouts.

He thought that the intermittent nature of the problem meant it was most likely my line but suggested swapping my line filter as a precaution.

After changing the line filter I noticed this morning that my noise margin was 9. Then it was 4. Then it was 9 again. I decided it was time to get serious about tracking this. I didn't fancy scraping the website, but It turns out that the DG834 has a telnet interface that you can turn on.

The DG834 runs linux and, with some reading, I was able to find the right file containing the ADSL stats (most instructions are for the v3, mine is a v1). From there it was childs play to cook up a Ruby daemon that makes a telnet connection to the router and periodically captures the ADSL line info to a file.

In case it's of interest I've put my dg834statsd code up on github. Every 10 seconds it logs the ADSL line info to disk in both CSV and JSON formats. Here's a sample of the output:

1219054558,5440,39,7,646766160,832,25,6,189435360
1219054568,5440,39,9,646766448,832,25,6,189435600
1219054578,5440,39,9,646766928,832,25,6,189435936
1219054588,5440,39,9,646774800,832,25,6,189441360
1219054598,5440,39,5,646775328,832,25,6,189441696
1219054608,5440,39,9,646776240,832,25,6,189442320

The columns are time, downstream line speed, downstream attenuation, downstream margin, downstream transferred, upstream line speed, upstream attenuation, upstream margin, upstream transferred

Now I can easily track my S/N margin in semi-realtime and will have some useful stats for the Nildram guys when I phone them back.

18/08/2008 11:24 by Matt Mower | Permalink | comments:
More about:

Wherein I prove that not all dissatisfaction is created equal

"Happiness, the nirvana of senses and aspirations, kills creativity and innovation that are born from needs and wants." In Naish's words: "Dissatisfaction is the driver of human endeavour". -- [On the value of dissatisfaction]

My problem with this theory:

  • I am among the most dissatisfied people I know

Why, then, am I not a creative mastermind?

Clearly not all dissatisfaction is created equal. There's probably good money to be made here somewhere and it just makes me more angry that I don't know where!

12/08/2008 14:38 by Matt Mower | Permalink | comments:

Compiled code culture

I was talking with someone recently about a Cocoa application I was writing that had a custom view. He asked me how I'd implemented the view, mentioning that not many Cocoa developers tend to share their source code.

While that's not absolutely true (there is quite a lot of Objective-C/Cocoa source code on the web) I think you could make a strong argument that the tendency of Cocoa developers is that they are far less likely to release their sources than if they were, say, working in Ruby.

If it's true I think this would point to what you might call a "compiled code culture."

When you are working with Ruby the source, effectively, *is* the application or library that you are writing. Ruby gems, for example, are just a packaging of the Ruby sources that comprise them. On the other hand a Cocoa application or framework is a compiled binary. You have two artifacts and you only need to release one of them.

Not that this should stop you but it used to be that releasing your source code could be something of a burden. Where do you put it? How do you keep it up to date? How do you manage patches? Are you encouraging patches? Etc, etc. Not releasing the source avoids having to make those choices or live with their consequences.

Subversion was no answer here but I think that Git and GitHub are. The combination of these two tools really does make it a pleasure to share your source.

Hence I have released the source to my LMHoneycombView control (and intend, soon, to release the source of the app using it). I hope it may help someone out.

10/08/2008 19:18 by Matt Mower | Permalink | comments:

Creativity is about hope

I've just read the transcript of a very interesting talk by Malcolm Gladwell on the work of David Galenson. Galenson is an economist who did a very interesting thing. He studied the value of art works sold at auction and determined that there seemed to be two distinct groups: those whose value peaked in their twenties and thirties and those whose value peaked in their fourties and fifties. He does some other, similar, analyses and comes up with an argument about creativity.

Quoting from the talk:

  • "Late-bloomers (Cezanne is his archetype who did his most valuable work in his fifties and sixties) are what he calls experimental artists. These are people who are motivated by aesthetic considerations. Their goals are kind of very, very imprecise. They don't plan anything in advance, they work sort of by trial and error. They do endless iterations of the same idea. They're constantly redoing and redoing and redoing in this kind of poking around and trying to find something, work toward some kind of distant, imprecise, and badly understood goal. They're searching, in other words, for what it is they want to create, and that searching can very often take an entire lifetime."

  • "Prodigies (Picasso is the archetype here who was, basically, done by his mid-thirties), on the other hand, tend to be much more motivated by the desire, according to Galenson, to communicate ideas. They're conceptual in the way that they think. They can state their goals very precisely before they start a work of art. The act of painting for them is all about the act of transferring something, some well-realized idea, from one surface to another. The work of experimentalists like Cezanne often kind of complicates and deepens our understanding of something, but conceptualists, people like Picasso, tend to simplify the field that they're a part of. They work very quickly and systematically."

Galenson's arguments are controversial and not widely accepted but, and this may be because I want to believe it, I find something compelling about the argument and it's basis:

  • Prodigies have an idea clearly in mind and seek to express it (Picasso: "I don't seek, I find.")
  • Late-Bloomers spend their time seeking their idea through expression (Cezanne: "I seek in painting.")

Gladwell goes on to make an argument that our (western) society has, in terms of how it views creativity, become obsessed with Picasso's over Cezanne's. That we are only interested in 'big ideas' and the people who come up with them. We don't value those who iterate towards great ideas. If your first idea sucked that's pretty much it, you're done. Cezanne's early paintings were a bust. In today's art world he'd be done but you can see this kind of thinking pervading all parts of our society.

Why does this argument appeal to me to so much?

I guess a big part of it is that, despite having a very high opinion of myself, I'm 36 and feel that I have achieved nothing of any substance in my life. In a world where you're supposed to have your big idea & payday early I feel like I'm forever grasping at ideas that seem to be just out of reach. As I've gone from 30 to 36 I've become weighed down by a feeling that that's it, "I'm done."

Yet I'm still hacking away, learning new things, playing with silly ideas, reading and pondering what's next. What Galenson offers me is evidence of hope, hope that I might yet turn out to be a late bloomer.

Hope that it's worth continuing to seek because one day I may find.

08/08/2008 09:02 by Matt Mower | Permalink | comments: