BottomFeeder

Still plugging away on 3.7

October 8, 2004 11:22:54.732

I'm still plugging away on the 3.7 release - it looks stable to me now, but I've had a couple of bug reports that I'd like to follow up on before I push it out the door (you can grab the existing build by following the dev links on the BottomFeeder site). One thing I have done is gone through and addressed a lot of UI layout issues. many of the existing utility screens looked very odd if you resized them, or had limits on their maximum size. I've addressed those issues (not necessarily perfectly, but I think the screens resize rationally now). It was actually a lot easier than I thought it would be - there are two great posts from Vassili on this:

Those posts were invaluable to me in making adjustments.

 Share Tweet This

smalltalk

Plugging in WithStyle

October 8, 2004 13:42:18.641

I had someone ask me about plugging in WithStyle to BottomFeeder. Previously, I had been using Twoflower, a more basic html display component. There are some differences in how you use WS; I decided that it was worth a post.

With Twoflower, I had a widget - i.e., the component had been wired into the GUI builder. That made interfacing with it simple - I just grabbed the widgte, slapped it on a canvas, and went with it. It even exposed an API at the widget level that allowed me to capture the 'browse' event (useful in Bf since users can either browse in Bf or spawn an external browser). WithStyle wasn't done that way; there's a low level View, and the example browser and it's superclasses. Now, it's easy enough to re-use a full window interface - there's the subcanvas widget in the toolkit for that. What I decided to do is the following:

  • I subclassed WsThinClientWindow. This happens to be the superclass of a couple of WS examples, so I decided to start there
  • I added a bunch of protocol that was specific to the Bf/WS integration
  • I had to register for (and handle) a few trigger events

Let's start from the beginning. Here's the definition of my class:


Smalltalk.RSS defineClass: #BrowserPane
	superclass: #{WithStyle.Client.WsThinClientWindow}
	indexedType: #none
	private: false
	instanceVariableNames: 'textIncrement textDecrement currentSize currentStyleSheet '
	classInstanceVariableNames: ''
	imports: ''
	category: 'RSSViewer'

The new instance variables have to do with resizing text and managing the current stylesheet - that's new in this release, since Twoflower didn't support CSS. I also had to redefine the UI, since I wanted a plain browser pane - no menus, toolbars, etc. That required knowing a little bit about the innards of WS - anyone who wants to work with this stuff is going to have to take a look at class WsRenderWidget. Here's the way the painter definition tool looks for it:

The next thing to do was to provide an API useful for managing the use of the html pane by BottomFeeder. I implemented these methods to handle placing text into the pane:


htmlString: string
	self 
		htmlString: string
		uri: nil


htmlString: string uri: aURI
	self browserWidget  userStylesheet: self currentStyleSheet.
	aURI isNil
		ifTrue: [self browserWidget  documentSource: string]
		ifFalse: [self browserWidget documentSource: string uri: aURI asURI].
	self setCurrentSize.

Those methods manage the use of the current style sheet and a re-adjusting of the text size as appropriate (i.e., based on user settings). The two other things that had to be dealt with are handling trigger events. WS triggers events on things like:

  • Mouse is over an href
  • An href has been clicked (i.e., a browse event)

I had to catch both - the first so that I could display the url being floated over, the second so that I could manage browsing (as currently set by the user - internal or external). So I registered for the following events:


	self htmlModel browserWidget browserView when: #navigateTo: send: #openURL: to: self.
	self htmlModel browserWidget browserView class when: #scrolledToEnd send: #goToNextNew to: self.
	self htmlModel browserWidget browserView when: #mouseMovedTo: send: #mouseMovedTo: to: self.

The middle one is something I added; Bf will go to the next new item when you page past the end of an item you are looking at. The other two end up being handled in the main UI - in the navigate one, I look at settings, and either browse internally or pop up a browser. In the mouse moved event, I grab the href that the mouse is over and display it in the status bar.

There are a bunch of other convenience methods (copying text, etc) - but that's the major stuff right there. As it happens, WS is pretty easy to work with - and it's fairly easy to customize the browsing as per your needs. One thing that's interesting is the way I handle browse requests (since there are so many different kinds - here's my code for that:


	| fLink |
	(self isPagingUrl: link)
		ifTrue: [^self handleNewspaperPaging: link].
	(self isCommentUrl: link)
		ifTrue: [^self handleCommentUrl: link].
	(self looksLikeAMailTag: link)
		ifTrue: [^self spawnMailFor: link].
	fLink := link isString
		ifTrue: [self scrubLink: link]
		ifFalse: [self linkFromURLObject: link].
	self settings alwaysBrowseInline
		ifTrue: [Cursor wait showWhile: [self loadBrowserViewOn: fLink]]
		ifFalse: [Cursor wait showWhile: [BrowserLaunchService current openBrowserOn: fLink]]

Now, some of that is very specific to BottomFeeder. Paging links are pseudo-links I use for newspaper views that are too large to put on one page. Comment links are similar, something that is also added (as appropriate) for newspaper view. The Mail tag handling is there to handle mailTo hrefs - on Windows, I pop the "default" mail tool, on other platforms I send up a small mail tool. The #isString check has been there since a time when I had some API issue in my own code; it does no harm, so I've just left it there. Finally, there's the "browse internally, or browse externally" check. The interesting aspect is the fact that you can easily intercept the browse event and do whatever you need to do.

