I'm waiting to pick my sister up at a Florida Airport (Lauderdale) - and there's open Wireless access here. Very cool. I used the access to upload a new dev parcel for BottomFeeder - deleting an item now just flags it as deleted and causes it to not show - it can then be restored until such time as it naturally ages off the system (based on your purge settings). Next up - allowing items to be set persistent.
One question I'd have about the stuff Patrick points to - does it allow for updating installed software on the fly? It doesn't sound like it does, and to me, at least, that's a full stop. On my site, I'm doing live server updates all the time - it's just the way I work.
Charles Miller has issues with clothes shopping. My wife would say that's me - I've gone from my Mom buying my clothes to my wife buying them in one easy step ;)
"Gartner Group recommend that companies delay deployment of critical Linux applications, determine "whether Unix or Windows will provide functions equivalent to those of Linux deployments", and take a "go-slow" approach to Linux in high-value or mission-critical production systems."
As it turns out, as far as their internet presence goes, big companies are doing the exact opposite; over 100 enterprise sites run by probably the very same Fortune 1000 and global near equivalent companies that recieved the SCO letter have switched to Linux since May, including Schwab.com.
About on a par with the rest of Gartner's advice
Overheard about Gartner
Gartner - Gartner belt : Gartner earnings call on July 31. Rumor has it earnings will be low, as they've been consistently every earnings call for the past three years. Also... word is there's a mysterious meeting called for the 30th for all of tech opps, where heads will likely roll.
I've tweaked the dev stream for BottomFeeder some. you can now delete items from the item pane - bearing in mind that such items, if they still exist on the feed site in question, will return on the next update. I also fixed up some menu enablement issues - some items were not properly becoming disabled/enabled based on selection state and/or online status.
Frans Bourma discusses "edit and continue" in development:
Debugging isn't about searching for forgotten quotes or a ';' at the wrong spot. It's about a totally different thing. Let's categorize some types of bugs to make understanding how to fix them a little easier, shall we?
- Functionality bugs. These are the ones at the highest abstract level: in the functionality the software has to provide. An example of this kind of bug is the ability to execute script in an email in Outlook (Express) and enable that feature by default.
- Algorithmic bugs. These are the ones at the abstract level below the functionality bugs. An example of this kind of bug is the (now patched) flaw in Microsoft's TCP/IP stack which marked the TCP/IP packets with numbers that weren't random enough which then could lead to data exposure via sniffing. The code was good, the algorithm used was bad.
- Algorithm implementation bugs. This is the kind of bug you'll see when an algorithm is implemented wrong. This type shouldn't be confused with the next category, however. Algorithm implementation bugs are bugs which originate in the developers mind when the developer thinks s/he understands how the algorithm to implement works and starts cranking out code, however the developer clearly didn't fully understand the algorithm so a piece of code was written which will not function as expected, although the developer thinks it does.
- Plain old stupidity bugs.. Everyone knows them: forget to update a counter, add the wrong value to a variable, etc. etc.
He then goes on to point out how edit and continue is not a good style for these issues. This is one of those places where Smalltalk (and Lisp) developers really part company with the rest of the developer community. Why is that? It's because for most people, the debugger is a forensic tool - the patient is dead, and the debugger is a tool you can use to figure out the cause of death. It's not that great a tool even for that in most cases. Now consider Smalltalk - the debugger is a browser where you also have the full context stack available. Unlike the patches on edit and continue in other environments, we can arbitrarily rewind the stack and start again from any previous point. We have a real code browser at our disposal, so we can investigate not just the in process object states, but also everything else. We can scan back to the starting point of the problem, fix that, and then start over. It's a highly useful thing to be able to do - I've used it to fix this server as people were actually using it.
The problem actually isn't one of right and wrong in debugger use, so much as different tools supporting different development cultures. This is why a lot of Smalltalkers read articles like Frans' and immediately roll their eyes - we are really talking about different things. And here's the clincher on that viewpoint issues:
People who grew up with assemblers, the gnu commandline C debugger and other terrible tools, know that debugging using a debugger is a last resort and also learned that debugging is not about using a debugger, but about understanding the difference between the sourcecode which should have been written and the sourcecode that is written
And people who grew up using Smalltalk or Lisp learned an entirely different lesson - which is one of the reasons why you see such frustration when Smalltalkers use Java, or C#, etc. - a lot of the basic development patterns are just different
This reminds me of when I was programming in Windows 1.03: 640K wasn't enough memory to run both Windows and the compiler, so the edit/debug cycle was: Reboot your machine, fire up the editor exit the editor, compile, reboot, start Windows, start the debugger, run your app from the MS-DOS Executive, reboot again... this was all before CodeView (Microsoft's first Visual Debugger), so you didn't even think about stepping through the code... we've come a long way!
The ironic thing is, Smalltalk had edit and continue capability back then. So IMHO, we really haven't come all that far yet.
MS' idea of usefulness looks a lot like Sun's ideas - throw a bunch of new API's at the developer community:
But, there are more new APIs being shipped with Longhorn than we've shipped in a long time with Windows. One reason we're gonna show you Longhorn so darn early (the PDC will be about two years before Longhorn will ship) is to give developers time to learn all about it. It will take that long to really get a handle on it. I've been reading all the top secret documents inside Microsoft and it's taken me months to just wrap my brain around what is going on. And I'm not trying to learn all the APIs.
Ok, explain to me how this is a good thing? Why do I want and explosion of new API's? Are they going to be covering actual honest to goodness new ideas, or just new wrappers around stuff we already know how to do - in other words, an unfunded mandate on top of developers?.
Via Scoble comes this link to a story about ZIP splintering. On tthe zip side, there's at least commercial interest to explain what's going on; in the RSS world, it's a bunch of ill behaved children unable to share their toys in the sandbox.
On the other hand, end users aren't even going to notice the various RSS imbrogolios; two versions of ZIP are going to be noticed as soon as someone sends a zip file that they can't decompress.
Here's an interesting article on TCO as it relates to deploying Linux or Windows. It's not the usual open source jihad, or the pro-MS kind of pap some other analysts seem to reflexively put out either:
"If you've got somebody who's smart and can config it, then [Linux is] a beautiful desktop and runs well," says Meta Group analyst Thomas Murphy. "But for the average business owner, [it] does not have that kind of simple nature that you have in Windows."
Past all the hoopla, that pretty much captures it. Linux makes a great server platform - but as a client, you need to have a knowledgeable person set it up. Yeah, I can hear the yelling already about command line driven vs. dialog box, and about how great Gnome is. Doesn't matter - For the average PC user - who's not (and doesn't want to be) a power user, Windows is going to provide a better and simpler "out of the box experience". Of course, if my Dad and the rest of the Mac faithful get their two cents in, these same users would likely be happier with a Mac. After watching my wife fight with the digicam software, I might be inclined to agree.
My "favorites" list in Internet Explorer has over 1,000 websites. There are 20 top level categories. The "weblogs category, which is a top-level category, has approximately 100 weblogs, most of which change at least once a day (and most of which I visit at least twice a month). This is too much information. Things flow by, they get registered in fleeting glimpses, and then they're gone, leaving only a tiny subconscious wake to show they've ever been there.
And then along comes something like RSS. If you don't want to read that FAQ, here's the short version: RSS is like a card-catalog for the web. It's an XML feed that tells you a little about a web page, including when it last changed
Sums it right up - try BottomFeeder out of you are still reading this site in a browser.
"'Don't touch open source software unless you have a team of intellectual property lawyers prepared to scour every single piece [of the open source code]. We offer indemnification, but many suppliers do not. A lot of companies are going to get very disappointed as we move forward. It will become a very challenging intellectual property issue,' he told Sun's Technology Forum in St Andrews, Scotland, this week..."
IMHO, it's a sign of desperation when you feel the need to use FUD to sell your products. But look - Gartner is piling on as well!
But companies nevertheless are being urged to delay Linux projects until the legal impasse is broken. "Don't ignore the problem by hoping IBM will win or settle its lawsuit, which could take a year or more. An IBM win would not prevent SCO from pursuing individual claims, which, if successful, could cost far more in penalties than buying a SCO licence would," advises George Weiss, a Gartner analyst.
Yeah, right. The risks might actually be greater in closed source systems. Have you had your legal team pour over the Windows codebase or the Solaris codebase for potential copyright issues? Could you have them do it even if you wanted to? Sheesh.
Cincom Smalltalk Developers, we want some feedback - how many of you are interested in the AMD Opteron and/or the intel Itanium? For Windows or Linux? Send feedback to me
SAN DIEGO, CA. - Here at the San Diego zoo, experiments last month with baboons have proved that higher primates can perform software testing, traverse complex menus, and code simple XML schemas. The finding have implications for the entire software industry, with some scientists predicting routine programming such as maintenance and report writing will be performed by teams of primates within 10 years
most subjects immediately understood Visual Basic 3.0, and even displayed some comprehension of the VB3 debugger and simple VB data types. Most subjects could change properties of custom controls in the Properties window, and displayed some understanding of advanced concepts such as read-only properties. Humans and higher primates share approximately 97% of their DNA in common. Recent research in primate programming suggests computing is a task that most higher primates can easily perform. Visual Basic 6.0 was the preferred IDE for the majority of experiment primate subjects. Some researchers observing the experiments commented that Visual Basic 3.0 was "way too easy for these baboons" to learn, and pushed for more Java testing.
Test subjects with the best results were baboons and bonobo apes. Both primate species demonstrated stressful behaviors when presented with Java tools and utilities
Macromedia talks about a Flash based RSS Aggregator. I prefer client side solutions to this myself, but this would result in a pretty decent user experience for a web based app. Maybe I should grab it and try to push a Smalltalk server behind it...
This explains a lot of the RSS/Echo issues - the politics surrounding RSS 1.0 and RSS 2.0. Here's Bill's morninig rant on RSS:
Ok, so folks have been asking me lately, why is the crap Winer calls 2.0 worse than using the 1.0 format?
Here's one perfect example. Let's say you download an RSS file and save it. Let's say you download a lot of them. Or let's even say your browser, when clicking on RSS files, downloads it and then hands it over (via MIME types) to a local program for handling it. Well, surprise, surprise, a 1.0 file contains it's own URL. The file itself tells you what it's talking about and where it came from. A file using 2.0 has no way to do this. How dumb is that?
Hmm. Let's see - under that criteria
- Web Pages are useless. The url isn't embedded
- Most XML documents on the web are useless for the same reason
Why do I care if the feed contains an URL? I'm not typically working with RSS files locally, I'm working with them over the net. I get the URL when I grab the feed. If it's redirected, my aggregator silently follows and changes my subscription appropriately. Once I've got an RSS document, it doesn't stay in that format - I create Smalltalk objects from it, and one of those objects - the Feed - knows the URL. And knows how to update the URL on demand.
Bill goes on to explain all the other nifty things RSS 1.0 can do better than 2.0 in a non-blog context - which is fine. For many other uses, I'm sure that 1.0 has more power. For blogs and newsfeeds, RSS 2.0 is simpler and qualifies as good enough. IMHO, RSS 1.0 is overkill for syndication of simple content. Eco/Pie/Atom is moving towards needless complexity as well.
I just got done reviewing the new load balancing framework that our distribution guys are working on. I'm the Product Manager, so you might wonder why I was doing anything like a technical overview :) - well, it turns out that the DST based load balancer that has been available for VisualWave the last few years was co-authored by me. It was a quick piece of work - one of our engineers (playing consultant) and I built it for a customer back in the late 90's - we had 6 weeks to do it, so it was never as nice as it should have been - there were some pretty nasty hacks in there.
That gave me something resembling the experience necessary to take a look at the new system. It was also the case that the other co-author was on vacation, and a third guy was still settling in from having a second child - so there I was, ready and willing to do my bit for the team.
First off, the nicest thing about this new work is:
- It's got documentation already! It's not only understandable, but it also explains the ins and outs of the strategies being used in the system - and why you probably shouldn't go for a least-busy approach (something I learned the hard way on that project)
- There are a large number of tests, supporting both single image simulations of load balancing, as well as actual multi-image load balancing. The tests will aid in long term maintenance - and they help newbies looking at the system for examples
So right off my job was easier than the old days, when I was testing the hack job. For that, there was minimal doc, and no tests. Testing meant setting up three computers, starting the images and load balancer, and seeing what happened. That's still a critical test to run - but having other tests allows you to look at sub-systems in isolation.
What does all of this mean for you? Well, the load balancer is built in Opentalk - but it's independent of Opentalk in terms of what it can balance. It means that in the 7.2 version of VW (November 2003), you'll see a load balancing system that you can use for projects that need to scale across multiple running Smalltalk images. For 7.3 you'll see failover capability added - which means you won't have to rely on homebrew systems for that anymore. In 7.3 or 7.4, you'll see DST start to move on top of the Opentalk system, which will provide a much needed update to the core distribution framework of that product - and also give our engineers one less framework to maintain. So keep your eyes peeled, and get involved in vw-dev or vwnc so that you can watch the work as it proceeds
The problem is, the JVM is a horrible, horrible platform for dynamic languages - performance suffers greatly. If the Mono project succeeds, it will be very clear that dynamic languages fare better on the .NET side. I know people involved in the .NET world, and they tell me that MS is aware of performance issues related to dynamic languages (like SmallScript) - and they intend to address them. Sun, on the other hand, has frozen the JVM since the mid 90's, and it's clear that they intend to keep it frozen. Languages like Smalltalk, Python, and Ruby will appear on the .NET (and Mono) platforms, and will have decent performance. Meanwhile, things like Jython will run like a dog on the JVM.
We have no intention whatsoever of working on the JVM, because we know how bad performance would be. Smalltalk is fast (and getting faster) now, but the perception of slowness from the late 80's and early 90's lingers. The last thing we need is badly performing, widely used platform to bring that perception back to life. .NET, on the other hand, is part of our plans
The CLR is always a strongly-typed typesystem; it's built into the core of the runtime, and cannot be abridged or avoided in any way (except through some dangerous unmanaged code accessed through P/Invoke, requiring necessary CAS permissions). There is no notion of "weak typing" as in otherlanguages. But that doesn't stop the CLR (and JVM, among others) from providing the capability to interact with objects defined in this strongly-typed platform in a loosely-bound manner, through the Reflection APIs. Through Reflection, I can effectively defer all decisions about type-enforcement until runtime, gaining a certain measure of flexibility at the expense of compile-time assistance in proving program correctness.
- Dynamic Typiing != weak typing. For instance, C++ is statically, but weakly typed. Python and Smalltalk are dynamically, but strongly typed.
- Flexibility at the expense of runtime correctness? You mean I've never seen a Null Pointer Exception in Java?
McNealy clearly hasn't looked at his revenue numbers - he couldn't have, to be quoted saying this:
The OS war is over, as indeed is the OS, and Sun won. This interesting and challenging thesis was one of numerous presented by Scott McNealy at a European Technology Forum event in London this morning. Say what you like about Scott, he's generally good copy, even at 8.30am gigs
Sun has commoditized their base business (expensive hardware running Solaris) with Java - sure, Java adoption is huge (much to my chagrin), but - using Java on an intel Linux box, or on a smart phone represents a tiny level of income back to Sun - one that doesn't even pay for the cost of the JavaSoft group. Eventually, this is going to be noticed by the bean counters at Sun, and the results of that will be fascinating to watch
Afaik, E&C is not planned for vs.net 2004 [C#], and frankly I'm happy about it, because the [C#] devteam can spend that time on other, more valuable features :). (E&C IMHO creates bad debugging styles. Debugging isn't about trial & error which is the implication of E&C. It's about thinking through where teh bug can be, fire up the debugger to test your thoughts, then think about a fix, think through the change implications and fix it. Test it and if it fails again, start the debugger to see why. This way you save a lot of time, instead of poking around in the code inside the debugger :) )
That's right, rationalize the useful feature away because your tools are sub-optimal....
There's been an interesting discussion of Java classes vs. Smalltalk classes - with a fair bit of misunderstanding all the way around - in comp.lang.java.advocacy. David Buck makes it all very clear:
I can see where Smalltalk people and Java people can get confused about classes and why Smalltalk people claim that classes in Java are somehow second class objects. Many of the Java people don't see the difference or the problem. Perhaps I could express it this way:
1) Java classes are objects
If you call getClass() on a Java object, the thing you get back IS an object. It has the same status as any other object in Java. It allows polymorphism, dynamic binding, and all the other good things objects do. To say that it's not a real object is incorrect.
2)getClass() always returns an instance of Class
This is where Smalltalk and Java differ. In Java, getClass() returns an instance of Class. There are no subclasses of Class. In Smalltalk, the "class" method returns a subclass of Class - an object which not only contains information about the class but can also have methods associated to that class.
Suppose in Java you ask a String for its class. You'll get back in instance of Class with its instance variables filled in appropriately for String. The methods defined for this object are the same methods defined for every other Class object.
In Smalltalk, when you create a class, two objects are created - one we refer to as the class which holds information (including methods) of the instances of that class and another which we refer to as a metaclass which holds information (including methods) about the class.
The class is the sole instance of its metaclass.
'hello' class --> String String class -->
This means that you can define methods that 'hello' can understand in String (we call these instance methods) and you can define methods that String understands in
(we call these class methods)
If String is a subclass of ArrayedCollection, then the String metaclass is a subclass of the ArrayedCollection metaclass. This means that class methods can be inherited.
3)static methods are NOT class methods
Since Java always uses instances of Class (not sole instances of a metaclass) and cannot support methods specific to particular classes of objects (class methods), it offers a different mechanism for doing a similar thing. The mechanism is called static methods.
Static methods are not ordinary methods. They do not support "this", they cannot be inherited, and they are not polymorphic. Smalltalkers tend to interpret these as class methods then complain that they don't work right. In fact, they are a completely different beast.
I hope this helps explain some of the differences in understanding.
Dave Winer provides an RSS primer. I sure hope no one hand rolls that way though; it's error prone, and not likely to be something people will keep up with. On the other hand, it does show how simple RSS is, which is a good thing. Now try that in Atom/Pie/whatever....
Have a look here - especially at the table. Then ask whether it's easier to approach this ideal using a language like Smalltalk, or with a language in the curly brace family...
Dan Gillmor writes about the uptick in RSS usage and why you should care:
The reason RSS has become so useful stems from the growth in popularity of weblogs, the online journals that have surged into prominence in recent years. Almost all weblog-creation software automatically creates an XML file based on weblog postings, in which key elements of the postings, such as titles and some or all of the text, are saved in RSS format.
That led to the creation of so-called aggregators, or newsreaders -- not the Usenet newsgroup readers of lore, but client applications that pull in the RSS feeds from various weblogs. This has given users the ability to aggregate information from a variety of sources into a single application, freeing them from having to surf to many sites. Newsreaders check RSS files regularly and highlight new material.
Other content creators noticed what was happening with weblogs and started creating RSS feeds of their own material. For example, the British Broadcasting Corp. Web operation has dozens of RSS feeds on a wide range of material. You can even get a Harry Potter news feed from the BBC.
If you are managing mailing lists - take a look at RSS. Create a news feed and support comments. Point your users at an aggregator. They'll tank you for allowing an escape from spam hell
Ok, here's my take - it makes Atom less than useless as a syndication format. Why? Well, say someone slaps a large piece of binary content in some item in their feed. Now I have to download that content over and over again for the next N days - until the owner of the feed has added enough new items that it ages off. Heck, With RSS enclosures (not that I actually support that yet in BottomFeeder), the aggregator can leave it entirely up to the end user as to whether an enclosure link gets followed or not. With the Atom approach, the feed provider has the option to be completely anti-social (for instance - say I'm traveling and on a slow link - no thanks to your 3 MB binary content on dialup!). Even on a fast link, the binary data is now downloaded and will likely be saved - for no good reason, I might add - in the aggregator's save file. This goes right up there in the hall of shame with my user hostile software post.
Here's a big no thanks - go ruin someone else's day with this idea.
Since we love Java, we can see the potential in these applications. We can see the beauty in their functionality and their crafty use of the Swing libraries. What we are ignoring is that many of them would be considered a joke if they were not written in Java. There wouldn't be anything cool about the applications or their interfaces or implementation had they not been written in Java. Its not enough to say that they are in Java anymore. They have to be in Java and good.
Heh - I don't even have to make fun of that - it makes fun of itself
At least in the obituary business. The NY Times ran an obit for Bob Hope written by a guy who died in 2000. So there his byline was, in the paper, 3 years after he died:
The peculiar incident of one dead man writing about another was cause for some titillation in New York's tabloids. The New York Post, not known for holding back any punches, could barely restrain itself.
"If there are any mistakes, obviously don't call the writer," the tabloid guffawed in Tuesday's edition, adding, "At least he didn't bury the lead."
Reminds me of a gig at a big company I did once. The customer care app we worked on had a rollout schedule - and based on that schedule, it was going to be 78 years before the rollout was done. I always wondered if the required version of Windows would still be available then....
Tom Yager talks about IBM's latest fab - in Fishkill NY. The fab in question is next door to the high school I went to. Neat.
Sun Sets on Education: This week I'm camped out at a Java developer, where Microsoft bashing is a full-contact sport. The big rumor here is that Accenture is about to buy Sun Microsystems' training division. So if Microsoft's long-rumored acquisition of Accenture comes through, we could end up with Redmondites teaching geeks Java and Solaris. Scott McNealy, please page your therapist.
Now that would be amusing.
In September, the W3C will host a workshop on binary XML formats. Your first reaction may be the same as mine: what the heck is binary XML? Binary XML is an attempt to find a common format for communicating pre-parsed XML trees to reduce bandwidth and the time it takes to parse large XML documents. The audience is primarily embedded and similar applications, but of course, once the genie's out of the bottle, it will be used in all sorts of applications.
He lists a number of advantages, but here's the main issue I see - into what kind of object model does this get parsed? It almost certainly won't be consistent with the object model that the XML parser I use (or other people use, for that matter) produce - which means that every single application that consumes XML will need a gratuitous change. Here's two words: mod-gzip
Austin, TX & Vienna, VA"(Business Wire)"July 23, 2003: 10x Software and Compumatics Group, today announced a global marketing and development agreement to jointly market and deliver value-added migration services helping companies worldwide to migrate Smalltalk-based mission-critical business applications to J2EE-based applications using industry-leading 10x Software's OSP-Java development and migration solutions. Compumatics Group will provide Smalltalk expertise, migration planning and implementation, support services to customers worldwide
Here's my detailed answer to such silliness. When a consultant offers to migrate you from a working application written in a toolset that is not only supported, but actively being enhanced by the vendor, stop and ask yourself who benefits from the conversion.
Nothing like a day of code review and running tests to dull the affects of caffeine. Maybe I'll have something interesting to post later...
Reading this post made me think of complexity and development. Based on the direction taken by the Roller author, it looks to me like he started out complex and simplified over time - I'm familiar with that pattern - developers often over-engineer solutions at first:
In the beginning, I implemented Roller using EJB. Every Roller business object was an Entity Bean and every Roller business tier interface was a Session Bean. I learned a lot about EJBs and XDoclet and everything was just fine, but Roller, or Homeport as I used to call it, took 20 seconds to render a weblog page. I studied the various EJB patterns and realized that returning a collection of Entity Beans from the business tier was not a good idea. I learned about the Data Access Object and Value Object patterns. I discovered that XDoclet could generate Value Objects (which Sun now calls Data Transfer Objects) for me, and I changed the business tier interfaces to return the light-weight data objects rather than Entity Beans. Much better!
That's pretty much the opposite of what I did with this blog. I started out dead simple - no database, blog entries stored on disk as serialized objects, and rendered into html on demand when the page is requested. The whole site is dynamic. I had some concerns over whether it would scale, but I figured I'd find out as I went. So far, it's been fine - I have yet to move to a database.
Now admittedly, I'm the only one using this code on this server, and it's not a multi-user server. Still, if I had to add multi-blog capability to the server it wouldn't be that hard. The whole experience of building this sitte and BottomFeeder have taught me to implement simple solutions first, and see how they work.
Unlike him, I am a gamer which means I have to stay away from games. I avoid MORPG games like Everquest and DAoC because I know I will lose too many hours to the game. They are highly addictive and sucks real world life out of you, replacing it with online life, laughing and roaring all by myself in my office. It affects work and family life. Thankfully, it's less addictive than smoking.
While Tim has this to say:
I took up Dark Age of Camelot in early 2002, and played it until January 2003 or so, and suddenly stopped playing games, didn't plan it, got bored, took a couple nights off and never went back. At the end of the day I'm really not a gamer. Because we don't get TV and I don't sleep a lot, I have a couple more hours a day than other people, on average, but a couple hours a day is not enough to be a serious gamer. Basically, if you want to achieve excellence, you have to be willing to put many hours per day in, and more on weekends, and let game events take precedence over work and family.
I have a suggestion for tthese guys, and for anyone else who avoids computer games for this reason - go get some family board games. We have been playing strategy games like Settlers of Catan with my daughter since she was 5. Our current favorite is Puerto Rico - a truly fascinating 3-5 player game that has a decent two player adaptation. The nice thing about board games is that they can be a family and/or friends affair - we play with a group of friends, and all the kids get together and play. The kids look forward to these get togethers at least as much as we do.
The Nexus Smalltalk group exists both to promote and facilitate the use of the Smalltalk programming language, and to help develop a free, usable Smalltalk, compatible with the Blue Book standard.
Now, I have to make sure these guys know about Cincom Smalltalk Non-Commercial
Gordon thinks I'm losing sleep over Atom (or whatever name it gets next :) ). Nah, I just find the level of effort being expended over it to be kind of silly. RSS is just fine for a syndication format - what we really need is a better posting/querying format for remote access/admin to blogs. That's part of Atom - but like many engineering efforts, it's gone far afield and decided to create a "perfect" standard for blogs. Perfect illustration of how the perfect is the enemy of the good enough over and over again in software. RSS is good enough. Add a useful standard for post/edit/update (etc) and hey, we would have something useful. Instead, we'll have two syndication formats (anyone who thinks RSS/RDF will disappear is naive - it has too much momentum now) - and one possibly useful edit/update/post format for one of the two. Yeah, that's useful - creating forks such that developers have to support the union is always a great idea.
CNet reports that BMC is cutting staff and shifting jobs overseas. These guys have a product that was written in VW, which their management insisted just had to be re-done in Java. So far as I know, that conversion was never successful. Yet another case where the urge to redo everything, without regard to any business value - just doesn't pan out. I'd be willing to bet that the re-write mania swept through a lot of their apps, not just the one I'm familiar with.
I sure hope that IT shops are getting a little smarter about this - if not, expect to see MS oriented shops not just adopting .NET, but mindlessly porting existing apps to it.
Yet another sighting of clue-free thinking in Java-Land - David Geary shows his OO ignorance:
Object-oriented design is sometimes at odds with performance. From a design standpoint, it's best to encapsulate everything in an object so you can treat those objects uniformly, reuse them, and extend them. Unfortunately, modeling everything as an object can be expensive performance-wise. A case-in-point is Smalltalk, which literally models everything as an object, as opposed to Java, which provides a mix of objects and intrinsic types. Today, Java is much more prevalent than Smalltalk, due in no small part to Java's better performance.
Java is more prevalent for a number of reasons, but that's not one of them. The main reasons:
- Java has a C style syntax, making it an easier seeming move from C or C++
- Java was freely and easily available for downloading at a time when the internet was just hitting big. Smalltalk vendors made it expensive even for eval access back then
- The most well known Smalltalk vendor in 1995 was ParcPlace-Digitalk - and the company was just starting a 4 year meltdown after the merger between ParcPlace and Digitalk
- Sun spent millions hyping Java and made it easy (and inexpensive) for other vendors to license and implement the VM
To summarize, technical issues had less than nothing to do with it. Also, if a full object model guarantees slowness, perhaps Mr. Geary could explain StrongTalk and Self - both Sun research projects, btw. Yeesh.
Personally, though I really do want a new PowerMac G5 I can't see myself investing much in desk-anchored computing anymore. Not since I got my first laptop, and later my first wireless ethernet card. What I can see myself doing, though, is maybe investing a little bit into a new PC for games, and maybe for a box with lots of storage and CPU power to stick in a closet somewhere and use via network.
To me, the power differential between the two isn't the big issue - I have been primarily on a notebook for years - but I prefer my Linux desktop for development. And not for power, either - it's an old PII 400! It's the amount of screen real estate available, and the 19" monitor I have on the desktop is just a lot more productive. When i want to do serious development, I have lots of windows open. That means I need a lot of space, and the bigger monitor is what I need. Yes, I can hook the notebook up thata way - but that kind of blows away the whole point of the wireless card :)
Alan Williamson has some concerns about Open Source and revenue:
But is there is an open-source model in other industries? What if an airline operated an open-source policy? Flying would be free, first-come-first-served, but the inflight meal (aka the service) would cost $400! Would such a policy work for the airline industry?
What about the automobile industry? Ford would give us all cars for free, but the servicing would be more frequent and be x100 what the typical service is now.
It's kind of ironic hearing this on a Java blog site. The problem isn't Open Source - the problem is in the model espoused by Sun for Java - where you give away the development tools (and applications, in many cases), and then act positively stunned when there's no revenue. The two things need to be separated - because Java (for instance) is "free", but not open source.
Get the wireless beer glass. Automatically signals the waiter when you're empty!
Since restaurants often make much of their profits on drinks, it is critical for servers to offer refills in a timely fashion. We propose wireless liquid level sensing glassware to aid in this task. Specially instrumented glassware detects fluid levels via a high-resolution capacitance measurement. A coil embedded in the table inductively couples power to the glasses, and provides a path for data exchange. Our prototype glass uses a standard microprocessor and a small number of passive components, making it extremely inexpensive.
So we bought this Sony digital camcorder (The TRV-22) a week ago. My wife wanted to use it to record my daughter's performance at a camp she had been in, and wanted to be able to transfer the movies to the PC - for editing, video cd burning, etc. My Dad happened to be in town, so there was the requisite "This is so easy on a Mac" abuse.
The main problem we had was two-fold:
- The camera had to be in a specific mode in order to send data out the USB port to the PC
- The software that came with the camera had the defaults set to capture audio or video, but not both at the same time
What kind of idiot sets up the defaults that way? Moreover, it's the stupid kind of "internationalized" software - the kind that makes all options available via inscrutable little icons without contextual help. It took us three days to find the stupid checkbox that would allow the software to receive audio and video at the same time. Stupidity!
I posted awhile back about the board game Puerto Rico - a truly great board game. We've been hooked on this game for weeks now - it's different each time you play, so it's very hard to grow tired of. Last night, we came across a misinterpretation of of the rules we had made in a "common mistakes" faq - it turns out that the Trading House works like the ships used to send goods off - you don't empty it until it's completely full. We had been emptying it after each time the Trader card was pulled.
Well. That changed things quite a bit - once anyone sells a good, no one can sell that kind of good until the 4 slots are filled. Suddenly, the Office building - one we had questioned the value of - took on a new utility (it allows you to sell the same kind of good over again before the slots are full). We played three games last night, and we were all back to feeling our way through the game, since this one change made for very different play.
It's a great game if you like board games. It moves quickly - once you figure it out, a game runs an hour or so. It plays well with 3, 4, or 5 players - and there's a 2 player variant that seems to work (unlike many other games). There's no point where you are sitting back just waiting for everyone else to take their turn - you get to do something on each turn. Heck, we play the game with my daughter, who's 9 (maybe I can get back to GenCon next year, now that we've made a gamer out of her).
The site was not accessible for a few hours - starting sometime after 5 am, Eastern US time, looks like. Cincom's network provider had an outage, so all the Cincom network sites - not just this one - were offline. Mail I just received from our IS group indicates that our network provider is still having problems, so don't be surprised if this (or another) Cincom site is not available at some points during the day.