"I have a mind like a steel... uh... thingy." Patrick Logan's weblog.

Search This Blog

Monday, August 25, 2008

"I'm not dead yet!" - the one-off data center

Dion Hinchcliffe writes...

The announcement this week of the launch of Amazon’s Elastic Block Store (EBS) has added another vital piece to the overall cloud computing picture. The EBS announcement is particularly significant since it takes the gloves off when it comes to meeting the demanding needs of enterprise class computing requirements. The Elastic Block Store finally makes it practical, cost effective, and relatively easy to put traditional storage and processing of very large amounts of data in the cloud from a credible vendor.


[clang]
Bring out your dead!
[clang]
Bring out...
[rewr!]
...your dead!
[rewr!]
[clang]
Bring out your dead!
CUSTOMER:
Here's one.
CART MASTER:
Ninepence.
DEAD PERSON:
I'm not dead!
CART MASTER:
What?
CUSTOMER:
Nothing. Here's your ninepence.
DEAD PERSON:
I'm not dead!
CART MASTER:
'Ere. He says he's not dead!
CUSTOMER:
Yes, he is.
DEAD PERSON:
I'm not!
CART MASTER:
He isn't?
CUSTOMER:
Well, he will be soon. He's very ill.
DEAD PERSON:
I'm getting better!
CUSTOMER:
No, you're not. You'll be stone dead in a moment.
CART MASTER:
Oh, I can't take him like that. It's against regulations.
DEAD PERSON:
I don't want to go on the cart!
CUSTOMER:
Oh, don't be such a baby.
CART MASTER:
I can't take him.
DEAD PERSON:
I feel fine!
CUSTOMER:
Well, do us a favour.
CART MASTER:
I can't.
CUSTOMER:
Well, can you hang around a couple of minutes? He won't be long.

Sunday, August 24, 2008

Portland Confidential

Phil Stanford is a local columnist for the Portland Tribune. He keeps a pretty good tab on the local government, their past and present shenanigans, especially their involvement with the seedier side of Portland over the years.

See: "Did a city ‘hit team’ lower the boom on Cindy’s?"

He turned a collection of his Portland Confidential columns into an entertaining book, whether you are from Portland or just enjoy reading about the real underbellies of society that many folks would just assume you ignore.

See: "Portland Confidential"

What happens when all of Old Town becomes New? Currently it appears the underbelly is headed about 80 blocks east of downtown and beyond. Is that any better? I guess for the real estate developers downtown, it's out of sight and far away for a while. Does a healthy city need something of an underbelly?

I remember moving to Portland 20 years ago and all that is hip in the Pearl District and what's fast becoming hip in Old Town was really very rundown. Still in spite of all the improvements every block displaces more people living on the edge with few options. It's easy to say getting rid of this one adult bookstore is an improvement, but most likely, as Stanford lays it out, the builders and real estate developers are the low-lying movers and shakers in city politics, and they are on a mission that considers little more than how to keep their gravy train flowing. Another former "house of prostitution" closer to Powells' City of Books, if you know where that is, is about to become a McMenamin's hotel. Well, that could provide an entertaining motif.

One group of folks my family, friends, and I have helped with every now and then for the last 15 years or so is Potluck In The Park. David Utzinger works his butt off every week making sure everyone who can get downtown can get a good meal; every Sunday. No one knows the last time he took a week off, looking back well over a decade. Plus they throw a party every Christmas day, and a huge barbecue every summer. There's no better group I know of that's just bare-bones, keep people fed and give them a place to socialize every week of the year. Most people in this kind of need aren't homeless, but if Portland continues revitalizing its Old Town, and similar blocks, there will most likely be more people on the street who currently at least have a roof.

Oh yeah, the small O'Bryant Square, the original "Paranoid Park", they've barely been able to hold on to for their Sunday dinners is also up for "revitalization" and PLitP has been trying to maintain some visibility in the "visioning" process. PLitP had already been moved out of the nicer park blocks several years ago. There were no problems, it's just such a large, weekly gathering of so many people in need, is just a bit "unseemly" for many people.

Friday, August 22, 2008

TriSano

An even better idea...

TriSano.org

Tri is a prefix meaning three. Tri represents the collaboration between local, state and federal entities. It depicts the primary disciplines of public health: epidemiology, biostatistics and health services. Tri also refers to the epidemiological triad of host, agent, environment.

Sano is an adjective meaning promoting good health. Our goal for the application and the community is to help protect the health of people throughout the world.

This is Mike "Fuzzy" Herrick's thing. Good deal.
The TriSano™ Eye represents a zooming (micro/macro) view on disease detection and prevention.

OK, I was good until being told this is an eye. That's kind of creepy. Isn't it a leaf?

Mike fills in the details about the logo. I really like the logo, graphically. I just need some time to adjust to it being an eye, not a leaf. Oh.

Open Quote

An interesting idea...

OpenQuote is an open source, web based, insurance quotation solution which allows quotes to be produced, and products maintained, over the web. Any number of products can be configured to support any line of business via externalised product definitions and rules.

Thursday, August 21, 2008

Groovy;

The same three of us have been programming in groovy in ernest for the first time. We've each dinked around a bit at one time or another previously.

Overall I like it. Especially closures and the syntax for block closures when the receiver's last argument is a closure. The spectrum from programming nearly all-like-java on one end of groovy style, and programming nearly all-like-lisp-and-smalltalk at the other end of groovy style flows more smoothly than I initially gave groovy's designers credit for a few years ago.

One quirk - bit me for a dozen minutes or so, the oddity/convenience that groovy wants the keys of a map to be strings. What bit me was the expression...

{ foo: bar}
where foo and bar are variables.

The "convenience" groovy provides is the interpretation of foo as a string, i.e. "foo". The value for the pair is still the result of evaluating bar. So you end up with the pair (if bar is the integer 1)... "foo" : 1

If foo has the value 3 and you'd like the pair to be... 3 : 1 then you have to put foo in parentheses to force evaluation...

{ (foo): bar}
That's the closest thing to a true quirk I've encountered. But for parameter lists, etc. the convenience does pay off in neatness. The result is a very smalltalk-ish keyword message send, and combined with the block closure syntax, is a pleasant and familiar style for smalltalk-lovers. (e.g. coding a seaside-ish web framework using paul-graham-ish closures rather than continuations would be very fitting in groovy.)

Meanwhile the other affect groovy has had is that now when I edit java code, I'm forever not using semicolons at the end of statements.

Oh, and the tools still really suck.

git out

Three of us have been using git with a shared (git) repository on a server. We've been pushing and pulling to/from the shared repository as opposed to peer-to-peer just as a matter of convenience and familiarity.

I have to say I like the concept of distibuted version control, or more to the point: versioning locally, pushing, and pulling. This is the first I've used such a tool. Mostly I've been using svn for the last few years. We've not tried the svn/git combo pack, just because we did not need or want to use svn in this case.

I also have to say after a couple two three weeks of using git, I am not crazy about git per se. Aside from just the learning adjustment that this is not svn and this is distributed version control, the adjustment and learning about what I would call the "quirks" of git have been somewhat discouraging.

I'd compare some of the cryptic language of git to some of the cryptic error messages a programmer new to erlang sees, or haskell / complexly type inferred languages. Combined with a vocabulary only a kernel linux hacker could appreciate, I suppose. I don't think this language is due to the concepts of distributed version control per se, rather to git's implementation and implementors.

And whatknot.

So git seems to be winning. I've not tried mercurial or other distributed repositories. Is git so good? Or just the one that's winning for reasons other than usability? And stuff.

My "Handling" Fantastic Contraption

I just love the trial and error that goes into making these contraptions.

My latest... "Stand Tall" is a solution for the "Handling" scenario.

Wednesday, August 20, 2008

"The most amazingly lifelike CGI"

Via Shawn Levey, movie critic for The Oregonian...

"The most amazingly lifelike CGI"

Yeah, seems kinda good.

details

Magic Pen

Another great game my son pointed me to after showing him Fantastic Contraption...

Magic Pen

Tuesday, August 19, 2008

Concurrent Programming with Erlang / OTP