I hope that's a useful primer on using WS - if you are interested, visit the WS home page and register for their developer program - you'll then be able to download their daily builds.

 Share Tweet This

smalltalk

Explaining Smalltalk

October 8, 2004 14:45:01.173

Peter William Lount explains Smalltalk by way of numerics. Check it out

 Share Tweet This

development

Stunted imaginations

October 8, 2004 15:46:09.476

A reader pointed me to this post by Jon Udell in InfoWorld. He suggests a native data type for XML in the JVM and the CLR:

Whenever I see the emergence of per-programming-language variations on a theme, I wonder what can be abstracted. In this case, I wonder about the feasibility -- and the desirability -- of pushing the notion of a native XML datatype down into the JVM and CLR/Mono. In theory, the benefits would be:

  • A single robust implementation
  • Smoother transfer of experience across programming-language domains
  • A common focus for storage implementations

This is the clear trend that the static languages (the popular ones) seem to take - whenever an idea pops up, lard some additional complexity onto the language. This is in fairly stark contrast to the Smalltalk way - we had libraries, not complexity. Why is that better? Well, say someone goes ahead and follows Jon's suggestion. Now developers are forever wedged into whatever notions that developer had (think primitive data types, for instance). In a properly constructed library (i.e., one without any final classes), follow-on developers can customize behavior to suit the needs of their projects. With this kind of hard baking-in, developers instead end up working around limitations forever

 Share Tweet This

sports

Maybe it's too early...

October 9, 2004 11:06:58.756

The Yankees are up 2-1 in the division series - I suppose the Twins could win two straight, but I'm not seeing that. Instead, it's looking more and more like another Yankees/Red Sox ALCS. This is starting to be an annual tradition. The difference this year is that the Sox have much better pitching, and they still have that killer lineup. The Yankees pitching isn't as strong, I don't think - but then again, they did win the division title. If the Yanks can get past the Twins, it should be another fall classic.

 Share Tweet This

development

Underwhelmed

October 9, 2004 11:23:59.531

Seems that LtU (and lots of other people, for that matter) are all excited about Laszlo - and XML based programming language. Here's what "Hello World" looks like:

<canvas>
    <text>Hello World!</text>
</canvas>

Just what we need in the world - more angle braces. This makes Cobol look positively spartan in terms of what you have to type. Thanks, but no thanks...

 Share Tweet This

general

Another Windows annoyance

October 9, 2004 13:08:05.021

I got up this morning, took a look at my laptop - and found a bunch of dialogs indicating that my network connection had dropped. Ok, it looks like I had a transient outage while I was asleep. That wasn't the annoyance. When the connection came back, Windows had decided that my WiFi connection used a WEP key. Never mind that it doesn't - never mind that the other machine using WiFi was happily connected. Windows, apparently, had its own ideas. I couldn't change the setting back without rebooting. This happens periodically; I'd really like to know why...

 Share Tweet This

sports

Cardiac Baseball

October 9, 2004 20:43:06.929

This has been a tense game. The Yankees were down 5-1 in the 7th, and the Twins had just missed a chance to make it a 7 run lead. Then the Yanks tied it - a couple singles and a walk, then a 3 run shot tied it. Off to extra innings - The Twins burned too many pitchers, I thought - because in the 11th, when A-Rod got a double, stole third, and scored on a wild pitch - the Twins were well past their hot closer, Nathan. The Yankees, on the other hand, had Rivera on the mound to shut things down. I think he broke 4 or 5 bats in his two innings out there - he's back to his dominant post-season form. Another come from behind win for the Yankees - and another NYY vs. Sox ALCS on tap. I sure hope the pitching holds up...

 Share Tweet This

BottomFeeder

Closer...

October 10, 2004 11:39:52.225

I've received some very nice UI changes from Reinout Heeck - a BottomFeeder user in The Netherlands. I'm pushing a new build up with all the recent changes in - the upload should be done in a few hours, and the dev links on the download page will get you the new stuff. I think I'm pretty close to a release now; if everything looks good, I'll likely push the dev stuff down to the stable download directory this week. In the meantime, I got a useful tip from Michael. A user complained that there wasn't enough of a whitespace margin surrounding images, and it turns out that you can fix that yourself, with a little stylesheet editing. Simply add this line to one of the stylesheets in the "stylesheets" directory, and the next time you start Bf up, you should see the change (assuming, of course, that you use the edited stylesheet):

img { margin: 2px }

Of course, you can slap your own stylesheets in there as well. At the moment, stylesheets are only read when BottomFeeder starts up - I suppose I should add a menu option to re-read that directory...

 Share Tweet This

blog

The PR folks read blogs

October 11, 2004 7:46:19.450

This piece from PR Opinions is interesting - it points out something about corporate blogging that a lot of people are still trying to wrap their heads around:

"Businesses seeking a public relations vehicle, that provides numerous additional benefits, should consider adding a blog component to their website. The authentic and personalized blog voice is a natural fit for any public relations effort. A rapidly growing number of journalists and editors are reading blogs on a daily basis. It's becoming imperative that a company start a blog to keep up with that trend. Thanks to the addition of an RSS feed, a blog's updated post can be on a journalist's computer in seconds."

Just take a gander at InfoWorld, ComputerWorld (et.al.). Notice how many of their opinion guys are blogging? Bloggers tend to be voracious readers of blogs as well. There's a useful caveat in the article:

