In these security conscious days it is common to come under fairly intense scrutiny as a software vendor proposing a solution, but you would think large enterprises would have the 'nouse and wherewithall to look beyond the obvious. One of the largest banks in Canada has made an incredible blunder by faxing customer details, including social insurance and account numbers, to a scrap yard in West Virginia. WTF!? There is going to be some nasty fall out from this, starting with the rather belated memo that went out today - time to get a clue guys - you need to examine your business processes outside of just the bits on the wire and software applications. Thank goodness I don't bank there.
I'm a knowledge junkie. I can't pinpoint exactly when it started, but I recall at some stage in my mid twenties I discovered books can be a really useful source of knowledge. What a concept 'eh? Read a book and suddenly you know some stuff that can let you do all these amazing things. Sure, I'd read Petzold, but that was how to write code that draws circles on the Win16 platform - not particularly mind bending. I think it was Steve McConnell's "Code Complete" that got me started on the knowledge track, as opposed to pure information.
Later on, I discovered newsgroups. Woah! My universe expanded faster than Einstein could make theories, relatively speaking... (ouch, sorry couldn't resist). I found some news groups that were noisy, with lots of newbie questions (like struts-user), but still had the occasional gem. Some had a bunch of really smart people holding lofty discussions around best practices in software design and architecture (such as xml-dev). I subscribed to so many newsgroups I could hardly keep up with the new posts, then one day someone suggested grouping them by conversation - that way you could limit you reading to only those conversations that you cared about. That boosted my bandwidth by a factor of 10 I'd say. Amazing how a simple thing like that can make such a difference.
Anyway, where am I going with this? Well, now its the blog era. From time to time I evangelize the blogging thing. I love getting little bits of micro-content delivered fresh every morning. I love seeing peoples reaction when I explain it - sometimes pity, sometimes disdain. If you are wondering what the blog thing is all about, then here is my beginners guide. I've broken it into two parts to make it simple - reading and writing.
So that's it in a nutshell.
People are calling the blog phenomena "social software" as it is all about communities of interest, and sharing information. I certainly feel more knowledgeable and connected to emerging trends in my industry since the blogging thing happened. I hope you find it as rewarding as I have.
One of the (many) things I don't get is how companies can thrive based on ad revenue. To me, ads are about as welcome as the letting the dog in after it has been raining. So, in light of the emerging developments this week is around legislation for not letting you fast forward through ads on DVDs, and Tivo deciding to show ads during fast forward, these geeks have come up with a novel and interesting way of "fixing" the problem: How-To: BroadCatching using RSS + BitTorrent to automatically download TV shows.
There are a couple of things I like about this:
Nice article on real world asynchronous systems - where Gregor describes the asynchronous nature of the process of getting coffee at Starbucks. As Gregor notes, there are a different set of design considerations and trade-offs to consider when contemplating this type of solution design:
Coming from a workflow background this is familiar territory for me. You'll notice I've used terms such as "activities" and "process flow" when describing the design considerations, and one of the ways of modeling these types of systems is through the use of Petri Nets. Gregor says: "Some people characterize asynchronous messaging solutions as being complicated and cumbersome" - I believe Petri Nets have a place in helping deal with some of that complexity.
Petri Nets were first presented by Carl Adam Petri in his PhD thesis in 1962 as a way of dealing with concurrency issues. Since then there has much academic activity, and many extensions made, including the so called "high level" Petri Net that has the addition of time for modeling activity duration, color for modeling attributes and resources, and hierarchy for allowing modular composition. Petri Nets are based on a formal mathematical description, thus it is possible to prove that a Petri Net is "correct".
This proves useful in analysis, as you can check a process exhibits correct behavior:
This type of analysis goes a good way toward providing reliable systems, compared to manually debugging (for example) where it is virtually impossible to detect deadlock scenarios in a concurrent setting. Being graphically oriented, Petri Nets aid in reducing complexity by facilitating visualization of the process. However, the idea is to go beyond that and provide simulation capabilities as well (known as playing the "Token Game"). This lets you discover how the system will behave before deployment, thus providing useful capacity planning insight.
Given all the goodness around Petri Nets, you would of thought that someone would have put together a package where you can:
So what would this buy you? Well, basically it would be a framework/platform for developing applications where reliability, throughput and performance are critical (think high volume web applications like Google and Amazon), that can take advantage of grid like hardware infrastructure.
I don't know of the existence of such a product, but it sure would be interesting to work on building such a beast.
Something is recursive if it calls itself. If that isn't clear refer to definition of recursion.
... or watch how these guys extract a car that has somehow managed to end up in the water: Depanneren. How embarrassing!
Sitting on the sideline, as a software developer who earns a living developing software, it is interesting to observe the somewhat opposing points of view between Danny Ayers and Adam Bosworth on the principles of simplicity and where RDF fits in the grand scheme of things. I hold both of these guys in high respect (I garner much value from their blogs) but in this case I am leaning towards the Bosworth point of view. I am enamoured with the RDF concept, but realistically it is a royal PITB to implement anything on top of it, at least on the Java platform. Surprisingly, I think the concept may be too sloppy - lots of hand waving about what it is you are actually describing, and soothing but none-the-less high level abstractions. So, in accordance with Pareto I think I'll pass for now until someone smarter than me makes it more accessible.
So, enticed by this blog entry, I decide to go out and buy an iPod (ca-ching$) as a birthday present for someone who loves music. We're excited as we open the box. From here on out... Well, let me just say the consumer experience was less than optimal:
Moral of the story time:
This is the new blog. The old blog is still available over at bloglines. Not sure if I should just leave old entries there, or migrate them over here. I might spiffy up some of the old posts and republish them. Who knows. Same as it ever was. Water flowing underground. (With apologies to Talking Heads.)