Murphy's law at Joel on Software
If you don't read Joel on Software, then go and read this now. It's an amazing series of bad events...
If you don't read Joel on Software, then go and read this now. It's an amazing series of bad events...
THis idea of RSS as The Web Service we have Now seems to be common. I posted on this a few days ago, and yesterday I made some additional comments. Now I've just spotted Matt Croyden's Blog, and he's been making the same kind of noises:
Jeremy Allaire notes that there have been over 10,000 sightings of RSS Web Services spotted in the wild:As I've been reading and writing today I've come to a somewhat obvious conclusion: there's been an explosion of 'web services' in the past year, and it has nothing to do with SOAP, WSDL and such standards as described in the industry but with the ascending role of RSS and RDF as XML data and syndication formats.Jeremy has a point. Another interesting tidbit from his post:Today's count of RSS feeds from Syndic8.com: 10408 feeds Today's count of SOAP APIs from xMethods.com: 275 APIsThat's a huge difference.
Infoworld has a big story this week on packaged applications and their hidden costs.
A NOSTRUM of the late '90s was to dump internally developed, custom applications in favor of packaged applications. But the hidden costs of those packaged apps are coming back to haunt many companies that implemented them too hastily. The motivation behind that lurching, tectonic shift was the horror generated by over-budget attempts to build systems internally. An entire generation of in-house programmers was pulled from projects and thrown at ERP and CRM systems -- or out the door -- because executives believed that packaged apps would fix the problem of hidden costs. "Companies that had been building their own software for 40 years started thinking maybe they didn't need all those people, and that was a sign of something bigger: a crisis of confidence," says Tom DeMarco, a Camden, Maine-based principal at Atlantic Systems Guild and co-author of Peopleware. DeMarco thinks the rush to packaged software was accelerated by organizations losing confidence in their ability to invest wisely in IT and the creeping belief that original works of code were merely a cost, not an investment. But the hidden-costs problem didn't go away with the adoption of packaged apps, which can hide even more expenses.That's an understatement. Very few companies take packaged applications as-is. Instead, they customize. This has two problems:
"If companies were feeling defeated by custom software, then packaged software has proven an even greater defeat. The fiasco with Oracle last year indicates that even upgrading a package isn't affordable," DeMarco adds, referring to the snarled application-migration problems last August that purportedly cost Agilent more than $100 million.Read the whole article - it's thought stimulating.
Infoworld has a thought provoking story on outsourcing. The conventional wisdom seems to be that 40% or more of IT jobs could be outsourced by 2005:
AS MANY AS 35 percent to 45 percent of U.S. and Canadian IT workers will find themselves replaced by contractors, consultants, offshore technicians and part-time workers by 2005, according to a report issued this week by New Canaan, Conn. based Foote Partners. And though some analysts and IT labor experts said those figures, while eye-popping, may not be far-fetched, four high-level IT managers said the predictions probably won't apply to their companies. For them, outsourcing hasn't proved to be a lower-cost alternative to keeping IT inside corporate walls. "While there are times where I'd love to throw something to the outsourced den, so far we've found that it wouldn't be cost-effective for us," said Amy Courter, vice president of IT at Valassis Communications Inc., a Livonia, Mich. based marketing services firm. "We do everything in-house," said John Studdard, senior vice president and chief technology officer at Lydian Trust Co. in Palm Beach Gardens, Fla. "The reason we've been successful in light of 9/11 and the economy and the bursting of the dot-com bubble is that we're in control of our own destiny and not locked into long-term contracts that may or may not be relative to our business anymore."I can state pretty unequivocally from my experience (see my ReplayTV support saga that outsourced level one support is a fine way to irk customers - they get to deal with distant support people who are empowered to do nothing except follow a tightly controlled script. Still, it looks a lot like application development could be going the same way manufacturing went 20 and 30 years ago:
Nevertheless, David Foote, president and chief research officer at Foote Partners and a Computerworld columnist, said American companies "can't afford to do application development in the U.S. anymore. The nature of the business has changed." Foote said he based his estimates on surveys his company conducted last year with 1,880 private-sector and government employers, which were asked what percentage of their future IT workforces will be in-house vs. external.Discouraging though that sounds, I expect the effort to be tried. I also expect that it won't go nearly as well. Software development is not nearly as well understood a field as is manufacturing - in most respects, an assembly line doesn't care where it's located. Software development is different - it's a communications heavy field, and I question the ability of development staffs 12 hours (in time zone) away to adequately communicate with the end users. Agile Development and XP are a response to the seeming inability of local development groups to communicate well; somehow I doubt that adding language and time barriers will improve that.
I had a nasty layout issue with the blog that Roger Whitney pointed out to me. After some investigation, I found out that the code I was using to place trackback, pingback, and comment links was just atrocious. I fixed that and patched the server, and the presentation should be back to normal now. Thanks Roger!
The intelligent folks at my local WB station had a sports event earlier today - a college hoops game. Ok, I set up the Replay to record Angel long in case the show got started late. The bozos at WB ran the show 1/2 hour early. Early!??? What's up with that? It's bad enough that the college basketball season bounces the show from one day to the next - but now I can't make any kind of educated guess at all as to the airtime. Sheesh.
Victor Goldberg pointed me to a meeting of the Washington (DC) Object Oriented Architecture and Design Group this week:
WOAD 1/28 - Java Impossible : What can't be done with Java and how to do it anyway RSVP quickly to reserve a seat. Space WILL be limited to those who RSVP. WHAT: WOAD (Washington Object-Oriented Architecture and Design) WHEN: Tuesday, Jan 28th, 2002 at 7:00 PM WHERE: Best Western of Rockville (in the Restaurant) DINNER: Buffet $12.50 (includes tax $ tip - to get the space, we have to eat) TOPIC: Java Impossible SPEAKER: Michael Trachtman Already excited about a talk on "Java Impossible"! Or are you wondering why in the world WOAD is doing a bits and bytes language talk? Even if you don't code, if you design, architect or manage anything in the Java or J2EE space, you need to know what can and can't be done. This will be fun and given WOAD, controversial. Michael will present prepared challenges with solutions and invite new challenges. Some of the topics that Michael will discuss include how to create a distinction between "public" and "published". We'll also discuss how to make a simple general mechanism for creating light weight transactions in Java, and show their use in enforcing Design By Contract and Componentization in Java. For new challenges, bring your toughest problems, give them to Michael and build toward a solution. We'll welcome challenges from Java gurus and .Net folks alike. Challenges with solutions are of course especially welcome. The only restriction is that the challenges should useful.Well. I have one, and I've been discussing others on the IRC Channel. My first question: I have a web log where the daily entries are stored as serialized object files (to disk). I need to add attributes to the objects that are serialized to disk. At the same time, I need to
Picked this thought up today.
But there is one SQL Server box that I almost forgot about: my laptop. I tend to connect to all sorts of foreign networks with my laptop. Had I done so with an unpatched SQL Server running on my laptop, I would have brought the Slammer worm back home behind my ISA server firewall. Then all hell would have broken loose. So the lesson here is: beware of laptops. They can easily subvert the security provided by your network's perimeter defenses. And make sure you patch ALL SQL servers regardless of whether they are behind your firewall or not!Yeah, I run mine all over too. I should be more careful....
I've seen this idea in cls recently, and now in this article on O'Reilley: Prototype in (Smalltalk, Python), then build in Java.
I like programming problems where you think, "There has to be something really interesting over there, but I can't see it clearly." All you can do is move one step over there, with a small bit of code, and start exploring to see it more clearly. And maybe it actually wasn't there, it was over here. Or it had a different shape than you thought initially. Maybe it wasn't interesting at all, and you didn't waste a lot of time. The danger of planning is that you plan for the contingencies you know about, but by definition you don't plan for things you don't know you'll encounter. So when you do encounter an unexpected event in your programming endeavor, you have to fix many interfaces and change multiple method signatures. If you've already committed to your original plan and that's no longer where you're going, then you have a problem. I'm not particularly worried by the fact that people say you can prototype more easily in Python, but eventually the Java version makes it easier to build a robust large system. You can prototype in Python. Once you've explored the space more, you can do the planning and design that the Java version requires. If you start writing in Java knowing as little as you did when you started writing the Python version, you'll waste way more time exploring than actually building the system you'll eventually build.Here's a hot tip - just build the system in Smalltalk or Python. If you skip the (unproductive) porting step, how much further along would you be?
I spent some time this morning fighting HTML tables...... After I pulled out what little hair I have left, I got rid of the table I was using for the main view (the entries). I now just have the links and blogroll at the bottom, and a link to it (and back from it). This should make the display cleaner in most browsers....
Would do well to read this article on VHS vs. Betamax.
VHS won because "the whole product" did what people wanted at a price they were willing to pay. And when people use the VHS vs. Beta analogy, they are not indicating a market failure but their own ignorance.Definitely worth pondering
Looks like Microsoft doesn't always take its own medicine:
Microsoft's policy of relying on software patches to fix major security flaws was questioned Monday after a series of internal e-mails revealed that the software giant's own network wasn't immune from a worm that struck the Internet last weekend. The messages seen by CNET News.com portray a company struggling with a massive infection by the SQL Slammer worm, which inundated many corporate networks Saturday with steady streams of data that downed Internet connections and clogged bandwidth. "All apps and services are potentially affected and performance is sporadic at best," Mike Carlson, director of data center operations for Microsoft's Information Technology Group, stated in an e-mail sent at 8:04 a.m. PST Saturday to other members of Microsoft's operations groups. "The network is essentially flooded with traffic, making it difficult to gather details concerning the impact."Well, there's some rich irony for you. The exploited flaw is a year old - and even MS' internal IT group had not patched the various SQL Server db's they run. Oops.
I saw this interesting post, which I'm extracting in its entirety:
Cameron Purdy wrote,So that gets me thinking.... What about from VisualWorks? I take the above stuff as glossing over the difficulties and making it sound too easy, but still....So I saw this interesting blog entry. The interesting thing with .NET is that you can actually run the JVM inside the .NET process and use a product like JNBridge to semi-transparently access the one from the other. The best of the Java world easily available in .NET, sans the web services overhead. Could that mean software-level peer-to-peer clustering for .NET? (Heh.) Stay tuned.It goes the other way, too. The CLR can be hosted from a process started by the Java bootstrapper, just as well. For example, I've got some JNI code called from a webapp that loads the CLR and calls into the ASP.NET runtime. At this point, all I'd need to do is (a) build the appropriate HttpRequest class in .NET that knows how to extract the HTTP request data from the servlet HttpServletRequest and HttpServletResponse objects (as well as a few associated others), and (b) set up the webapp to map .aspx, .ashx, .asmx and a few other extension types to a servlet that does this call-transition, and lo and behold, we have ASP.NET running behind a Tomcat front-end. Depending on how the bindings take shape, you could conceivably have shared session state between both environments, all running in-process. The fact that both environments have a well-documented interface for hosting their respective managed environments and that both environments run entirely in-process is what makes this possible. (About the only thing left, then, is to bind in the Python runtime and we've got just about every language in use today covered. Of course, that process will consume about 100,000 megs of physical memory, but hey, memory's cheap, right? :-) )
This is interesting - Jupiter Research has some of their analysts blogging now. If this is a trend, it's likely a good one - the more feedback people looking at the industry get, the better. I think Jupiter is doing the right thing here!
I guess I'm going to give a talk on the Web log at Smalltalk Solutions. This whole blog started as a way for me to express opinions and rant in public ;-) Over time, it got a lot more complex than that - the whole web log could be taken as an exercise in scope creep - the addition of an RSS Feed, comments, a comment RSS Feed, support for Trackback and Pingback - it's gotten a lot like normal projects. Next up, I'll have to go fill out the abstract....
I drove down to Rockville for the WOAD meeting, where the speaker was giving a talk on things that are "impossible" in Java - and for which he was going to show solutions. First problem: He wanted to show how to emulate the C++ friend feature. This was somewhat amusing to me - here's a language with all these levels of call security, and the first thing we talk about is how to get around it. Anyhow - the solution involved creating an exception object, peering up the stack, taking the name of the calling method's package as a string argument, and then checking whether the calling package was allowed to call in. It was a page of complex code. As opposed to, say, thisContext in VisualWorks. With which one could create arbitray call leve security.... Ok, then we went on to Design by Contract. What he wanted here was to be able to create an object, and ensure that the object created was valid - i.e., that the object is in a valid state after the multi-part constructor was called. This involved the creation of a lightweight transaction framework. The transaction framework involved caching a copy of the object for rollback, and custom copying code. As opposed to, say - block closures, ensure: and become:. The solution wandered along for 8 pages, most of it code. I was kind of stunned, actually. This is how Java developers look to solve these problems? Last, he brought up a lock question - a desire to have what amounts to a timed semaphore. I've seen such creations in Smalltalk. His assertion was that it's not possible in Java. At the end of all this, it just seemed like everything in Java took so much work. The interesting thing was, lots of the people I spoke to are using Java at work, but actually interested in Python, or Ruby, or Zope. I handed out a number of NC CD's. I got the distinct impression that this group uses Java, but has no great love of it....
First there was the town for sale. Now, ebay is selling an IT staff:
Complete staff of ZDNet Tech Update, formerly a vital division of one of the top ten highest-trafficked sites on the Web, currently available to instantly implement professional Web site or print magazine. (...) Resumes available to highest bidder. Bidders should be prepared to make a total annual commitment for salary and benefits in the high six figures. Sellers will also consider contract work. Please e-mail any questions before bidding.Whoa. I'm waiting for the first country to be sold on ebay. Picked up via Reflective Surface
Looks like my Linux Replacing Unix theory is getting traction. During Linux World, IBM announced that Unilever was adopting Linux. Unilever has been and HPUX and AIX shop, according to ComputerWorld (who did not provide an electronic version of their cover story...). Looks like the Unix vendors are shifting to Linux - HP and IBM figured this out awhile ago. Sun has a different problem, since the bulk of their revenue comes from their proprietary hardware - and IMHO, there are fewer and fewer reasons to consider buying Sparc and Solaris instead of intel and Linux. It's going to be an interesting next couple of years for them.
From Travis Griggs via the Smalltalk IRC:
Three types for the Lispy-things up there so high. Seven for the Fortran in their days bygone. Nine for the Algol ones, doomed to try. Just One Type for the Code Lord all alone, in the land of Smalltalk where the messages fly.One Type to rule them all, One Type to find them, One Type to bring them all and so enlightened bind them.
Sun says here that Java's survival depends on the injunction forcing MS to ship Java:
In a court filing, Sun Microsystems claims that a federal judge's order to include its Java programming language in Microsoft's is imperative to prevent Java from extinction.It's nice to see Sun taking responsibility for their own success instead of gaming the court system. Oh, wait....
Maybe I'm the last person to notice this, but the Google Toolbar is pretty cool! Steve Waring referenced it on his blog, and it's a neat thing to have installed. Highly recommended.
How many of us have seen large projects crash and burn? How many have seen them turn into Death Marches? I would guess that most of us have. Dewayne Mikkelson writes about this on his weblog:
This is really frustrating. True, but frustrating. I've got alot of thoughts about why this is true. Most of them break down when I start trying to draw parallels to very large construction and other engineering projects (avionics, etc.) Perhaps the fundamentally abstract nature of what we're doing removes the ability to "rely" on lower level component results. (i.e. when a die is milled you can test whether its shape, size, and material strengths are within acceptable tolerances.) Is there even an analog in software? Are there just unknowns at even the smallest component level that "prevent" us from architecting aggregate systems without exponentially reducing reliability? Are these issues Architectural? Design? or do they have to do with the nuts & bolts code-monkey work? Of course it's at the very least a combination of the three. But it SHOULD be possible to design reliability criteria that we can blast a component with and see if it holds up.IIRC, This is the exact problem that Agile Methods and XP are solving. Write Unit tests, all the time, every time. Make sure that the bar is green, all the time, every time. Too many of us (myself included) simply don't do this. We then have constant small problems on our own projects. These become large problems on medium sized projects, and become absolute killers on large projects. This is where, IMNSO, death marches come from - problems crop up all the time, and it takes huge amounts of extra work to crawl past the problems.
Travis Griggs came up with a fascinating summary of the inherent problems with reliance on comments:
In reality, I'm not so much against the idea of class extension comments, as the percolating push to "comment more". Comments lie. Code doesn't. Good comments are really helpful, and usually very hard to find amongst all the others. I haven't noticed that encouraing programmers to use more hooks to comment stuff improves the situation.That's brilliant, actually - Comments lie. Code doesn't
This morning I pointed out an odd ebay sale. Now the Register is reporting that it's been pulled - and that it might have been a hoax:
A spokesperson for Ebay told us that the listing fell foul of a technicality. "We do advertise professional services," he told us. "But the reason we removed it was that it contained wording that made it appear that there was a price to be determined. It appeared that winning bidder would have to determine what the individual would be paid." Gallows humor from insiders, or a prank? The debt-laden tech behemoth, which had run up $2.4 billion in accumulated deficits last fall, employs 1,500 staff and laid off five per cent of its workers a fortnight ago.It was amusing while it lasted...
I'm building client tools for posting to the blog, and for editing existing items already posted. On top of that, I will be teaching a Smalltalk class - I use Squeak with 8-10 year olds. They have a blast, and there's no way I could get anywhere using something like Java with this age group. So posting will be light until later on...
I've been working on client tools for the blog - I want the ability to edit the existing entries, and to post new ones, from a client GUI. I've made fairly decent progress on that front, but I'm not quite done yet. Later tonight the first post from a VW client (instead of straight from the browser) should show up.
If you'll be in Ottawa Feb 3rd, come see Martin Kobetic talk about security and cryptography in VW.
This talk will introduce some basic cryptographic algorithms and techniques that are available in the VW Security library and then show how these are used in SSL to achieve various security objectives. The session should conclude with demonstration of the VW SSL implementation and it's application in VW HTTPS support. The meeting will be held in Room 5115, Herzberg Laboratories (building 13 on the map at http://www.carleton.ca/cu/campus/map.htm). Pay-parking is available in Lot 1, 2, and parking meters can be found along University Drive. Free parking is available across Bronson Avenue opposite Lot 5.Enjoy!
A few days ago, I saw this post over on Reflective Surface. This evening, there was a horrible accident right across the street from me. I didn't see it, but I heard it. Some guy came down the street very fast - a witness called it close to 100 mph. He took out the mailbox (serving 10 houses), a number of small trees, and landed in the neighbor's garden. The neighbor was lucky he didn't land in the living room - we was apparently airborne on the way to the garden. I ran out as soon as I heard the commotion, phone in hand. At least three other people had already called 911, so I went over and helped get the injured guy out of the car - it was starting to catch fire. The homeowner put the fire out, and then someone got blankets for the injured guy. He was in shock - he had no idea where he was, or how he had gotten there. The police and ambulance arrived very quickly, and got things under control. It certainly got me thinking - the way that car came down the street, it could easily have landed in my house. Other than the driver, no one was hurt, which was very fortunate, all things considered. Mail delivery will be a pain, but that's a small price...
I've posted a new dev build up - there are some more bug fixes (still shaking out from the save file format change), and a change to slim mode. Slim mode no longer has a menu - it instead has a small toolbar with three menu options - toggle online status, toggle slim mode status, and quit. The builds are getting more stable - we should be ready for a release soon.
Steve Waring is worried about Wikis and REST:
From: http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.1 Safe: "... the convention has been established that the GET and HEAD methods SHOULD NOT have the significance of taking an action other than retrieval ..." Idempotent: " ... the side-effects of N > 0 identical requests is the same as for a single request. The methods GET, HEAD, PUT and DELETE share this property ..." Dolphin Wiki The Dolphin wiki provides links for the user to change the state of the Wiki, for example; "Delete this page". These links cause the Browser to make a GET request. The most obvious problem that results from this is the badly behaved spiders that turn up every couple of months, ignore the robots file, and do a "wiki-wipe". The spiders are at fault for ignoring the robots file, however they are not at fault for the way they follow the links, as they can expect GET requests to be both safe and idempotent.I don't think the VW Wiki suffers from this (although other things, like the URL construction metaphor, are problematic). However, it's not as if I've looked that deeply into the Wiki code either. I suspect that this problem will only get larger as time goes by - Trackback started out as a GET interface. Perhaps this is why it changed to a POST...
Here's an interesting article on CNET about blogs and their utility for getting the word out. Hey, I thought I was just pontificating!
Web logs (commonly known as "blogs"), message boards and other online forums are becoming increasingly important vehicles for developers to attract customers--and development talent--well before an application even enters the beta stage. Mitch Kapor, founder of software pioneer Lotus and creator of its breakthrough 1-2-3 spreadsheet program, started a development blog early on in his quest to build a smarter personal information manager. He said the blog has been a vital conduit for him to communicate with users about the project and to solicit their ideas. "Some of the world's smartest software people are interested in this project and communicating with me," Kapor said. "The more open feedback there is, the better we can incorporate those ideas into the product."While I'm sure my readership is smaller than Mitch's, I do get good feedback from this forum - both in email and comments. Keep the cards and letters coming, as the saying goes...
The NYC Smalltalk User's Group is as active as usual:
Feb 3rd, Introduction to Smalltalk emphasizing on: Writing Sunits and collection api The fundamentals of Smalltalk can be easily taught in less than an hour. We will help install a Smalltalk IDE for those guests that bring their laptops. This will be a hands-on presentation with emphasis on the creation of Sunits and review of the collection api. Date: Feb 3rd
Location: NYPC Offices at the New Yorker Hotel, 15th Floor
Time: 6:00pm to 7:00pm
Directions: take E or C to 34th (Penn Station), get off at 34th & 8th RSVP is requested. Please send mail to: charles@ocit.com with subject line of: NYC Smalltalk Feb 3rd
The NY Smalltalk User's Group has more cool events coming:
Feb 19th, Main Event: Eclipsing Eclipse Eclipsing Eclipse We will present a compelling case which will argue that the VisualWorks 7 IDE may very well eclipse Eclipse. The argument will be based on the following comparison points: Extensibility Refactoring Support for XP Immediacy Ease of use Responsiveness Community support The presentation will include review of the Refactory Browser, Sunit integration, the new StarBrowser and its powerful classifications and other conveniences. Date: February 19 Location: Suite LLC offices Address: 440 9th Avenue, 8th Floor Time: 6:30pm to 7:00pm Open House Main Event: 7:00to 8:30 pm Directions: Take E or C train to 34th (Penn Station) walk to corner of 34th and 8th. Walk up one block to 9th. RSVP is requested. Please send mail to: charles@ocit.com with subject line of: NYC Smalltalk February 19. Our meetings are opened to the general public. Invite a friend! To join our mailing list simply send mail to: nycsmalltalk-subscribe@yahoogroups.com Any questions send mail to: charles@ocit.com
Mark Pilgrim writes that he works too much. I can definitely identify with this:
I used to have a home life; now I have a home office. I used to come home from work and bitch about it for twenty minutes and get it out of my system and have the rest of the night for myself. I used to punch a clock. I didn't make anything, I didn't produce anything, I didn't write anything, I just punched a clock and when I was done I was done and I went home or out or somewhere else, anywhere else, because it was after work and that's what you did after work. Now there is no after work, there is no before work, there is no work day, no office, no clock. There is only one long continuous 24-hour day that is always work, always office, and I never punch in and I never punch outYes, a home office is a mixed blessing. No travel or commute, but work is always right there - it is so easy to just do one more small thing - and based on the people I see on the IRC Channel at odd hours, I am hardly the only one doing just one more thing late at night. I think I worked less when I traveled, to be honest.... Hat tip to Matt Croyden
After some fits and starts, I have client side posting and update capability - the data extraction from the POST was different in my test env (TinyHTTP) than in the server (CGI-Relay and Apache connected to VW). After compensating for that, it all seems to be working nicely.
Now this is cool! After tweaking the blog client tools package to minimize its reliance on other packages, I modified BottomFeeder to allow plugin loading. Bf now looks for plugin parcels, which use a simple API to add themselves to the Bf menubar. I'm posting this from the client blog tool, started from BottomFeeder as a plugin. Very cool, and something that can be updated separately. If I can get the Typeless folks to package up the IRC tool as a loadable parcel, that could be added as well.
I just posted on the client tools and BottomFeeder integration through plugins - now I've got the new dev build posted. In slim mode, the menubar disappears, so as to allow for smaller shrinking. The 2.7 release is getting closer....
For those wondering whether it's possible to create games in Smalltalk, have a look here:
The objective of this game is to control the flow of traffic in an "insect" city. The size of the city to control is approximately 5 by 5 squares. The city has streets, and the streets are either one way or two way. The streets can have any orientation.Different kind of insects move along the streets. Each insect has a different shape and speed. There could be up to approximately one hundred insects at a given time. Traffic lights are at each intersection of two streets, and the bugs can only get across an intersection if the traffic light is green.
The insects get into the city and travel around for a while following some path, and then they get out of the city. The player scores one point when each bug gets out of the city. If the player gets X points, he wins this level and advances to the following one which consists of a more difficult city with heavier traffic and more traffic lights to control.
If one traffic light stays in red for too long, it is likely that a long line of bugs will be waiting until the light switches to green. If the line gets too long, some insects will be not able to get into the city. The reason for this is that the line will end outside the borders of the screen. When this happens the player gets 1 penalty point. The game ends when the player gets N penalty points. What the player does is control the traffic lights, switching each of them from red to green and vice versa. In the easiest levels a good strategy is to have the traffic lights synchronized among parallel streets. This strategy could not be so good in more advanced levels with a more complicated city topology.
Looks cool!
I get up with thoughts no more complex than "coffee". My wife flips on the TV, and there it is - the shuttle Columbia apparently disintegrated on re-entry. It's a sign of the times that we live in that my first thoughts were whoa - sabotage. But that's probably not the case. Seven good people dead, and at the moment, no one knows why. With the size of the pieces being recovered, who knows if we'll ever figure it out.
While trying not to think about Columbia this morning, I came across This post from Ted Leung:
I've noticed something since I've started using Eclipse -- I tend to refactor my code a lot as I understand it. Eclipse's refactoring tools take out a fair amount of the pain associated with using a language like Java for prototyping. As I've started to play with Python, I find myself reliving some of my Lisp experience at MIT. I find the Python code to be very succint and easy to read -- I find that I don't mind the use of space / indentation as syntax. Since I indented my lisp code all over, so I find that I am not noticing this at all. The notation that python provides for lists and maps is one of the things that is making me very productive. The combination of list comprehensions and slice notation is very powerful and makes programs shorter. These two notions are things that Java could benefit from, but there's almost no chance that we'll see them, because Sun is so committed to not evolving Java the language. If Java had macros, we could implement some of this stuff nicely.
I guess the tools in Java are getting decent enough that developers there are starting to see how productive they could be, if only....
Things like Python and Ruby are starting to open a lot of eyes. Now what we need is to start getting some of those eyes to take a look at Smalltalk - a lot of what they are yearning for already exists...
Now this is cool. Michael Lucas-Smith published a version of Typeless (A VW IRC Client) in a single bundle, with a post load action integrating with BottomFeeder's new plugin capability. So now I'm posting to my blog from BottomFeeder, and hanging out in the IRC with the new plugin. This is really cool! Rich Demers (the guy doing doc for BottomFeeder) has been talking about making it a network hub - it's starting to approach that now!
After talking to Michael Lucas-Smith on the IRC, we decided that my simple plugin interface was - too simple. The menu picks generated were the class name, and that really wasn't what anyone would want. So I changed the API to be more flexible. Now, plugin parcels should have a postload action that uses this kind of code:
#{RSS.RSSFeedViewer} ifDefinedDo: [[:cls |
cls
registerPluginClass: SomeClass
startupMessage: startupMethodName
label: labelString].
This makes it a bit easier for anyone wanting to add a plugin.
So I have plugins working for BottomFeeder, and a reasonable API for them. Last night, I added an XML manifest file to the server, so that plugins could be detected at runtime, and downloaded.
This is cool, but it raises an issue in my mind. Sure, Parcels in VW can be loaded over top of themselves. However, I've seen problems when the changes are significant enough - and it's quite possible that the end user could be using a plugin and download a new version while the thing is loaded and in use. What I decided on for now was the safest route - if the user has the plugin in question loaded, then the code will download, but not load. the user will be warned by a dialog that the new code has been installed, but will not be loaded until BottomFeeder is restarted.
I guess my question is, does this seem reasonable?
Catching up on feeds, I spot this post over at Gordon's web log:
Dare has a new post on shortcomings in the XSD type system. Write the paper, Dare, I'd love to read it. Dare made the point that XSD doesn't map well into OO type systems without adding AOP; for instance, when mapping simple type facets. I'm not sure that this is necessarily a disadvantage, I think that it's just exposing the reality that OO type systems are a poor fit for a lot of real world data. When mapping that data into OO, you have the choice of either loosely typing the data, using AOP techniques, or working up a clumsy mapping in OO. I've seen and done all 3, long before XSD and before I ever started using XML. The same goes for impedance mismatches between XSD and Relational data; people have struggled with OO-Relational mappings for even longer than XSD-Relational. It doesn't help that some people insist that XML is the best and only form to store data, when they're just making work for themselves. At the end of the day, property files, INI files, relational databases, and whatever else still have their place. I'm interested in understanding the difficulties in performing those mappings, but I'm not ready to reject XSD out of hand.
So now just take the next logical step - reject manifest typing. IMHO, the world is starting to see the inherent lack of scalability in manifest type systems - they tend to be too rigid. What you really need is dynamic typing - possibly with type inferencing.
Go visit this new blog - hat tip to Steve Waring for pointing out Jerry's new blog. Welcome!
That there was a problem with my comments feed. The ID I was attaching to the link for lookup belonged to the comment, not to the owning post. With the way comments are organized, that wasn't going to work. I've fixed it up now, so you should see working links for all new comments