Blogs don't turn poor communications, business models or products into winners. Blogs offer an alternative means of reaching out to your audience. They are useful for promoting conversations and showing a different side to your firm.  They do not, however, signal the end of Public Relations as we know it.

That's a good thing to keep in mind. Blogging is not the channel for communications - but it is an important new channel for it.

 Share Tweet This

events

Attention Omaha Smalltalkers

October 11, 2004 8:43:13.879

Blaine Buxton is talking about the next STUG meeting in Omaha - visit his page for details.

 Share Tweet This

blog

Of Wikis and Blogs

October 11, 2004 11:39:41.516

I'm in the process of writing a piece on Wikis and blogs - I'll have it posted here once I'm completely happy with it.

 Share Tweet This

development

Anatomy of a web crawler

October 11, 2004 11:52:23.305

I'm not going to write one of these anytime soon, but there's some interesting stuff for anyone writing network applications - Sriram Krishnan discusses the implementation issues behind a web crawler.

 Share Tweet This

music

Now that takes me back

October 11, 2004 11:59:38.818

1985 is a cool song - I suppose the fact that I graduated college in 1984 has something to do with that - all the pop references make sense to me. There's one truly, truly funny line in the song:

" And music still on MTV"

I stopped paying a lot of attention to MTV a number of years ago, but I remember watching it in the early days - all music video, all the time. Now it's a bunch of really lame reality shows. Do videos suck that much now, or has the proliferation of channels just pushed them off to the secondary and tertiary MTV/VH-1 channels?

 Share Tweet This

cincom

Cincom's Tom Nies Interviewed

October 11, 2004 12:24:50.018

I posted a few days back that our founder and CEO, Tom Nies, was being interviewed on a Florida radio station. Here's the transcript - I'll be linking to a more cleanly formatted version when it appears on our corporate site

10/5/2004

There's a lot of debate right now, especially in this political season and with the current economic climate, about the outsourcing of jobs and all that good stuff. And we're going to bring Mr. Nies in here now to get his thoughts on it.

Interviewer: Tom, thanks for joining us. Mr. Nies are you there?

Mr. Nies: Good morning.

Interviewer: Good morning Mr. Nies how are you doing?

Mr. Nies: I'm fine thanks and you?

Interviewer: Thanks for joining us here on The Morning Show here on New Radio 1270 WFLA.

Mr. Nies: Thanks for inviting me. I'm happy to be here.

Interviewer: Well good. Well first of all, in this segment here, we want to get to all these questions I have for you. But just tell us a little about your company. People know about Microsoft, but possibly not a whole lot of people know about Cincom Systems, Inc. Tell us a little bit about the company.

Mr. Nies: Well Cincom's actually the oldest software company in the world. We helped to start the industry back in 1968. Back in those days, we sold to commercial customers - people who had the large-scale computers - and we built, developed, and offered what we call strategic software. We've been doing it ever since.

Interviewer: Well how'd you get started in the business, Tom?

Mr. Nies: We simply saw a need that needed to be filled and we did so. This is what almost all entrepreneurs do. They see needs. They try to fill them. They take an opening and try to do so in the way that they can keep their heads above water, make a profit and grow and expand the business. We saw a need and we stepped in. In the process, we helped to create one of today's most important industries.

Interviewer: Now Tom, like I said, the software industry is very competitive now and like you said, yours is one of the oldest in the business. How have you been able to stay so successful with the Microsofts and all the other companies that continue to pop up all the time?

Mr. Nies: In a scene from an early movie, W.C. Fields once was telling a young English boy, "Earn 20 pounds a year and spend 19, and you'll be a happy man for life. Earn 20 pounds a year and spend 21, and you'll be a miserable wretch, like me my son. Basically what we have attempted to do is just that. Grow responsibly as fast as we can, satisfy as many customer wants and needs as we can, but to do so in such a way that we're economically viable. We just continue to do that. You're right. Our industry is highly competitive today, just like all businesses. We've probably got two, three, or four times the supply of software providers that the world really needs today. That's a good deal for the customer though because this means he can "buy right." The customer can make demands on the provider and get very good deals.

Interviewer: Well definitely. You now provide software to commercial companies and more than the individual software owner.

Mr. Nies: We serve strategic users, not personal end-users. We don't sell games and software to personal buyers. We sell to businesses, government, hospitals, healthcare organizations - what we call strategic users, commercial users.

Interviewer: Gotcha. And Tom, something I've been reading about in some of the literature about you is that you believe in a psychology called "Giving Forward." Would you explain to the listeners a little bit about what that is exactly?

Mr. Nies: I think that most businesses and people who've done well in life "give back" to society. We know that a healthy America provides good opportunities for many of us. If one is fortunate and works hard, one can succeed well in America. So, a lot of people have made a lot of money in America. And we've come into America at a time when America has been strong economically; so there are lots of opportunities . I think that most people who succeeded believe that they should give back something. Normally they give back donations, charity, and so on. We like the idea of trying to help people give forward so that they're not relying on charity. Our goal is to help others to build better lives for themselves, their families, and the people around them and develop businesses. And we think that entrepreneurship and entrepreneurial activities are the best ways to do that.

