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

Search This Blog

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.

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.