StS 2007 Daily Update: Method Testing
On Wednesday afternoon at StS 2007, Panu Viljamaa will be talking about Method Testing:
A new framework for unit-testing that takes advantage of Smalltalk's "live environment" is presented. The approach, called Method Tests, relies on the ease of plugging into the Smalltalk compiler from within the IDE. Unit-tests associated with a method are then run automatically whenever you save a method. Every method becomes a "unit" of its own, with its own tests which at the same time express the method's "contract".This provides benefits not unlike type-checking, but for dynamic languages. The Method Tests framework makes writing tests easy, by providing a simple four-method API based on Smalltalk's block closures. The implementation and issues relating to testing dependent packages and subclasses are explored, and solutions provided.
See you in Toronto!
Technorati Tags: smalltalk
Smalltalk Daily 4/23/07: Seaside Master-Detail
On today's Smalltalk Daily, we render the selected employee onto the page after the form is submitted. That gives us a basic master/detail type application; we'll look at adding Ajax dynamics to it next.
Say Hello to the new STIC Director: Georg Heeg
Georg Heeg is the new director of STIC - I'm sure he'd love to hear your suggestions - or better still, an offer to help out.
CST Spring 2007 Ships
We've pushed Cincom Smalltalk Spring 2007 out the door, just in time for Smalltalk Solutions. We'll have CDs to hand out there, and - as soon as the files are updated to the proper locations - we'll have them ready for download.
Technorati Tags: smalltalk
Finally: New Heroes
Now this is what I've been waiting for (in addition to Stargate, which returned recently) - Heroes is back with new episodes to end the season. The DVR is primed and ready :)
Updated NC Downloads
I've just updated the NC download application - the login page is gone, replaced by a simple Registration page. Once you register, a cookie will be dropped on your system, and you'll be redirected to the download page if you visit again. So I apologize for the inconvenience of having to register again, but it's part of making the whole process simpler.
Technorati Tags: smalltalk
About that Installer Issue in Vista
I wrote about the silliness of the way Vista handles Installers awhile ago; they run with admin rights. Now, it turns out that it's even stupider than I thought:
"If Vista sees that you have created a Microsoft Visual C++ project with install in the project name, then that .exe will automatically require Admin Rights to run. Create exactly the same project, but call it, say, Fred, and the problem disappears," he explained. "Vista's security isn't just concerned with what an .exe is doing to your PC, but what it's actually called."
I think I'll call that security via stupidity.
Technorati Tags: windows
StS 2007 Daily Update: Home Automation with Smalltalk
Smalltalk Solutions is coming up fast - if you register now, you can see talk like this one: using Smalltalk to automate your home:
During the remodeling of our house, we installed various home automation components using the KNX/EIB, X10 and serve@home technologies. After the installation, it became clear, that we needed an advanced control system in order to manage and integrate the various systems. This presentation will cover the implementation, the communication and the results of developing a home automation control system in Smalltalk.
See you in Toronto!
Technorati Tags: smalltalk
Smalltalk Daily 4/24/07: Moving to a New Release
On today's Smalltalk Daily, we move from VW 7.4.1 to VW 7.5 - the new non-commercial release went live on the site yesterday. We go through building up a new base image, which also involves going back to some of the components we loaded a very long time ago.
Technorati Tags: smalltalk
The beginning of Utility Computing?
If James Governor is right (and I think he is) - then internal IT shops are probably doomed:
Finally it strikes me we may be about to see something entirely new in the industry. Twitter is emerging as a core lightweight Web infrastructure but unlike earlier Web companies isn’t buying and building out its own infrastructure. Twitter is a hosted architecture of participation. Unlike first web wave companies, Google as poster child, this is On Demand purchasing.
Amazon was early with their elastic computing initiative, and I'm not sure that Sun has the right target for their "data center in a box" idea - but it looks like IT infrastructure is moving away from being a local concern. Back in the early days of electricity, "everyone" bought a generator - that didn't scale well, and the entire model moved to a carrier one. I think we are starting to see the same thing in IT infrastructure, only with a lot more competition. I suspect that companies that keep their IT internal - unless their needs are very, very unique - are going to be spending a lot more money than their competitors.
Google Becoming Dull
I agree with Doc Searls about Google's renaming of Froogle:
This is a perfect example of Branding As Camouflage. Or worse, as a mask.
Google's product search may have moved past price shopping alone. But Froogle was a great name. First, it was fun. Second, it actually meant something . So what if it meant only part of what product search is about?
I also agree with him that this is a lot like what Microsoft would do - give a product a dopey name that fits in with "corporate standards". Of course, the run of the mill marketroids like the change - which tells you all you need to know about this being a bad idea.
I asked my wife about this, because I've never used Froogle, and she uses it a lot. Her reaction went from:
Huh?
to:
What were they thinking?
So the closed loop of marketing/PR types think this is brilliant; the average person who might actually remember the name "Froogle"? Not so much. The new name - "Google Product Search" - sounds more like an OED entry than a name. I suspect Google went and hired some "professional" marketing types. Here's some free advice: Change the name back, and fire the automatons who came up with this idea.
Smalltalk on the Road
Tim Bray sent me this photo from Vancouver - it reminds me of something PC Magazine used to do, where they would run pictures that juxtaposed computer/internet services with mundane things that weren't related. So anyway, I'd like to thank Tim for sending this - it brightened my day :)