Interviewer: Well that's definitely great and we're going to run away to a quick traffic update and get a little break here in a second Tom. But when we get back, I want to hear how you've been able to do this. I see that you've created more than 10,000 jobs and opportunities for people. We'll talk more about giving forward instead of giving back. And I'm very interested in how you've created these jobs, especially in today's economy, and how a lot of people are saying there's not a whole lot of jobs out there. We're joined by Mr. Tom Nies who is the CEO of Cincom Systems. We'll be back in a second to talk more with Tom - definitely a guy who we want to hear more about, especially when it comes to creating jobs and opportunities the way he has. This is The Morning Show here on News Radio 1270 WFLA. It's Brian Willard filling in for Preston Scott. It's 8:12.

Interviewer: Yes, it is The Morning Show right here on news radio 1270 WFLA. It's 8:15 here on news radio 1270 WFLA. This is Brian Willard filling in for Preston Scott on The Morning Show and we are talking to Mr. Tom Nies who is the President, Founder, and CEO of Cincom Systems, and he has an interesting philosophy here of giving back. Like giving to charities or societies but giving it forward. Creating jobs and opportunities for other people. And he has created 10,000 jobs and opportunities. Now we want to talk to him about how he's exactly doing that. Tom, explain to us how you've been able to create so many jobs and opportunities for different people during your pay-it-forward, give-it-forward campaign here.

Mr. Nies: We live in a democratic system built on the capitalistic model in a free-trade environment. Essentially, entrepreneurship combines these three attributes in the best way possible. I think our company is an archetypal example of all that is best in entrepreneurship. Let me just give some figures. We started out 35, 36 years ago with $600 dollars of capital and a card table in my basement. Over the years, we've generated $3 billion worth of revenue. Now that's $5 million dollars worth the revenue generated for every one dollar invested.

Interviewer: That's a pretty good return there.

Mr. Nies: Yes, that's a good return. In the process, we've employed a lot of people to help generate that revenue. And as we're generating the revenue, there are good opportunities for the people. So we share the growth and development, the well being of the business with our staff who helped to create it. Capital is simply a store of energy; the people are the true energy source. So entrepreneurship and an entrepreneurial business combines the best of capitalism with the best of a people-energized oriented system and we've worked that pretty well. But we're not alone - a lot of other entrepreneurs have done the same thing.

Interviewer: So it's pretty much not depending on somebody else to give you a paycheck. You give your people who help you along the way the opportunity to create other things, create their own money to become an entrepreneur as you put it.

Mr. Nies: We help our people to develop entrepreneurial opportunities within our business. Our business is a completely entrepreneurial or intrepreneurial business. It has grown and been developed by the energy, commitment, and resourcefulness of our people, and Cincom shares the wealth among our people the best we can.

Interviewer: Well Tom how have you had so much success as you said creating 10,000 jobs and opportunities? We seem to be in an economy where jobs are scarce right now and not a whole lot more are being created. Here you're on the exact 180 flipside of that, creating more and more jobs and opportunities for people. How are you able to achieve this when some other companies are not?

Mr. Nies: The secret I think is competitiveness. If a business is competitive, it can grow. If it's not competitive, it must contract. And many mature businesses today in America and in the West are no longer competitive. So they have to contract. The secret to being competitive is good, high-skilled people who are very, very productive, know what they're doing, want to work, and are eager to perform day in and day out. We believe that if we provide good incentives and good opportunity for good people, they will perform. They'll grow and develop the business. It's simple enough; just make the pie bigger. That way, everybody can get a bigger slice.

Interviewer: Right. You basically have to change with the times, that's what it is. It's a vastly changing economy here and basically manufacturing jobs are very down because stuff can be done a lot quicker. So your industry, the software industry, is also something that changes very quickly. You sort of gotta update yourself with the times. You have to move forward, you can't be stuck in old ways, or like you said, you would have to contract jobs instead of creating jobs.

Mr. Nies: You're right, absolutely, change is a way of life. One simply cannot improve one's situation or yourself unless you're willing to change. All change may not be improvement, but all improvement demands change. If you try to hold onto the past, you're a dead duck, you're like a deer froze in the headlights. The world takes advantage of people who are unwilling to change and improve. It's a competitive world out there, you've gotta improve your team every day or you get beat. What worked two years ago, five years ago doesn't work in business today. It's pretty simple really.

Interviewer: Definitely what it is, Tom, a lot of software - especially technology and computer companies - software companies are starting to go overseas to sort of outsource jobs. Do you see that as a bad trend, a good trend or something that doesn't necessarily need to happen?

Mr. Nies: One of the most powerful forces at work today is what is called "globalization." Capital seeks the most efficient, most cost-effective means of producing goods and services. If the work cannot be improved, the productivity of an American worker cannot be improved to produce more and better output per dollar of wage, that job is probably going to be moved abroad - or outsourced to some other firm which can deliver the quality and cost demanded. Now software and services, anything that can be moved across a wire in the networks, can be outsourced. So it's not just management jobs, it's not just manufacturing jobs that can be moved abroad. It's services jobs, too. Today in America, 68 percent of all the jobs and all the economy is in services. Many of these are subject to transferring abroad with the globalization system that's in place.

Interviewer: Definitely. Does it seem like we're talking about changing? Do American workers need to go back to school, do they need to learn new skills, do they need to basically learn how to work a computer and learn to do a lot of things to keep jobs in this country and to continue to create jobs here in the United States instead of sending them overseas?

