I've added a new section to the main Smalltalk site - Smalltalk Videos. There's only one video there right now, and I don't expect the content there to increase as quickly as "Smalltalk Daily" does - but it's a start.
I've joined the "called by Brian Connolly club". For those of you following the tale, he's the guy behind this mess. Today, he called, getting my business line from corporate HQ. Odd conversation; he's now playing "good cop" to his earlier "bad cop". He had some weird notion that Cincom sold blogging software :)
Here's a tip for you, Brian: next time you make a cold call, do some minimal research so that you have some small idea what the person you're calling does for a living. Oh, and doing a reverse lookup on the phone number he called from, it tracks back to the same place fingered by Mike Krempasky when he looked into this guy.
It's apparently spam season - there's been a wave of spam pounding the blogs this last week. Most of it has been blocked, but the occasional piece has gotten through - and I then get rid of it by hand.
The type of attack is the classic "untrain the Baysian filter" thing - a string of nonsense words, followed by a link. However, there's been some variation. The first wave included links that went to good sites - I guess this is to cause grief for blacklist filters. Now, the spam I'm seeing has two links: One an href, the other plain text. Which one goes to a spam site and which one goes to a "real" site varies.
The bottom line is, the spammers are changing their tactics again.
Debuggers are a historical artifact of C pointer mechanics and primitive flow control
If he's ever seen a debugger and actually understood what he was looking at, he wouldn't have such ideas. Let's go back to C for a moment, since he brings it up. I spent my time in the C dungeons years ago, and I used both "printf debugging" and a decent symbolic debugger. When you have a pointer error, not using a debugger is just an invitation to waste time. You can argue that the error should not have happened at all - and sure, having a good test suite will prevent a lot of problems. Bottom line though, you end up with pojnter bugs - even if your code is perfect, the code you integrate with is something else again. Maybe Giles enjoys pounding his head against the keyboard; I don't.
Let's move on from C though, to better languages like Smalltalk and Ruby. I did a screencast of the Smalltalk debugger in action, doing TDD. Never mind the TDD part for a moment - just consider what I was doing: I was writing code in the debugger, with all the application context and state available to me. Ask yourself: when you are crafting new code for something, is having that information helpful? Yes, you should have tests, but that doesn't matter - having the tests and the context is highly useful.
The way Troy put things in the comments echos something I've said for years: with most debuggers (and I suspect that this is all Giles has had experience with), you're a forensic pathologist. The patient is dead; the best you can do is figure out what killed him, and prevent the next version of the app from dying of the same thing. With Smalltalk, you're a surgeon: the patient is sedated, and you have him on the table. You can not only figure out what made him sick - you can fix it and let him walk off under his own power.
That's a huge thing, and it's one of the keys to Smalltalk's productivity. The "fix and continue" support in Eclipse and VisualStudio are pale imitations - your ability to fix things is highly constrained. In Smalltalk, you can do whatever you want: add new instance variables to classes (which will modify all extant instances), add new code, modify existing code, anything. You can do as complex an operation on the patient as you can imagine. Oh - and when you get an exception while debugging, you get another debugger - as opposed to being tossed out of the debugger.
Even that doesn't get at everything though. There's an internal discussion going on here at Cincom, as to whether the term "Debugger" really captures the entire idea for us. This is actually a good question, because the tool is far more than a debugger. It allows you to look at all system state at any time. One of the things I did when I was first learning Smalltalk was to hit ctrl-c (ctrl-y now) and just walk through the UI code: it allowed me to look, in real time, at how the system operated. I do this with code I don't really understand now, too. When I look at Seaside, I often drop into the debugger to look around - because it's easier to look at the real state of the system than it is to try and imagine it all in my head.
And that's the problem with Giles' "Debuggers are harmful" thesis: he somehow expects developers to keep all state in their head at all times. You know what? One of the promises of computers is that they allow us to offload a lot of the drudgery to the system - because it doesn't mind handling it, and it's pretty good at it. It's no longer 1975 - we don't have to stack up the punch cards, run the mental tests over and over so as to prevent a botched (and expensive) run: we can ask the system to explain itself.
Mathew Ingram points to some interesting "River of News" work that Dave Winer has been doing, and wonders why the papers themselves haven't been trying anything similar:
I don’t understand why the Times -- or other newspapers, for that matter -- don’t provide that kind of alternative search or browsing tool themselves. It’s not rocket science (no offence, Dave) and it might even attract users who don’t want to use the linear approach that most papers default to. Why not have a keyword tag cloud too? The Washington Post had a demo of such a feature awhile back as part of its Post Remix lab project, but it never became part of the actual site, which I think is a shame.
I think the answer is simple inertia. Newsapers are an old business - they have fairly set ways of doing things, and geting changes to take place is hard. Heck, never mind newspapers - look at technology companies. Most of the "old" ones are 30-40 years old at most, and you would think that technology companies would be open to change - but you would be largely wrong.
Look at Microsoft now, or IBM back in the 80s. Look at how much difficulty established vendors have with things like Open Source. The news media is being forced to deal with a huge change in a very accelerated fashion - it's just the "old think" of the established players that stands in their way. The thing is though, it's not any different elsewhere in the business world - media is just being forced to adjust more quickly.
This is good news for anyone looking for up to date Seaside info - Michael Perscheid has announced a Seaside 2.8 tutorial. It's Squeak based, but the code maps over to Cincom Smalltalk as well. I'll likely do some screencasts on it next week.
Russ Olsen takes the absurd "continuous tax of dynamic languages" argument and throws it back at static typing fans. I think Russ' points are pretty good.
When your customer service drives this kind of hammer wielding behavior from the proverbial "little old lady who drives to church on Sundays", then you're doing something wrong:
"I scared the tar out of some people, at least," she says. "It had never occurred to me to take a hammer to a phone company before, but I was just so upset. . . . After I hit the keyboard, I turned to this blonde who had been there the previous Friday, the one who told me to wait for the manager, and I said, ' Now do I have your attention?' "
Somewhat extreme, but I have to say, I've been tempted when the phone rep tells me "we don't support Linux", or "we don't support Mac" - when the problem is that the cable modem has no signal.
On today's Smalltalk Daily, we take a look at how the debugger can be an integral part of Test Driven Development in Cincom Smalltalk: by keeping you in the flow of your coding.
For this screencast, I also prepared a couple of different formats. You can download a 5MB mp4 here. Or, you can visit YouTube - I uploaded the video there (given the downsizing of the video size, it's a bit blurry there).
I love this theory that not having a decent debugger is somehow a good thing - here's Giles Bowkett:
Asking why Ruby has weak debugger support is like asking why a dolphin doesn't have gills. Ruby has weak debugger support because Ruby programmers shouldn't be using a debugger. Ruby supports TDD and BDD better than any other language except possibly Smalltalk. Debugger support is for languages that you can't run tests against gracefully.
Yes, Smalltalk supports it better, in large measure because we have a debugger. For instance, have a look at this short (unnarrated) screencast. The summary: The Smalltalk debugger can support TDD:
So no Giles, the absence of a debugger is not a feature - it's a fairly significant lack in your toolset.
Update: I love this. I left a short comment on Giles' blog, with a tinyurl link back here. His justification for deleting my comment:
when I said write politely or post in your own blog, I didn't mean that links to rude blogs were somehow not rude. I wish you people were more respectful with my time. There was a very reasonable counterargument, complete with excellent screencast, which I had to delete. Please understand, if your comments are rude, I will delete them, no matter how well-reasoned they are, no matter how polished their presentation, no matter how much I might respect you. I do not tolerate rudeness on my blog, and there are no exceptions. Please respect my time and your own. Posting comments I'm guaranteed to delete is wasteful.
Sounds a little odd, especially when we we get here:
For a quick summary, the commenter did a screencast of the Smalltalk debugger. The screencast showed the debugger in action. I admit, it looks cool. However, it still looks like a crutch to me. The screencast's argument was basically, look, here's the Smalltalk debugger, see how cool it is? Therefore it can't be a crutch. Of course it can. Haven't you ever met a beautiful woman who was mean to people, or a highly intelligent alcoholic? People make crutches out of their best features in real life all the time. Somehow it's impossible in computers? Of course not. Haven't you ever seen a useless but fun high-tech toy? A feature can be cool and still a crutch nonetheless.
Hmm. Yes, my post here is snarky. However, if Giles thinks I was just showing something cool, he missed the entire point of the post: the Smalltalk debugger supports TDD. Watch it again, Giles - I wrote a test, ran it. It failed. I debugged the test, had the debugger create the missing method for me - whereupon I wrote the code for the method in the debugger, and ran the test again. That's not a crutch: it's taking TDD to the next level.
Face it, Giles - you have the worst of this argument. Ruby ought to have a Smalltalk style debugger, and if it did, every Ruby developer would use it. The fact that Ruby doesn't have such a debugger is not a feature. Does this mean that Ruby sucks? No, of course not. I just think the argument that not having a debugger is a good thing is lame.
Update2: When you know you've lost, just close comments to make sure you get the last word. Oh, and make sure to swear (see his update stream for that) while you're at it - that shows 'em:
Although I am aware that the Smalltalk debugger works in the context of TDD, and was initially aware of that when I wrote the post, before any comments were made, because anyone with any knowledge of Smalltalk's history or the history of TDD knows that, it doesn't change my opinion that debuggers work backwards. Debuggers are based on the idea that the code base has enough places bugs could happen that the work of locating the bug is involved enough to justify machine assistance. This is not true of well-tested code. More importantly, the whole point of [T|B]DD is that you identify the bugs before you write the code. As tools which track down bugs in existing code, debuggers presume and encourage a workflow which is exactly backwards.
Umm, yeah - because we all write perfect code the first time, right out of the gate. Sure. And stop/restart is ever so much more productive than what I showed in the screencast, where you never leave the context of your code. Sure Giles - it's far more productive to do the test/run/break/test/run/break cycle than what I showed. You keep believing that - I'll be over here, being productive :)
Update 3: Oh, this just takes the cake - In the comments, Giles says:
Why on earth would I? How is supporting me rude? Why would I be offended by an offer of support?
So it's pretty simple, really - suck up to him, and it's open season. Disagree, and you get edited out. I've seen that behavior on political blogs, but sheesh.
Phil Windley has a good rundown on how to adjust the sleep/hibernate modes on the MacBook Pro. I'm posting this mainly so that I can find this later, when I want it :)
While I understand what the Cafe in this story is worried about, trying to pre-censor customers is not the best way to proceed:
What I was told, in a nutshell, is that the café staff has encountered a stream of would-be critics “with attitude,” predisposed to take issue with or be critical of the business. Whether or not this is a correct perception, there are many more outlets (Yelp being only one) for customers and consumers to voice opinions about businesses on the Internet. And there’s little most of these businesses can do about it, for better or for worse.
For good or ill, you just have to take the commentary. Anyone can be a critic now; it's no longer limited to the food guy at the local paper. Are you going to get unfair, negative, personal attacks? Yes, you will - but putting up a sign that asks people not to do that isn't part of the answer, IMHO.
Here's what I do, in my role as product evangelist: I have search feeds set up for various terms that might come up in a discussion of our product: Smaltalk, Cincom, Cincom+Smalltalk, etc. I scan the results every day, and I respond to the negative ones - not with exasperation, but with questions for details on the problem tat generated the negative post. Is that going to solve every issue? No - there are trolls, and there's nothing you can do about them. Over the long haul, your dedicated customers will recognize and tune out the trolls though.
Ultimately, you can't stand back and to stop the tide of commentary. The best you can do is jump in and try to ride along.
Major record labels - Arista, Atlantic, BMG, Capitol, Caroline, Elektra, Interscope, LaFace, Maverick, Sony BMG, UMG, Virgin, Warner Bros. and Zomba have filed a copyright infringement lawsuit against Usenet.com.
According to Billboard, the complaint filed in the District Court in New York states that Usenet.com provides access to millions of copyright infringing files and, with a nod towards the Grokster Decision, apparently “touts its service as a haven for those seeking pirated content.”
Usenet "encourages" infringement in the same way that the net in general does - it allows arbitrary content to be passed around. If Grokster applies to Usenet based on tunneling, then it applies to all of the net based on ssh tunneling. In their ideal world, everything would be broadcast only - and that's just not the world we live in.
An interesting topic came up on one our calls today: what components in the "contributed" (i.e., not supported) section of our installation do our supported components rely on? Seems like a pain in the neck to test and figure out, but it turns out that the information is easy enough to come by. Using this code snippet, you can read the header of a parcel file:
properties := [CodeReader new readInfoFromFileNamed: 'parcelFileHere.pcl' asFilename]
on: OsError, CodeReader fileFormatSignal
do: [:ex | ex return: Dictionary new].
Armed with that, the following script was easy to create:
"get the contributed parcel names"
contributedDirs := (('..\contributed' asFilename directoryContents)
select: [:each | ('..\contributed' asFilename construct: each) isDirectory]) asOrderedCollection.
contributedDirs := contributedDirs collect:
[:each | ('..\contributed' asFilename construct: each) asString].
contributedDirs add: '..\contributed'.
all := OrderedCollection new.
contributedDirs do: [:each |
| current |
current := each asFilename directoryContents.
current := current select: [:each1 | '*.pcl' match: each1].
current := current collect: [:each2 | each2 copyUpTo: $.].
all addAll: current].
"now get the supported stuff"
top := 'c:\vw7.5.1' asFilename.
dirs := #('advanced' 'com' 'database' 'dllcc' '
DotNetConnect' 'DotNetConnect\parcels' 'dst' 'examples'
'icc' 'net' 'opentalk' 'packaging' 'parcels' 'pdp' 'plugin'
'preview' 'seaside' 'security' 'store'
'wavedev' 'waveserver' 'web' 'webservices').
bad := OrderedCollection new.
dirs do: [:each |
| dir |
dir := top construct: each.
files := dir directoryContents select: [:each1 | '*.pcl' match: each1].
files do: [:each1 |
| file |
file := dir construct: each1.
properties := [CodeReader new readInfoFromFileNamed: file]
on: OsError, CodeReader fileFormatSignal
do: [:ex | ex return: Dictionary new].
prereqs := properties at: #prerequisiteParcels ifAbsent: [#()].
prereqs notEmpty
ifTrue: [prereqs := prereqs collect: [:ea1 | ea1 first]].
(prereqs anySatisfy: [:ea | all includes: ea])
ifTrue: [bad add: (file asString ->prereqs)]]].
bad := bad collect: [:each |
reqs := each value select: [:ea | all includes: ea].
each key -> reqs].
Yes, the script could be cleaned up some, but it works for this purpose. Next, time to create a simple HTML table of results:
stream := WriteStream on: String new.
stream nextPutAll: '<table border="1" cellpadding="2"><tr>'; cr.
stream nextPutAll: '<td>Component Name</td><td>PreReq</td></tr>'; cr.
bad do: [:each |
stream nextPutAll: '<tr>'; cr.
stream nextPutAll: '<td>', each key asFilename tail, '</td>'; cr.
stream nextPutAll: '<td>'.
each value do: [:ea | stream nextPutAll: ea.
ea ~= each value last
ifTrue: [stream nextPutAll: ', ']].
stream nextPutAll: '</td></tr>'; cr].
stream nextPutAll: '</table>'.
^stream contents
Now, some of that is spurious - there are duplicate parcel names for Seaside, as we are still sorting that out. We don't need to worry much about the non-commercialization parcel either - but the other results are interesting. For instance, before I ran this script, I had not remembered that we use HotDraw in the browser. Interesting information all around...
On today's Smalltalk Daily, we set up the database table for the Todo app (see yesterday's screencast) - this will give us the foundation for adding persistence to the Todo Seaside app.
Looks like Apple is responding to Amazon's DRM free, 89¢ - 99¢ play - their DRM free tracks will be dropping to 99¢, along with the DRM tracks. They are also adding some Independent labels:
Apple plans to expand iTunes Plus to include certain indie music labels starting Wednesday, October 17 (or sometime this week, at least). This tiny step is encouraging for those of us who like freedom with our music, but it sucks that more of the larger labels are still holding off from hopping on board. This expansion won't include all independent music labels just yet, although we're optimistic that more will be included in the future.
The bigger news on the iTunes Plus horizon, however, is that Apple plans to drop the price of all iTunes Plus tracks. Currently, each track is $1.29 while "normal" DRMed tracks are 99¢ apiece. That discrepancy will be no longer, as Apple will begin pricing all of its iTunes Plus songs at 99¢ apiece (DRMed tracks will also remain at 99¢).
This is the kind of competition that makes most of us smile, even as it makes the RIAA cry.
Based on the way Seaside's component model works, I've been thinking that a UI builder ought to be possible. Well, it looks like someone has taken that idea and run it with it. Via Torsten Bergmann, I ran across this work:.
Torsten has a screen shot; head on over there to see it.
CINCINNATI, Ohio - October 15, 2007 - Cincom
Systems has released Cincom Smalltalk ObjectStudio 8, which means
that ObjectStudio is now hosted on VisualWorks virtual machine and
libraries. ObjectStudio 8 is the integration of Cincom Smalltalk
ObjectStudio and Cincom Smalltalk VisualWorks.
The following enhancements are now available to customers:
Increased performance, from running a faster virtual
machine
Access to a larger class library
With these advancements, ObjectStudio continues to provide
native widget support and ObjectStudio syntax enhancements.
ObjectStudio 8 supports VisualWorks emulated widgets simultaneously
with the native widgets, and both can be used in the same
application.
"Both Smalltalk systems consisted of tons of customer
applications and components, most of which were only available in
one system, not the other. The idea was then born to bring these
two systems together in such a way that both, each VisualWorks
application and component and each ObjectStudio application and
component, works unchanged in the joint system, now called
ObjectStudio8", said Georg Heeg, Premier Cincom Smalltalk
partner.
For further information on ObjectStudio and ObjectStudio 8,
please visit the
ObjectStudio blog .
Cincom serves clients on six continents including BMW, Citibank,
Boeing, Ericsson, Penn State University, Milacron, Siemens, and
Trane. For more information about Cincom's products and services,
contact Cincom at 1-800-2CINCOM (USA only), send an e-mail to
info@cincom.com, or visit the company's website at
www.cincom.com .
Media Contact
Suzanne Fortman
Smalltalk Program Director
Cincom Systems, Inc.
949.722.8928
sfortman@cincom.com
Dave Winer thinks that people sniping at him is just bad:
Usually I ignore the moralistic snipes that come from a handful of bloggers, but to characterize a post of mine with a term like "hate" is really over the top
So just out of curiousity, I tried this Google search. Hmmm - he's not as bad as the anonymous troll I had a run in with last week, but he definitely visits the same neighborhood regularly - and, like that troll, he has his own set of enablers who cheer him on.
Nick Carr notes that for web 2.0 - as with web 1.0 - it's all about infrastructure:
In its latest quarterly financial report , Caterpillar revealed that, in North America, "sales for electric power applications increased 41 percent [from year-earlier levels] supported by data center installations." (One of Caterpillar's major competitors, Cummins, also reports record revenues in its generator business, with worldwide sales jumping 33 percent over the course of the past year.) Demand for the generators is so strong, in fact, that shortages of the machines appear to be significantly delaying the construction of new data centers. A year ago, Data Center Knowledge reported that the lead time for the delivery of a two-megawatt generator, a mainstay of today's data centers, was a full year. I hear that supplies remain short today, delaying construction projects nine months or more. Rumor has it, in fact, that Microsoft and Google have locked up a significant portion of Caterpillar's production for the foreseeable future.
I have to say, I would not have guessed at Caterpillar as being one of the winners in this. It makes sense, but it was not obvious to me.
If you would prefer to see only the Smalltalk related posts here, I've created a new feed that aggregates those, and excludes the various other topics I write about. Subscribe to this feed, and that's all you see. I've sent a note to Planet Smalltalk - if they switch over to the new feed, then the non-ST stuff will drop off that site as well.
Update:Planet Smalltalk is now using the new feed, so the non-Smalltalk posts I make here are no longer part of that site.
On today's Smalltalk Daily, we tip our hat to Francois Beausoleil, who provided the example application I used - a simple To Do application. It's a longer than normal screencast, because it walks through the entire creation of the application, start to finish.
The code is in the public store repository; one caveat though. The pre-reqs are set appropriately for the in-development Seaside 2.8 work here at Cincom, so if you aren't part of vw-dev, then just load SeasideFor WebToolkit or SeasideForSwazoo (2.7 or better) first, and then ignore the pre-req warning.
Also, I am no expert on Smalltalk, Squeak or Seaside. There are probably a couple of things I could have done differently, and I hope some people out there might be interested in helping me learn more about Seaside.
has posted a simple ToDo Seaside app in 218 lines (he did the authentication himself, so a truly minimal version might be less). Sure, there are issues if you planned to actually use the code (non-encrypted passwords) - but it's a demo/proof of concept, as he freely admits.
It's very cool to see how much you can get done in so little Smalltalk code :) I think Francois sells himself a bit short in the Smalltalk and Seaside arena :)
The NY Times' John Markoff is covering MS' latest big announcement - they are announcing a new line of business in the IP communications arena:
There is a great deal of brave talk from existing players about being both a partner and competitor to Microsoft, but in fact they should be about as glad to see Microsoft as the minicomputer industry was to see the upstart three decades ago.
In fact, Microsoft is opening a new front in its software strategy that mimics its Windows and Office approach to desktop and corporate computing.
The latter assertion is an interesting one. They are going to have to target the enterprise space, and get IT departments to really push, because messaging software is common (skype, AIM, Yahoo) and free. If they see this as an "Office Size" business, it's going to require more than a software release - they have to convince people like me to stop using skype and start using their stuff.
Here's an interesting reminiscence of the DynaBook concept from 1988 - the ActiveBook project. Like a lot of early Smalltalk projects, this one had good ideas that were ahead of their time.
Scoble points out one of the scaling issues with accessibility laws: ironically, they favor the big players:
Now, imagine a world where every video is forced to get a transcript so that it’s accessible to blind people? Yeah, some sites like mine would just pay to have transcripts done. But most video bloggers can’t afford that. So who would pay for this?
Take the podcasts we do here on Industry Misinterpretations - say I had to provide a transcript for those. I looked into that once, and - while the price wasn't onerous for a corporate site, I can definitely see questions coming up at budget time. For larger companies, providing a transcript would be a pain, but a small one. For smaller outfits, it could easily be a back breaker.
I have sympathy for the blind (or deaf, etc) who want access to the same things the rest of us have access to - but at the same time, Scoble's "who pays for that?" question is not coming from a place of harshness. It's a real problem for smaller players with limited budgets.
There's also a gap between the reasonable accessibility steps (alt text, etc) that help screen readers, and the reality of increasingly less accessible video technologies. Let me use a simple example: Smalltalk Daily. Those are narrated screencasts, where I do demonstrations of how Cincom Smalltalk works. If you can't see it, there is audio - but how useful is it? There's definitely a "lost in translation" thing there, IMHO. The same would apply to a lot of video, even if a transcript were provided. Not everything online can be reduced to an interview.
Well, this has been an interesting morning. Michael and I decided to try a game of Civ IV, and immediately on connection, we got "Out of Synch" errors. We are both using Windows, so it's not the dreaded Windows to Mac issue. No, it's the recent 313 patch. A quick round with Google turned up this thread, so we turned off random events. That did the trick. So now, I guess we wait for the next patch. Given how quick this one popped up in MP play, I'm surprised it wasn't caught in testing.
This is the third Seaside podcast we did during the last week of September, 2007 in Cincinnati. For this one, I was in the same room with Michael and Arden, with Dave Buck and the Gemstone guys (Dale Henrichs, James Foster, and Monty Williams) on the phone. We talked about what Gemstone is up to with Seaside (you should also check their blog). They did most of the talking - we pretty much let them have the mic and explain things to us.
Last week, some spam hit the Cincom Smalltalk Wiki - it's easy enough to restore the original pages, but I was afraid that I was looking down the same barrel that the UIUC wiki is - one of relentless, un-ending spam attacks.
However, a simple investtigation revealed a stupid problem I inflicted on myself - in the last patch I pushed up, I accidentally turned off the spam checker on the Wiki. After turning it back on, I started seeing failed attempts reported in my logs, from the same IP addresses that hit UIUC. I have to periodically update the filters, but things are back to normal. If you came to the site and saw spam last week, my apologies.
Via Patrick Logan, I came across this piece by Robert Cooper - and this quote on the utility of BPM tools to make development easier:
And here is where it breaks down. All these unusable drag and drop tools, and “easy” XML programming languages aren’t targeted at programmers. They are targeted to suits who can buy into the idea that some non-techy is going to orchestrate these services and modify business rules. These products are unworkable because they are based on the idea that “You won’t need programmers anymore!” at least at a core level. Once you make that assumption you start building things that get in programmers way, and still include enough abstract programming concepts that no non-programmer is ever going to be able to work with it proficiently
The funny thing is, this idea of eliminating the programmer was one of the original goals of Smalltalk. It hasn't worked out that way; neither mainstream languages (like Java), nor the niche ones (Smalltalk, Lisp) have been picked up as general purpose tools for the masses.
There are DSL tools out there that provide higher productivity for general audiences; you can consider spreadsheets with their macro languages to be DSLs, for instance. Even there, everyone sees the scaling problems - we've all seen overly complex, unmaintainable spreadsheets.
The bottom line is, we haven't reached nirvana yet. Unless you have a highly focused (and smallish) problem, you probably need software developers.
Today or tomorrow (I'm waiting on some audio to mix in), I'll have the third in our Seaside series of podcasts out. This one was also recorded in Cincinnati, during the last week of September at our internal "Camp Seaside". We spoke to Gemstone about their GLASS (Seaside) work - look for it in iTunes by the end of the weekend.
Andreas explains how ObjectStudio 8 makes calling C from ObjectStudio easier - DLLCC (from the VW side) is a lot easier to work with. We aren't satisfied with DLLCC though - we are doing a number of tings to improve the experience:
Faster calls from Smalltalk to C, and from C back into Smalltalk - you'll see that in the January Release
A better front end DLLCC parser - right now, the parser has trouble with many header files. We expect to have preview level improvements by January, with more to follow
VM as a DLL - if you read Dave Buck's piece, you see that we are making it possible to use Smalltalk as a shared library on Windows, Unix, and Linux. We should have at least preview level capability by January, and we may be able to ship that in production.
Things are shaping up nicely for January - I'll have some details on the tools/UI work soon. In the meantime, the roadmap has been updated.
Just when you think the music labels have hit bottom, you find another piece of news demonstrating that there might not be a bottom: The UK equivalent of the RIAA (PRS) is suing a car repair chain, claiming that mechanic's radios were set loud enough to qualify as a public performance:
The PRS claimed that Kwik-Fit mechanics routinely use personal radios while working at service centres across the UK and that music, protected by copyright, could be heard by colleagues and customers.
It is maintained that amounts to the "playing" or "performance" of the music in public and renders the firm guilty of infringing copyright.
Hmm. By that logic, every party I've ever been to needed a performance license. Lots of the cars on the road need one to - never mind FM broadcasting from the mp3 player, I'm just talking about volume. Is this really where the labels want to go? Do they have any idea how stupid this makes them look?
The system consists of a headpiece equipped with electrodes that monitor activity in three areas of the motor cortex (the region of the brain involved in controlling the movement of the arms and legs). An EEG machine reads and graphs the data and relays it to the BCI, where a brain wave analysis algorithm interprets the user’s imagined movements. A keyboard emulator then converts this data into a signal and relays it to Second Life, causing the on-screen avatar to move. In this way, the user can exercise real-time control over the avatar in the 3D virtual world without moving a muscle.
State police in Indiana, Pa., are investigating after a Pepsi employee allegedly assaulted a Coca-Cola employee while making a delivery at a Wal-Mart in White Township on Oct. 1.
According to police, Robert Koscho, 48, of Ebensburg, and the Pepsi employee, who has not been identified, were bickering back and forth while making their deliveries at the Oakland Avenue store. Police said the two are also accused of trying to run each other over with pallets full of soda bottles.
A couple of posts I made here about a certain non-transparent "PR" person have generated a huge stream of very obnoxious emails - and not all of it to me. I want to say thanks publicly to Steve Kayser, who has been a big help in this little blog-storm. Thanks Steve!
PC World reports that Comcast will finally be rolling out cable boxes with the Tivo interface - and has started to do so already, in fact:
NEW YORK (Reuters) - Comcast Corp, the largest cable operator in the United States, and TiVo Inc said on Thursday they have started rolling out TiVo- enabled Comcast digital video recorders in New England. The companies said in a joint statement that the service will be rolled out to customers over the next few months.
Not a minute too soon - the existing DVR boxes have an interface that no one could love.
Charles Monteiro has announced the next STUG meeting in New York City, November 7 at 6:30 PM. Follow the link for directions to the meeting:
Charles A. Monteiro will be discussing issues encountered as well as techniques/strategies in our quest to have an Oracle centric direct sql VW application speak to a Postgres backend without having to change application layer code.
While reading through the new stuff in BottomFeeder this morning, I came across this item from Mike Arrington - where he explains how easily some people toss lawsuits (or threat of same) around, and how much time that can waste. It's commonly thought that things are worse this way than ever, and I used to think so - but I've been reading "Empire Express", which covers the building of the transcontinental railroad by the Central Pacific and the Union Pacific. Lawsuits and threats of suits were tossed around like water back then (just after the civil war).
It's also commonly said that Congress is worse and more corrupt than ever - I'd invite anyone who thinks so to read this book - the kinds of deals and sinecures being handed out back then are just amazing - if things like earmarks bother you now, you might well have exploded in the late 1860's :) It's a fascinating book - there's the actual building of the road, the legal battles, the corruption, and the personalities. I'll be sad when I reach the last page.
On today's Smalltalk Daily, we take a look at porting some code from Squeak to Cincom Smalltalk. The package I ported is a JSON reader; it's a small example, but illustrates the issues involved quite nicely.
After the earlier post on JSON, I decided to take a look at the Squeak package. Importing it into Cincom Smalltalk was fairly simple - here are the steps I used:
Downloaded the mcz file
Unzipped it to get the files
Loaded BraceConstructor and FileOut30 into my image. The former is for Squeak array compatibility; the latter handles bringing in Squeak files
During the file in, I had to deal with namespace issues (TestCase), and a missing class (SystemOrganization)
Fix up all the uses of _ instead of :=
Create a new namespace and move all the JSON classes into it
I published it as JSONReader in the public store (there's a JSON package out there already - it seems to be focused on serializing to JSON). I should probably consider unifying the two. Anyway, I can't vouch for this code much - but it's a start.
Looks like everyone is building interesting stuff for use on the web. Via Danny Ayers, I found out that the New York Times has built (and released openly) a database front end they call DBSlayer. It talks via JSON, does connection pooling - it looks fairly interesting. All you need to talk to it is HTTP and JSON libraries. I've made fun of JSON before, but perhaps I let my cynicism get out in front of me.
Update: Looks like there's a Squeak package for JSON - if it works, a port to Cincom Smalltalk should be fairly easy.