The network installer has been updated - thanks to some quick work from Bob Westergaard (Thanks Bob!), things are working again. The problem was as I expected it: I had an out of synch installer map and installer executable. You can head on over there now and get going!
The music industry is getting more reality delivered to them, from Wal-Mart: the retailer is telling the industry that $15.99 for a CD is ridiculous, and that a price cut will be coming - or else they can kiss shelf space goodbye. Why do they need to care? Rolling Stone has this:
In the past decade, Wal-Mart has quietly emerged as the nation's biggest record store. Wal-Mart now sells an estimated one out of every five major-label albums. It has so much power, industry insiders say, that what it chooses to stock can basically determine what becomes a hit. "If you don't have a Wal-Mart account, you probably won't have a major pop artist," says one label executive.
I think the labels are in the "meeting people on their way back down" phase. They didn't make any friends on the way up, either.
It's a pretty simple thing, all Seaside 2.8 in the latest release of Cincom Smalltalk. No database work, and a very simple domain (blog server), so as to allow a complete focus on the Seaside aspect.
Engadget reports that Sony seems to have (finally) learned from their mistakes:
Sony BMG boss, Rolf Schmidt-Holtz, was just quoted in an interview saying that Sony BMG is "working on an online music subscription service." The service would cost between €6 to €8 per month (about $9 to $12) when launching later in the year and provide full access to its entire music catalog. He goes on to say that customers could own "some songs" even after the subscription was canceled. Interesting on it's own, right? Now the kicker: it will work "for all digital players, including Apple's iPod." That means DRM-free unless Apple agrees to license its FairPlay DRM... which it won't.
You have to meet the customer where he is, not where you think he ought to be. Sony spent years doing the latter.
I have to apologize: either the network installer is broken, or - far more likely - I've made a mistake in copying files around on the server. In the interim, I've pulled the Network Installer option from the download page - you'll need to grab the entire ISO or the individual files.
Again, I apologize for this, and I'll have things fixed up as soon as possible!
When your management theory starts with denial:
But the key thing, Watkins argues, is that SSDs are just too expensive, and will be for a long time. Just look at the MacBook Air. There are two versions of the Apple laptop, one with an 80 GB hard drive for $1,800, and one with a 64 GB SSD for $3,100. Why pay so much more for less storage? It's not a difficult choice.
"Realistically, I just don't see the flash notebook sell," Watkins says. "We just don't see the proposition."
Certainly. For the frequent flying executive, that extra battery life afforded by an SSD is meaningless. Right. It's even better when denial is followed up with patent trolling:
But in case flash prices continue to plummet and the flash drives really do catch on, Watkins has something else up his sleeve. Heâs convinced, he confides, that SSD makers like Samsung and Intel (INTC) are violating Seagate's patents. (An Intel spokeswoman says the company doesn't comment on speculation.) Seagate and Western Digital (WDC), two of the major hard drive makers, have patents that deal with many of the ways a storage device communicates with a computer, Watkins says. It stands to reason that sooner or later, Seagate will sue - particularly if it looks like SSDs could become a real threat.
And the translation: "We aren't smart enough to try and compete in that market - we believe a strategy of suing all and sundry will benefit consumers a lot more".
Sheesh - is Watkins taking dance lessons from the RIAA? Remind me to avoid Seagate products from here on out.
Update: Speaking of SSDs, look what I stumbled on within minutes: A Toshiba announcement of a laptop with a 128 GB SSD (Japan only at first, but still). I think Seagate is starting to quiver over the foreseeable end of the spinning HD era.
Technorati Tags: stupidity
With the first product release out that supports Seaside, I thought it might be useful to do a set of introductory screencasts on Seaside. So for the next few days, I'll be doing a small example application that covers just Seaside - not the Active Record work that is still ongoing, not wizards and database, just Seaside.
So, today we get started with that - and you'll want this zip file to follow along. It includes a parcel with the minimal domain model that's used throughout this series of screencasts. The topic? The same thing I covered at SPA2008 in my tutorial there: a simple blog server. Grab part one of the screencast series here.
Gilad Bracha on extending system code:
One way of achieving this would be to actually go and add the necessary methods to the class Symbol, so that symbols could behave like parsers. I know otherwise intelligent people who are prepared to argue for this approach. As I said, Smalltalkers would call these additions extension methods, but I find the more informal term monkey patching conveys a better intuition.
Typically, one wants to deliver a set of such methods as a unit, to be installed when a certain class or library gets loaded. So these changes are often provided as a patch that is applied dynamically. Not a problem in Smalltalk or Ruby or Python (though I gathered from the Pythoners in Krakow that they, to their credit, frown on the practice).
Apparently, there is a need to explain why monkey patching is a really bad idea. For starters, the methods in one monkeyâs patch might conflict with those in some other monkeyâs patch. In our example, the sequencing operator for parsers conflicts with that for symbols.
Hmm. First, version control systems exist partly for that reason - to let developers look at exactly those kinds of conflicts. Second, would Bracha rather see developers in Smalltalk (et. al.) use the same kind of "support class" nonsense that Java developers have been locked into for years?
Sure, you can get in trouble with conflicting extensions - in BottomFeeder, I ran into exactly that problem when I started using Antony Blakey's improved Look and Feel policy. Here's the thing though: I spoke to Antony, and, after we talked a bit, we dealt with the problem. So let me see: my solution involved more and better communication between developers. Bracha's involves "just say no".
Call me crazy, but I think my approach seems far more practical in the real world. At the end of the day, his approach comes from the school of thought I like to call "the library developer is god".
Hat tip Patrick Logan
Now that the latest Cincom Smalltalk is out, I've released the latest BottomFeeder - version 4.5.
What's new? The upgrade to VW 7.6, and this - you can share subscriptions for podcasts with iTunes more easily now (Windows and Mac). I'll be adding more functionality in that direction over time.
Andres Valloud has started posting video from Smalltalks 2007 to YouTube.
As promised, here's the video for the "Is Software Practice Advancing?" panel from SPA 2008. I've got the video available three ways:
This podcast is taken from the panel discussion at SPA2008: "Is Software Practice Advancing?" The panel was moderated by John Daniels, and started with a small group. After about 20 minutes, they asked volunteers from the audience to join by submitting names to a random pick - Peter Deutsch got picked first, and I followed a few minutes later. I'll also have video from this panel later on; I have to get it saved down to a reasonable size first.
It was a fun conversation, with the debate topic centered on whether things have improved in terms of software practices over the last 15 years. There was a fair amount of skepticism on the panel, and it was a lively discussion.
As always, please send feedback to email@example.com - or visit us on Facebook or Ning. You can subscribe in iTunes, and please try and cast a vote for the podcast over at Podcast Alley. One caveat about this edition; it's long, about 74 minutes. I usually keep the episodes shorter than that, but I didn't want to break this panel discussion into parts.
We have been interviewing candidates for a bit now, but we still have 3 open slots for Smalltalkers:
If you're interested, go ahead and send an email to firstname.lastname@example.org/ We're doing some big stuff with Smalltalk here, and - as Randal Schwartz is saying - this is a fun time to be involved.
Technorati Tags: smalltalk
This week, I have a panel discussion from SPA 2008: "Is Software Development Advancing?" It was a fun discussion, and a little over 30 minutes in, I got invited onto the panel. That was an interesting aspect of the panel; as topics came up, they asked for volunteers for the panel, we put our names on cards, and they picked one. It was fun, and I'll also be releasing the video. Stay tuned!
Now that we have this facility, I was disappointed with how behind the entire prerequisites UI was... so I've updated it and published to public store as NewPrerequisiteEngine 34. I'll post up some screenshots of it. It's nothing fancy, in fact, it's a major simplification over the old UI. But it lets you force prerequisites, mark prerequisites that are there as optional - and of course, compute.
Technorati Tags: cincom smalltalk
Patrick Logan makes a good point: dynamic languages are productive, but they are even more so if you have good tools. Adding class extensions stop being "monkeypatching" if you have tools that support the idea:
People developing large systems in dynamic languages, and people providing dynamic languages being used to build large systems have to also realize this:
You are no longer working with a "scripting" language. You need to demand and provide really good tools. Examples can be found on the internets, read about the Smalltalk and Lisp environments from way back when. Someday you can become as smug as we are, or maybe as brilliant as the people who made them for us.
I've seen a lot of bad ideas, but this is way up there on the ick-o-meter:
For only $50, Sony will uninstall some of the trial software it loads onto new Vaio laptops.
Fire up those browsers and FTP clients: ObjectStudio 7.1.3NC and VisualWorks 7.6NC are ready for download. We'll have ObjectStudio 8.1 NC ready soon; we're running through the last bits of Vista certification now.
For VW 7.6 and the forthcoming OS 8.1, Seaside is now supported - and Vista is supported for both products (Microsoft certification is pending for ObjectStudio).
If there is any year for Smalltalk to regain a commercial visibility, this will be it. I mean, look at all the things coming together:
- the OLPC XO is putting Smalltalk into the hands of thousands of young kids
- Cincom and Gemstone are stepping up to support Seaside in a big way
- Gemstone is offering the single-instance free commercial license and GLASS quickstart appliance
- Squeak's license is finally getting cleaned up
- Seaside is reaching a nice level of maturity
- Seaside running on GNU Smalltalk for those that want a command-line environment
- Croquet is maturing, even being adopted as a commercial "virtual meeting" space
- Ruby on Rails has reestablished dynamic languages as useful for the web
He's right - from command line and files to full bore environments, Seaside has it all, and it runs portably across all major Smalltalk implementations. On the relational database side, that connection is handled by GLORP - which is also OSS and portable.
Come on in, the water is fine :)
Technorati Tags: seaside
I find this post endlessly amusing. Consider Firefox - a large C/C++ application that's been plagued over the years by memory bloat and leaks. So now we see one of the lead developers touting the progress they've made - by building a poor man's garbage collector:
Some leaks are harder to fix than others. One of the most difficult ones is where two objects have references to each other, holding each other alive. This is called a cycle, and cycles are bad. In previous versions, we've used very complex and annoying code to manually break cycles at the right times, but getting the code right and maintaining it always proved to be difficult. For Gecko 1.9, we've implemented an automated cycle collector that can recognize cycles in the in-memory object graph and break them automatically. This is great for our code as we can get rid of lots of complexity. It is especially significant for extensions, which can often inadvertently introduce cycles without knowing it because they have access to all of Firefox's internals. It isn't reasonable to expect all those authors to write code to manually break the cycles themselves.
There are collectors out there for C and C++ (not to mention languages that come with that already implemented) - so I guess the older question I could ask is, will they end up with most of a Lisp system built by the time they're done :)
Technorati Tags: garbage collection
As usual, SPA 2008 was a great event - and I'd like to thank everyone involved who helped make it that way - but especially Eoin Woods, who has made it possible for me to bring a Smalltalk tutorial to SPA for two years now. I'm already looking forward to next year. Thanks everyone, and I'll see you all again in St. Neots.
Technorati Tags: smalltalk
John Nolan is running the last session of the day (for me, anyway) - when was "yes" the wrong answer? What happens when you say no, and how can you say it effectively? Looks like an interactive session, no there likely won't be many notes here :)
First exercise - we paired off and shared anecdotes about projects where "no" would have been the right answer at some point (guess which one I used?) So why can yes be wrong?
- negative outcomes in mid to long terms
- compromised responsibilities
- project planning treated as negotiation
- unchalleneged assent
- inappropriate assumption of competence
- honesty gap
- teaching the customer to say no if they don't know how
- punished by rewards (bad incentives)
- yes as a habit
- "we can't say no now" - too much committed to project
- status/position prevents assessment
So why is no difficult? Going back to pairs to discuss why "no" didn't happen.
- the need to be the "go to guy"
- pressure to "get on with it"
- positional (rather than principles) based negotiation
- fear of saying no (fear of consequences, real or imagined)
- reputation for negativity (boy who cries wolf)
- social stigma (not a team player)
- embarassment/social interaction
- avoiding confrontation/controversy
- not empowered
- "once is not enough" - must repeat instead of once and feeling you have done your duty
- cultural expectations
- no is an absolute, while yes is (can be) variable
- charismatic people can be difficult to say no to
- as a project manager, fear that a "no" will be seen as a personal failure (especially around cancellation)
- fear that some/all of team may take the blame
The pressure to say yes: personal examples and group examples (another exercise).
The evils of "win-win" - the book "Getting to Yes" being an example:
- emotional compromise
- avoidance of conflict at all points
- ubiquitous, unchallenged, accepted attitude
- "yes" seen as the goal - seeking agreement rather than solution
John recommends (not with complete agreement) a book: "Start with No".
So getting back from a break, what happens when you say no - Immediate:
- delays, long discussions
- increased complexity
- pressure to go back to "yes"
- emotional reactions/black mail
- increased/improved authority/influence
- decreased authority/influence
- lowered or raised risk
- improved or reduced communications
- improved or worsened relationships
- curiousity as to final result (mostly for external consultants who leave)
- can cause redundency
- improved influence/respect
- loss of respect
- "the world did not end"
- increased openess/better future confidence going forward
- business survival prospects improved (saying no to bad business)
- lingering bitterness
One group conclusion: most of the short term consequences/reaction are negative, but the long term ones work out positively. A photo of the discussion:
So what's wrong with saying no: I think it can be summed up with conflict avoidance, and the risk that you might not be right.
"It's not what you do, it's the way you do it" To sum up: How do we do it?
- get them to say no for you - walk them through the argument, draw it out until they reach the same conclusion (or, possibly they convince you that they are right after all)
- explain consequences
- influence with "because" techniques
Make sure you have enough information to make a decision. If not, defer. However, make sure you start getting the information you need. Avoid passive/aggressive behavior - there's a difference between options and procrastination :)
When you do have to say no:
- make it personal: take responsibility
- keep it short - and make sure it comes out as no
- prepare for the likely/possible outcomes
- making it personal does not mean making it confrontational
- remember that you likely don't have common goals
- make sure you understand what the question you are answering actually is
- when in doubt, say no. You can always change to yes later (the reverse is hard)
- have empathy, and be honest
After the keynote, this is an interesting slowdown - a "roundtable" discussion of various software boks. First up: Beck's "Smalltalk Best Practice Patterns". The book dates back to 1997, so the discussion is almost nostalgic in nature - a lot of the people here started in Smalltalk, and they have fond memories of their work in it.
The panel liked Beck's book - the take away seems to be that yes, it's Smalltalk specific - but a lot of the lessons in the book are generally applicable and have to do with communicating intent between developers through well written code.
The group discussed other books, and it was a nice break from the more highly interactive "think" sessions after Tuesday evening :)
The second item was a seminal paper from 1972 - "On the criteria to be used in decomposing systems into modules" by David Parnas" - the group agreed that while the ideas expressed are now "old hat", it was ground breaking for its time.
Great line about one of the other books ('"Paradoxes of Group Life") - "I must say, I didn't understand this review any better than I understood the book". This book got a very general thumbs down as being incomprehensible for the general reader.
Next: "Software Requirements and Specifications" (Jackson) - Interesting take on this one: don't read it straight through, follow the "root map" through it. Basically, it's a website in printed form. Interesting take on this one, too: many of the people in the group thought the book had some good ideas, but that Jackson himself is irritating.
The last book taken up: "The Social Atom". This one isn't technical, it's about group behavior, but on a more approachable basis than something "technical" on the subject (like "Paradoxes of Group Life"). Michael Feathers brought this book up, and it was mentioned in his talk. People liked this book, but there seemed to be a sense of "what do I take away from it?". At the same time, people liked it. Heh - "I hated this book until I came in here".
The Wednesday morning sessions at SPA are always interesting: there's the late night whiskey session on Tuesday, followed by the mandatory checkout by ten on Wednesday. As a result, the morning keynote is always a bit sedate - at least for the audience.
This is a cool talk - Michael is bringing together the economics of legacy code and the book "Freakonomics", which I enjoyed immensely. It looks like I should also look at "The Social Atom", another book he's mentioning. Another reference for the talk - Brian Foote's "Big Ball of Mud" talk.
As with the other keynotes, you'll be able to se the video (or hear the audio only for it) sometime in the next few weeks as I process and post the content.
Gordon Weakliem doesn't much care for this post from Joel Spolsky, and points out Mark Pilgrim's take-down of it. The problem is, if Pilgrim read Spolsky's post, he didn't understand any of the words. He has a lot of fun with Spolsky's premise, which is that standards often mean nothing if practice has made it irrelevant - and for good or ill, that is the way it is in HTML and CSS. Where does Pilgrm go? Places like this: (his "translation" of Spolsky's points)
I demand documented standards with open reference implementations. That's why I only develop with Microsoft technologies.
That doesn't address the actual issue though. The reality is, if you want your web page to work with the browsers people actually use, which is more relevant: the supposed standards, or the working reality? Whether you like it or not, real people don't care about the W3C specs, they care about the website they just visited and the content there. Are you interested abstract purity, or making a sale?
Pilgrim (and Weakliem) have picked the former. Most people don't give it a first thought, much less a second.
Update: Gordon thinks I'm missing the point. Here's the thing: Pilgrim seems to think that Spolsky is wrong because he develops for Windows. Gordon thinks he's wrong because he seems to believe that adhering to the spec will magically cause old web pages to get fixed. The old web pages won't get fixed, people will blame IE8 for not rendering them, and Pilgrim will still be a buffoon who is way too enamored by how clever he thinks he is.
But other than that, sure :)
I just attended a fascinating workshop here at SPA 2008 - a set of pairing exercises. It was run by John Daniels, Laura Hill, and John Cleal, and it was one of the best run sessions I've been at here (which is saying a lot - they've all been pretty good).
We split into two groups (one of 4, the other of 5), and then ran through four exercises. In some we worked alone, and in others we paired - and after each one, we compared notes and filled in a questionnaire. The exercises were:
- Descriptive writing - describe the painting (below) in 200 words, as if you were explaining it to a blind person. I did this one solo
- Scheduling - given a home redesign job, schedule the tasks optimally to take the least time, assuming that personnel costs are no issue. I did that one solo.
- Personnel - interview a problem employee, and see if you can come to a mutually agreeable solution - I did that in a pair
- Manual - we had a lego model (fairly complex) to build. I did that in a pair.
The interesting conclusion we came to (in my group, at least) was that the personnel issue was best dealt with by more than one person. Having a second person in the room kept the discussion away from emotion, and I think that's something I'll take away from this. The Lego exercise merely documented my well known spatial issues :)
It was a fun workshop - if they run it again, I'd recommend it.
Technorati Tags: pairing
Now, is this great PR for Apple, or what?
Viewers of the Charlie Rose show tonight were stunned to see the normally composed Rose looking like heâd just been in a bar fight. He has a very bad black eye and a bandage over part of his forehead. I contacted the showâs producers to hear what happened. Earlier today, they said, Rose tripped in a pothole while walking on 59th Street in Manhattan. He was carrying a newly purchased MacBook Air and made a quick (but ultimately flawed) decision while falling: sacrifice the face, protect the computer. âIn doing so, he pretty much hit the pavement face first, unfortunately,â they said.
Tha sad part is, I understand :)
So what is this field all about? It's about capturing/discovering/mapping the social graph, and then providing (hopefully useful) services through that. One irritation: you have to enter this data over and over again (and transmit that pain to all your friends) for each new service. There are solutions to that problem, but - as Scoble has demonstrated - these are controversial).
This all depends on the API provided by the platform, and at the moment there's Facebook and Open Social (Google and partners). Bebo has adopted the Facebook API, so it seems to be the more relevant right now.
Key things to remember about your Facebook (et. al.) application:
- Runs on your server
- communicates with the service via a set of HTTP APIs
Facebook has a fairly clean API and set of "Facebook tags" (FBML) that you get access to. The presentation just went to a demo on that.
Now I'm getting into the whole "back channel at the conference" thing :) - Jane Chandler (one of the attendees) sent along a set of useful links that cover some of this ground:
It's fairly easy to publish an app - promoting it is a whole different ballgame, and will (or won't) get adopted on its own merits. There's also a separate platform for mobile devices, a data store API, and a new API for Facebook pages. Revenue model: advertising with shared revenue (Facebook's terms). Will it broaden to more traditional business applications? Not clear yet, but the thinking seems to be yes-ish. Possibilities? Combination of location data from mobiles and social graph data from the service.
Tuesday morning at SPA 2008, and it's time for another keynote - this time with Peter Deutsch. While I've interacted with Peter on and off over the years on Smalltalk mailing lists, I hadn't met him in person before this conference, so it's been nice to be able to put a face with the name and personality.
As with yesterday's panel, I'm filming the discussion, so I won't be following every bit here in this post. However, here's the url Peter references for the presentation:
Heh - with such a rich background to draw on, Peter has only hit on two of his 8 points by the halfway mark in his talk. Doesn't matter, really - it's an interesting talk. You'll be able to see it (or listen to the audio only) when I post it.
Update: Looks like the link is bad; Peter has informed us that it will work after the conference, when he gets back to his office.