Mr. Nies: I think we need to learn to be more productive, more efficient, more output-per-dollar focused. It's a complex problem. If there were easy answers to complex problems, we'd have them all in place already. But there really are no easy answers.

Interviewer: Definitely.

Mr. Nies: Since it's a complex problem, I think the first thing is to help the people to understand the globalization forces at work worldwide. In the five stages of dying we know that the first stage is denial, the second is anger. Similarly, we must now first face up to the fact that in America and in the West, we have a problem. Denying the problem isn't going to make us any progress. Nor is the fermenting of anger against the Chinese, Indians and others going to positively help us to resolve our own problems.

Interviewer: So denying and complaining about problems doesn't help. You have to do something about it. By denying and complaining you just take up time when you could be doing something constructive about it. Mr. Nies, I thank you for joining us. I love what you're doing with your 10,000 jobs and opportunities. I hope we can have you back sometime to update us on the great things that you're doing with Cincom Systems.

Mr. Nies: Thanks a lot. It's nice to be invited, best wishes to you.

Interviewer: Thank you. Have a good day.

 Share Tweet This

humor

Where patent suits will end up

October 11, 2004 15:33:04.448

Up next for Kodak - watch out, Mr. Sun :)

 Share Tweet This

humor

There are insane parents everywhere

October 12, 2004 7:39:49.747

The Register reports that a Chinese couple was denied their request to name a child '@' - as it cannot be directly translated into Mandarin. Lucky for that poor kid, who still has to grow up with these morons....

 Share Tweet This

smalltalk

Croquet is out

October 12, 2004 7:53:09.519

Croquet is out - grab the release here. For a "first impressions" kind of post, see Michael's post

 Share Tweet This

blog

Wikis and Blogs - some thoughts

October 12, 2004 9:19:30.426

I've been using Wikis for many years now - the VW Wiki at UIUC has been a valuable resource for Smalltalk developers for a long time, and the Cincom Smalltalk Wiki is a place where we (the Cincom Smalltalk team) put out information on what we have coming down the pipeline. As a team, we use Wikis for internal communication as well. Periodically, I get asked "So what's the difference between a Wiki and a blog? Both allow for user editable web page - why use one over the other?"

It's a good question. As it happens, the two kinds of websites have some rough similarities (both are user editable in some sense) - but they also differ quite a bit. In broad terms, a Wiki has what you might call an emergent voice - it's an agglomeration of the input of the community of users who are interested in the content being managed. Here's an example - the history for one of the pages on the VW Wiki:

See how there's a long list of editing changes across time? That page was originally created in October of 1999 - and the last (real) edit of it was in April of this year. Looking at the list of edits, you can see that the page was edited by more than one person across a long time interval. As the interests of people have waxed and waned, content has been added (or subtracted) from the page. Over time, the direction of a page tends to focus in - at least on this wiki.

Other wikis can come to resemble conversations - have a look at the popular C2 Wiki, originally started by Ward Cunnigham many years ago. A glance at the recent changes page shows many changes over the course of a single day - have a look at this page, for instance - you can see that many people have contributed content over a long period of time.

A popular wiki can quickly spawn off dozens of side points and conversations - a good example of this is the Atom Wiki, created to engender conversation and conclusions on the Atom syndication format (an alternative to RSS). The limitations of a wiki for conversational purposes cropped up rather quickly here, and spawned a mailing list. That list tends to have dozens (sometimes over 100) messages a day, quite frequently on the finer points of things like date formats. This is barely manageable as a mailing list; it completely fell apart as a Wiki

In general, Wikis work well when you have a fairly limited number of people contributing content, and a larger body of readers and occasional contributors. If the amount of content creation spirals too quickly, there's just too much information - it becomes a lot like a USENET group that's been taken over by trolls. Even if most of the content is good, there is such a thing as too much of a good thing.

How do blogs play into this? Blogs allow for a much tighter focus on editorial control. You can disable comments, for instance - and thus ensure that only one voice is being heard. Even with comments enabled, they typically are not shown when a visitor comes to the site - the visitor has to choose to view comments (as opposed to a Wiki, where anyone can add any content they want anywhere on a page).

Have a look at this screenshot of my blog, for instance:

There are individual articles, and the start/end of an article is determined by the author. With a wiki, a reader can re-edit to their heart's content; a blog is much more like an editorial page - and comments are akin to letters to the editor. The author of the blog retains ultimate control; he can choose to allow comments or not, and - like a newspaper - decide whether a given comment (or article) stays or goes.

With a wiki, you don't have full control over the content - and attempting to keep control will lead to "last one to edit wins" types of battles. A wiki is most useful when you want to create a community accessible site, where constructive criticism is encouraged. A blog is far more useful for getting your specific message out, without changes being made by someone else. Sure, other bloggers can make comparison posts linking to yours (I do that all the time) - but the author still retains complete control over the content - and ultimately, over the message.

