That I laid out here. I got a comment that said, more or less: "1000 man years? No one does projects like that anymore!" Maybe they don't. However, there are plenty of projects like that dating from the early and mid (even late) 90's - a number of our Cincom Smalltalk customers have such large projects. How do I reach a number like that? Well, I have personal experience with one huge effort at a large (Fortune 100) firm. They have had 150-300 people developing the applications in question since late 1993 or early 1994. That's well over a thousand man years in at this point. It's hardly the only example of such a system either - I have friends on many other similar systems, and not a few of them have tried migrations to Java (watch for it - some will now try to go to .NET). Most of the efforts I know of failed; the ones that succeeded merely re-delivered the existing functionality in the (now trendy) language. The question remains - Where's the business value?
Dynamic typing is still able to raise controversy - check out the archives of the USENET comp.lang.smalltalk newsgroup and you'll see what I mean - threads can pop up and linger for weeks (even months!). So it's always useful when someone discusses the issue intelligently. Have a look here - tip of the hat to Why Smalltalk for the link.
There's not a lot to disagree with there, IMHO. Go read the whole thingAnatol Fomenko wrote: ...Why Smalltalk is dynamically typed, and why it does not affect negatively the stability of the large Smalltalk applications?Rephrasing slightly gives the two following questions:
The first question would be better answered by Alan Kay and the Smalltalk team more than anyone else relaying their reasons. Alan Kay has described some of his reasoning in the book "History of Programming Languages II", various OOPSLA & Smalltalk talks, and other sources.
- Why is Smalltalk dynamically typed?
- Why does dynamic typing (as done with Smalltalk) not negatively affect the stability of large applications?In my own words, the main reason is that Smalltalk has a simple and powerful concept of building software out of Objects that send Messages to other Objects. This is more powerful in both the small and the large than a language that adds the additional concept (and constraints) of "Types". Note that biology has Objects (e.g. Cells) but no Types, Humans are Objects but there is no compile-time type-checking between humans, and even electronics do not have compile-time Types: you can plug the GROUND pin into +5V if you want although some physical constructs will discourage (but not prevent) it. These highly scalable areas (life, civilization, electronics) have done fantastically without the support of Types, growing in orders of magnitude of functionality. Alan Kay (who has a biology background) leveraged insights on how cells and other highly-scalable areas could scale, and applied them to Smalltalk. The main concept was membranes/encapsulation and little else was needed.The second question may partially support the first. The short answer is dynamic typing can scale well because one tends to create much less code as the system grows bigger. As the system grows, objects will get reused in many different situations for which they work well, and the layers of "membranes" allow clients to not worry about internal details very much. It still requires a good architecture to build a big system, but the generalizable functionality of the objects is helping a lot with the design/implementation.
On my conference call. There were some positive things (and interesting things) that came out of it. The analysts we spoke to did say the following, quoting from some of their older papers (1997 and 1999):
Which is the summary of what we were told about Smalltalk. We were also told that they (the analysts on the call) had not looked at VisualWorks in over five years as well. Draw your own conclusions from that next time you see advice being proffered from that direction.
- Smalltalk is a niche
- niches are bad, because you get less vendors supporting you, higher risk of being orphaned, and harder to find and more expensive people
- Don't stay in a niche unless it offers you compelling technical advantages that outweigh these considerationssmalltalk has strong advantages, most notably in the area of complex and changing requirements And to quote one of the other people on the call from Cincom (i.e., one of the more level headed ones who did not lose his temper): I'll take that. I'd take it as an advertising slogan: If your requirements are simple and never change, then you don't need our products.
No sooner do I re-enter the dynamic/static fray here when this shows up in comp.lang.smalltalk:
As we all have found out (latest when reading this thread ;-) is that there are at least two big philosophies in programming languages: static typing and dynamic typing. While many people make a white/black distinction between these two claiming one or the other side is inherently bad, I cannot agree. IMO programming languages are all in an early stage of development, and I feel disadvantages in all of them. ATTENTION static typing stuff ahead: Regarding generics, while uselesss for dynamic type languages, are important in statically typed languages, as they are the only way to solve certain problems. E.g. you have an AbstractBuffer superclass with ByteBuffer and IntBuffer subclasses. You will then can write aint getNext(); in IntBuffer and a byte getNext();each dealing with its particular buffer. With generics, there is only one method. I agree fully that Generics do not solve everything. Another big issue is that types cannot be refined in subclasses (this is even more painfull than the problems solved by generics). A good example is Object.clone(); Any subclass can override, but they all are forced to return Object instead of their type, leading to ugly code like e.g. ByteBuffer copy = (ByteBuffer) myByteBuffer.clone(); //yucc This one is particularly hurting when designing class hierachies. Also, it apparently drops back to runtime type checking, static types are merely a burden. (BTW: these two problems are on (1) and (3) in the java RequestForEnhancement list). Apparently all this is absent in dynamic type languages.
That interest in the Cincom Smalltalk NC is high? We are getting 800 - 1300 downloads a month - I've been personally tracking the numbers since September. Those are very good numbers, IMHO, and represent a good level of interest in Smalltalk.
I decided that the list of tech blogs I follow wasn't really expansive enough, so I added links to the various other industry and Smalltalk sites I follow. The sites listed don't encapsulate all the things I follow (for instance, I specifically omitted politics), but it's a pretty complete list of the places I get ideas and content from. Enjoy.
I got this today from a customer. Now, I've dropped the company names and industry sector, but this is a perfect example of what I talked about here.
Our business and technology bigwigs went through a 3-month review of our business needs and the system itself to see whether a migration is necessary. Nearly everyone agreed that migration would waste a lot of money to achieve less than stand still. It is now accepted that both VW and GS/S are the cornerstones of the system's success, and that by mirating/rewriting we would lose the market share and ability to deliver. For our sector look no further than (our prime competitor) who had a competitive system to ours. About 3 years ago, a newly appointed CIO decided to do away with Smalltalk because he had never heard of it. It took them 2 years to unwind the system, whilst the unsuccessful rewrite in Java failed miserably. We now employ most of their Smalltalkers (who have a solid background in our business domain - a big asset) and their end user support personnel. The outcome? They have lost a BIG profit making business completely, which now in the times of reduced business could have put their entire organisation into profit.That's exactly the risk I referred to in migrations. Sure, Smalltalk is a niche product when compared to Java or .NET. However, deciding to do a migration based solely on the niche status of a technology (any technology) without regard to the risk is just strange. If nothing else, there is a huge opportunity cost involved in having a team do a standstill migration - what business value could they be adding instead?
Originally StORE was known as Bernstein but it was extensively revamped for VisualWorks 5i's namespaces and parcels. Members of the team wanted to call it StASH for Smalltalk Archival Source Holder but certain nameless senior members of engineering with a vague memory of the seventies poo-poohed the idea.Chuckle. Some of us even remember that the working name for class ApplicationModel was GluePuppy
Although it's not exactly clear to me what Oracle expects. See the story. Excerpt:
According to this article: "The proposal outlines a standardized way to merge Java programming tools from several companies into an integrated development environment (IDE), which would then allow access to all the tools through a single interface. Oracle intends to present a draft of the specification by March next year through the JCP. Java backers such as BEA Systems, Borland and IBM will contribute to suggested add-ons and incorporate approved updates to the specification to ensure it will work with their products. Oracle's stated goal is to codify the mechanism for plugging together different Java programming applications. Once standardized, an application developer could use a single Java IDE and be sure that an application for testing Java code, for example, would work glitch-free with tools for program design and source-code control."This sounds an awful lot like a description of Eclipse to me.
Welcome home! The new ANSI / BBS stylesheet is now live. MarkupLanguage.net, the latest of Mozquito's Webaccess developments, will be used for the revival of the StadtNet community system and is planned to initially run the forum, as many BBS systems had news forums at their core. It will be linked off Stadtnet as the 3.0 version of the "SN Foren", after having reached agreement with Joerg Stengel, founder of StadtNet, to restart the operation of this community system based on Mozquito software.Call Dr. Emmit Brown!
John Brant posted this on cls today - IMHO, it demonstrates one of the truly cool things about the RB:
One thing that the RB has that I haven't seen in any Java refactoring tools is the generic parse tree rewriter (I've never programmed in Java, so I might be missing something obvious). Using the rewriter users can define their own transformations. There was an experience report at OOPSLA '02 where Will Loew-Blosser used the rewriter to change the data access layer: The report. Using the rewrite rules he was able to make the 16,000 changes 34x faster than he would have by hand.Now that's productivity
Law.com reports that software company Citrix is suing the Florida Department of Revenue to avoid paying taxes. Citrix's theory? "That all companies acting as purveyors of information and facilitators of communications, including newspapers, TV stations, telephone companies and computer companies, are constitutionally exempt from paying taxes of any kind," because "taxes have a chilling effect on the First Amendment right to free speech under the U.S. Constitution."hmmm. double hmmm. triple hmmm, even...
I have a head cold - the sort where the cough gets worse when you lie down. To top that off, Christmas (and the deluge of relatives) is only three days away. Should make for a lovely holiday (hack, cough) week (sniffle).
In the current BottomFeeder development cycle, I added binary save support to the tool. The XML file save/restore was getting way, way too slow for the list of feeds I track (1 minute on my PIII 500 Mhz box!). So I decided to add an option (likely the default in the next release) to save and restore via BOSS, while keeping the XML format as an option. Well, BOSS does not save graphics handles (i.e., screen objects). That should be ok; why would I want to save them? I don't, but the various UI level dependencies (both those set by me and those set by the framework) have hooks from the domain to the UI. Again, shouldn't have been a problem, except that the code for save/restore was a bit convoluted - over time, it had spread out across three classes. I was getting BOSS exceptions with this as a result - it was too hard to track what was going on (my first crack at removing dependencies ended up with code that iterated over all the feeds twice). So I finally sat down this morning and refactored the nightmare - yet another case where the RB made my life way, way simpler. I should have a new dev build up shortly. We have a lingering Twoflower issue with parsing that we want to resolve before we push 2.6 out, but it's getting closer.
I'm sick, I'm coughing, and I'm bored. What better time to mess with layout ideas?
I was able to get a few more things done on BottomFeeder - some bug fixes around the settiings change, and some work that tries to locate the last save file on non-Windows platforms. On Windows, we save the filename and directory (of the save file) in the registry. On Unix/Linux (and Mac), there is no such beast. There are environment variables for the these, as well as command linee arguments. In their absence, I look for a reference to the last save file in the default sav directory. Since I added binary save, this became less trivial - before, I always looked for rssViewerFeeds.rss. Now, binary saves go to .bss. So, I need to have a way to check for that possibility at startup. I'm not completely happy with what I've done, but it seems to work. I also eliminated a nasty Twoflower bug. If an html entry has embedded xml tags, Tf barfs. It seems that the MS Office tools do that, so we are only going to see more of it. The fix needs review; I basically just have the tag being willfully ignored. In any case, if you grabbed a build earlier today, the one that is being uploaded now (about 7:20 pm EST) is worth getting.
BottomFeeder is getting closer to the 2.6 release. This morning, I added a zoom mode - allowing the user to expand the html viewer to the entire right side of the interface. The binary save format issues have been wrung out, and that's now stabilized. A few lingering menu contextualization things have been addressed, and the Users Guide (Big tip of the hat to Richard Demers for that!) is now available from the help menu. At the moment, the User's Guide is online only - if we want to ship that with BottomFeeder, we really need to get an installer...
This is truly precious - go read the secret diaries of the various denizens of Middle Earth. For Instance, RingWraith Number 5:
Day 1It's worth reading the rest....
Just opened Christmas pressie from Sauron. Pretty, pretty, pretty, pretty ring! Day 1,000,967
Got box of chocolates as Christmas bonus from Dark Lord, again. As per usual, Sauron ate all the toffees and left the strawberry creams. How I detest this life of vile servitude. Still disembodied. Day 1,001,056
V. bored in Barad-Dur. Nothing to do but play Scrabble with Orcs. Is v. annoying as Orcs only know Black Speech of Mordor. You try spelling Azg Nazg Gimbatul for a triple word score. Yeah, I didn't think so. Day 1,001,102
Suspect Sauron gearing up for something. Walked in on him applying ceremonial sparkly mascara. Suspect he will be v. happy when he has body back and can really dress up again. Day 1,001,105
Yes, Sauron definitely gearing up for something. Have been given orders to sally forth and hunt down hobbit and close personal hobbit friend, who have somehow gotten hold of Ruling Ring. Witch-King of Angmar's suggestion to place pictures of Ruling Ring on milk cartons and wait for calls to come in was ignored
SMEAGOL: I Likes then new film...Master Peter did well for us...he did.
GOLLUM: No...Master Peter is treaterious...he destroyed Master Tolkien
SMEAGOL: But the film is good...We likes the effects and landscapes!
GOLLUM: They are filthy theives who stole the Precious story and changed it!!!
SMEAGOL: Well the evil NEW LINE Executives only gave master Peter 3 hours and that is not enough time for us we say.
GOLLUM: We could have 5 hours and they would still mess up Faramir!
SMEAGOL: We Loves it!!!
GOLLUM: We HATES IT!!!
So we just hooked up the second Replay TV, and we started recording more stuff and watching across the house network. BAM So much for the 10 mb network! Sending shows across the wire from one room to the next requires more bandwidth than I seem to have - at least, if my wife keeps using the high quality settings. Looks like a network upgrade is in my future.
Merry Christmas to all! There was apparently a power outage in Cincinnati last night, which took out all the online systems. Back up, and I'm off to help with the cooking.
The suckage started last night. The power flickered last night, and took out my server's power supply. Since that was the router, it took me offline. So today I took that in to get it fixed, andn picked up a Linksys router. That was broken. back to the shop, got a new one. This one works.... but, neither of the Replay TV's could get a dynamic address off of it. So I gave them static IP's, that worked. Then there's my wife's PC. After a lot of twiddling, I think her ethernet card wennt, likely taken by the power spike. Sigh. I can't find the spare ethernet card I have lyinng around somewhere, so I can't test that idea. And my local repository is offline, since it's on the Linux box. To make things even better, The power in Cincinnati went out at some point yesterday, and took all the services down. The web apps are back up (obviously), but - we apparently didn't put the postgres db out as a cron job, so the public Store is offline, and I can't get ahold of the admin. I should grab some eggnog....
Sorry for the inconvenience folks; that winter storm did some damage to us, but we are back up.
Introduction The goal is to create a fully functional Smalltalk implementation of the Galaxy server capable of simultaneous support of different game specifications such as Galaxy+ and GalaxyNG. I would like this to become next-generation Galaxy server which will allow people to define their own Galaxy rules without having to modify source code every time. What is Galaxy? Galaxy a free very addictive play-by-email war game for multiple players. A game usually has somewhere between 10 and 80 players and one Game Master that runs the game. Each player gets to play one nation. The game is set in a Galaxy filled with many planets. Each nation starts with one populated planet. The other planets are empty. The goal of the game is to conquer the whole Galaxy by colonising the empty planets and killing the other nations. A game runs several turns a week. Players send in orders before each turn. These orders tell what the player wants his nation to do, and after each turn runs each player receives a report that states what happened that turn. There are many programs that allow you to graphically browse these turn reports. They show a map of the galaxy, the position all ships, and all kind of other statistics, and allow you to create orders. When you play a nations you can do many things. You can design your own ships. Each ship has many parameters, drive, number of weapons, shields, and cargo capabilities. These can all be tweaked to create many different ship designs. Populated planets can be used to build the ships you designed. The ships can be used to transport cargo and colonize planets, or to fight battles with your neighbours to take over their planets. Ships can be improved by technology research. Experienced players do not operate alone, they use diplomacy to create a pacts with other players, and attack their enemies together. Back stabbing, double deals, and other treason are of course also possible, no-one is to be completely trusted, and you will find that Galaxy is a good simulation of real-world politics. It is also very addictive :) Galaxy has been around for quite a while. Many variants have been developed during that time. In random order:
- Galaxy. This is the original version of galaxy, it was developed Russel Wallace somewhere in 1991 or maybe even earlier (V2.9 has a 1991 copyright).
- Blind Galaxy. It differs from Galaxy in that less information is visible. For instance you do not know what other nations there are in the Galaxy until you encounter them. The game was developed by Howard Bampton. He frequently starts new games. The code is a massively hacked offshoot of the early versions of Galaxy plus substantial new code. The home page of Blind Galaxy is on http://www.cs.utk.edu/~bampton/blind.html.
- Galaxy PBW, a verion of Blind Galaxy that can be played via the WWW. The home page is on http://pc046b.fzu.cz/galaxywww/.
- Galaxy plus (G+). A variation of the game developed in Russia somewhat similar to GalaxyNG but there are differences. Galaxy is Big in the former soviet union.
- GalaxyNG. This is a partial rewrite of the original code to create a more stable version of galaxy developed by a number of people. It also introduces some changes to the rules and the option to create more diverse kinds of galaxies. The home page for GalaxyNG with loads of information is at http://galaxy.pbem.net/index2.html.
- GalaxyNT a port of GalaxyNG to Windows NT.
- Blind GalaxyNG. This is a modification of GalaxyNG source code to create a game that is like Blind Galaxy.
- Galaxy G.
- Galactica and Galaxy/2 are extinct varients, Galaxy/2 was the precursor to Galactica.
With a bad network cable. The good news is, the Replay TV transfers video very nicely across a 100 mb network. The bad news is that the cable running from my wife's system to the basement won't synch up, and it's definitely a cable issue - a quick test with a good cable across the floor to the office figured that out. Oh the joys of crawling around in the basment to replace the wiring....