Category Archives for Programming/Development
I was doing some performance tuning the other day, for some fairly complex PHP code, and so finally had a chance to try out xdebug‘s profiling support. It’s pretty cool, but unfortunately tool support for it is fairly limited.
xdebug spits out profiling data in a subset of the Callgrind Format, which is part of the Valgrind project. While the data is textual and human readable, the structure itself is a flat unrolled execution stack that’s not entirely sequential for parsing, and so you need some kind of tool to interpret the data.
A number of shell tools will do the job, but won’t be overly useful for really drilling into the data. The KDE based KCachegrind will read and display the data and everything else besides, but I haven’t run KDE for about 8 years now, so it’s not much use to me. Likewise the small but powerful WinCacheGrind does the job, but it’s Windows, which for me means using my Windows box which is away from my main development set up. It also has a number of annoying little bugs, and while the source is available on sourceforge, it’s not really being updated.
So, I spent a few days writing a Mac OS X profiling tool, MacCallGrind.
It’s a bit rough and ready at the moment, and there’s a number of problems with it, but it reads the xdebug output and displays it with at least a few useful metrics. There’s more to come, because I need it for some other upcoming work, but I won’t be getting back to that for a few weeks, so I figured it’s best to just get it out there for other people use, even though it doesn’t do very much.
Let me know what you think and what you’d like me to add.
Remember, I know it’s only minimal, but what do you expect for two days’ work?!
We might be about to see a big and very welcome change in the way we innovate and invent. About 20 years ago we were bemoaning the move from individual inventor to corporate R&D, when most well known developments seemed to come out of company labs, and companies such as Philips and IBM invested more and more in pure research and it’s commercialisation. While inventions were still coming from an idea by an individual, the individual and the teams that went on to develop them were more often than not working for a large corporation.
Who remembers Charles P. Ginsburg of Ampex Corporation, who led the team which invented the first video recorder; or Dr. Percy Spencer from weapons developers Raytheon Corporation, who first discovered that microwaves could be used in a new type of oven; or the team behind the Joint Strike Fighter?
The day of the individual inventor seemed to be over, with the likes of Edison, Bell and Gutenberg perhaps ending with someone like Robert Moog or Raymond Kurzeil. This also seemed the case in my industry, with the days when an individual software developer could design and build a product on their own, also almost over. Goodbye to the heady days of software invention by engineers such as Dan Bricklin, Bill Budge and Alan Bird, to name a random few.
However, about five years ago the ABC TV show “The Inventors” popped back on air, and there seem to be a lot more news stories these days about individual inventors again. How come?
This story about a bed which makes itself is amusing, and was invented by an individual, Enrico Berruti. Now you may be thinking well, that’s what you get from an individual inventor, but Jean-Luc Vincent, who chairs the International Exhibition of Inventions where the bed is being shown, makes reference to Proctor & Gamble’s Connect & Develop strategy, where up to 50% of the P&G’s innovations are sourced from outside the company. Of course this doesn’t mean that these are all by individuals, but there’s at least recognition that invention happens outside a formal lab environment, and more often than not when an individual randomly gets a really clever idea all of a sudden.
In software at least, are we finally seeing a shift back to individuals or small teams? Things went out of control when users started expecting more functionality in their products, particularly with companies such as Microsoft setting a new benchmark in software complexity. Small developers found it difficult to satisfy ever growing user expectations of what good software should include.
About 15 years ago I used to write software packages on my own, and have them marketed by software publishing companies. I haven’t done that in a long while, due to the work that would be involved in developing so much new code from scratch. But with open source and COTS now being increasingly low risk and easy to integrate options for developers, maybe we are seeing a revitalised community of individual developers.
So go and invent something!
“The current study looked at the distracting effects of pop music on introverts’ and extraverts’ performance on various cognitive tasks. It was predicted that there would be a main effect for music and an interaction effect with introverts performing less well in the presence of music than extraverts. Ten introverts and ten extraverts were given two tests (a memory test with immediate and delayed recall and a reading comprehension test), which were completed, either while being exposed to pop music, or in silence. The results showed that there was a detrimental effect on immediate recall on the memory test for both groups when music was played, and two of the three interactions were significant. After a 6-minute interval the introverts who had memorized the objects in the presence of the pop music had a significantly lower recall than the extraverts in the same condition and the introverts who had observed them in silence. The introverts who completed a reading comprehension task when music was being played also performed significantly less well than these two groups. These findings have implications for the study habits of introverts when needing to retain or process complex information.”
The Psychology of Behaviour at Work: The Individual in the Organisation
Research into the role of music in the work place. “…score in a reading comprehension test were significantly higher in a ‘low information-load music’ condition than either a slient condition or a ‘high information-load music’ condition, where ‘information load’ was measured by tonal range, repetition and rhythmic complexity.”
A cognitive analysis of tagging
(or how the lower cognitive cost of tagging makes it popular)
Or tagging vs. categorising.
Software Development at Microsoft Observed: Its about people … working together
“To understand Microsoft developers’ typical tools and work habits and their level of satisfaction with these, we performed two surveys and eleven interviews with developers across all business divisions. This report provides a summary of the resulting data.”
It had to happen. lolcode.com