There's another very large difference as well. A wiki is much more like a "traditional" website than a blog is. Once a page is created on a Wiki, it's just there (unless, it's deleted, just as with any other site). A blog is much more ephemeral. Typically, the main blog page will show the last N items or the last N days worth of items. Sure, everything is accessible via the archives or via search - but it's not just there. The top page of a Wiki, with the items it points to, is a (relative) constant. The top page of a blog changes with every posting. Thus, a Wiki is better for information that needs to be "sticky" - a blog is much more akin to the morning newspaper. Fresh, but changing.

So, getting back to the comparison - under which circumstances do you want a wiki, and under which do you want a blog? If you want to encourage input from a community, a wiki is a good tool for that - however, you need to be aware of the limitations. Most people are uncomfortable writing html, and many people will be uncomfortable using wiki markup (most wikis support a simplified markup scheme). Given that, you are going to get feedback from a limited subset of the total readership. This subset will be even smaller if you aren't targeting a technical audience. If you want to get a personal voice "out there" talking about your products and services, blogs are the way to go. A caveat here though - a blog is only useful if the author(s) post regularly on topics of interest to the target audience. It's very easy to start a blog - it's much more difficult to sustain one.

In many cases, you are going to want to use wikis for some circumstances, and blogs for others. Either way, commitment is very important. Blogs need regular postings - wikis need maintenance and pruning. If you plan to use either or both, you need to walk into the venture knowing full well that a decent sized time commitment is necessary.

 Share Tweet This

smalltalk

Smalltalk Interest

October 12, 2004 11:23:42.207

 Share Tweet This

sports

How hot is the Yankees/Sox rivalry?

October 12, 2004 11:40:43.409

Looks like the Yankees/Red Sox series transcends even politics:

"We all want the same things. We want our country to be respected in the world, we want good jobs, and we all want to beat the New York Yankees!"

Ironically, this was said by Kerry in Ohio - and the Yankees AAA farm team is based in Columbus. Heh.

 Share Tweet This

sports

Losing Focus...

October 12, 2004 17:11:07.188

I have to admit - with only 3 hours (as I write this) to go before the start of game 1 of the ALCS between the Yanks and Sox, I'm losing my ability to focus on anything else. Work, politics, other news? Blah, who cares. Bring on game 1! Another funny thing related to my earlier post about this rivalry making it into politics - Kerry mentioned the series again today. The hype for this is getting to be bigger than Super Bowl level...

 Share Tweet This

examples

Parsing Windows.h in VW

October 12, 2004 18:04:45.860

Cincom Smalltalk support - Dave Wallen, specifically - has provided an answer to a fairly sticky problem some CST developers on Windows have - dealing with Windows API functions via the windows.h header file. There are a few problems that the DLLCC parser has with it - here's a solution with some instructions:

I played around with getting windows.h to parse. Only a few #defines were necessary in advance, and the thing now parses. The file is uploaded, but here are its contents anyway. Beware that once the parsing was completed, I was able to generate methods, but it took at least an hour on a PIII 500. I set GrowthReg. Upper Bound to 100MB, and it used it all. Also, I did not select any "macro"s for methods. I'm not sure if it works or not, but it would take forever, so I disabled the macros section. All the other sections did receive methods.

This file works on an installation with MSVC 2003. Not sure about other versions.


/*-------------------------------
 *  CincomWindows.h
 *-------------------------------
   This file was successfully parsed by VW 7.2.1 under the following conditions.
   1. Create a directory, called Include, with two subdirectories, called
      C_include and Win_include. 
   2. Copy this file to Include.
   3. Copy the entire \Microsoft Visual Studio .NET 2003\Vc7\include directory
      to C_include.
   4. Copy the entire \Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include
      to Win_include.
   5. In the Builder, enter these three directories as the include directories,
      C_include, then Win_include, then Include.
   6. In the Builder, enter this file as the only include file (CincomWindows.h).
   7. Click Parse Files, and the files are parsed.
  
   The following files were parsed, and no errors were reported. As an aside,
   this list was generated by printing to Transcript, in the method
   CPreprocessor>>include. It won't compile without AdvancedTools loaded.

   ('basetsd.h' 'cderr.h' 'cguid.h' 'CincomWindows.h'
   'commdlg.h' 'ctype.h' 'dde.h' 'ddeml.h' 'dlgs.h' 'excpt.h' 'guiddef.h' 'imm.h'
   'lzexpand.h' 'mcx.h' 'mmsystem.h' 'msxml.h' 'nb30.h' 'oaidl.h' 'objbase.h'
   'objidl.h' 'ole2.h' 'oleauto.h' 'oleidl.h' 'poppack.h' 'propidl.h' 'prsht.h'
   'pshpack1.h' 'pshpack2.h' 'pshpack4.h' 'pshpack8.h' 'reason.h' 'rpc.h' 'rpcasync.h'
   'rpcdce.h' 'rpcdcep.h' 'rpcndr.h' 'rpcnsi.h' 'rpcnsip.h' 'rpcnterr.h' 'servprov.h'
   'shellapi.h' 'stdarg.h' 'stdlib.h' 'stralign.h' 'string.h' 'tvout.h' 'unknwn.h'
   'urlmon.h' 'winbase.h' 'wincon.h' 'wincrypt.h' 'windef.h' 'windows.h' 'winefs.h'
   'winerror.h' 'wingdi.h' 'winioctl.h' 'winnetwk.h' 'winnls.h' 'winnt.h' 'winperf.h'
   'winreg.h' 'winscard.h' 'winsmcrd.h' 'winsock.h' 'winspool.h' 'winsvc.h'
   'winuser.h' 'winver.h' 'wtypes.h')

   Note: the RPC entry below is there to avoid a parsing error. The version may
         not match your installation, in which case you may need to change it to
         the value specified in the file rpcndr.h.
*/


#define WINVER 0x0500
#define _WIN32
#define NOWINRES
#define _M_IX86
#define __declspec(dllexport)
#define __RPCNDR_H_VERSION__ 475

#include "windows.h" 

So there you go. Your mileage may vary on other versions of windows.h from other revs of the OS, but the above should give you a headstart on how to proceed.

 Share Tweet This

sports

Did I say cardiac?

October 13, 2004 0:15:06.638

Now that's what postseason baseball is supposed to look like. It was like watching two completely different games. The Yankees jumped all over Schilling in the first 3 innings, scoring 6 runs. I was wondering what the announcers were smoking at that point - they kept wondering what was wrong with Schilling - even though we knew about his ankle injury, and even though he repeatedly bent down to retie the shoelace on that foot. He was clearly in pain - you could tell by the way he drove off his back leg, you could tell by the way he kept checking the foot - and you could tell by the lack of velocity and movement on the ball.

The other thing that kept the game interesting at that point was Mussina - for 6 1/3 innings, he had a perfect game going. Then suddenly, Bellhorn got a double. Things went downhill quickly for Mussina - 2 runs scored, and with two men on, out he went, replaced by Sturtze. This is the point where I started to get nervous - and Varitek's 3 run shot didn't help calm my nerves. At least the inning finally ended, with the score 8-5. That was the start of the "second game" - we had 6 innings of laugher with a near perfect game, followed by 3 innings of nail biting.

In the 7th, the Yankees brought in Gordon, the set up guy for Rivera. Now, I'm sure that Torre didn't want to use Rivera - he had just returned from a family tragedy - he only got to the stadium in the 3rd inning. Gordon got an out quickly, but then the trouble started. Two guys got on - this is the point where I was wondering why Gordon was still in - and Ortiz was up. Ortiz has power, but he's not the fastest guy on the planet. He hits a triple, making the game 8-7. This is where I had to run out for Tums.... it just looked bad.

Thankfully, Rivera came in and shut things down. Bottom of the 8th - another Red Sox moment. They have Timlin pitching, the set up guy. One out, and the Yankees get two straight hits - A-Rod and Sheffield get on. Matsui pops out (he had a great night though - 5 RBI's). Bernie Williams comes up. Here's the Red Sox moment - two on, Foulke warming up - and Timlin still in. Williams comes through with a double, and the score goes to 10-7 - which is great, because I can finally breathe again. One more chance for the Sox - against Rivera

The Sox insist on making it interesting. With one out, Varitek and Cabrera get on. Bill Mueller comes up - and this guy is no slouch. The tying run is up, and there's only one out. He hits a shot - foul, thank goodness. Then salvation - a roller back to Rivera, and we have a double play. The game ends, with NY on top. What a roller coaster!

Now, this leaves some interesting things for the next few games. Schilling - his ankle is not good. Based on how he looked, I think the Sox would have been better off starting Pedro, following with Wakefield. Sure, the yanks scored two runs off him tonight before the 5 run Red Sox rally - but last year in the ALCS, he utterly baffled them. That would have rested Schilling until game three, which will be in Boston. If they didn't know his ankle was that bad, they simply weren't paying attention. All good for me though - he threw a lot of pitches, and the Yankees are up 1-0. Bring on Martinez - I like the Yankees chances.

 Share Tweet This

marketing

Scoble says - tell me why our products suck

October 13, 2004 7:49:07.711

Scoble wants to know why people think Microsoft products suck (see the linked article - it is his question :) ). Well. I'm sure everyone remembers just how fond I am of MS Word. Just follow the link - I don't feel like going off on another rant about the wonders of stupidly smart software. I will say this as a general comment - ship these things with the (supposedly helpful) features off. I can enable things like dancing menus by myself if I'm feeling like being disabled, thanks.

The primary issue has to be security though. To figure out just how bad this is, all you need is a PC running any Microsoft client OS and a child who uses that machine regularly. You end up having to clean off various pieces of spyware on a regular basis - whether you have a firewall installed or not. And no, SP2 for XP doesn't help - the so called security we all held our breath for is fundamentally broken. I'd actually disagree with the author of that piece in one important respect - it's actually worse than nothing. With nothing, you might realize that you need a firewall. With SP2's badly implemented firewall, you probably won't.

The basic problem for MS is a nasty legacy issue. Everything they've done over the last 15 years placed individual and group productivity ahead of security - which is why every OS up to XP shipped with a variety of services actively listening. It was obvious around 1998 or so that this was a really bad idea - and yet MS kept plowing straight ahead, shipping completely vulnerable products for years. I've seen the results - you've seen the results. Friends and associates who beg you to help them with their PC problems, attacks that come swarming at you the instant you go online - the poor decisions made from the mid 90's forward will haunt us for years given the slow update cycle that people live on.

Bottom line - we are in the market for a new PC. The top of my list is going to be an Apple product, because I'm tired of living in the insecurity swamp that MS has created. SP2 was a half-assed response to the problem. If they want to be taken seriously, they are going to have to start being serious - which means shutting up about the wonders of Tablet PC's and paying attention to fundamentals. Nifty writing recognition doesn't impress me when so many PC's are 0wned...

 Share Tweet This

management

Re: Interesting quote

October 13, 2004 14:37:13.280

Via Rob Fahrni I ran across this at mini-microsoft:

"What rarely rarely works is #3: people and product. That company succeeded because of their unique development environment and personalities. Now that environment is gone and they are forced to develop the Microsoft Way. They've been blue bagded. And slowly the greatness that was their product has the life drained out of it and it becomes less and less relevant (e.g., Great Plains). These acquisitions are where we should have been spending money to have great partnerships and not blow a bunch of cash and fritter away a product just to feel we have a market segment covered." -

I don't think this is an MS specific problem. Look at the rapid invisibility of Rational's product line, for instance. When larger entities buy smaller ones, they tend to smother them - the corporate culture of the buyer quite often doesn't 'fit' very well on top of the people who ran the product at the smaller outfit. I recall reading an article in Business Week (a long time ago now) about how many mergers just don't work out - and it's for reasons like this.

 Share Tweet This

sports

Yankees up 2-0

October 13, 2004 23:49:03.751

Lieber, against all expectations, out-pitched Martinez. He went nearly 8 innings and allowed one run (and that happened with Gordon in). Meanwhile, Martinez lasted 6 and gave up 3 - which was a good outing, but not good enough this time. The series now goes to Boston with the Yankees in a great position - and with Martinez hearing "Who's your daddy?" echoing in his ears :)

 Share Tweet This

