I think I might currently be the target for attempted eBay fraud.

I was, at first, unsure, because a brand-new eBay account was created last night, shortly before the owner of the account bought my camera. So, I asked on the eBay seller forums if this was normal. Then, because of comments being made there, I realized I could search through the buyer’s previous history.

Granted, the account is brand new. It has existed for less than 24 hours. And, in the first 10 minutes, the owner of that account made over $1500 in purchases.

ebay-fraud

So far, my buyer has made no further purchases, nor have they responded to my two messages. I’ve politely requested that their PayPal “ship to” address be verified. We’ll see if they get back to me or not.

I just hope I don’t get screwed in this process. As far as I can tell, eBay and PayPal are primarily concerned about protecting the buyer; as the seller, it appears to be far too easy for me to be the victim. I don’t like this at all.

I just want to sell my camera.

samsung-digicam

I’m selling a Samsung SC-D353 miniDV digital camcorder on eBay.

It is, for all intents and purposes, brand new. I opened it, I tested it, it works, and I never put it to use. It has sat on a shelf for eight months.

It opens at $100, and can be purchased outright for $200.

Buy and enjoy.

The content of this post is redacted, because it was pointless blather.

However, I still think this comic from Wondermark is telling.

dumbest-thing

You can see the full-size version on the author’s website.

I flew from London to Cleveland in December.

I flew from Cleveland to London in January.

I flew from London to Houston in February.

I flew from Houston to London in March.

I flew from London to Los Angles in April.

I flew round trip LA to Cleveland in May.

I flew from LA to London in May.

I flew round-trip London to Faro in June.

I flew from London to Cleveland in July.

I fly, Cleveland to London, before the end of the month.

I have never watched ZeFrank’s video podcast before; very succinctly, he makes clear the way I feel about the US response to terrorism.

zefrank-no-fear

Even with the risk of airplane bombings, it is still more dangerous to drive your car—or smoke cigarettes.

As long as a small group of people can inflict mass panic across a large population, the tactic itself will remain viable. One way to deal a blow to the effectiveness of terrorism is to deal with the terror itself. London’s police deputy commissioner Paul Stevenson’s report said that the plot was “intended to be mass murder on an unimaginable scale.”

No. It is imaginable. Between three and ten flights out of thousands would have resulted in the terrible loss of human life.

Bush today said this country is safer today than it was prior to 9/11. Personally, I don’t think he knows. Whether we like it or not, terrorist attacks on Americans are now part of the global reality. They will continue to happen.

The entire spot is 2 minutes, 21 seconds. It’s rational, and straight-forward.

If a terrorist makes you live in fear, shame on them.
If your government makes you live in fear, shame on you.

The porting of the Transterpreter is straight-foward. You check the sources out, configure your cross-compiler, and go. Some twiddling with ‘make’ is usually the biggest problem we run into.

Porting to the NXT will be slightly less straight-forward.

NXT-block-diagram

The core Transterpreter will cross-compile to the ARM7 without any problems. However, there’s a little problem of bringing up the hardware on the NXT that must be addressed. From my experience working on the Tmote Sky, the OS developer needs to check and set a significant number of pins to bring up each piece of hardware. These bit-twiddling operations are tricky; for this reason, it is likely that we’ll want to get a JTAG reader for the Mac and be able to inspect the hardware while developing.

The Atmel AVR is likely to be the first device we bring up; it gives us access to the sensors, motors, and buttons on the device. Once we have rudimentary access to the NXT’s sensors and motors, the simplest way to get feedback from our programs will be to implement sound. In increasing order of difficulty, I suspect the display, the USB port, and Bluetooth radio will follow. Once we get the low-level bindings in place, however, we should be able to write the majority of the NXT port in occam-pi or 42, which will make development a good deal more pleasant.

We’re not prepared to call things “version 1.0″ yet, but we are prepared to open the source. A read-only, anonymous Subversion repository is now available:

svn co http://svn.transterpreter.org/transterpreter/trunk/

If you’re just interested in using the Transterpreter on Mac OSX (PPC), Windows, or Debian GNU/Linux (Intel), you can just download a pre-built binary. However, if you want to use the Transterpreter on Mac OS X (Intel), or some other platform for which we do not have binaries, you will need to check out and build from source.