Manning has a draft PDF available of a new Erlang book, with an emphasis on OTP, the platform/framework/library/what-cha-ma-call-it that helps in the development of robust, concurrent, distributed systems. I bought it, yes, I did. Co-authored by Martin Logan - no relation that I know of, and no damn discount on the book either!! (Well, I didn't ask. :-)

There are only a couple of draft chapters currently in the draft. But this should be a good addition to the growing supply of help getting going with Erlang.

I think the Seaside folks have made this "the year of Smalltalk" but there's an argument to be made for this being "the year of Erlang" as well.

Awash

Here's my resulting design for Awash I am pleased with, and fascinated by...

http://FantasticContraption.com/?designId=633065

This scenario was fun to evolve -- I settled on the approach fairly quickly, it wasn't a really difficult configuration, but getting the angles and positions just right took a few iterations. The to see the creation finally make it to the target - it is alive!

This would be a good scenario to see which design takes the least time. Every time I run mine there are a couple seconds when I lose all hope of success.

Monday, August 18, 2008

Between You and the Cloud

Damien Katz wonders...

"Cloud computing is great. Right up until you lose your connection, then what?"

http://damienkatz.net/2008/08/quick-blog-entry.html

Then you wish your software was a little more aware of the difference
between you and your cloud.

As programmers, a lot of us toss around the
http://en.wikipedia.org/wiki/Fallacies_of_Distributed_Computing but
then expect the network to always be there anyway.

I absolutely believe most people and businesses should be using cloud
computing for nearly everything... soon. But most of the software has
to catch up to cloud style, and cloud style has to evolve toward more
awareness of the sometimes-impassable distance between the cloud and
the cloud user.

http://www.thefreedictionary.com/impassable

That condition will not change anytime soon, so software has to become
more aware of the issue.

Silverspoon

Let's see. The open source community is at fault for not getting
Silverspoon running on Linux?

http://blogs.zdnet.com/perlow/?p=9214&tag=nl.e539

The article begs for sympathy...

"Now, one could get all huffy and puffy and blame Microsoft on this
state of affairs, but in this case, I have to lay this problem
strictly at the feet of the Open Source community. I know for a fact
that De Icaza and Microsoft have pretty much a completely open
relationship, they give him free flowing access to all the .NET API
documentation and their developers, he spends a good amount of time on
the Microsoft campus in Redmond, and Novell and Microsoft are
committed to both making .NET run on Linux. However, Novell and
Microsoft can only do so much to have the community contribute efforts
to keep .NET development at pace on Linux with Windows."

Yeah, right. The most successful software company on the planet could
fund the work if they wanted to. Maybe Linux is not a priority
Microsoft, I can understand that. Maybe Novell has enough troubles of
their own to get Microsoft's software running on Linux. I can
understand that.

Adobe has Flash / Flex / AIR running just fine on Linux. This is not a
technical problem. It's an organizational / business problem.

Maybe Linux does not need Silverspoon. Isn't open source a meritocracy
for software?

Sunday, August 17, 2008

Fantastic Contraption

Fantastic Contraption is quickly becoming one of my most favorite
games since the Pinball Construction Set on the Apple II and the Mac
512...

http://www.onflex.org/ted/2008/08/fantasticcontraptioncom.php

After several levels I became stuck on a theme of using a lot of wheels, multiple vehicles, and not attaching the goal object. This one is my current favorite...

"More Rails"

Free for basic play. $10 to save and share, building scenarios, etc.

There are some amazing contraptions built by others. I'll link to some of them later, like the "thrower" - just great.

Someone built this "Orbital Launch" contraption which is just out of nowhere... first the goal object gets stuck in this pocket and you wonder will it ever get out. Then after a few revolutions the object and a chain attached to it are launched... but apparently *away* from the target. The object flies out of view for what seems like forever... only to drop down from above.

The gods must be crazy. It makes no sense.

Saturday, August 16, 2008

All My Friends Are Bopping The Blues

It must be going 'round.

-Carl Perkins

Thursday, August 14, 2008

Go Gay

Or at least go right alongside a gay friend or family member.

This will be just the second presidential election since 1984 that Oregon will have _no_ anti-gay ballot measure. The 9th circuit turned down the anti-gay petitions for lack of sufficient signatures and lack of evidence the counting method was improper.

I've proudly voted pro-gay against each measure since moving to Oregon 20 years ago. Mostly these have lost, more narrowly than I can believe in this day and age. The last, worst one to pass was 2004's anti-marriage measure. The state legislature took some steps toward civil liberties since then. These current petitions were aimed at shutting down those modest gains.

Sigh. The road away from ignorance is a long hard one. So to speak.

Here's to all my gay male and female friends who've made my life better over the years. I hope we can do much more for you sooner rather than later and get far beyond fear and hate.

Feeling Tweety

I'm stuck inside of Mobile with the Memphis blues again.

(I'm not on the Twitter. But needed to get that out of my system.)

Tuesday, August 12, 2008

Go See Big Picture

The blog Big Picture is high on my reading list because it has almost
always fascinating, well, big pictures. Not always beautiful, but
always big and interesting.

http://www.boston.com/bigpicture/2008/08/war_in_south_ossetia.html

Friday, August 08, 2008

Clearwire WiMAX

Clearwire is coming. My father-in-law has it in Seattle. He's not the
most demanding user, but it seems to work fine for him using
"pre-WiMAX". I'd be really happy to pick up WiMAX anywhere in the
city, inside or outside, at that price.

"Clearwire goes on to say that it's in a "great position" to launch in
Portland by year's end, and that Clearwire is using the nascent
Portland network to try out new mobile WiMAX technologies on a variety
of laptop brands.

Portland, and its suburbs, are slated to be among the first regions to
get Clearwire's "true" WiMAX service -- which employs approved WiMAX
standards.The company already serves other parts of the West with a
wireless technology loosely called "pre-WiMAX."

Clearwire hopes to make WiMAX an alternative to DSL and cable, as well
as an affordable option to connect on the go. Rates currently start
around $38 a month (though Clearwire offers introductory specials) for
downloads of approximately 1.5 megabits per second.

Oregon cities that Clearwire now serves include Bend, Medford,
Roseburg and Eugene."

http://blog.oregonlive.com/siliconforest/2008/08/clearwire_inching_closer_to_po.html

Slowing the Net to the Speed of Print

This is just a hilarious announcement from the Philadelphia Inquirer,
via James Robertson...

"we'll make the decision to press the button on the online packages
only when readers are able to pick up The Inquirer on their doorstep
or on the newsstand"

http://www.cincomsmalltalk.com/blog/blogView?showComments=true&printTitle=Its_1985_In_Philadelphia&entry=3395641948

It reads like a parody.

Thursday, August 07, 2008

Here and Mao

From Naomi Klein...

"When Beijing was awarded the games seven years ago, the theory was
that international scrutiny would force China's government to grant
more rights and freedom to its people. Instead, the Olympics have
opened up a backdoor for the regime to massively upgrade its systems
of population control and repression."

http://www.huffingtonpost.com/naomi-klein/the-olympics-unveiling-po_b_117403.html

Whatever Happened to Patterns?

There's a discussion on the erlang-questions list about "design
patterns" and what those might be for erlang. In the midst of this
thread the following statement popped up...

"The OTP is a collection of GoF-style patterns for Erlang."

And I had a reaction to the current state of patterns, generally.

I think this list, as well as the software community as a whole, has
lost sight of the original intent of the "patterns movement".

The original intent of a "pattern" is the format of the information,
more than the information per se.

The format should be written in (one of several) pattern styles. The
overall presentation of some set of patterns should form a "patterns
language".

So to say the "OTP is a collection of patterns" is true only in the
worst definition of "pattern".

A really useful pattern language for OTP would guide the programmer
from some initial kind of problem through the application of some
patterns that address that problem and associated forces that would
direct the programmer through a set of choices and partial solutions,
toward an overall solution.

And stuff.

Really good patterns take a lot of effort. This alone explains the
current state of patterns, generally.

Tuesday, August 05, 2008

Science Please

From a comment on the great Random Roles interview with Teri Garr, btw
one of my favorite actresses...

"So yeah Garr is cool, MS sucks-lets hope our next President likes
science and curing diseases"

http://www.avclub.com/content/feature/random_roles_teri_garr/2

Friday, August 01, 2008

Linux Plumbers Conference

If I were more of a Linux Plumber by trade I'd be interested in this...

Linux Plumbers Conference
Portland, Oregon
September 17-19

On the Portland State University campus, downtown.

Portland is typically as beautiful in September as it is now in
August. Just a couple two three degrees cooler and equally sunny.

Actually it's cold and cloudy today. That'll be gone in a day or two.

Oh, and there Linux as well.

http://linuxplumbersconf.org/

Thursday, July 31, 2008

Drive-Ins

I was lucky enough to spend my teen years in the 1970s. The drive-in
was still *the* place to be on a Saturday night. Friday nights were
for the pizza parlor after the football or basketball game. Many of my
memories of movies in the 70s are also memories of what was happening
at the drive-in that night. Sitting on top of the car. Standing behind
the food stand for an entire movie.

My kids have never been to a drive-in. Although I've driven past the
one in Newberg a hundred times at least, I think my kids are now too
old for me to drag them along. It wouldn't be the same. Going to the
drive-in with my parents as a kid in the mid-60s meant watching the
first movie then climbing in "the way, way back" (which is what we
called the back of the station wagon) and falling asleep.

More things about movies my kids know nothing about: the cartoon
before the show; the _intermission_ in the middle of the movie; the
_second_ movie (and third, at least at drive-in shows).

One of not many drive-ins left, in Newberg, Oregon, near my home in Portland...

The Dixie Drive-In I attended as a kid in the 1960s in Dayton, Ohio...

Here's where I saw Star Wars Episode 3 A New Hope the first week out in, what, 1976? In Wilmington, Ohio... obviously it's not a drive-in. I think it came out in May?

More Wii Sports

By the way the new Motion Plus 3D extension for the wiimote is
supposed to arrive with more sports games, called "Sports Resort".
Including throwing Frisbees, erm, "discs". I know.

http://www.nintendoworldreport.com/newsArt.cfm?artid=16410

James Robertson's report on wii sales raking in all kinds of money on
numbers of units that far exceed the others. Meanwhile the others
still sell their hardware at a loss.

http://www.cincomsmalltalk.com/blog/blogView?showComments=true&printTitle=Liking_the_Wii&entry=3394944679

Symbols

Funny how with all the complicated foo around closure in Java, the
language does not yet even have a convenient notation for symbols.
(Note: enums are not convenient.)

http://www.cincomsmalltalk.com/blog/blogView?showComments=true&printTitle=Smalltalk_Daily_7/31/08:_Symbols&entry=3394950161

Eh, Commerce?

All this search, ads, and other foo about Microsoft, Yahoo, and
Google. Who's gearing up to compete with Amazon, again?

<<Amazon has officially unveiled its answer to PayPal.

Yesterday, the etail giant quietly launched Checkout by Amazon - not
to be confused with Google Checkout, Google's answer to PayPal.

With this new payment service, you can buy stuff from third-party net
merchants using your existing Amazon account, already populated with
your credit card number and shipping details. Of course, third party
net merchants must first agree to use the service. But you can be sure
more than a few will jump at the prospect of pitching Amazon's 81
million registered customers.

What's more, Amazon is offering up other pieces of its oh-so-familiar
online store. Third-party partners can add Amazon-style "1-Click"
ordering buttons, for instance, or even up-sell you just like Amazon
does.

So, the world's largest online retailer is hoping to clone itself -
over and over again. "Customers will be coming through an experience
that is really similar to Amazon's," vice president of Amazon Payments
Mark Stabingas told The New York Times. "People will like the
familiarity and the comfort associated with that.">>

http://www.theregister.co.uk/2008/07/30/amazon_does_paypal/

Erlang Zeitgeist

What a difference a year or so makes. Erlang was popping up all over
at OSCON last week. Picking it up to solve some problems in a new or
revised system seems to be almost common place now.

"Delicious, in its former state, was a huge Perl application on top of
Apache and MySQL. Since then, its been completely recreated in a
tiered system with quite a bit of PHP and c++ with Erlang sprinkled
around in various places."

http://blog.socklabs.com/2008/07/delicious_is_gone_long_live_de/

Tuesday, July 29, 2008

Michael Nygard on the recent Amazon S3 outage

"It's a new way of doing business, and some of the most innovative
software development, applied at the largest scales. Bugs will creep
in.

In fact, I'd expect to find more cases of odd emergent behavior at large scale.

Second, the back of my envelope still shows S3 at 99.94% availability
for the year. That's better than most data center providers. It's
certainly better than most corporate IT departments do."

http://www.michaelnygard.com/blog/2008/07/s3_outage_report_and_perspecti.html

Bush League

"We learned yesterday that the Department of Justice became an
extension of the White House's political machine. Under the regime of
George W. Bush, political foes have been scrubbed from the department;
accomplished, independent civil servants were fired and incompetent,
servile GOP functionaries replaced them. It was comic corruption, as
when Monica Goodling, senior liaison to the White House, asked DOJ job
applicants, "What is it about George W. Bush that makes you want to
serve him?" and "Why are you a Republican?" When one applicant
expressed admiration of the Secretary of State, Goodling frowned: "But
she's pro-choice." Goodling even committed crimes, as when she sacked
Assistant U.S. Attorney Leslie A. Hagen because of a rumor Hagen was
gay.

...In America, such deep corruption should create a huge wave of
outrage. Instead, it's not even getting much covered. A Google News
search yields just 637 results on the name "Monica Goodling." Do a
search on "gas prices" and you get 80,000. Not a fair comparison?
How about the name of Tim Donaghy, the corrupt NBA ref who was
sentenced to prison yesterday--he gets 2,500, four times as many as
Goodling. Corruption in the DOJ is just not much of a story...

Ted Stevens, long-serving Republican Senator from Alaska, was indicted
on seven charges of corruption this morning. Shrugs all around?

...Based on the early internet reaction, the Stevens news is getting a
lot of play. But Stevens' corruption *is* usual, ironically.
Throughout American history, there have always been pols on the take."

http://www.blueoregon.com/2008/07/naively-cynical.html

Monday, July 28, 2008

Use Cases and User Stories

InfoQ's got a post on whether projects should use Use Cases or User Stories...

http://www.infoq.com/news/2008/07/use-case-or-user-story

My position is why either/or?

Use Cases, in all their variety, tend to be larger descriptions of
existing or desired features. Within this larger context, the team
(developers, users, etc.) should try to break down features in many,
smaller units of work. This is usually what's meant by User Stories.

So, yeah, you need a larger context in which to understand desires, in
which to determine what the next best small units of work to focus on.

Sunday, July 27, 2008

Calling Names

I'd not heard of this before, but apparently some people don't like Erlang's "single assignment" semantics. What this means is a "variable" actually isn't. A variable becomes "bound" to a value via pattern matching. Once bound to a value, that same variable in that same lexical scope cannot be re-bound to some other value. Within that scope that variable must subsequently match successfully against the value it currently has.

What appears to be an "assignment" in Erlang is really just the simplest kind of pattern match. Below X10 is matched against foo(X) and since X10 is not yet bound, it becomes bound to the value of the function.

f(X) ->
  X10 = foo(X),
  X15 = fab(X10),
  X20 = bar(X15),
  baz(X20).
Some people are concerned this could lead to uncomfortably renumbering variables, say, when the function fab should be added in the function above.

I dunno. This seems contrived, or at least rare, or maybe machine-generated. If you just have to "re-number" a few variables, no big deal. If you have to renumber too many variables then you'd be better served by decomposing an overly long function that also suffers from inexpressive variable names.

The author of the post is apparently writing a ruby-ish language for the Erlang runtime. More power to you.

But there is a lot to be said for a simple, mostly functional language that wants you to keep functions short. When I am writing in an imperative, even object-oriented, language, I want my procedures to be short. And I want one variable to have one value. The code is more "tractable" when short, and variables don't vary.

Then the name becomes essentially a mnemonic for the value.

The overwhelming majority of programmers have only used languages with multiple assignment.
The overwhelming majority of programmers over my 25+ years of programming experience write procedures that are much too long, even when they are otherwise well-written. That's the first bad habit people seem to adopt, or never learned to avoid. I've worked with long, run-on procedures in every language I've encountered.

Lisp? Yes. Smalltalk? Yes. Pascal? Yes. Even these languages with their gifts for brevity cannot overpower the usual programmer's inaesthetics.

Understanding what many, small procedures do is always better than understanding what one or a few long, run-on procedures do. The payoff is there because you learn what you can put aside, and what you should pay attention to. On the other hand, long, run-on, convoluted noise is always with you. You never can put any of it aside - you have to revisit, remember, and ultimately revolt and/or refactor.

In an imperative language a variable should take multiple values only as part of an iterative statement. In the statement "for i = ..." the variable i should only be updated by this statement. Or in "while someCondition ..." the variable someCondition should be assigned an initial value before the while and it should be updated immediately before the while re-evaluates its decision to iterate again.

Write short functions. Use the shortest name that yet conveys the meaning or purpose of its value. Assign them once even if your language is imperative. Generally this will keep your stress level low, as well as the levels of those who pick up your code later.

Thursday, July 24, 2008

Best application for education

...Open Office

Ok, I don't know why that would be the winner of this award, but the even more ironic aspect of this (at the sourceforge awards tonight) was that Microsoft was the presenter of the award up on stage.

I'd had a couple beers at that point, but not enough to question the reality of the experience. And on the screen it read, I kid you not, "openoffice.org sponsored by microsoft".

Dang - and no camera with me.

Wednesday, July 23, 2008

BBC's Robin Hood

Hooked on it. Just going through the first season now from itunes.

I'd not heard of it previously, just happened on it in itunes.

Pronounced "JAY-son"

Why do people say "jay-SAHN"? OSCON speakers much have been coached --
everyone is doing it.

From wikipedia which is inerrant...

JSON (pronounced /ˈdʒeɪsɒn/, i.e., "Jason")

http://en.wikipedia.org/wiki/JSON

Question about Aquamacs

I'll toss this out here first...

How do people use Aquamacs? i.e. there is no command line invocation?

e.g. byte compiling a number of .el files in batch is done how? From
what I can see the most reasonable solution seems to be to maintain a
standard gnu emacs version compatible with Aquamacs to use as a batch
tool.

Really?

Thanks
Signed -- somewhat amazed at the state of emacs on macosx even windows
is almost better than

Tuesday, July 22, 2008

Maybe We Should Just Say "Good Tools"

Quotes from Ted Leung...

"One of the points that I've been trying to make since I've gotten
back in to the languages space is that a lot of what is happening in
languages now is unpausing the nuclear winter that Java imposed on the
programming language space. If you haven't been following this space
for a while, you'd believe that all this dynamic language stuff was
invented in the last 5 or 10 years or so."

"Maybe we should just say "good tools" instead of IDE, since a number
of people that I've talked to seem to think that in order to be an
IDE, the tool has to be huge, written in Java, and include feature for
generating reams of boiler plate code..."

http://www.sauria.com/blog/2008/07/20/ides-and-dynamic-languages/

Monday, July 21, 2008

XMPP Summit Indicator

The XMPP Summit apparently has a history of ~12 attendees and this
year is ~40 (and maybe growing? the room is nearly overflowing).

Maybe this is an indicator that XMPP is reaching the next level of
awareness? There's a good mix of experienced folks and the curious.

Friday, July 18, 2008

From the What's That Smell Dept.

From The Register...

"Researchers from Radboud University in Nijmegen revealed two weeks
ago they had cracked and cloned London's Oyster travelcard and the
Dutch public transportation travelcard, which is based on the same
RFID chip. Attackers can scan a card reading unit, collect the
cryptographic key that protects security and upload it to a laptop.
Details are then transferred to a blank card, which can be used for
free travel.

Around one billion of these cards have been sold worldwide. The card
is also widely used to gain access to government departments, schools
and hospitals around Britain."

http://www.theregister.co.uk/2008/07/18/university_can_publish_oyster_research/

OSCON and Portland

Here's just one reason why OSCON is in Portland each July...

http://www.wunderground.com/US/OR/Portland.html

Thursday, July 17, 2008

You're Welcome and You're Not

You're welcome to your ideas. Your welcome to express them in writing, orally, and via many means at your disposal.

But you're not welcome to shout them at the top of your lungs in an otherwise peacefully quiet town square. That's disturbing the peace. You've disturbed mine twice recently.

It's not like I haven't encountered the same message hundreds of times a year, nearly each year of my life. I wonder what's at stake for you to feel compelled to choose this means?

I appreciate you are passionate about your ideas. Maybe you would respect a similar passion for my ideas. I cannot presume it is my place to express that passion so intrusively, no matter what my ideas, no matter how passionate I may be.

And believe me: I am a Smug Lisp Weenie. I can be passionate.

Tuesday, July 15, 2008

Report cards are due

From The Register...

"Unless just about every technology company going has an "iPod
moment," then we're looking at a grim scenario where layoff reports
will become rather common. That's especially painful news for people
already being worked over by rising gas prices and painful mortgages.

We'll know just how bad these are for the technology sector, starting
today when Intel reports second quarter financial figures. Intel's
report will kick off three weeks of earnings reports - a journey
that's starting to look like a dive into the heart of darkness...

Worst of all, people are starting to try and understand Google's
business. Just wait and see what happens when Google really misses a
quarter, and everyone figures out that they have no idea how Google's
money machine works. That'll go over well."

http://www.theregister.co.uk/2008/07/15/tech_economy_woe/

There Goes The Neighborhood

"Nintendo this morning announced plans for a version of the
blockbuster "Grand Theft Auto" game franchise for the Nintendo DS
handheld game system. The hard-core game is atypical for a system that
has been built on more casual titles as "Nintendogs" and "Brain Age."
Dubbed "Grand Theft Auto: Chinatown Wars," the game will be available
this winter, the company says."

http://blog.seattlepi.nwsource.com/microsoft/archives/143556.asp?source=rss

Monday, July 14, 2008

PB & J

I hope the choice is not "protocol buffers" or "xml".

Most people probably do not need anachronistic protocols or even
binary data formats over the wire.

On the other hand, few of us need XML either.

Nintendo's early E3 surprise: Wii MotionPlus

Not sure what an "expected" surprise means, but cool...

"Nintendo this morning gave a sneak preview of one the announcements
it's expected to make at its briefing here Tuesday: The company says
the new accessory, called the Wii MotionPlus, attaches to the Wiimote,
"more quickly and accurately reflecting motions in a 3-D space."
Here's the news release. No word on pricing or availability. The
company is promising more details at its briefing."

http://blog.seattlepi.nwsource.com/microsoft/archives/143393.asp?source=rss

The game industry focused on graphics the way Intel focused on
instruction speed. Nintendo snuck up on the industry with controllers
as the significant innovation the way AMD snuck up on Intel with lower
power and multiple cores a few years ago.

Friday, July 11, 2008

Hard Where

Joe Gregorio wonders about hardware support for functional languages...

I've been thinking about this in the context of the Professionalization of Scripting Languages, does anyone know if any of the processor manufacturers are working on adding silicon support for activation records?
I know first-hand Intel has been searching for ways to spend transistors for at least a decade. There's been some looking at objects including closures, generally, and some consideration of Smalltalk, Lisp, etc. But I am not aware of specifically looking at stack vs. heap allocation of activation records.

On the other hand I have witnessed decades of considerations of hardware support for functional languages. In each case the problems seem to have been solved at least as well with general-purpose hardware combined with clever software at compile-time and run-time. Looking back at the history of hardware support for Lisp and Smalltalk, and OOP and functional programming generally, will turn up many research and production efforts that have not panned out in the long-run. However the economics may have changed assuming scripting languages will become as "professional" (!) as Joe predicts.

I've been paid well from time-to-time over 25 years to program with sophisticated dynamic languages. That today we're just now thought to be entering a "professional" stage is an indicator that the profession is missing some of it's own literature. So please consider the following. From my historical viewpoint as a veteran dynamic language applications programmer, and dynamic language implementation aficionado, I believe activation record solutions you seek have a rich history of solutions to continue from (so to speak), and they are almost all in software.

Scripting languages are direct descendants of what I would consider long-time "professional" languages such as Smalltalk, Common Lisp, and Scheme. Until recently I suppose there's been little motivation for Ruby/Python/Javascript language implementers to dive into the literature of _implementing_ their predecessors. I would recommend anyone serious about it to begin with "the original lambda papers". Not that these were the first on efficient dynamic languages, but they start from first principles and are easy to read.

From there I would recommend moving on to work published by Appel, et al. for Standard ML/New Jersey (SML/NJ). A starting point is the text book "Modern Compiler Implementation". But this should also include all the research done around compiling ML.

Along the same lines are all the years of work around compilers and run-times for Scheme. SML/NJ and Scheme have particularly interesting activation/closure needs because they are mostly functional, but do have side-effects, and they also have first-class continuations. Look up various work by Kranz, et al. at Yale (in particular for the Orbit compiler for "T", a dialect of Scheme); Dybvig, et al. at Indiana U.; Feeley at U. Montreal; and Clinger, et al. at U. Oregon and Northeastern.

And then include the publications about Smalltalk, Self, etc. implementations by Peter Deutsch, David Unger, Craig Chambers (U. of Washington), and Eliot Miranda among others. Generally reading through the years of OOPSLA proceedings, especially the earlier years, and the proceedings of the ACM Lisp and Functional Programing Conference will keep you busy for a while.

Efficient implementation of first-class activation records revolves around a few decisions. One is whether or not to use the hardware stack at all. Some efficient implementations use the stack and copy to/from the heap as needed. Others use the heap solely. Efficiency also becomes intertwined with interoperability with "C" and so-called "native code".

These choices have more to do with first-class continuations and languages like Smalltalk that promote activation records as first-class objects. If you go back and look at MIT Scheme and work by Guillermo Rozas, they paid a lot of attention to providing features like continuations and first-class top-level environments without _always_ paying the price.

The more common problem of allocating heap for first-class lexical environments is probably even less conducive to hardware-based solutions. A naive compiler (the most naive compiler is a simple interpreter) will allocate a lot of heap and generate a lot of garbage. So part of the solution is how efficiently short-lived heap allocations can be collected. The more complicated compiler problem is analyzing the code to determine how to reduce the amount or frequency of allocated heap. Based on determining which closures are "upward", what lexical state must be captured, and which closures share some or all of that lexical state, a compiler can very smartly move state capture up or down the lexical scope.

For example if closure C1 captures variables V1, V2, and V3, and in the same scope closure C2 captures just V2, then C1 and C2 need to refer to the same "instance" of V2. But maybe V2 is bound several scopes "up" from V1 and V3. The compiler may choose to heap allocate space for V1, V2, and V3 at the point where V2 becomes bound. The C2's code is generated to reference V2 at some offset from the start of this allocation. C1 references all three slots.

And that's the simplest case I could write about. There are other problems that I've not thought about for at least 15 years. My main point is that none of this "professionalism" is new. Many problems new implementers will encounter have a long history of solutions that are likely to be sufficient and, minimally, good starting points. All of the software solutions could show up within a year, where hardware solutions would not show up for five if ever.

The hardware instructions for all of this are fairly basic: incrementing pointers, relative addressing, short jumps. Not much more than that. The problem is how to do as little of all that as possible by walking a lot of tree stuff at compile-time, and leaving a marker here or there at run-time.

In addition to diving into the literature, I would recommend studying, if not using directly as a "common language compiler and run-time" the Gambit Scheme compiler and run-time. Gambit is the system to beat for efficiency, if it is not going to be your system to utilize as a "back-end".

Wednesday, July 09, 2008

Waterfall knows the value of everything...

...but the cost of nothing.

Apologies to Alan J. Perlis. May he rest in peace.

http://www.cs.yale.edu/quotes.html

Monday, July 07, 2008

Thursday, July 03, 2008

Taking a Global Snapshot

In a recent comment here Dan Creswell refers to an algorithm for taking a global snapshot across a distributed message system...

...if our snapshot could just capture the "after" state, then we'd be done. However, we can't do that either because we're not allowed to stop the other messages flowing through the system after we take the local snapshot at a node. Therefore, by the time all nodes take their local snapshots, the global system state may have changed.

So, we define a recent and consistent global state as a global state that "could have occurred" between the "before" state and the "after" state. In other words, consider the sequence S of communication events that occurs in the system between the "before" and the "after" state. A recent and consistent global state X is reachable from the "before" state by some subsequence of the events in C. Furthermore, the "after" state is reachable from the state X by the remaining events in C. Notice that this global state didn't necessarily occur at any point in real time, but it "could have occured" between the "before" and "after" states using the same sequence of communication events.

Global snapshots are useful in a wide variety of distributed applications. One application is in distributed databases, for instance a group of bank branches. Another use is deadlock detection: a global snapshot can be examined to see if there has been any progress made by the algorithm. Termination of a distributed algorithm can detected in the same way.

From an interesting-looking course in distributed systems at Washington University, St. Louis.

Judge vs. Law: "their privacy concerns are speculative"

From the EFF deeplinks blog...

Yesterday, in the Viacom v. Google litigation, the federal court for the Southern District of New York ordered Google to produce to Viacom (over Google's objections):
all data from the Logging database concerning each time a YouTube video has been viewed on the YouTube website or through embedding on a third-party website...

for each instance a video is watched, the unique “login ID” of the user who watched it, the time when the user started to watch the video, the internet protocol address other devices connected to the internet use to identify the user’s computer (“IP address”), and the identifier for the video.

...

Google correctly argued that “the data should not be disclosed because of the users’ privacy concerns,” citing the VPPA, 18 U.S.C. § 2710. However, the Court dismissed this argument with no analysis, stating “defendants cite no authority barring them from disclosing such information in civil discovery proceedings, and their privacy concerns are speculative.”

Dang. Wish I hadn't watched so much Rick Astley. I hope Google tells the judge, "Never gonna give you up..."

Reminder: Program Casualties

Bill de hÓra responds to yet another RPC effort...

"JSON is the sweet spot of type driven interop"

http://www.dehora.net/journal/2008/07/03/arghpc/

Wednesday, July 02, 2008

Lisp's 50th Birthday Celebration

This will coincide with OOPSLA in Nashville. John McCarthy will present.

http://www.franz.com/services/conferences_seminars/lisp_50th-birthday.lhtml

50th! Take that, other dynamic languages!

Tuesday, July 01, 2008

RabbitMQ / XMPP Gateway

RabbitMQ and XMPP... Now get the best of both worlds, I guess, through this gateway.

Out of Control

James Robertson observes OnStar, the Pentagon, and your local transit authority losing control over their control freakishness...

This is like DRM, but with extra stupidity added in.
Because I am _real_ worried I might end up in Speed 3.

Re: Question about message passing paradigm

Responding to a thread on the erlang-questions list...
The problem we are discussing is processes B, C, D hold information X, Y, Z respectively; process A wants a coherent snapshot of X, Y,Z.

There are actually two slightly different cases depending on A needs "X Y Z as of *now*" (A, B, C, and D must all synchronise), or A needs "X Y Z as of *some* time in the recent past" (B, C, and D must all synchronise but can then send the information to A without waiting for A to receive it).

I like this problem because it is simple yet subtle. One way that it is subtle is that in "multithread" programming most people STILL think in terms of a single absolute time shared by all threads. (After all, there _is_ such a thing, the system clock. And yes, it's not exactly true, but it's close enough to make people _think_ it's true.) But when you start thinking about Erlang and especially *distributed* Erlang, you start realising that "now" is a pretty fuzzy concept.

Yes, the problem seems simple yet subtle. The downside is there are many unwritten constraints (or not) on any specific problem that could lead the solution alternatives one way or another. Unless you want to really dig into those, then the cost/benefit of one solution or another could be more or less off.

e.g. why not coordinate through an in-memory database? This could be reasonable, or not. We don't know enough.

Why not schedule the source processes to send a message on a periodic or scheduled basis? This could be reasonable, or not, and cut down the message traffic, which seemed to be a concern.

Why is sending fewer than N messages a concern? Why does one process have to collect the information? How much information? How tight is the deadline? Is "now" an actual timestamp or just some unknown point in time that a request has been received? How close to "now" do the other "nows" have to be with respect to each other? Can you widen that window if it would decrease the effort to build?

If synchronization across the processes is needed then is an "eventually consistent" approach reasonable if it lowers the effort to build?

Interesting stuff, but challenging to talk about in when the details are too abstract.

Sunday, June 29, 2008

Thoughts on Hotels and Coffee in Belfast

As long as I'm writing down my thoughts on this trip: I've been in two hotels in Belfast, the Hilton and the Radisson. Both are nice, close to the city center, and on the water.

They both have internet frustrations: neither have wireless in the rooms; the Hilton charges for wired internet in the rooms at ₤15 per 24 hours! When you pay that fee then they also throw in wireless _in the lobby_! Well, it's BT and the voucher is good for any BT provider in that 24 hour period. I found BT is the provider around some nearby coffee shops.

The Radisson at least provides free, but wired, internet. The problem then is the MacBook's adapter for UK plugs do not fit in the limited space above the immovable desk provided in the room! The nearest outlet that provides enough clearance for the adapter is across the room on the other side of the bed. If I had a 25' extension cord for either electricity or the internet, then this might be less frustrating.

(Let me update this with a warning: if you intend to use the internets with any expectation of getting bits back to your laptop, avoid the Radisson altogether. Band-width-wise this turned out to be simply unusable for long stretches.)

And so on to coffee: Caffe Nero is the best I've found in the city center so far, and the best I've found anywhere for a large chain. http://www.caffenero.com/

Thursday, June 26, 2008

Thoughts on Continental Airlines

I've flown Continental Airlines twice this year-to-date. Thrice if you count the flight that was actually run by Northwestern, but I'd rather discount that one.

Continental has to be my top choice, for the food service alone. They serve hot meals, and a fair bit of it with each meal, that actually taste like real food.

I do think they recently took another inch out of the leg room though.

Thoughts on the Newark Airport

I can think of several airports to spend over a quarter of a day in that might even be somewhat pleasant. My own PDX would be high on that list.

Not making the cut would be Newark, NJ. Has this airport been even considered for remodeling since I was last here, about 25 years ago???

The most curious difference: the bars are run by the breweries. And so there is a "Miller's" bar and a "Budweiser" bar. Thankfully there is also a "Sam Adams" bar.

I guess folks in the NYC area do not hate _all_ things about Boston.

But what happens when you are traveling with a party with varying tastes?

Tuesday, June 24, 2008

Monday, June 23, 2008

The eBay Reporting Provision: Apparently Just More Of The Same

Steve Dekorte relays information about a last-minute provision in the housing bill, and writes...

So now if you buy a bong on your credit card, the feds will know and may have probable cause to invade your home.
But I think most of our bong purchases are safe because there is a $10k USD minimum for transactions to be reported. :0

Another thing I learned: I called Senator Dodd's office and was told this provision is an enforcement mechanism for a law already in place. Apparently these transactions already are required to be reported, but many are not. And so this provision is intended to collect more dough.

Not that that excuses the invasion of privacy, but it's just not going to affect as many people because of the minimum reporting, and the invasion of privacy already is law. I called both my senators, Wyden and Smith, to oppose the provision.

Capitol Hill switchboard: 1-866-928-3035.

Belfast

I head out for Belfast on Wednesday. Mostly business, some time with friends, and some time to wander around. Any suggestions?

I'll probably go on some walking tours of the city, and I think there's a bus that goes to Giant's Causeway.

George Carlin, Class Clown

I remember the first couple of rock albums that I bought as a teenager in the early-mid 1970s: The Who's "Who's Next", Aerosmith's "Toys in the Attic". I was not a musician and could only muster up a bit of air guitar in my room, by myself. I wasn't about to let loose in front of friends.

But *comedy* was something else. There were two comedy albums that everyone I ran with *had* to own. There was no pressure: we just all owned them. And we all memorized every line of every track. And we all repeated them to each other over and over. We weer all comedians.

One of those albums was Cheech and Chong's "Big Bambu".

The other one was George Carlin's "Class Clown".

This was the first time I heard his "Seven Dirty Words" bit. There's at least one word I _learned_ from that list. I very well may have peed my pants once or twice listening to that list.

http://en.wikipedia.org/wiki/Class_Clown

George Carlin. Here's to you...

  1. Shit - The bird shit on the statue.
  2. Piss - I have to piss like a race horse.
  3. Fuck - Fuck you.
  4. Cunt - She has a beautiful cunt.
  5. Cocksucker - Go to hell, you cocksucker.
  6. Motherfucker - You are a motherfucker.
  7. Tits - Hey, nice tits.

Wednesday, June 18, 2008

Where You Find It

The Portland Tribune has a story about a local boy dying after having
been ill (shortness of breath, stomach cramps) for a week. His family
believes in "faith healing" and does not believe in western medicine
or apparently any medicine. (What would they consider food?)

http://www.portlandtribune.com/news/story.php?story_id=121379440855614400

Religion is what it is for each individual and family. In this case I
don't think the boy was given a choice, let alone the tools to make up
his own mind. That's not unusual. Most religion is passed down I
suspect.

As a Type I diabetic who knows almost nothing about health or
medicine, I have to say what little description this article provides
of the boy's symptoms, and the duration of them before his death,
*could* indicate Type I diabetes. This is a very manageable illness,
and whatever the true cause of death, the week in which the family
could have sought treatment but did not, was tragically long.

The boy also happens to be the cousin of a baby girl who also died
after the family refused medical treatment. Does this family simply
rationalize that their god does not love them? Or does not love these
specific kids? Or that everyone just dies when they die? (Which again
makes me wonder, why does anyone in their family eat meals?)

Filed under "apparently unnecessary tragedies to children, but I don't
understand".

Tuesday, June 17, 2008

SVG and Flash

Steve Dekorte wonders...

"Considering that ActionScript is really just Javascript with some
rendering APIs, once SVG is ubiquitous (effectively taking care of the
rendering API), will there be much point to Flash?"

http://www.dekorte.com/blog/blog.cgi?do=item&id=3468

(Aside: ActionScript is _worse_ than JavaScript, as it is a kind of
JavaScript+Java-semi-static-typing hybrid. Anyway...)

What Steve's really getting at is SVG vs. Flash. Flash goes well
beyond rendering, into multimedia, interactivity, environment/network
integration, etc. SVG has some support for JavaScript callbacks and
not much interactivity beyond that. SVG currently only (mainly?) runs
in some browsers, with all the pro's and con's. (I think Adobe's SVG
engine used to run stand-alone. Maybe others do as well?)

Flash could be a good foundation for an SVG engine. SVG could be a
good foundation for a Flash-like replacement.

I'd like to see SVG advance into a more fully capable engine for
*interactive* structured graphics, and beyond that a more fully
capable platform for many kinds of applications. SVG could be our best
hope for moving beyond the browser per se.

Those foundations require a simpler language than JavaScript and a
better security model than the browser or even Flash. The
interactivity model should provide a mix of
declarative/constrain/dataflow as well as imperative (i.e. callbacks
and mutable data, e.g. display lists).

Monday, June 16, 2008

The Emerging Enterprise in the Cloud

Jon Rose writes...

I have been working on a case study with Claude Courbois of NASDAQ for a few months now. We finally finished it up and published it over at InfoQ.com. NASDAQ has a very cool application, Market Replay, which utilizes AIR (desktop) & S3 (data). I am personally fascinated by how much the world has changed, as the platforms allowed NASDAQ to roll out an enterprise application with very minimal hardware infrastructure...

These technologies... I believe that their innovation will really mean more opportunities... They are enabling us to bring to market many ideas that were previously too difficult or costly to implement.

Or even just ideas too time-consuming too implement. Development groups with an idea can go and grab a fair bit of infrastructure without all the hoopla needed to requisition all the pieces within an IT data center. If the ideas prove out then in some cases they could or should be brought back "in-house". In other cases, they may be fine in the cloud.

Erlang Supervisor Hierarchies in Scala

Initial attempts to duplicate Erlang in other languages tend to make a lot of simplifying assumptions, either knowingly or unknowingly. Distribution is a big feature often overlooked initially, and beyond that "supervisor hierarchies" in which various distributed processes are either workers (do the real work) or supervisors (ensure the real work continues in the face of process or node failures).

Jonas has started an implementation of supervisor hierarchies for Scala's agents, as well as a basic "generic server" framework approximating Erlang's gen_server, etc. So far I think it's all running in one JVM, but it's a good start at illustrating all that Erlang does on behalf of a distributed system.

Sunday, June 15, 2008

Above the Fray

Steve Yegge relays a fracas about language interoperability...

He [Chris] asked this really innocent question. He goes, "You know, I don't really know much about this stuff..."

Which is bad, you know. When somebody says that to you at Foo Camp, it means they're settin' you up.

He says, "So how do these languages talk to each other?"

And the room just erupted! It was chaos. All these people are like, "Oh, it's easy!" And the rest of them are like "No, it's hard!" And they're arguing, and arguing, and arguing. They argued for an hour.

And then they stood up, still arguing, and they kept talking about it, heading into the dinner tent. And they sat down, going at it for like three hours.

It was chaos.

Because some people were saying, "Well, you know, if Ruby's gonna call Python, well, uh, you just call, right? You just share the same stack, right?"

And the others are like, "Well, what about different calling conventions? What if they support optional vs. non-optional arguments? What if they support default arguments? What about the threading model? What about the semantics of, you know, the this pointer? What about all this stuff?"

And they're like (waving hands) "Ooooh, we'll gloss over it, gloss over it, smooth it over." And the reply is: "You can't. This is fundamental. These languages work differently!"

And oh my god, it was really interesting. And it was also very clear that it's ten years of research and implementation practice before they get this right. Before you'll be able to have a stack of calls, where you're calling from library to function, library to function in different languages.

So today, VMs are good for interoperability, but you've gotta use a bridge.

I thought this was going to be interesting, then I found the conversation was about language interoperability *within* a VM.

Friday, June 13, 2008

Y2K+8

Douglas Purdy of MSFT...

"One of the reasons this topic comes up in Microsoft circles is the
fact that so few Microsoft desktop applications use the CLR. As you
may be aware, there is a performance cost associated with running code
in the CLR and garbage collection often gets painted as the chief
offender."

http://douglaspurdy.com/2008/06/12/objective-c-20-garbage-collection/

Thursday, June 12, 2008

All of a sudden...

...the evening is perfect, the city is shiny, the Timbers are winning. May has arrived, and it's only June!

Web Too Oh

Douglas Crockford writes...

"In the long term, we need to completely replace JavaScript and the
DOM with something designed to be safe from the ground up."

...noting that Firefox, and any browser generally, is a horrible
platform for applications.

http://blog.360.yahoo.com/blog-TBPekxc1dLNy5DOloPfzVvFIVOWMB0li?p=865

Tuesday, June 10, 2008

I think...

...it's about to snow.

Monday, June 09, 2008

Mornin'

Back in the 70s Jimmy Carter put a solar water heater on the roof of the White House, mostly as a symbol for a new direction of conservation and energy independence. Reagan promptly tore it down as a symbol of, well, he ran on the notion of bringing us "Morning in America", implying we have no reason to feel bad: we should feel "good" again.

We're Americans. We should not have bad news, and we should not "sacrifice" anything, well, at least not any comforts. Besides that the energy industry hated the idea of conservation and energy independence.

Carter also set the objective that America not become more dependent on foreign oil than we were at that time, 30 years ago now. Reagan convinced us we didn't need a pessimist like that.

Mornin'.

gosh, try goosh

(via Stefan Tilkov)

http://goosh.org/

e.g. type "place portland oregon (enter)"

Dumbest Name Ever From Apple

"Mobile Me" --- are you f'ing kidding me???

Bah. http://www.apple.com/mobileme/

You can also get there from http://www.me.com/

Joy. So now I can say to my wife, upload those photos from your camera to "Mobile Me" then bring them down to your "My Documents".

Oh, wait. Could you please bring them down to *my* "My Documents"?

Gawd. "Live Mesh" seems perfectly sexy compared to "Mobile Me".

Sunday, June 08, 2008

Toward a New Fast Squeak VM: Eliot Miranda's Blog

Eliot Miranda is one of those really smart VM implementors. He's been working on Smalltalk VMs for a long time, including one of the best: VisualWorks. After a brief sidetrack with the (fairly uninteresting IMO) Newspeak project, he's now at work on a better VM for Squeak. He's got a blog about that.

Does the history of computing matter?

(via Bill de hÓra)

If I were the author of a significant IDE product I would take a fair bit of time to understand the history of my marketplace. Apparently Dmitry Jemerov does not follow that philosophy. I guess that has not hurt his success any. So I have to wonder how much the history of our field matters to its future.

Consider the following image of a Symbolics hypertext system from the mid-late 1980s. Who noticed at the time? Who would've believed such a thing was possible then or even now using a "dynamic language"? 150 years from now what does anyone need to remember? A couple of blips maybe: Netscape and Excel?

Dmitry writes...

Groovy is interesting, but it's a dynamic language and has all the problems of dynamic languages. It's OK for small pieces of code. But building something the size of IntelliJ IDEA [in a dynamic language] would be a complete nightmare.
So let's consider history's demonstration that this is false. As Patrick Mueller writes...
Since Smalltalk I've generally been using Eclipse for work stuff, but the effort in extending the environment has just been too much work for me to invest in, though I've tried a few times. I settle for writing ant scripts; that's how bad things have gotten - I'm programming in XML.

What's on the horizon? Eclipse has E4. Which seems like it's largely a cleanup/sanitization of Eclipse, vs a complete re-think. I suspect I will write as many extensions for E4 as I have for the previous versions of Eclipse. Perhaps I'll sit that out and wait for Steve Northover's E5. Frankly, I think it's time we started fresh; let's call it F1.

And Joe Gregorio writes...
Poor old disrespected Smalltalk, all those years of work, all that cutting edge research, and nary a bit of credit, which is particularly galling if you think about the fact that, to date, the language that has benefited the most from Smalltalk is Java.

Mike's Gotta Job For You Mebbe

Mike Herrick's posted an opening at CSI doing the open source incl. Rails and JRuby. Good folks to work with.

Saturday, June 07, 2008

June pdxfunc: Functional Programming With Dynamic Languages

Monday's topic for the Portland Functional Programming Study Group (pdxfunc) has been announced. The meeting will take place Monday, June 9, 7pm, at CubeSpace on Grand Avenue.

Please join us at the next meeting of pdxfunc, the Portland Functional Programming Study Group. The group meets monthly for presentations, demos and discussions. We welcome programmers interested in all functional languages, and the meetings feature content for coders of all skill levels. If interested, please subscribe to our mailing list at

http://groups.google.com/group/pdxfunc

PRESENTATION:

Title: Functional programming with dynamic languages

Summary: Dynamic, multi-paradigm languages such as Ruby, Python and Perl allow programmers great flexibility in how they can write their code, although most use an imperative (AKA "procedural") style. However, using a functional style selectively can help provide clearer and shorter code, reduce bugs, and improve performance. This presentation will provide a basic overview of functional programming, sample code demonstrating how to use functional programming features of dynamic languages, compare and contrast code samples of functional and imperative styles, and discuss when each style is appropriate. No previous knowledge of functional programming is necessary.

Bio: Igal Koshevoy is a Business-Technology Consultant with over a decade of experience creating sophisticated, business-critical systems using open source technologies. He is the author of an open source server automation toolkit available at "automateit.org", and supports local community efforts through Calagator, Portland Ruby Brigade, Portland Functional Programming Study Group, Legion of Tech, Ignite Portland, etc.

See you there!

PS: Sorry for the short notice, but Kevin's talk on XML parsing with Haskell had to be delayed. Hopefully he'll be able to present it next month.

Monday, June 02, 2008

Microsoft Wants To Give You A Vulnerable Flash

From Steve Loughran...

SANS is issuing an emergency warning that XP SP3 installs a version of flash with security holes, even over a later version.
And you use Windows, again, why?

Acrobatics

News from Adobe today, heading in the direction they were talking about last year for PDF and Flash. PDF is an open standard. I don't know how that spec-wise matches what it takes for Adobe to incorporate SWFs into Reader, techno-wise, and stuff...

Two big announcements today. One, we’re announcing Reader 9 which includes the ability to render SWF content inside of your PDF. That means you can actually put Flash/Flex content directly into created PDFs. That opens up a lot of very, very interesting use cases like exposing form entry applications right inside of the document or starting to use a lot of video content inside of your PDFs. I think this is one of the more interesting things to happen with the Adobe/Macromedia merger. With PDF’s right’s management built in, this also provides you a way to protect your SWF content from being decompiled.

The second announcement, my favorite of the day, is that we’re rolling out Acrobat.com. You’ve seen a lot of the services in different parts of the web, but we’re finally bringing them together under one umbrella brand with one account and a lot of functionality. You get Buzzword, “Share”, and “Brio” all as part of Acrobat.com and the line between the online software and the desktop software is starting to blur. For instance right from the Adobe Reader menus you can create a new Buzzword document or start a collaborative meeting in “Brio” which as been named Connect Now. Your Buzzword documents can now export to PDF and you can use Share to both create PDFs from documents as well as make it easy to send them to friends or embed them on your blog. There’s even an Acrobat.com AIR widget that lets you drag and drop files and create PDFs from them.

I think it's cool. And another set of signs that Adobe "gets" some things competitors either don't get or have not figured out how to execute on successfully. This is all good news for "the office" and multiple offices working together over the internets. Not to mention education, entertainment, and everything else.

Also, via Mike Chambers today, a bunch of useful reference guide stuff from Adobe re: RIA and ActionScript.

I don't know. Maybe I am just an Adobe "fan boy" so to speak. I think they're doing a lot of things well.

Sunday, June 01, 2008

Toward Better UI Programming Models

Every now and then I complain about the browser's programming model. There's just been better models in the past on desktops, and there must be a ways forward that (1) "don't hurt the web" [see below] and (2) provide at least the ease of the popular models of the past. Most of the popular models of the past are based on some variation of Model-View-Controller from Smalltalk-80... frameworks like Swing, MFC, etc.

Those models are still incredibly low level compared to other practical-yet-relatively-unknown models that evolved over the last 30 years or more. Most of these other models that I can recall are all in the ballpark of contraint-based and data-flow-based systems.

Here are some off the top of my head for interested readers, many of whom I suspect may *only* have client-side experience with HTML and AJAX if they are younger than a certain age, maybe 35? I'll fill out links and descriptions as I get time.

  • ThingLab - And subsequent constraint solvers that came out of Alan Borning's groups for Smalltalk, Java, C, etc. (Many developers are familiar with contraints for layout, less familiar with constraints used within domain model and GUI integration. For a recent discussion on contraints in layout see: Michael Lucas-Smith, Vassili Bykov, Andres Valloud)
  • Alternate Reality Kit (ARK) - Smalltalk
  • Morphic - originally influenced by ARK and implemented in Self, then in Squeak Smalltalk, and now Lively Kernel in Javascript.
  • Fabrik
  • Hypercard (on this list for its unique simplicity as opposed to its programming model per se)
  • Garnet - CommonLisp, read the papers and try the system if you can - great stuff.
  • Amulet - Garnet's C++ successor, a bit more clunk but available to more programmers
  • EZDraw - Joel Bartlet's Scheme->C system
  • Figlets - Haskell
  • Functional Reactive Programming (FRP) (data-flow-ish) systems like: FrTime (PLT Scheme), Frappe (Java), Flapjax (Javascript), and various Haskell systems.

Please Don't Hurt The Web

I don't think HTML and AJAX should or could go away any time soon. But I don't think all "clients" have to be entirely (or at all) made of HTML and AJAX. The more RESTful the web becomes the less clients have to consist of HTML and AJAX. That's a big reason I like AIR so much: HTML and AJAX can contain other models like Flex and PDF; and Flex can contain HTML and AJAX; RESTful services can be integrated into any of this; and so on.

Saturday, May 31, 2008

Dan Ingalls Interview

A really great interview with Dan Ingalls from Randal Schwartz and Leo Laporte. This goes into all kinds of Smalltalk and other history from the 70s and 80s and then into more current stuff like Lively Kernel.

At one brief moment, Dan mentions Fabrik, which is a visual data flow programming model he built at Apple in Smalltalk in the 80s.

http://methodsandmessages.vox.com/library/post/dan-ingalls-interviewed-on-floss-weekly.html

Friday, May 30, 2008

XMPP Gears and Damn All We Need Now Is a Better UI Programming Model

Bill de hÓra predicts...

if Gears (or something like it) becomes ubiquitous (and it will), then eventually XMPP will become a protocol option alongside HTTP, allowing data to be pushed down into the client.
I'm for it. Note Adobe's AIR has all of these things, and then some, not to mention an API for either Flash/Flex or HTML/Ajax-based UIs.

I'd love to see more competion to the browser's current UI programming model, which is still what you are left with after adopting Gears. At least AIR gives you a choice, and Flex is open, so conceivably Google, Mozilla, or whoever could build off of Flex.

(I discount Lively Kernel for the time being. It's probably got more promise than I give it credit for. SVG has a lot of interesting capabilities especially for display, but it's still too clunky for the interactive bits. Kind of like NeWS vs. Display Postscript, ironically.)

Even Flex is so 1990s. There have been several significant improvements on that old MVC-ish model from the pre-web client/server days. Most of them in fact *pre-date* the 1990s adoption of Smalltalk's 1970s MVC. Still Flex is way better than HTML/Ajax for developer countenance though.

Thursday, May 29, 2008

An Open Source Twitter Clone

I am not a twitterer, er, one who twits. Well some might argue with
that last bit.

But one thing I've wondered is why the fascination with this service
that as far as I know is run by one outfit, has some "issues" (e.g. I
clicked on Mike Herrick's twitter URL the other day and each time saw
nothing but apologies from twitter for failing to work properly), and
is not federated across multiple providers as with, well, the web.

And I've wondered why people don't just use XMPP which is a federated
messaging platform with pub/sub topics etc. Or why not create a
twitter-ish system that can be federated.

So someone just published the source to an erlang-based twitter clone...

http://twoorl.com/
http://code.google.com/p/twoorl

I don't know if this specific clone is the answer, but it begs the question.

Sunday, May 25, 2008

McCain the Maverick

I'm old enough to remember the savings and loan scandal as an adult. I'm jaded enough to be tired of this "McCain is a straight-talking maverick" hoodwink. Let's not forget he is from an "elite" family, and his questionably unethical interfering on behalf of rich beneficiaries goes back decades and involves activities that has cost us real money, and some worse. From the wikipedia article on the Keating Five, of which McCain is one...

"Gray testified that several U.S. senators had approached him and requested that he ease off on the Lincoln investigation. It came out that these senators had been beneficiaries of $300,000 (collective total) in campaign contributions from Keating. McCain received $112,000 by 1987 from Keating and Keating's relatives and employees to McCain's Senate campaign, more than any of the other Senators. In September 1987 National Thrift News was the first media outlet to break the story. In October 1989 The Arizona Republic reported that in addition to campaign contributions, McCain's wife and her father had invested $359,100 in a Keating shopping center in April 1986, a year before McCain met with the regulators. The paper also reported that the McCains, sometimes accompanied by their daughter and baby-sitter, had made at least nine trips at Keating's expense, sometimes aboard the American Continental Corporation (parent of Lincoln) jet. Three of the trips were made during vacations to Keating's opulent Bahamas retreat at Cat Cay. McCain also did not pay Keating for some of the trips until years after they were taken, after he learned that Keating was in trouble over Lincoln. Lincoln Savings and Loan's collapse is said to have cost taxpayers $3.4 billion."

Animated Graffiti

Via Signal vs. Noise, the following video is incredibly inventive. The theme becomes tedious for me before halfway, but still... I'd like to see more like this with a better story to tell...

Saturday, May 24, 2008

Erlang and the Facebook Chat Architecture

Seen on InfoQ re: the Facebook Chat Architecture...

Another challenge was delivering messages in real time. Facebook choose a technique whereby the client pulls updates from the server, similar to Comet's XHR Long Polling Process...

Facebook choose a combination of C++ and Erlang to implement clustered and partitioned subsystems. The C++ module is used to log chat messages, while Erlang "holds online users' conversations in-memory and serves the long-polled HTTP requests". epoll, a new system call introduced in Linux 2.6, was used to drive the Erlang module. Eugene states why the decision was made to go with Erlang...

because the problem domain fits Erlang like a glove. Erlang is a functional concurrency-oriented language with extremely low-weight user-space "processes", share-nothing message-passing semantics, built-in distribution, and a "crash and recover" philosophy proven by two decades of deployment on large soft-realtime production systems...

The secret for going from zero to seventy million users overnight is to avoid doing it all in one fell swoop. We chose to simulate the impact of many real users hitting many machines by means of a "dark launch" period in which Facebook pages would make connections to the chat servers, query for presence information and simulate message sends without a single UI element drawn on the page.

I am kind of amazed to see the attention Erlang has been given over the last couple two three years. OSCON in July here in Portland will have at least a three Erlang related sessions: a couple of tutorials and a presentation.

Mike Herrick on CSI and on InfoQ

InfoQ interviews Mike Herrick re: using Rails and JRuby for the CSI. Mike also blog'd about his project recently...

When deployed, UT-NEDSS project will directly contribute to the prevention of sickness and death by effectively collecting, identifying, tracking and trending information gathered about infectious diseases and bioterrorism attacks. Additionally, this unique partnership is providing lessons for public health informatics

Steve Vinoski on RPC and Messaging

There's been a stream of messages on the erlang list about RPC. Steve Vinoski's put an explanation of RPC and his position on his blog. Now he's followed up on the email list with a position on integration generally, and pub/sub messaging in particular...

One of the most effective forms of enterprise integration I've seen over the years is publish/subscribe messaging. I worked many years for CORBA vendors, and we'd often lose potential deals to messaging systems. Message queuing systems work well because (in no particular order):
  • they don't pretend to be programming language procedure or method calls, so they avoid the associated impedance mismatch problems
  • they don't try to hide distributed systems issues
  • coupling is low -- drop a message into a queue here, pick up a message from a queue there
  • queues can be persistent, or more generally, delivery guarantees can be varied as needed
  • asynchrony
  • payloads need not conform to some made-up IDL type system
  • getting two different messaging systems to interoperate is easier than getting two different RPC or distributed object systems to interoperate
The problem with messaging systems, though, is that traditionally they've been quite expensive. Thankfully, I believe AMQP (http://amqp.org/) solves that issue nicely, and of course Erlang is the perfect way to implement it, which Alexis, Tony, and the rest of the RabbitMQ guys have already done (http://www.rabbitmq.com/).
I agree with Steve's take. The best pub/sub mechanism I have experience with has been Tibco's rv. All the Tibco layers above it have been enterprisey bits to make a sale. The basic rv bus is super-easy to just use from C, Python, Java, anything. Horribly expensive back in the day, and I assume it still is.

AMQP should have helped address this. But I've not seen much on the internets about AMQP over the last many months. I wonder if this is going to go anywhere? Or am I just missing the traffic?

I'm not sure XMPP pub/sub in the enterprise is going anywhere too quickly either, but that's another candidate for getting beyond vendor lock-in for enterprise messaging.

Why on earth Cisco is defining a new RPC protocol is beyond me.

And to any AMQP folks: the redirect from http://amqp.org/ seems broken.

Enterprises should be moving toward HTTP first and foremost, figuring out what's happening with XMPP for various other kinds of messaging, and/or AMQP in situations where HTTP and XMPP don't seem to cut it.

Friday, May 23, 2008

Matthias Felleisen speaking at Portland State University on June 2

Just rec'd the following announcement on the pdxfunc email list...


Matthias Felleisen is speaking at PSU a week from Monday (June 2). The
talk is open to the public.

"The First Year in Computer Science"
Matthias Felleisen
Northeastern University
2nd June, 16:40–18:00
Location: Hoffman Hall Rm 109, Portland State University
Abstract

My team and I have developed an alternative approach to the first-year courses on programming and computing. Unlike conventional approaches, ours focuses on designing programs in a systematic manner. The syntax of the chosen programming languages (both Java and Scheme) is only discussed as needed to support design principles.

Field tests with over 500 high schools and a dozen colleges have shown that the approach produces better students than conventional approaches that use a single language.

In several controlled studies, we could also show that students find our curriculum more appealing than the AP curriculum.

In my talk, I will provide an overview of the project, especially its intellectual premises and principles. My goal is to encourage you to think about the first year in a different way. The old ones are of questionable value. If we want our beautiful discipline to survive, we must find a good way of teaching it."

http://web.cecs.pdx.edu/~colloq/felleisen-firstYear.html for more information.

Sunday, May 18, 2008

More Ted

This is part two of my response to Ted Neward's latest misunderstanding of Erlang. Ted wrote to Steve Vinoski...

Sorry, Steve-O, but I think you're out in left field on this one. I'm happy to argue it further with you over beer, but if you want the last word, have at it, and we'll compare scores when we run into each other at the next conference.
Everything I've read of Steve's tells me he's well informed by actual experience. Ted's writing exhibits the most basic misunderstandings. I wonder why Ted didn't spend a little beer time with some experts before attempting to write with supposed authority.

More from Ted...

any time we incorporate something directly as part of the language, there's all kinds of versioning and revision issues that come with it. This, to my mind, is one of Scala's (and F#'s and Lisp's and Clojure's and Scheme's and other composite languages') greatest strengths, the ability to create constructs that look like they're part of the language, but in fact come from libraries.
Most of Erlang's power comes from libraries, but Ted wouldn't know that. Erlang the language is very small and expressive, but Ted wouldn't know that. Erlang's not really suffered from revision issues over the nine years I've been following the language, but Ted wouldn't know that. And Ted apparently didn't bother to ask anyone or read anything that might inform himself.

I agree with Ted's observation that extensible language syntax is desirable. Erlang's extensibility is cumbersome and not-too-beautiful. That's not the goal of Erlang though.

So you have to decide whether the benefits of Erlang outweigh issues like this. By the way, Gambit Scheme has Erlang-like concurrency performance, although shared-everything. But since Scheme can be used to define new languages such as Termite, it can be used to create syntactically-extensible Erlang-ish systems.

If you decide to go with Erlang the decision should be based on what Erlang is now, and not expect Erlang to change much. It's been largely stable as a language for years, as opposed to the arms race in Java and Java-like worlds. Language extensibility should not be as important to you as the simple Erlang programming model. This is a reasonable approach to take. Erlang is a known quantity, well proven. Not every language has to be as extensible as Lisp, in fact most are not.

Beware of languages like Scala and Clojure that intend to be safer concurrently than Java - they still run on the JVM and integration with Java code. So by definition their safety only can go so far.

I do criticize Erlang for having its own VM (though I think it's not a VM, it's an interpreter, which is a far cry from an actual VM)
Maybe we should criticize Java for having its own JVM? Why doesn't it use Smalltalk's or Erlang's which pre-date the JVM? (Trick question. The JVM, and Hot Spot in particular, is based on ideas developed in Smalltalk, etc. Essentially the JVM is a dynamic language VM plus layers of cruft.)

Not much digging would have told Ted that Erlang compiles to native code or to an intermediate compiled code. Ted's misleading claims are heading into the dangerously ignorant. Why should I believe anything Ted writes about any topic? When Ted writes "I think that..." I think that we should read it as, "I'm guessing that..."

The JVM and the CLR have (literally) thousands of man-months sunk into them to reach high levels in all those areas. Can Erlang claim the same?
Well, yeah. I don't know how many "man months" it stacks up to be, but Erlang has been around for decades in some very demanding situations. Did Ted bother to look into any of these VM questions?
Best part is, the IT department doesn't have to do anything different to their existing Java-based network topology to start taking advantage of this. Can you say the same for Erlang?
If the architecture is going to change from "big, honkin' J2ee behemoths" to highly concurrent, lightweight interaction, then the topology should change. This is true whether moving from J2EE to Erlang or J2EE to JRuby/Rails or J2EE to Project Zero or J2EE to anything reasonably resembling modern best practices.

Moving to Erlang can take advantage of existing Java bits using the various network protocol standards or CORBA or SOAP or the JInterface class library which makes a Java application act like an Erlang node.

Frankly, whether the application you're monitoring hooks into the monitoring infrastructure is not really part of the argument, since Erlang doesn't offer that, either. I'm more concerned with whether the infrastructure is monitoring-friendly... if Erlang ties into SNMP out of the box with no work required by the programmer, please tell me where that's doc'ed and how it works!
Apparently Ted's world of monitoring begins and ends with Java and dotnet's JMX and WMI. How would you monitor both Java and dotnet? SNMP likely. Both JMX and WMI can be hooked into SNMP. SNMP is the internet standard, more mature, and extends beyond Java and dotnet.

I've never used it, but just doing a quick check shows that Erlang has a pretty extensive SNMP api and Reference Manual, and User Guide. Hmm. Did Ted even bother to look?

Yes, the JVM could easily adopt the multi-process model if it chose to. (Said work is being done via the Java Isolates JSR.) The CLR already does (via AppDomains).
I addressed Erlang vs. AppDomains in my previous post. These are clearly two different mechanisms with two different intents: AppDomains provide application isolation; Erlang processes provide finer-grained isolation of concurrent activities ("actor"-like) within an application.

Within an application neither the JVM nor the JVM-ish CLR provide Erlang-like processes. Scala and Clojure go a good bit of the way, but the advantage of Erlang is in its simplicity and combination of concurrency programming _and_ management. This goes well beyond a little bit of syntax around Java threads within a single JVM.

Barry Kelly has a really good blog post explaining more about these various VMs and Scala's Lift framework and implementation of Actors.

Blog Archive

About Me

Portland, Oregon, United States
I'm usually writing from my favorite location on the planet, the pacific northwest of the u.s. I write for myself only and unless otherwise specified my posts here should not be taken as representing an official position of my employer. Contact me at my gee mail account, username patrickdlogan.