open source

Now comes the hard part

October 14, 2004 9:27:37.140

Jonathan Schwartz points to some of the recent successes of OpenOffice and StarOffice - having the EU formally recommend it is good for Open Office, and good for competition - heck, maybe MS will wake up and fix some of the lingering annoyances in Word. The hard part is still ahead though - there are lots of shops that have built a large amount of MS Office specific support into their systems - in particular, replacing things like Excel will be very difficult due to the macro intensive systems that are out there. For people getting started, the choice looks pretty clear - Office is expensive - and to my mind, irritating. Open Office isn't much less irritating, but it's free. Things are dicier in the large user community though...

 Share Tweet This

development

Did anyone say Corba?

October 14, 2004 9:28:52.777

Mark Baker points to more evidence of creeping complexity (shades of the OMG spec-a-day approach) from the WS_* crowd. Web Services started out looking lightweight. Lately, it looks like a ton of bricks sitting on top of a sea of lard...

 Share Tweet This

travel

On the road again

October 14, 2004 9:31:43.203

I'm off to Raleigh-Durham this morning, giving the "what's new with Cincom Smalltalk" speech to a customer we haven't visited in awhile. I think they'll be pleasantly surprised at all the work we've been doing - they've been in "heads down" development for quite some time. We'll see how it goes.

 Share Tweet This