Wired hits Bottom, Digs
I have to say, I sympathize with Jason Calacanis on this interview thing - here's his comment on a request for an interview from Wired:
A WIRED journalist pinged me for some comments on Michael Arrington and his A-list blogger status. I told the journalist to send me the questions by email and he refused. He said Dave Winer did the same thing.
Journalists have been burning subjects for so long with paraphrased quotes, half quotes, and misquotes that I think a lot of folks (especially ones who don't need the press) are taking an email only interview policy. (Mark Cuban did this long ago).
Dave Winer weighed in as well, and while I don't often agree with him, I think he's correct about this. Here's the thing: take some subject you are conversant in, and then start paying attention to media reports on that subject. How often do you notice:
- The reporters are just completely out in left field, with no clue as to the subject matter
- People the reporters interview complaining about being misquoted?
I've gotten to the point where I'm extremely skeptical of media reporting in general, unless I trust the specific reporter. For people who are in the public eye, it's worse - any contact with the media is an opportunity to be misunderstood or misquoted - or to have your work described badly because the reporter simply has no clue about the subject matter.
So what's up with the title? Well, here's how Wired responded:
Calacanis Won't Do Phone Interview -- Cowardly
Jason McCabe Calacanis is complaining about a Wired reporter who wants to do an interview with him, but refuses to do it via email. He says it's "ironic" that a magazine covering the digital age refuses to use email for its interviews.
Yeah, I can see where that response is going to ratchet my trust in your magazine right up there - perhaps all the way to the level of respect that I reserve for my local highway department.
Technorati Tags: PR
A break from history
I took a break from the history reading for a day to gulp down a quick techno-thriller: "Space Wars". It's a near future look at what might happen if the US' space platforms (spy satellites, etc) were successfully attacked. Not deep, but enjoyable enough, and a quick read.
Ad Hoc Panel Podcast
David, Michael, James, and I have decided to do a podcast right after the coding contest wraps up on Monday - we'll hang out in the room and record it. If anyone wants to show up as an audience and ask questions, feel free - it could be fun!
So figure around 5:15 - 5:30 pm in Room 201F. See you there!
Technorati Tags: smalltalk
The End of Exclusive Access
Here's an interesting resolution to yesterday's dustup between Wired and Jason Calacanis - they did the interview, as part of Calacanis' podcast. The take away here: the media no longer get to control all aspects of the conversation.
Better UIUC VW Wiki Feed
I've updated the feed for the UIUC VW Wiki - each item should now show up with the associated content.
StS 2007 Daily Update: Extreme UI Testing
Mid afternoon on Wednesday at StS 2007, Niall Ross will be talking about Extreme UI Testing:
Standard eXtreme programming emphasises the great importance of test-driven development - of the model layer of an application. Testing the UI layer, whether while developing it or afterwards, is treated much more lightly: prominent advocates of XP have suggested it can be largely and safely ignored. Experience taught the author that ignoring UI testing has costs. He therefore developed patterns that, with little extra coding, extend XP tests to the UI layer. He uses these in his projects, including in his open-source project, where portability of the tests across dialects is also of value. The talk will briefly overview UI testing approaches in Smalltalk and then present the patterns in detail. It will end with a discussion to share experiences and approaches.
See you in Toronto!
Technorati Tags: smalltalk
Smalltalk Daily 4/25/07: Automating an Image Build
On today's Smalltalk Daily, we build up a base development image again - but this time, we script the entire process. It turns out that you can have the system file in a Smalltalk script at startup with the -filein argument - and that allows us to fully automate image builds.
Technorati Tags: smalltalk
Open Source Theories
Nick Carr has a provocative take on Open Source development - taken from the perspective of the individual developer. I'm not sure I'd go as far as Nick does with this, but it's worth a few moments thought - and I think he's absolutely correct that the software market is driving faster and faster away from license revenue and toward a service model.
April Smalltalk Digest is Online
The April Smalltalk Digest is online now.
Technorati Tags: smalltalk
So Here's my "Lost" Question
There aren't any spoilers here if you're worried about that - I have a simple question though: Do the writers have answers up their sleeves, or is this more like "X-Files", where they are just making it up as they go along, dropping some plot points into the ocean, and creating new ones like mad? At the moment, I'm leaning more towards the "X-Files" theory.
StS 2007 Daily Update: SSL and X.509
Martin Kobetic will be giving one of the last talks at StS 2007, on SSL and X.509 in Cincom Smalltalk:
In this talk we will go through the process of securing a web server using SSL protocol and X.509 Certificates. We will discuss certificates and why they are needed and how to use them with SSL protocol to achieve various security objectives. As time permits we will conclude with a discussion of various practical aspects and performance considerations. Everything will be discussed in the context of live demonstrations using VisualWorks.
See you in Toronto!
Technorati Tags: smalltalk
STIC Wants your feedback
Georg Heeg is asking for feedback at the Tuesday night STIC session. The room is TBD, but it will be at 6 PM at Smalltalk Solutions. If you head over to room 201F for the podcast - around 515 or so - we'll be able to tell you by then.
A Bump on the way to SAAS
Eric Lundquist notes a possible bump in the road on the way to "Software as a Service" nirvana: The difference in cost for vendors between traditional product sales and those of server farms. He says this about the traditional license route:
Selling software was once such an easy job. Since most of your costs were associated with creating your first copy of the software, you knew that if you had even a moderately successful product, you could make a lot of money, as every subsequent copy would cost only pennies but would be sold for dollars. Companies that got the formula correct -- Microsoft comes immediately to mind -- enjoyed revenues and profit margins that were the envy of the entire business world.
That over-simplifies a bit - in particular, you do have the ongoing development and maintenance tasks (it's not as if Word 1.0 is still shipping, unchanged). However, you still have this cost with SAAS - you can update online apps more easily, but you still need to staff on hand to do that work. So in this sense, the two are the same. There is an additional cost, however:
The second consequence is the capital investment hangover. Financial analysts have no patience and will not look favorably on big capital investments that do not drive immediate service revenues. Technology executives will have to learn what steel mill executives discovered long ago: Capital investment is not a one-time event. That server farm you built last year will soon require another big round of investment to stay current and efficient.
The cost for a large server farm dwarf the costs of the machines you buy for your staff - which is why I think this cost isn't really going to be borne directly by most companies looking to build out services to sell. Rather, they'll be going to Google, or Amazon, or Joyent, and paying a utility fee to have them host their services. What this change is going to do is push the move to a utility model even harder.
Update: Nick Carr has another post on this, and links to Ralph Koster, who has some ideas of his own.
Security By Stupidity, Part Duh
Here's a security tale that will either make you laugh out loud, or pull your hair out (depending on whether you live in Europe and whether you care about Windows *cough* security *cough*). If you have Windows Vista installed in Europe, you can't lock out USB devices unless you install Windows Media Player. Why?
The ability to block read/write access to removable storage devices via Group Policy depends on the presence of the Portable Device Enumerator Service, which is not installed by default in the Vista Business N edition. We discovered this because we accidentally installed this version of the operating system on our test machines. Vista Business N is a Europe-only edition that complies with the EU mandate that Windows Media Player be decoupled from the operating system.
Unfortunately, the Portable Device Enumerator Service comes with Windows Media Player rather than with the base Vista operating system, so the N versions of Vista won't get the feature without installing the Windows Media Player or kludging together a different workaround.
Some people are going to sniff an evil plan from MS here, but I seriously doubt it. I'll echo something I heard Doc Searls say on last week's TwIT podcast - "Never ascribe to malice what can be explained by incompetence".
Technorati Tags: stupidity
Smalltalk Daily 4/26/07: Debugger Update
The Debugger has gotten a facelift in VW 7.5 - and it's used in both ObjectStudio 8 and VW now. So, today's Smalltalk Daily does a light update of the debugger, noting what each of the toolbar's functions are.
My Smalltalk Solutions Presentation: The Roadmap
I'll be giving a roadmap presentation at Smalltalk Solutions this year - if you can't attend, you can at least have a look at my presentation (PDF). I'll be happy to answer questions about it as well - and, if we have network connectivity at the podcast next Monday, I'll field queries from the IRC channel. If you want to ask questions for the podcast, we'll be doing that at 5:15 PM Monday. I don't have anything in place to stream it live though :/
Update: Link to the PDF is fixed.
Automating Development image Builds
I did a screencast yesterday on automating the build of a development image; after fielding a few questions, I figured I'd post the relevant scripts. First, I use this workspace script to save my Store Repository profiles out to disk:
fname := 'connects.txt' asFilename writeStream. Store.RepositoryManager.Repositories do: [:each | 1 to: each class allInstVarNames size do: [:evar | | obj | obj := each instVarAt: evar. obj isNil ifTrue: [fname nextPutAll: 'nil'] ifFalse: [fname nextPutAll: obj]. fname nextPut: $,]. fname nextPut: Character cr]. fname close.
That saves my repository information out to a simple, comma/CR delimited flat file. With that, I can automate the build of a development image with a script like the one below (obviously, the mix of parcels and store package/bundles will vary):
| fname list | "do initial parcel load" #( '$(VISUALWORKS)\database\oraclethapiexdi.pcl' '$(VISUALWORKS)\contributed\postgresql\storeforpostgresql.pcl' '$(VISUALWORKS)\store\storefororacle.pcl' '$(VISUALWORKS)\contributed\sunit\sunitui.pcl' '$(VISUALWORKS)\parcels\rbsunitextensions.pcl' '$(VISUALWORKS)\net\netclients.pcl' ) do: [:each | Parcel loadParcelFrom: each]. "read in Repository settings" fname := 'connects.txt' asFilename readStream. list := OrderedCollection new. [fname atEnd] whileFalse: [ | prof str line i | line := fname upTo: Character cr. str := line readStream. prof := Store.ConnectionProfile new. i := 1. [str atEnd] whileFalse: [ | next | next := str upTo: $,. next = 'nil' ifTrue: [next := nil]. prof instVarAt: i put: next. i := i + 1]. list add: prof]. fname close. list do: [:each | Store.RepositoryManager addRepository: each]. "connect to Store" profile := Store.RepositoryManager repositories detect: [:each | 'cincomsmalltalk' = each name] ifNone: [nil]. profile ifNil: [^self]. Store.DbRegistry connectTo: profile. "load a bundle" (Store.Bundle newestVersionWithName: 'RSSBuilding') loadSrc. "disconnect" Store.DbRegistry disconnect. "save image" ObjectMemory saveAs: 'team' thenQuit: false
It probably makes sense to split the individual sections out, and to create "manifest" files of parcels/package to load - but you get the idea. This is a nice, simple way to automate a build - and you don't even need to "doIt" after starting your image. Instead, start the base visual.im as follows:
visual visual.im -filein build-team.st
That's it - works nicely for me
Technorati Tags: smalltalk
Print: Shifting Roles
Jason Calacanis has boiled down the entire problem that print media has to a small paragraph:
I think that people may have underestimated exactly how dead print is as a NEWS carrier--and why. Print is dead in the news role because it can't keep up with the conversation--not because people don't like print per se.
That's pretty much it. The reporters at the NY Times, the WaPo (etc) still want to be breaking stories. The problem is, they can't accomplish that in print - and like any other mature business (RIAA, anyone?), they are having trouble adapting to the new reality.
StS 2007 Daily Update: Application Frameworks
Arden Thomas is giving a talk on application frameworks at Smalltalk Solutions. If you remember Roby's "Slam Dunk" presentations, this will be familiar:
This talk and short demonstration discusses the experience of choosing and using an application framework for Smalltalk based development. Discussed are factors such as what an application framework is, what it should do for us and some criteria for selection. Two known frameworks are contrasted and discussed, and an example of the chosen framework is given. Finally, the experience of years of use of the chosen framework, its advantages and disadvantages are discussed.
See you in Toronto!
Technorati Tags: smalltalk
RSS To Email: The Syndication Breakout
Rogers Cadenhead notices an interesting bit of syndication news:
The largest email-based RSS service was sold to NBC Universal this week, an event that's curiously absent from the tech press. Randy Charles Morin's R-Mail was purchased by the entertainment network for an undisclosed amount.
The service has 50,000 users, 100,000 subscriptions and sends out more than 50,000 e-mails per day, according to DMW Daily , though I suspect a zero's missing from the last figure. When I wrote about R-Mail last August , it had 20,000 users.
This kind of thing could be the breakout from niche to general that syndication advocates (myself included) have been expecting. An awful lot of corporate staff "live" in email - and this is an easy way to reach them.
The Doctor is coming back
SciFi Wire reports that the summer will have watchable TV - Dr. Who is returning July 6th.
Smalltalk Daily 4/27/07: Automating an image build, redux
Based on the comments I got on yesterday's post, you can tell that I missed a feature of the product - the ability to save/restore Store Repository information is built in - so you don't need to extra bit of code I used. With that in mind, I've done a "correction" Smalltalk Daily, which adds that information.
Technorati Tags: smalltalk
About image builds
You can file this under "you learn something new every day". Yesterday, I posted on automated image builds - and had a bunch of people point out to me that you can save/restore repository information with stuff that's already lying around in the image. To wit: see the image below:

After you export that, the build script changes as follows:
| fname list | "do initial parcel load" #( '$(VISUALWORKS)\database\oraclethapiexdi.pcl' '$(VISUALWORKS)\contributed\postgresql\storeforpostgresql.pcl' '$(VISUALWORKS)\store\storefororacle.pcl' '$(VISUALWORKS)\contributed\sunit\sunitui.pcl' '$(VISUALWORKS)\parcels\rbsunitextensions.pcl' '$(VISUALWORKS)\net\netclients.pcl' ) do: [:each | Parcel loadParcelFrom: each]. "read in Repository Information" Store.RepositoryManager importRepositoriesFromXmlOn: 'repositories.xml' asFilename readStream. "connect to Store" profile := Store.RepositoryManager repositories detect: [:each | 'cincomsmalltalk' = each name] ifNone: [nil]. profile ifNil: [^self]. Store.DbRegistry connectTo: profile. "load a bundle" (Store.Bundle newestVersionWithName: 'RSSBuilding') loadSrc. "disconnect" Store.DbRegistry disconnect. "save image" ObjectMemory saveAs: 'team' thenQuit: false
See that one liner for reading in repository information? That's the change. Now, there is a -settings option, but here's the problem: If the settings file has repository information, and you haven't loaded in any Store drivers... you have a chicken/egg issue. So instead, I just have the one liner that reads in repository settings files in the build script.
ESUG 2007 Call For Participation
I won't be able to attend ESUG 2007 this year, but other Cincomers will be there. If you're interested in speaking, they've just made a call for participation:
15th International Smalltalk Joint Conference - Call for Contributions
August 25 - 31, 2007 - Lugano, Switzerland
For the past 14 years, the European Smalltalk User Group (ESUG) has organised the International Smalltalk Conference, a lively forum on cutting edge software technologies that attract people from both academia and industry for a whole week. The attendees are both engineers using Smalltalk in business and students and teachers using Smalltalk both for research and didactic purposes.
As every year, this year's edition of the largest European Smalltalk event will include the regular Smalltalk developers conference with renowned invited speakers, a Smalltalk camp that proves fruitful for interactions and discussions. Besides, this year will be held the 4th edition of the Innovation Technology Awards where prizes will be awarded to authors of best pieces of Smalltalk-related projects. Last, but not least the event includes as usual a research conference which was renamed this year into "International Conference on Dynamic Languages". This reflects the widening of the scope of this conference to enable cross-fertilization with research conducted using other dynamic languages.
You can support the ESUG conference in many different ways:
- Sponsor the conference. New sponsoring packages are described here
- Submit a talk, a software or a paper to one of the events. See below.
- Attend the conference. We'd like to beat the previous record of attendance (116 people at Köthen, Germany in 2004)!
- Students can get free registration and hosting if they enroll into the the Student Volunteers program. See below.
The conference features the following events:
- Camp Smalltalk
- Developers Forum
- Research Forum
- Technology Forum
Developers Forum : International Smalltalk Developers Conference
This year we are looking for YOUR experience on using Smalltalk. The list of topics includes, but is not limited to the following:
- XP practices
- Development tools
- Experience reports
- Model driven development
- Web development
- Team management
- Meta-Modeling
- Security
- New libraries & frameworks
- Educational material
- Embedded systems and robotics
- SOA and Web services
- Interaction with other programming languages
Submissions due on 30th of May 2007
Notification of acceptance on 15 of June 2007
More information is available here
Research Forum : International Conference on Dynamic Languages
Smalltalk is one of the oldest object-oriented languages, but its conception and programming environment can still be considered as a design pearl and as a beacon in the realm of programming languages and programming environments. The bulk of its modern contenders are still lacking many of the features that Smalltalkers find both mundane and essential. Nevertheless, as software engineering practices and new application fields evolve, Smalltalk should keep up. This concerns the language, its implementation technology, its programming tools as well as the software development culture it supports. The research forum invites scientific articles that report on original research conducted in and/or for Smalltalk. The list of topics includes, but is not limited to the following:
- Aspects, Aspect languages and Applications
- Ambient Intelligence, Ubiquitous & Pervasive Computing
- Embedded Systems
- Compilation Technology, Optimization, Virtual Machines
- Formalizations
- Language Engineering, Extensions
- Model Driven Engineering
- Programming in the Large, Design, Architectures, Components
- Development Environments
- Program Analysis
- Reflection and Metaprogramming
- Testing
- Agile Techniques
- Web Services & Internet Applications
More information is available here
Technology Forum
We are proud to announce the 4th Innovation Technology Awards. The top 3 teams with the most innovative software will receive, respectively, 500 Euros, 300 Euros and 200 Euros during an awards ceremony at the conference. Developers of any Smalltalk-based software are welcome to compete.
More information is available here
Student Volunteer Program
If you are a student wanting to attend ESUG, have you considered being a student volunteer? Student volunteers help keep the conference running smoothly; in return, they have free accommodations, while still having most of the time to enjoy the conference.
More information is available here
Noury on behalf of the ESUG board
Dr. Noury Bouraqadi - Enseignant/Chercheur
ARMINES - Ecole des Mines de Douai - Dept. I.A.
http://csl.ensm-douai.fr/nouryEuropean Smalltalk Users Group Board
http://www.esug.org
Weekly Log Analysis: 4/28/07
Time for the weekly look at the logs - BottomFeeder downloads perked up to 191/day last week:
| Platform | BottomFeeder Downloads |
| Windows | 453 |
| Update | 260 |
| Linux x86 | 142 |
| Sources | 119 |
| Mac X | 114 |
| CE ARM | 51 |
| Mac 8/9 | 49 |
| HPUX | 30 |
| Solaris | 26 |
| Linux Sparc | 24 |
| AIX | 22 |
| Windows98/ME | 14 |
| SGI | 13 |
| Linux PPC | 11 |
| ADUX | 5 |
| CE x86 | 1 |
HTML page traffic was up a bit - the Mozilla usage was, too:
| Tool | Percentage of Accesses |
| Mozilla | 50% |
| Internet Explorer | 37.7% |
| MSN Bot | 5.9% |
| Other | 1.6% |
| Opera | 1.9% |
| Ocelli | 1.5% |
| MSRBOT | 1.4% |
The syndication traffic was up a bit as well - that distribution:
| Tool | Percentage of Accesses |
| Internet Explorer | 25.8% |
| Mozilla | 17.2% |
| BottomFeeder | 15.3% |
| Net News Wire | 5.1% |
| BlogLines | 4.6% |
| Google Feed Fetcher | 4.5% |
| Vienna | 3.7% |
| Other | 3.6% |
| FeedOnFeeds | 3.5% |
| Safari RSS | 2.8% |
| NewsGator | 2.3% |
| Strategic Board Bot | 2% |
| Liferea | 1.4% |
| Akregator | 1.2% |
| XML-FeedPP | 1% |
| Python | 1% |
| MSN Bot | 1% |
| Jakarta | 1% |
| JetBrains | 1% |
| RSS Bandit | 1% |
| Opera | 1% |
It's interesting to see the syndication stats for IE go up, while the HTML accesses for it stay about the same. Not sure what that means :)
Patent Lawsuits are not a Business Strategy
SCO learns that concentrating on legal matters - as opposed to the core business - isn't really much of a strategy after all. Unless being De-Listed from Nasdaq was what they were after...
Technorati Tags: management
Come to our next Podcast
The next edition of "Industry Misinterpretations" is going to be recorded on Monday afternoon, after the coding contest at Smalltalk Solutions - so if you would like to come by and throw us some questions, come to room 201F at the convention center at 5PM. I'm not sure how long we'll go - we don't normally record for more than 40 minutes or so. See you there!
Technorati Tags: smalltalk, industry misinterpretations
Blink
I just finished reading Malcolm Gladwell's "Blink", and it was one of the most compelling little reads I've had in awhile. Gladwell does a great job of breaking down the way we make "snap judgments" - and how they can be both better and worse than a considered opinion - depending on things like visual cues, the overall flow of information, and our pre-existing (and not necessarily conscious) prejudices. It's a book that will make you ponder the way you think and act.
Adventures in Negative PR
It looks like the folks over at Skype (owned by EBay) - have allowed a lawyer to play at PR:
Skype lawyer Seema Sharma emailed blogger Jan Geirnaert Friday afternoon. She told him his popular skype-watch.com and skype-gadgets.com blogs put him in legal jeopardy.
Boy, that theory of operation worked so well for Warren Kremer Paino, and again for JL Kirk and Associates. Now it looks like Seema Sharma has stepped up to play "just how bad can I make my company look?" Do lawyers actually understand the way things work now? I can certainly understand Skype being concerned over the possible confusion with an unaffiliated site using their name - but would it have been too hard to try a soft approach first? A polite phone call by a non-lawyer - with some reasonable accommodation reached - would have been a lot smarter. Consider how Microsoft dealt with Mike Rowe, for instance. They started off stupid, but understood what was happening fairly quickly. If Skype has any sense, they'll slap the lawyer down and send in PR - stat.
Looking at Copyrights
Reading my ongoing commentary about DRM, you might come to the conclusion that I'm against the whole idea of copyright. Not so much - and I think Dare Obasanjo just summarized the rationale behind copyright far better than I could - in a piece that does a take-down on TechDirt's "information wants to be free" take on the matter.
The arguments on TechDirt seem to boil down to this: "I like stealing music, so let me construct an argument that rationalizes my behavior". My anti-DRM stance is different; I think that the music industry is doing immense damage to itself by treating their entire customer base like criminals. That doesn't mean that I think we ought to live down to their theory.
Technorati Tags: DRM
Category Search Fixed for IE
Silly me thinking that Microsoft would have fixed their Javascript implementation for IE7. I have a test for the category menu that sends variant Javascript down depending on the browser, and it wasn't working for IE7. Now that I have stopped looking specifically for IE6, it works again. Sigh.
Heading to Toronto
I'll be heading off to Smalltalk Solutions this evening - one of the things I'd like to know is where people are headed after the dinner mentioned here. I arrive at the airport around 9:30, so I'll be way to late for the meal itself. Any pointers?
Technorati Tags: sts2007
Speaking of copyrights...
Here's a tip for those clever folks who use DRM to keep us law abiding people from legally using stuff we paid for on a variety of devices we own: If you send out a "take-down" letter to someone who's posted AACS keys for a DVD online, don't include those keys in the urls you send along with the take-down. You already look stupid; no need to make it even more obvious.
Technorati Tags: copyright
And Away we go
Next Stop: Toronto. Signing off the BWI WiFi, and heading to Air Canada. See you there!
Bad PR Defined
I would have thought that Sony was full up on bad PR, but boy - was I ever wrong. They staged a promotion for "Gods of War II" that included a freshly slaughtered goat:
Electronics giant Sony has sparked a major row over animal cruelty and the ethics of the computer industry by using a freshly slaughtered goat to promote a violent video game.
The corpse of the decapitated animal was the centrepiece of a party to celebrate the launch of the God Of War II game for the company’s PlayStation 2 console.
I'd love to know which genius at Sony thought that would be a good idea...
In Toronto
I made it to the (rather small) hotel last night, and now it's time to hunt up some breakfast.
Smalltalk training on CD-ROM
Dave Buck is making his training material available on CD:
As an alternative to or in addition to instructor-led training, Simberon will be providing Smalltalk training on CD-ROM.
Ruby For Smalltalkers
Well - the network situation this year is marginally better. I can actually get to a hotspot, but I have to pay $13 (CDN) for a day pass. That gives me network access as I sit here in the "Ruby for Smalltalkers" tutorial with Chad Fowler.
So - to get started on that, Chad's pointing out that Ruby is a lot like Smalltalk, albeit without the image or tools. So for instance - in the interactive interpreter, you can list the methods for a Ruby class, similarly to what you could do in an inspector. Interesting side point here - Ruby is serving as a "gateway drug" for a lot of companies - so it may help get other niche languages - Smalltalk, Erlang, Lisp, etc.
On to Ruby: Variable types
- $variable - begins with a $, so it's global
- local variables (scoped to the area they are defined in - method, class, etc)
- Pop an @ sign at the front - you get an instance variable
- Class variables exist as well
- Constants exist as well - assignments that begin with a capital letter are Constant (and global)
Heh: "Java is written for Stupid People". Does not mean that all Java developers are stupid; rather, it means that Java attempts to protect you from yourself, such that intelligent developers get frustrated with the shackles.
One of the interesting shortcuts possible in Ruby is that "self" can be an implicit receiver of methods. So instead of:
"Smalltalk"
self print.
you can do
Which would be the same as:
self.print
Another interesting thing: I can, within a method, invoke super (without the method name or arguments), and have all of the arguments sent to the current method implicitly sent up. That also means that you can't have super invoke a method other than the one of the same name as the one you're in (which, while it would be bad practice most of the time in Smalltalk, is possible).
So here's a class definition with some methods:
class SomeClass def make_one superclass.new end def a_method(a_parameter, another = 123) @local_here = "whatever" end end
So what about naming conventions for methods and/or parameters? There really aren't widespread conventions there. If you're looking at a class and set of methods, how do you tell what arguments the methods take? Documentation, source (etc).
The most interesting part of this session is how the audience is interacting with Chad - it's like twins that have never met, have some differences, but get along famously.
Back to Ruby - conditionals in Ruby are syntax. They have if-then-else and elseif. Some examples:
if a > b puts "yes" elsif b > c puts "asdf" else puts "no" unless 2 > 1 puts "abcd" end puts "it is" if 2 > 1 puts "hi" unless false while a > b puts "yes" end for i in (0..2) do puts i end
This is all different than Smalltalk, but then again, likely much more comfortable for people coming in from Java (etc). Another example:
1.upto(10) do | num | puts num*2 end Is like 1 to: 10 do: [:num | Transcript show: num*2]. to define a block (closure): the_block = lambda do | num | puts num * 2 end 1.upto(10, &the_block) or invoke the block: the_block.call(123)
Blocks cannot be serialized. At this point, there was a rather long trip down a rathole as to why Ruby blocks can be used the way they are, and I have to admit I zoned out on that - Why they are structured the way they are is less relevant than the simple fact that they are set up that way. So we're taking a break here, and we'll get on to Rails afterwards. I'll push that as a separate post.
Technorati Tags: smalltalk
Ruby on Rails
So part 2 - Ruby on Rails. First - use the packager and install Rails. "What is Rails?" Rails is a wrapper around a bunch of other little frameworks. The core is made up of ActiveRecord and ActionPack. ActiveRecord is a simple O/R mapping pattern. ActionPack implements the web-facing piece, implementing an MVC pattern for the web. The big thing to remember about Rails is this:
Convention over Configuration
One of the results of this is that using Ruby, you don't end up arguing over things like "which db framework, which directory structure...", etc. etc. So the first step - create an ActiveRecord subclass for the first bit of the domain, and then use some Ruby code to create a table for it. The class Chad created has more fields, but you get the idea:
class CeateContacts < ActiveRecord::Migration def self.up create_table :contacts do | t | t.column :first_name, :string t.column :last_name, :string t.column :created_at, :datetime end end def self.down drop.table :contacts end end Class Contact < ActiveRecord::Base end
That last bit does the class to table mapping. That's it - by following this convention, we have the mapping. Note that we didn't worry about primary keys, SQL (etc, etc). You can name various columns in ways that will automatically map to the database in intelligent ways.
There's a nice log being kept for you that saves a record of your database interactions; this can be useful for figuring out what SQL is being created, and where you may need to tweak.
Some more code - a controller (the handler for actions on the back end). There would typically be a view here for rendering, but we are just being simple (like my web examples in my screencasts :) )
class ContactsController < ApplicationController def index @contacts = Contact.find(:all) render :text => @contacts.inspect end
Now a new View HTML Page (in its own directory structure spot) to handle the rendering. Like web toolkit (and other web frameworks), there's a way to embed Ruby code in pages
<html> <body> <h1>Contacts!</h1> <ul> <% @contacts.each do | contact | %> <li><%= contact.first_name %><%= contact.last_name %></li> <% end %> </ul> </body> </html>
Simply change the controller to eliminate the specific rendering using inspect. The framework also handles giving you basic forms for editing domain objects based on the Ruby and DB definitions. There are a number of built in things for pagination, number of items per page (etc, etc).
With respect to code generation, Chad finds it to be mostly useful for "getting started" and setting up the initial scaffolding.
Technorati Tags: smalltalk
Scrum with Joseph Pelrine
I walked into this one late - the pub we hit for lunch wasn't really ready for a sudden flood of 20 people :) So - I came in to hear Joseph talking about "retrospective coherence", which we discussed in this podcast awhile back.
Here's a good question: "How long from here to Ottawa?" - Answer: 4 hours. The problem: how many implicit assumptions are built into that answer (by car, with what kind of traffic, in what kind of weather, etc.).
What is Agility
- It's not just going faster with less process
- It's a discipline
We call it the art of the possible. In fixed price contracts, customers don't get to change their minds (except later, at an additional cost. In an agile contract, customer pays for every iteration, can change direction after every iteration, and gets a running (viable) system after each iteration. If you do this right, you can start delivering value in as little as 2 weeks.
Scrum is a system for managing work in a socially complex domain. One where there is uncertainty due to unfairness/emergence issues (technology change is an example of the latter). It's been around since 1990, and doesn't say anything at all about the engineering process itself. Interestingly enough, it can be used in a fully CMM level 5 fashion (making it Enterprisey ready :) ).
Interestingly enough, one of the first software product uses of Scrum was at Easel on the Enfin product (Enfin is the predecessor of Cincom's ObjectStudio). One of the biggest priorities of Scrum is keeping the product backlog open as a living document. It needs to be revisited at the end of each iteration and updated to reflect new information. So with that, we have the first break - we'll go through the Scrum practices after the break. So - stay tuned for the next post :)
Technorati Tags: smalltalk
Scrum with Joseph Pelrine: Part 2
Heh - Being late from lunch to the first part, I missed the opening, where Joseph ran a video of an unmanaged - but efficient - traffic intersection. No lights, no signs, seeming chaos - but no accidents, and continuous flow.
So on to Scrum Practices:
- Iterations of 1 to 4 weeks
- Team builds functionality that includes product backlog and meets Sprint goals
- Team self-organizes to achieve goals
- Team conforms to existing standards and conventions
- Abnormal termination of Sprint:
- Team can cancel Sprint if the goal of the Sprint is deemed to be unattainable
- Product owner can cancel based on external circumstances changing
An interesting heuristic for Sprint length: How long can management shut up and allow the team to work? Another interesting comment: "The purpose of meetings is to keep people from taking responsibility".
Product Owner:
- Takes ownership of the backlog
- Can be influenced by committees, management, customers, sales (etc)
- Responsible for ensuring that the most important business functionality is delivered first
- Ensures that one (and only one) set of requirements drives the project
- Eliminates the confusion of multiple bosses, interference, etc
Scrum Teams:
- Cross Functional
- Selects the iteration goal and specific work results
- responsible for committing to work
- Self organizing
- Authority to do whatever is required to meet goals
- Open, co-located space
- Demos work results to the Project Owner
Ideal team size: Seven +/-2. That's the largest size that can sit at a table and all engage in one conversation.
Scrum Master:
- Responsible for establishing Scrum practices and rules
- Representative to management
- Representative to team
- A coach
- Engineering and Development skills
- Agile version of IT project manager
The Lead developer really can't be in this role, due to conflict of interest issues. A Scrum Master can be defined as a "Servant Leader".
There are few roles and few practices - Scrum is low overhead. There's a Product Planning Meeting, where requirements emerge. From that, a product backlog gets put together - this consists of functional and non-functional requirements. Anyone can add to the backlog, but the Product Owner is the only one who prioritizes.
Estimates for work - like produce - have a "sell by" date, and that date is the end of a Sprint. At the end of a Sprint, the estimate will either be past (i.e., functionality delivered), or need revisiting. Joseph recommends this book: "Agile Estimation and Planning" by Mike Cohn, as a good source of information about how to do agile planning.
Scrum Planning Meetings:
- What's on the backlog
- What are the Team Capabilities (who can do this?)
- What are the Business Conditions?
- How stable is the technology? What's Changed?
- Executable Product Increment (what did we do last Sprint)
The goal is to plan the next sprint.
Daily Scrum Meeting:
- 15 minute status update - trick to get people there on-time: last in talks first
- Same place/time every day
- Meeting room
- "chicken and pigs"
- Three questions:
- What did you do yesterday
- What will you do today
- Do you have any impediments blocking your progress?
- Impediments and Decisions
Another thing here - Joseph recommends lightweight tools. Index Cards, Spreadsheets, web-based equivalents for distributed teams.
Sprint Review
- What did we do?
- Retrospective
- New priorities set
- Team devises solution to most vexing problems
Common complaints as to why "it won't work for us"
- We don't have the right people
- Requires business involvement
- Project is too big for Agile
- Project is too complex for Agile
In all these cases, there's a business problem. You know you're doing Scrum when "things come together" - you realize that you can start a project without all information, the team starts to work as a team of developers.
Technorati Tags: smalltalk

