"I have a mind like a steel... uh... thingy." Patrick Logan's weblog.
Search This Blog
Saturday, February 05, 2005
Cooler than That
Web shopping in particular, and web user interfaces in general, just got a lot cooler. Clearly, 2005 is now officially the year of the rich thin client.
This is really inspiring work (try it), and the contact information shows Portland, Oregon. Anyone know who is behind this?
(Via Mark Baker)
Lessons Not Learned (Yet?)
Avi Bryant writes...
In Smalltalk, however, the only thing that's in C is a tiny virtual machine that understands a very simple set of bytecodes - it knows about pushing and popping objects from the stack, accessing indexed slots, blocks, and method dispatch. What it doesn't know anything about is the language syntax, standard library, compiler, debugger, profiler, thread scheduler, exception system, and so on, and so on - all of these things are implemented in Smalltalk.[Smalltalk] doesn't support continuations and you want to add them? No problem; 10 lines of [Smalltalk] code and you're there.
...clearly you could implement the Ruby language with a Smalltalk-style VM (hopefully one with a Smalltalk-style JIT as well, which would bring a 20x or so speed increase to the current Ruby interpreter). But really what I'm talking about is a philosophical difference, not a technical one: to Smalltalkers, it's essential that as much of a system as possible be implemented in Smalltalk, whereas this simply isn't a priority for the scripting language community, and it's the priorities rather than the individual implementations that draw me to Smalltalk.
Modern Software Architecture
Gordon Weakliem writes...
Mozilla is still a C++ app though, and seems to be very stable. Architecturally, it seems to be built around JavaScript and XUL though. It's almost like a VM architecture in that respect. I've been messing with Mozilla Extensions lately, and though it's not the greatest development environment ever, it's very easy to write code for once you get your bearings. The XUL architecture seems to extend very far down into the browser, with most of the browser implemented in XUL and script. Again, it seems like an underlying VM is a prerequisite for a modern software architecture.Which is ironic given not more than ten years ago the programmers using this architecture were fighting heated arguments about the very idea.
Friday, January 28, 2005
Lisp: an XML scripting language?
I guess if I had to sell someone on Lisp or Scheme today, I might describe it like this:
"Lisp is an XML scripting language."
More sexpr in Utah
Phil Windley is connecting language concepts, Scheme, and XML in his BYU programming language concepts course.
He has a simple excercise that makes the connection. The next step would be to blow their minds with SSAX.
Update: Phil Windley has a page for his students for running SSAX. To gauge how similar Lisp is to XML, how natural the mapping, the SSAX translation of Phil's original classroom example is identical except SSAX wraps Phil's translation in a list to indicate that is the top of the document...(*TOP* (phil's data))
Thursday, January 27, 2005
Testing Interfaces
Another blog item on testing.
This one asks whether the tests themselves should alter the interface of what's being tested. i.e. should the test have a back door for peeking into the black box.
My opinion is, emphatically, no. Not for the kinds of tests created while test-first programming.
An impulse to check on the internal state of an object while test-first programming is an indication of one or two things:
- The test is being perceived too much as "testing" and not enough as "designing".
- The object itself is probably too complex. Fix the design.
A Future so Bright?
Um...
Avid sailor Craig Venter has trawled for microbes in the Sargasso Sea and discovered more than a million new genes and 1,800 new species. Among them are organisms that thrive on carbon dioxide. Venter hopes to re-engineer some of these unique microbes genetically, into "designed species" that may reduce environmental CO2 levels, as well as provide new foods and energy sources. "Biology can do much more sophisticated chemistry than the best chemists," says Venter.Hey, I suspect biology can do much more sophisticated *biology* than the best biologists as well!
I'm not sure I want people tinkering with CO2 consuming microbes any more than I want us putting fossil carbon into the atmosphere in the first place.
Test-First Programming
Frank Sommers writes...
I find myself violating this tenet of XP very often. I do test all my code, but often only after I've already written that code. Why does this one XP rule seem so out of place to me? ...I think this seems out of place when "testing" is perceived to be a testing activity rather than a design activity. Rather than not testing first, try taking on a new perception of what it means to "test" software.I like to think of refactoring and testing as editing. When writing an article, most writers first create an outline, then write the content, typically in a few sittings, and without regard to mistakes, typos, sentence structure, etc. Only then does an author spend most of his time on editing, fine-tuning, and polishing the article.
The way I view test-first programming exhibits the same outline -> content -> polish flow. In my perception, the "outline" is the short list of tests I think I want to write over the next hour or so. This list of tests is just a list of names, each name being some *design* feature that needs to be developed. Each name will show up in the design.
Then the "content" is the expansion of a name on the list into code:
- One or a few function calls or message sends.
- One or a few assertions about what is true afterwards.
- The other code needed to setup the calls, implement the assertions, and teardown.
- Then when this content breaks, the test framework tells me what's wrong.
- The rest of the content is missing... I have to write the code that implements the calls.
- When the "test" part of the content does not break, the initial draft is complete.
As soon as the content is drafted, immediately I begin to polish that draft, consider how it fits with the other content, and how the content itself could be better expressed through reconsidering the names and parts and assertions.
So I see test-first programming as a way of designing. It happens to be a way of testing as well, which is good because a program has to be tested in ways that an informal text does not.
Wednesday, January 26, 2005
Exactly
A note to Sean McGrath from Steve Jensen in Sean's comment section...
Thanks for plugging Erlang: even if it doesn't end up being heavily adopted, it at least moves people in the right direction.Exactly. I like what else Steve wrote...
We need to move from using semaphores and monitors to lock global state towards thinking of the world as partially ordered and asynchronous.Someone asked Joe Armstrong at his Lightweight Languages 2002 presentation what synchronization mechanisms Erlang has. Joe responded, "Two. Send and receive."
Exactly.
Monday, January 24, 2005
JSON: The Fat-Free Alternative to XML
JSON is the JavaScript Object Notation for writing "smart clients" like GMail in JavaScript without bulky XML messages. JSON-RPC is a simple RPC mechanism like XML-RPC. (Via Slashdot.)
I suppose this could also be based on YAML which is more rich than JSON, yet still not as complex as XML. I've not seen a mapping, in the few minutes I've looked, from JSON to XML, such as what's been defined for YAML.
Sunday, January 23, 2005
Communication
As seen on the XPDX Yahoo group...
Thanks for all the comments... One respondent said XP depends on communication, but I work in a corporation.I guess that corporation does not "empower" their employees enough.
We Won't Get Fooled Again?
Scott Rosenberg writes...
The Bush inaugural marked the final transition of the Bush-family ideology from old-school conservatism, with its abhorrence of abstract schemes of human perfectibility, to a messianic idealism so divorced from reality it gives even sympathizers like Noonan the willies. Bush's vision of human perfectibility may be shaped by born-again fervor rather than socialist theory, but that difference doesn't make its collision with reality any less dangerous.and writes...
This speech wasn't just soaring rhetoric. It was a lighter-than-air burst of helium verbiage -- lofty language untethered from the perplexing world we occupy and from the messy events of the last four years, sentences floating off into an empyrean of millennial vagaries.The world is a simple place to Bush... His "untamed fire" is the cathartic inferno dreamed of by people who are confounded by a world they know is out of their control.
Thank You, Ken Anderson
Thank you, Ken Anderson, for your contributions to JScheme. There have been many times when I needed access to Java functionality but not the Java language per se. JScheme makes that kind of programming pleasant and productive. One of Ken's contributions was the Javadot notation which is a large part of ease of this Scheme/Java integration.
From Tim Hickey, another of JScheme's creators, via Chris Double...
I'm sorry to bring you the very sad news that Ken Anderson, one of the co-developers of JScheme, died last night...Ken touched many lives and brought many communities together.
Saturday, January 22, 2005
Lisp and Concurrent Programming
Bill Clementson has a huge list of Lisp-related concurrent programming references. And if you haven't looked at Erlang yet, it is a list-based semi-functional language. Too bad it doesn't use Lisp syntax.
Bill refers to Dirk Gerrits, building an Erlang-like concurrency mechanism in Common Lisp. Something like this was done for Python as well, called Candygram.
Also related is the ETOS compiler for Erlang that generates Gambit Scheme, which scales as well as Erlang/OTP.
The mind spins, concurrent thoughts swirling all around.
This and That in Politics
PyCon DC 2005: IronPython
I didn't see anything on IronPython at the March conference, but Sam Ruby pointed out the keynote.
Structure and Notation of Computer Programs
Agreed...
We're not so much building on the programming state of the art as continually have each generation of programmers rediscover it.
-Bill de hOra
Blog Archive
-
2011
(19)
- 08/21 - 08/28 (5)
- 07/17 - 07/24 (1)
- 04/03 - 04/10 (3)
- 03/27 - 04/03 (5)
- 03/20 - 03/27 (1)
- 03/13 - 03/20 (1)
- 03/06 - 03/13 (1)
-
2010
(2)
- 11/07 - 11/14 (2)
-
2009
(40)
- 06/07 - 06/14 (2)
- 05/31 - 06/07 (1)
- 05/17 - 05/24 (1)
- 04/05 - 04/12 (2)
- 03/22 - 03/29 (7)
- 03/15 - 03/22 (1)
- 03/08 - 03/15 (4)
- 03/01 - 03/08 (2)
- 02/22 - 03/01 (1)
- 02/15 - 02/22 (5)
- 02/08 - 02/15 (1)
- 02/01 - 02/08 (7)
- 01/25 - 02/01 (2)
- 01/04 - 01/11 (4)
-
2008
(402)
- 12/28 - 01/04 (12)
- 12/14 - 12/21 (3)
- 12/07 - 12/14 (10)
- 11/30 - 12/07 (14)
- 11/23 - 11/30 (7)
- 11/16 - 11/23 (14)
- 11/09 - 11/16 (7)
- 11/02 - 11/09 (11)
- 10/26 - 11/02 (14)
- 10/19 - 10/26 (10)
- 10/12 - 10/19 (11)
- 10/05 - 10/12 (16)
- 09/28 - 10/05 (26)
- 09/21 - 09/28 (16)
- 09/14 - 09/21 (3)
- 09/07 - 09/14 (9)
- 08/31 - 09/07 (8)
- 08/24 - 08/31 (10)
- 08/17 - 08/24 (12)
- 08/10 - 08/17 (4)
- 08/03 - 08/10 (5)
- 07/27 - 08/03 (10)
- 07/20 - 07/27 (6)
- 07/13 - 07/20 (7)
- 07/06 - 07/13 (3)
- 06/29 - 07/06 (8)
- 06/22 - 06/29 (6)
- 06/15 - 06/22 (5)
- 06/08 - 06/15 (10)
- 06/01 - 06/08 (4)
- 05/25 - 06/01 (5)
- 05/18 - 05/25 (6)
- 05/11 - 05/18 (3)
- 05/04 - 05/11 (7)
- 04/27 - 05/04 (7)
- 04/20 - 04/27 (7)
- 04/13 - 04/20 (6)
- 04/06 - 04/13 (9)
- 03/30 - 04/06 (7)
- 03/23 - 03/30 (5)
- 03/16 - 03/23 (15)
- 03/09 - 03/16 (7)
- 03/02 - 03/09 (5)
- 02/24 - 03/02 (4)
- 02/17 - 02/24 (2)
- 02/10 - 02/17 (3)
- 02/03 - 02/10 (1)
- 01/27 - 02/03 (8)
- 01/20 - 01/27 (4)
- 01/13 - 01/20 (3)
- 01/06 - 01/13 (7)
-
2007
(388)
- 12/30 - 01/06 (11)
- 12/16 - 12/23 (5)
- 12/09 - 12/16 (3)
- 12/02 - 12/09 (5)
- 11/25 - 12/02 (5)
- 11/18 - 11/25 (4)
- 11/11 - 11/18 (4)
- 11/04 - 11/11 (11)
- 10/28 - 11/04 (11)
- 10/21 - 10/28 (3)
- 10/14 - 10/21 (6)
- 10/07 - 10/14 (5)
- 09/30 - 10/07 (18)
- 09/23 - 09/30 (13)
- 09/16 - 09/23 (9)
- 09/09 - 09/16 (12)
- 09/02 - 09/09 (15)
- 08/26 - 09/02 (2)
- 08/19 - 08/26 (8)
- 08/12 - 08/19 (25)
- 08/05 - 08/12 (7)
- 07/29 - 08/05 (8)
- 07/22 - 07/29 (2)
- 07/15 - 07/22 (4)
- 07/08 - 07/15 (11)
- 07/01 - 07/08 (3)
- 06/24 - 07/01 (8)
- 06/17 - 06/24 (4)
- 06/10 - 06/17 (17)
- 06/03 - 06/10 (6)
- 05/27 - 06/03 (12)
- 05/20 - 05/27 (5)
- 05/13 - 05/20 (15)
- 05/06 - 05/13 (10)
- 04/29 - 05/06 (14)
- 04/22 - 04/29 (5)
- 04/15 - 04/22 (6)
- 04/08 - 04/15 (16)
- 04/01 - 04/08 (8)
- 03/25 - 04/01 (5)
- 03/18 - 03/25 (3)
- 03/11 - 03/18 (3)
- 03/04 - 03/11 (5)
- 02/25 - 03/04 (1)
- 02/18 - 02/25 (4)
- 02/04 - 02/11 (10)
- 01/28 - 02/04 (11)
- 01/21 - 01/28 (2)
- 01/14 - 01/21 (1)
- 01/07 - 01/14 (7)
-
2006
(261)
- 12/31 - 01/07 (7)
- 12/24 - 12/31 (13)
- 12/17 - 12/24 (6)
- 12/10 - 12/17 (7)
- 12/03 - 12/10 (6)
- 11/26 - 12/03 (1)
- 11/19 - 11/26 (5)
- 11/05 - 11/12 (2)
- 10/29 - 11/05 (4)
- 10/22 - 10/29 (5)
- 10/15 - 10/22 (2)
- 10/08 - 10/15 (3)
- 10/01 - 10/08 (9)
- 09/24 - 10/01 (8)
- 09/17 - 09/24 (1)
- 09/10 - 09/17 (5)
- 09/03 - 09/10 (6)
- 08/27 - 09/03 (2)
- 08/13 - 08/20 (9)
- 08/06 - 08/13 (6)
- 07/30 - 08/06 (6)
- 07/23 - 07/30 (6)
- 07/16 - 07/23 (3)
- 07/09 - 07/16 (2)
- 07/02 - 07/09 (2)
- 06/25 - 07/02 (10)
- 06/18 - 06/25 (9)
- 06/11 - 06/18 (10)
- 06/04 - 06/11 (6)
- 05/28 - 06/04 (9)
- 05/21 - 05/28 (9)
- 05/14 - 05/21 (3)
- 05/07 - 05/14 (4)
- 04/30 - 05/07 (10)
- 04/23 - 04/30 (1)
- 04/16 - 04/23 (2)
- 04/09 - 04/16 (4)
- 04/02 - 04/09 (4)
- 03/19 - 03/26 (9)
- 03/12 - 03/19 (11)
- 03/05 - 03/12 (1)
- 02/26 - 03/05 (5)
- 02/19 - 02/26 (14)
- 02/12 - 02/19 (2)
- 02/05 - 02/12 (1)
- 01/29 - 02/05 (1)
- 01/22 - 01/29 (2)
- 01/01 - 01/08 (8)
-
2005
(335)
- 12/25 - 01/01 (9)
- 12/18 - 12/25 (4)
- 11/27 - 12/04 (1)
- 11/20 - 11/27 (1)
- 11/13 - 11/20 (1)
- 10/23 - 10/30 (1)
- 10/16 - 10/23 (2)
- 10/09 - 10/16 (3)
- 10/02 - 10/09 (11)
- 09/18 - 09/25 (4)
- 09/11 - 09/18 (4)
- 09/04 - 09/11 (1)
- 08/28 - 09/04 (7)
- 08/21 - 08/28 (10)
- 08/14 - 08/21 (6)
- 08/07 - 08/14 (2)
- 07/31 - 08/07 (16)
- 07/24 - 07/31 (5)
- 07/17 - 07/24 (6)
- 07/10 - 07/17 (5)
- 06/19 - 06/26 (1)
- 05/29 - 06/05 (7)
- 05/22 - 05/29 (7)
- 05/15 - 05/22 (16)
- 05/08 - 05/15 (10)
- 05/01 - 05/08 (8)
- 04/24 - 05/01 (6)
- 04/03 - 04/10 (7)
- 03/27 - 04/03 (19)
- 03/20 - 03/27 (15)
- 03/13 - 03/20 (27)
- 03/06 - 03/13 (7)
- 02/27 - 03/06 (16)
- 02/20 - 02/27 (7)
- 02/13 - 02/20 (10)
- 02/06 - 02/13 (23)
- 01/30 - 02/06 (4)
- 01/23 - 01/30 (12)
- 01/16 - 01/23 (15)
- 01/09 - 01/16 (2)
- 01/02 - 01/09 (17)
-
2004
(534)
- 12/26 - 01/02 (18)
- 12/19 - 12/26 (5)
- 12/12 - 12/19 (5)
- 12/05 - 12/12 (25)
- 11/28 - 12/05 (8)
- 11/21 - 11/28 (3)
- 11/14 - 11/21 (4)
- 11/07 - 11/14 (7)
- 10/31 - 11/07 (13)
- 10/24 - 10/31 (7)
- 10/17 - 10/24 (10)
- 10/10 - 10/17 (15)
- 10/03 - 10/10 (1)
- 09/19 - 09/26 (9)
- 09/12 - 09/19 (4)
- 09/05 - 09/12 (4)
- 08/29 - 09/05 (9)
- 08/08 - 08/15 (11)
- 08/01 - 08/08 (4)
- 07/11 - 07/18 (12)
- 07/04 - 07/11 (19)
- 06/27 - 07/04 (12)
- 06/20 - 06/27 (7)
- 06/13 - 06/20 (5)
- 06/06 - 06/13 (1)
- 05/30 - 06/06 (8)
- 05/23 - 05/30 (27)
- 05/16 - 05/23 (16)
- 05/09 - 05/16 (36)
- 05/02 - 05/09 (31)
- 04/25 - 05/02 (13)
- 04/18 - 04/25 (25)
- 04/11 - 04/18 (15)
- 03/28 - 04/04 (9)
- 03/21 - 03/28 (12)
- 03/14 - 03/21 (9)
- 03/07 - 03/14 (7)
- 02/29 - 03/07 (16)
- 02/22 - 02/29 (11)
- 02/15 - 02/22 (6)
- 02/08 - 02/15 (8)
- 02/01 - 02/08 (9)
- 01/25 - 02/01 (18)
- 01/18 - 01/25 (12)
- 01/11 - 01/18 (14)
- 01/04 - 01/11 (14)
-
2003
(286)
- 12/28 - 01/04 (7)
- 12/21 - 12/28 (10)
- 12/14 - 12/21 (5)
- 11/30 - 12/07 (5)
- 11/23 - 11/30 (5)
- 11/16 - 11/23 (2)
- 11/09 - 11/16 (3)
- 10/26 - 11/02 (6)
- 10/19 - 10/26 (9)
- 10/12 - 10/19 (8)
- 10/05 - 10/12 (5)
- 09/28 - 10/05 (3)
- 09/21 - 09/28 (3)
- 09/14 - 09/21 (4)
- 09/07 - 09/14 (3)
- 08/31 - 09/07 (6)
- 08/24 - 08/31 (12)
- 08/17 - 08/24 (3)
- 08/10 - 08/17 (6)
- 08/03 - 08/10 (8)
- 07/27 - 08/03 (9)
- 07/20 - 07/27 (5)
- 07/13 - 07/20 (8)
- 07/06 - 07/13 (15)
- 06/29 - 07/06 (12)
- 06/22 - 06/29 (5)
- 06/15 - 06/22 (6)
- 06/08 - 06/15 (1)
- 06/01 - 06/08 (5)
- 05/18 - 05/25 (7)
- 05/11 - 05/18 (9)
- 05/04 - 05/11 (13)
- 04/27 - 05/04 (9)
- 04/20 - 04/27 (4)
- 04/13 - 04/20 (10)
- 04/06 - 04/13 (15)
- 03/30 - 04/06 (7)
- 03/23 - 03/30 (13)
- 03/16 - 03/23 (9)
- 03/09 - 03/16 (3)
- 03/02 - 03/09 (8)
About Me
- Patrick Logan
- 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.