cst

Store for Sybase

October 15, 2004 11:53:39.825

The Cincom Smalltalk community comes through again - there's an implementation of Store for Sybase out there now. I ran across this on comp.lang.smalltalk

StoreSybase adds Sybase support to Store. It is tested with VWNC 7.2.1, Linux (FreeBSD 4.8) and Sybase 11.9.2. It uses a CTLib connection to Sybase. It may be downloaded from:

ftp://ftp.cincomsmalltalk.com/pub/goodies/StoreSybase/StoreSybase.tgz

Be sure to read README.syb before installing.

ERRATA:

  1. If you want user/group management, install it when asked during database table installation. Installing it later doesn't work.
  2. Despite what the User/Group Privileges Tool may lead you to believe, checks for read permission are not implemented. Everyone has read permission on everything.

Enjoy!
Carl Mascott
cmascott_del_t...@att.net
If replying by e-mail please correct my address.

 Share Tweet This

BottomFeeder

BottomFeeder 3.7 is out

October 15, 2004 13:59:23.815

I've just released BottomFeeder 3.7. This release includes WithStyle instead of Twoflower; the html display is much, much better. Bf now supports CSS, and a number of example stylesheets have been included. Documentation now ships with the download, and is thus accessible offline - something a number of people asked for. If you have an existing installation, you should be able to just grab the appropriate baseapp-*.zip file, and replace the image (or exe), VM. You should delete all the files in the 'app' directory as well. I'd like to thank Michael Lucas-Smith - without his help, I'd have never been able to get NetResources and WithStyle working for me. I'd also like to thank Troy Brumley, Travis Griggs, Mark Derricutt, and Eric Winger for beta testing the in development versions of this release; some of the early releases were pretty raw, and they were all a very helpful. Rich Demers did his usual great job with the docs; any bugs or defects you find are all mine. Enjoy.

 Share Tweet This

tv

Tru out

October 15, 2004 14:22:40.740

I should never express the fact that I like a show; every time I do, this happens. Looks like my friend Mike was right; it's toast...

 Share Tweet This

development

VisualStudio finds its way to the 1970's

October 15, 2004 16:23:37.867

Oh look - VS will have edit and continue next year. Good job making it into the 70's guys :)

 Share Tweet This

sports

Boston panics

October 15, 2004 16:54:10.083

ESPN documents the latest Sox troubles:

Perhaps it's time for the Red Sox to sue George Steinbrenner over missing child support payments for Pedro Martinez because at the moment, the court system appears to be Boston's only viable way of beating the Yankees. Here's the situation after Wednesday's 3-1 loss, perhaps the most dire Boston has ever faced that didn't involve Ben Affleck

We'll see how tonight goes (if it doesn't rain). The Yankees are in a commanding position; a win tonight will pretty much put it away.

 Share Tweet This
-->