If you are really crazy (or are really curious, or know what you’re doing), you’re welcome to check everything out, including all our exploratory branches. Simply get rid of ‘trunk’ on that first URL. I’d like to point out that this is not, in the general case, necessary.

Lastly, if you’d just like to browse the source, you can take a look at

http://trac.transterpreter.org/browser/transterpreter/trunk

If you have any questions, I’d encourage you to join the tvm-discuss mailing list, or drop me a note.

Update 20060809: I’ve set up a new download page that provides more detail regarding the Subversion download.

Things are rolling along on our XML-RPC library for PLT Scheme. At this point, the client is stable and well tested, and both the servlet and Apache CGI server implementations work and are poorly tested. However, one or two people were asking to make use of the server-side code, so we’ve made it available. Caveat developer.

Implementing an XML-RPC servlet is really quite straight-forward:

(require (planet "xmlrpc-servlet.ss"
                 ("schematics" "xmlrpc.plt" 1 2)))

(define (add x y) (+ x y))
(add-handler 'math.add add)

(handle-xmlrpc-requests)

Dropping this code somewhere under the ‘/servlets’ directory should get you going. I’m still unhappy with the current state of the CGI code:

#!/path/to/mzscheme -gqr
(require (lib "config.ss" "planet"))
(PLANET-DIR "/tmp/PLaneTWeb/dir")
(CACHE-DIR "/tmp/PLaneTWeb/cache")
(LINKAGE-FILE "/tmp/PLaneTWeb/linkage")
(LOG-FILE #f)

(require (planet "xmlrpc-cgi.ss"
                 ("schematics" "xmlrpc.plt" 1 2)))

(add-handler 'add (lambda (a b) (+ a b)))

(output-http-headers)

(handle-xmlrpc-requests)

I imagine we’ll absorb the output-http-headers into the handle-xmlrpc-requests macro, and I really want to do something to improve the state of affairs w.r.t. PLaneT package handling in the CGI environment. As I said above: the server code in the library is in motion, and it will likely change.

As an aside, I expect stress-testing the server-side code will be interesting; Noel suggested using Ethereal to record interactions between clients (in other languages) and our server implementations, and then replay those interactions in SchemeUnit unit tests. A neat idea, and not something I had thought of.

I’m pleased. My ‘gtd’ script has evolved nicely over the last few days. By default, the output of the ‘gtd’ command line script looks like:

  20     3d @online  bills  Visa/MC/House bills
  10     3d @online  DIAS   PL email follow-up
  11     5d @online  CPA    CPA reg?
  19     6d @online  ICER   PhICER app deadline
  21  1w 1d @fun     life   6th anniv.
  12  2w 0d @PB      ACM    RoboDeb draft
   9  4w 0d @mtg     CPA    draft presentations
   1  4w 3d @mtg     DIAS   Manchester
   2  4w 4d @mtg     DIAS   Manchester
   3  4w 6d @online  ACM    SIGCSE paper due
   8  5w 0d @online  ACM    ACM SAC due
   4  6w 2d @mtg     CPA    CPA
   5  6w 3d @mtg     CPA    CPA
   6  6w 4d @mtg     CPA    CPA
   7  6w 5d @mtg     CPA    CPA
  13  8w 4d @online  AAAI   Symposium CFP
  17 070324 @fun     life   Sarah + Andy wedding
  14 070326 @mtg     AAAI   Symposium
  15 070327 @mtg     AAAI   Symposium
  16 070328 @mtg     AAAI   Symposium

There are a number of things I like about the tool as it has evolved. For one, I like the relative dates; they have more meaning to me, in the short term, than absolute dates. For example, it is more meaningful to me that I should handle my bills in three days time, rather than knowing I should do it on the 7th of August. I can also display this information by context (proceeded by an ‘@’) or by project. Of course, I can edit existing entries, flag items as being done, and if I want, remove entries from the ToDo list completely.

[Lyra] gtd > gtd -h
gtd [ <flag> ... ] [<todo>] ...
 where <flag> is one of
  -@ <context>, --context <context> : Add context to the ToDo in question.
  -! <project>, --project <project> : Assign this ToDo to a project.
  -# <date>, --date <date> : Assign this ToDo a completion date.
  -e <id>, --edit <id> : Edit an existing entry.
  -d <id>, --done <id> : Complete a ToDo.
  --remove <id> : Remove an entry.
  -s <regexp>, --search <regexp> : Search DB using a regular expression.
  --by-context : Show ToDos by context.
  --by-project : Show ToDos by project.
  --date-display <mode> : Date display mode; either 'relative' or
                             'absolute'. Default is 'relative'.
  --help, -h : Show this help

Because I’m using the MzScheme “cmdline.ss” library, I also get some nice help documentation “for free”. That’s quite handy.

The current default for the script is to render a .reminders file as well; this works with the UNIX utility ‘remind’ (useful links: 1, 2, and the home of remind). This is incredibly handy; I then render it to my desktop using Geektool:

remind-geektool-exe

As you can see, I render both a calendar and my ToDo list to my desktop; this way, it’s never more than a short keypress away. I like this, because it makes it very easy to figure out when I’m supposed to be doing what, where.

This may be one of the more immediately useful programs I’ve written lately. As in “this solves a problem I have, right now, and solves it the way I want.” That’s very groovy.

(Pictures stolen from osbornesonline.org.)

While down in the Carolinas, we had a chance to catch up with family. As you can see, we had a chance to meet Ethan, who is… small.

m-and-e
Ethan and Matt

c-and-e
Ethan and Carrie

For the curious, I sketched a partial family tree that links Ethan and I. Actually, I was curious…

partial-family-tree

There’s a lot of microworlds out there. The original microworld was probably LOGO (Wikipedia), with its iconic turtle. Today, there are countless environments in which students can create characters, agents, worlds, universes… all programmable, all creative, all quite cool. Alice comes to mind (a 3D environment in a novel language intended for beginners), as does NetLogo (a massively parallel LOGO). And if you’re open-minded, things like the LEGO Mindstorms is a physical manifestation of these agent-based microworlds… a real, robot agent that kids of all ages can program and play with.

Why, on the Greenfoot weblog, would I be pointing to… the competitors? Humor aside, each of these environments provide a very different way of approaching the same ideas, and as users and educators, we stand to learn a great deal by looking at a broad spectrum of tools. At one level, all of these programmable microworlds provide opportunities for beginners to program in an interesting and engaging environment. At another, they challenge students to think about an interesting class of problems: software agents interacting with each-other, dynamically and (in some cases) unpredictably. This is critical in the real world: programs that interact with databases, webservers, and the like operate in fundamentally the same (unpredictable, agent-based) space.

In the case of Greenfoot, there’s an added benefit that the language encounter Java. Java is widely used in the world today, and the object is a reasonably natural way to represent an individual agent wandering free in the world. What I particularly like is that the notion of an object (an abstract concept that is often difficult to explain to a novice programmer) gains a visible analogue in Greenfoot: “that (ant, wombat, thing on the screen there) is represented by an object.” Students can inspect those objects (just like in BlueJ) and see how their agent’s state changes as it wanders about in the world. That, I think, is quite cool.

seagull-beach

Since I’m actually at the beach, I’m going to stop my musings on “why I like Greenfoot”… as I should be out enjoying the sun! However, I’ll continue these thoughts from time-to-time. If nothing else pulls me away, I have to make sure that the fish stew I’ve planned for this evening continues as planned. We have a nice, long-grain brown rice, 2lbs of fresh shrimp, 3.5lbs of assorted, firm white fish (all fresh off the boat!), lots of fresh tomatoes, and good garlic bread and salad to go with. Yummy.

The Marine Biology Case Study

Given that I’m on the shore, it’s a perfect time to mention the Marine Biology Case Study, which is now available as a Greenfoot microworld. This was an example project used by the US College Board for the AP Computer Science course; now, it’s far more interactive and interesting to play with. If I can’t wrangle a guest blogger here to walk us through the case study, I’ll dive in and do my own exploration. Marine biology and beaches: two great things that go great together. :)