Something I've seen linked to from a number of places Karrysafe. They make a range of street theft deterent bags. All lined with slash resistant steel mesh and one even has an alarm that goes off when it's taken. Colors other than red will apparently be available in the future.
I myself have thought about, but done nothing about obviously, some sort of proximity alarm system for luggage. Something where you would put one piece in a laptop bag or other item, and put the other smaller piece on you belt or keychain. By means of some wireless solution if they became separated an alarm would go off. Of course an easier system is to dispense with the wireless piece and use some sort of pull out plug on a string or chain.
I suppose the meta point though is what you intend the system to do. As with computer firewalls etc you need to assess the sort of risk you realistically want to protect against, and then tailor your defenses. I think Karrysafe targets the oportunistic street thief so they don't need to protect against all dangers. It does raise the point that perhaps a more stealthy appearance and color would also help as it makes the bag and its contents look less valuable.
So, after a brief life as Monday: PwC Consulting has been bought for 3.5 billion dollars (2.7 in cash, the rest in stock and convertible notes) by IBM. This is quite a come down for PwC from the proposed 18 billion dollar deal with HP that fell through in 2000.
I think that now is the time, if a company has the cash or stock valuation, to pick up some nice undervalued, or at least realistically valued, complementary products or companies. Sales are slow this year, with little sign of them picking up before next year. You might be able to convince a company's board, perhaps especially one that is VC funded and hasn't gone public yet, that half a loaf is better than none. Getting some money out now could be a better bet than pumping more in and hoping that things will turn around in the new year.
As to what it will all mean for the people who work for IBM and PwC I think the one safe bet it that there will be head count reductions, to use the business euphenism.
Look here for the latest developments and releases of SEQUENCE.
As part of working on the design on MBlog I've been producing quite a few UML Sequence diagrams. I started out sketching these by hand which is quick, apart from the constant erasing and redrawing, but does make it difficult to publish them on the web. I then tried using the OpenOffice.org draw program. However, I found I was spending more time making the drawing look pretty than expressing what I wanted. Next I looked at ArgoUML but with that tool you have to enter a lot of information that isn't needed for a simple sketch before you can get any diagram. Finally I decided that it would be simpler to produce my own simple took.
The end result is an interactive editing tool called SEQUENCE that produces pictures like this
from a textual input like this
(Comments newComment
(CommentFactory newComment
(Comment new
(IDGen nextID)
(Transaction add)))
(Comments addToCache))
It's written in java and required java 1.4.0 or above to run. I've released it under the LGPL and you can don't load the executable and source as one jar file. Just unjar it and use java -jar sequence.jar to execute. Look at the README file for more info on how to build it from source. I hope to make improvements as needed and apologize for the current complete lack of comments.
I found this on Haddock.org but it was also featured on This American Life so Haddock possibly got it from there. Anyway, it's a log by a woman called Ali Davis of her experiences working as a clerk in a video store that has a porn section. Called True Porn Clerk Stories it's well written and strangely engrossing.
p.s. last post for a week or so as it's time to do something else for a while.
This week's New Yorker has a very interesting article called The Talent Myth. The suggestion is that companies that rely solely on recruiting very "talented" people, and promote a culture that rewards perceived "talent", and sometimes self nominated or elected "talent" at that, without any rational measure of performance, are more likely to fail. It's a great read, and a nice antidote to the business cult that attributed success to the "individual super star" style of upper management.
On a similar note I've recently been listening to (the library didn't have a copy of the book) a condensed version of The Practice of Management by Peter Drucker. The things he wrote in 1954 are still relevant today, and in fact if more people went back and rediscovered these basics it would be to their, and our, benefit. Just take a look at the reviews on Amazon for an idea of its impact. The only thing that grated when I listened to the recorded version was the obvious asumption that everyone involved in management was male. It's weird, but a good thing, how that really stands out when you read or hear it these days.
What is one supposed to make of this? A process is a progressively continuing procedure that consists of a series of[sic] controlled activities systematically directed toward a particular result of end. A process is defined as performing activities of varying complexity.
And if you think I'm taking this out of context, it's even more confusing in context. Anyway, it's from the Business Process Management Initiative in the specification of the Business Process Modeling Language (BPML) they have created.
It may be that the thing they are trying to describe is not well enough understood at this point to be able to put together a useful definition. In this case I think the best thing to do is to fess up and define it by example until a greater clarity can be achieved.
I've always found development war stories interesting. Sometimes they're also informative. I think you probably know the sort of things I mean. Tales of projects that went well, production disasters leading to phone calls in the middle of the night, companies where arms on chairs were status symbols, and so on and on. When told well they present useful lessons in an easily digested form.
One of the best sites I've found for this is Gamasutra. It's a game deveopers site that needs a free registration. The postmortem features can be just fascinating. Generally they use the format of "Introduction", "What went right" and "What went wrong", with right and wrong each being five points. It's interesting to see the same lessons popping up in different projects. Items such as under estimating work, managing content and programming workflow, and the importance of finding or building the right tools, . Lots of these apply to the more mundane sort of programming that I do for a living, and its fun to read about the rest. For example I've never worked on a project where choosing the right voice actor and building a character around their image was one of the things that made the development process successful.
From Lemonodor comes a link to "Design Patterns" Aren't by M-J. Dominus a Perl person.
The book he seems to base his argument around is Design Patterns: Elements of Reusable Object-Oriented Software otherwise known as GoF (Gang of Four). This was published October 1994 as the result of work over a number of years. Perl was first released in 1987 as version 1.0. Version 5.0, which introduced objects to the Perl world, came out in 1994 as well.
I think the place where M.J. Dominus goes wrong is in treating the the book is a series of C++ code samples to cut and paste into programs. Bashing design patterns because the Iterator pattern can be, to some extent, expressed using foreach statement in perl is ridiculous. Of course the simple things can be done that way, and picking the simplest pattern in the book makes it trivial to show how. What about the Observer, or Visitor patterns, what about Model-View-Controller? Does Perl have statements for these as well? Can you write mvc $foo $bar $baz->{'fruit'}; and have Perl "do the right thing"? Of course not.
As you start to look at higher level patterns like Acceptor-Connector it's clearer and clearer that they are shorthand ways to describe and name common situations so that programmers and designers can catalogue and pass on their knowledge. Just as carpenters call a particular joint a dovetail rather than describe it's detailed configuration every time, so programmers and designers use Observer as shorthand for a common configuration of components and assignment of responsibilities. Even if the language you're using provides facilities like scheme's excellent macro system you still should know that the Observer pattern is a useful way to organise responsibilites for some situations.
To end in the style in which the slides are written, what sort of person knows so little about Design Patterns as to put forward these arguments, yet feels themselves qualified to present on the topic? On the other hand seeing that on slide 6 Mr. Dominus expresses his opinion that the C++ macro system blows goat dick I think I can make a pretty guess about what sort of person he is.
The Perl community seems to attract this. Sometimes it looks like cleverness and trickiness in coding is valued over intelligence and clarity. Not just in coding though, look at the first Perl Artistic License. The GNU organization says "We cannot say that this is a free software license because it is too vague; some passages are too clever for their own good, and their meaning is not clear."
Over on kuro5hin there's an interesting article on a new AntiPattern. The Death Sprint is the result of a missapplied and badly implemented XP development process. As opposed to the more well known Death March, where nothing is ever released, though development goes on endlessly, the Death Sprint has frequent releases of code. However, over time the quality of the releases, and the quality of the underlying code base, gets worse and worse. The team is going faster than they can support, tripping over their own feet. With no time to refactor existing code before adding new features, or to consider their design, quality goes downhill, and each new feature becomes harder and harder to implement and introduces more and more bugs.
The cure is threefold. First pause to implement unit tests for existing features and make sure they all pass. Secondly refactor the existing code to make it cleaner and easier to modify in the future, checking with the unit tests at each stage so that bugs aren't introduced. Thirdly, and finally, keep the unit test disipline and add some design so that quality remains high in the future.
Anyway, wrt to critical mass, yep that's one of the many problems. How do you make something that relies on the network effect for its success successful before there's a network? One possibility would be to seed the system with some sort of stationary beacons in high traffic areas. These would relay info they'd collected from other cars, and possibly general traffic info from other sources. That way a driver would get some benefit even if the number of other drivers using the system was fairly small. The only way to really get it to take off would probably be some sort of onstart style deal with a major car maker.
These sorts of things are interesting to speculate about though. Perhaps there is something out there along these lines that can be done.
I've already added this as a comment to Raleighnet.org: Interesting P2P Traffic Info Idea but I thought I'd also try out the trackback feature and repost as a post on this site.
So, what about a P2P network using bluetooth to communicate traffic information between cars on a highway? Imagine I'm in a car going South on I35. On my dash is display of the road conditions for thirty miles around. How is this produced?
It's produced by my car talking to the other cars as they pass on this side and the other side of the road. As cars pass me in both directions my car communicates to them the conditions I'm currently experiencing, that is how fast I'm going, where I am now, and a trail of my speed and location over the past thirty minutes. It also passes on data it has received from other cars in the past thirty minutes. The cars that my car provides data to reciprocate, and transfer their data, and data they've collected from others, to me.
Cars coming towards me, going North on the other side of the road, can provide information about conditions ahead of me. They've collected this from cars in front of me when they passed them a few minutes ago. The data I provide will be useful to cars behind me; it will be transferred to them by the cars that pass me going North. As cars enter and leave roads the data is spread out so that it's likely that I'll know the conditions down each turnoff that I pass. Certainly I'll be aware of conditions on any road with heavy traffic. In this way each car can maintain on it's own, with no central authority or monitoring, a picture of the road conditions around it based on information provided to it by other cars.
On sweetcode, which is a great place for finding the more offbeat and interesting software projects, I found XSH, the "XML Editing Shell". This is a perl module that uses the metaphor of a file system with directories to represent an XML document with elements. It provides a shell for traversing and manipulating the file system using commands analogous to the unix shell commands. For example, cd is used to change the current context to different elements with the argument being the xpath to the target element; ls is used to list the current context. Of course commands are also provided to add new elements and attributes, and even to apply style sheets. I suggest reading the article at xml.com first for an overview.
I've always been interested in systems that attempt to use an existing conceptual model from one domain in another domain. If done successfully it makes it easier for new users to understand and learn the system as they are able to apply knowledge from the domain they already know to the new tool. The danger is that any conceptual mismatch between the old known model and the model of the system being learnt can prove very jarring.
Just after I first posted this I realised how easy it would be to implement something like this is scheme or lisp. The read-eval-print loop is already built in. All that would be needed is to implement the cd, ls etc. commands as scheme/lisp functions and it would work. Using Oleg's scheme xml tools as a basis I could imagine even me knocking this together.
The Power of Palladium, a pretty funny Brave New World style look at where Microsoft's Palladium may take us.
I've just finished reading The Complete Ballad of Halo Jones by Alan Moore and Ian Gibson. Mr. Moore is famous for Watchmen among other things. Most recently he's been writing Top 10 and The League of Extraordinary Gentlemen, both of which are great.
Anyway, back to Halo Jones. It's one of the best comics I've read, well up there with Watchmen and Top 10. It's also a story about ordinary people. Though living in the future (of course it's her present, but then that's the future for you) Halo is an ordinary woman who remains ordinary throughout the series. She never rises to high office or sees the grand plans behind any of the stuff she's involved in, she just wants to get out. Some of the reviews you can find on google don't seem to like the first of the three books in the collection as much as the others. That was my impression on a first reading as well but it really grows on you as you read it again. I think this site has the best overview of Halo Jones and what it's all about. If you're looking for a comic book to read, and everyone should from time to time, Halo Jones is a good choice. And if you can't see what the appeal of comics is try Halo Jones, Top 10, or The League of Extraordinary Gentlemen for a great introduction.
A very interesting article, Inside The Apple iPod Design Triumph, in Eletronics Design Chain Magazine. The Design Chain idea itself also looks interesting, it seems to be an eletronics product design analog to the Supply Chain in manufacturing. Another opportunity for business process management and document management software. Found via Boing Boing
I've put together a conceptual data model for MBlog. This just sets out the major entities I think I need to implement a blog. Next I want to look at the general pattern for implementing each entity.
Very interesting letter from Dana Blankenhorn, a veteran journalist, complaining about the free ride WorldCom's current CEO is getting from the press. Why aren't journalists asking the questions that members of the public want to have answered but don't have the access to even ask? Surely it's their responsibility to find out what's really going on, not just to report what people say, and toss easy balls for the interviewee to hit for six. WorldCom, Enron, GlobalCrossing etc. sure look like malfeasance to me.
A list of quotes taken from chat sessions that contains some absolute gems, and a lot that aren't very clean but are pretty funny. I think that some of those inifinite number of monkeys that were working on Shakespeare plays have moved on to IRC and are working on a sitcom.
<Raize> can you guys see what I type? <vecna> no, raize <Raize> How do I set it up so you can see it?
I found this on haddock.org