connolly is currently certified at Master level.

Name: Dan Connolly
Member since: 2000-07-11 16:05:27
Last Login: 2011-11-02 02:01:23

FOAF RDF Share This

Homepage: http://www.madmode.com/

Notes:

I deal in open source and open standards. At work
I write software to support research. At W3C I did Web Architecture, HTML, HTTP, XML, URIs and the like. I hold a degree in Computer Science from U.T. Austin, but I started hacking when I was 13, and I think USENET (esp. comp.lang.*) was where I learned most of the good stuff... perhaps my favorite article is Re: Python, Tcl and
Perl, oh my! (was Re: tcl vs. perl)
from 1996, in which I argue that the community around a language has more impact on code quality than the intrinsic features of the language.

I learned perl from tchrist in about 1990 while working at Convex. Hi kbob! I'm a pretty big fan of python, and I leaned a lot studying
scheme, and I'm a fan of the smalltalk culture... my WikiWiki bio tells more of the story.

I hang out in #swig channel when I'm
hacking. The swig
scratchpad
is our weblog.

Projects

Articles Posted by connolly

Recent blog entries by connolly

Syndication: RSS 2.0

Remembering OS-9 on the CoCo

During an annual purge of old file boxes, I came across my 5 1/4 CoCo disks. Much of what I know about unix and linux actually dates back to OS-9 on the CoCo:
OS-9 - Wikipedia, the free encyclopedia: Even on the CoCo, a quite minimalist hardware platform, it was possible under OS-9/6809 Level One to have more than one interactive user running concurrently (for example, one on the console keyboard, another in the background, and perhaps a third interactively via a serial connection) as well as several other non-interactive processes.
I wrote a shell in assembler; I ran across a hardcopy of the source a week or so ago. I wonder if the source is on these floppies. I made a copy on CD a few years back before I de-commissioned my last 5 1/4 disk drive.

Syndicated 2012-01-22 21:19:00 (Updated 2012-01-22 21:19:40) from Dan Connolly

There’s a Better Way to Build a Smart TV | The Official Roku Blog

This Roku Streaming Stick looks like a pretty good balance between the simplicity of integration and the upgradeability of componentization.
It makes me question my recent strategy of getting a really inexpensive TV (Haier L32D1120 32-Inch 720p LCD HDTV, Black on sale for $200) and streaming Blu-ray player (Panasonic DMP-BD75 Ultra-Fast Booting Blu-ray Disc Player $60). The Blu-ray player does Netflix pretty well, but the TV doesn't have the new MHL HDMI interface.

Syndicated 2012-01-21 08:34:00 (Updated 2012-01-21 08:34:59) from Dan Connolly

A big thanks for Web-iPhoto!

My wife does a photo shoot with the boys for the Christmas card each year. I wanted to share a digital copy of the photo, but our family photo archive is a mess, with N iPhoto albums on M macs and K backups on X linux boxes.

I know iPhoto is just JPG's and sqlite underneath, so it kills me that I can't just get at the photos with a web browser. I could code something up myself, but surely somebody has done it before, no? I've looked without luck before, but I guess I was using the wrong search terms. Today when I wished for "iphoto sqlite web server", lo! Merry Christmas to me!

Web-iPhoto

Thank you, Dmytro Kovalov!

It works great on a huge iPhoto library backed up on this linux box.

Here's hoping I can install it on the macs in the house running various versions of OS X. I have lots of experience with python on macs, but not so much ruby. I sure hope I don't have to install XCode.

Syndicated 2012-01-03 00:23:00 (Updated 2012-01-03 00:27:03) from Dan Connolly

Capability Security in E, coffescript, python, dart, and scala

A couple months ago, I inherited some Java code and took on the task of fixing a bug in it. The bug turned out to be a consequence of a silent failure; eek! And there were precious few tests and no way to test the parts without being connected to LDAP servers and SQL databases and such. This started me on an exploration of current best practices in testing. And since the job of this code was policy enforcement around patient data, I could finally justify getting my hands dirty with capability-based security. I discovered, as many others have, that both testability and security are well served by some of the same basic object-oriented techniques.

Dependency injection frameworks always smelled like overkill to me, but after watching Miško Hevery on testability, I was convinced. If you're in the mood for text rather than video, see his Guide: Writing Testable Code. Basically, instead of having some policy enforcement object constructor call an LDAP connection constructor, the policy enforcement object takes the LDAP connection as a constructor argument. "Don't call us; we'll call you" is a handy mnemonic. This lets you substitute a mock LDAP connection for testing.

It also forms patterns of cooperation without vulnerability.

For example, take a look at the simple money example in E and the underlying sealer/unsealer pattern.

I have been using these as an exercise to explore some of the recent programming language developments:

The coffeescript translation seems completely natural, to me. Given the right static scope (i.e. without most of the JavaScript standard library), I think it has the same security properties as the E version. And the E idioms seemed to translate quite directly.

Python has not only the API authority issues, but also untold introspection loopholes. Plus, I had to kludge around read-only closures and no-assignment-in-lambdas; and while simulating E's method suite idiom is not too ugly, tools like pyflakes don't recognize the results.

Dart is a big disappointment. Everywhere else I look, Google is pushing capability security. But Dart lacks nested classes, so translating E method suites results in something that is only vaguely recognizable, let alone comprehensible.

Scala works reasonably well. The Java implementation of sealing relies more on  strong typing than the object graph for rights amplification; I might want to think that over some more. Also, It's a little boring to spell out the types. I might have to try it in Haskell. But on the other hand, as Brendan Eich observes:
Dynamic languages are popular in large part because programmers can keep types latent in the code, with type checking done imperfectly (yet often more quickly and expressively) in the programmers’ heads and unit tests, and therefore programmers can do more with less code writing in a dynamic language than they could using a static language.
The balance between static and dynamic languages also shows up in development tools. I had the eclipse with the Joe-E verifier, maven, and mercurial working all together at home one evening. The code really does just about write itself at that point. But when I tried to reproduce it at work, I got so frustrated that I retreated to emacs and python and looking up function arguments manually. The python version of the project has gotten complex enough that I'm starting to miss some of the whole-program consistency that Java tools give, but I'm getting by with a bottom-up approach: flymake, doctest, and the like.


Syndicated 2011-11-23 22:44:00 (Updated 2011-11-23 23:57:11) from Dan Connolly

Medical Informatics, Peer Review, and Open Access

Three issues of JAMIA just arrived, weighing not just on my desk but also on my mind: success is defined by my peers in my new field, medical informatics, as publication in a journal where the readers have to pay for access. After fifteen years as an Open Web advocate, this grates on me.

But I see that change is already underway. While JAMIA is the top journal that I hear about in the office so far, a quick trip to Wikipedia shows that it's second in impact to an open-access journal: Journal of Medical Internet Research.

Syndicated 2011-11-21 14:35:00 (Updated 2011-11-21 14:55:21) from Dan Connolly

99 older entries...

 

connolly certified others as follows:

  • connolly certified connolly as Journeyer
  • connolly certified jwz as Master
  • connolly certified gtaylor as Journeyer
  • connolly certified jg as Master
  • connolly certified jtauber as Journeyer
  • connolly certified fdrake as Journeyer
  • connolly certified robla as Journeyer
  • connolly certified ger as Journeyer
  • connolly certified aaronsw as Journeyer
  • connolly certified ndw as Master
  • connolly certified kbob as Master
  • connolly certified DV as Master
  • connolly certified ping as Master
  • connolly certified gstein as Master
  • connolly certified mikehearn as Journeyer
  • connolly certified dajobe as Master
  • connolly certified edd as Journeyer
  • connolly certified vdv as Journeyer
  • connolly certified Ankh as Master
  • connolly certified timbl as Journeyer
  • connolly certified djweitzner as Journeyer
  • connolly certified presbrey as Master

Others have certified connolly as follows:

  • connolly certified connolly as Journeyer
  • jenglish certified connolly as Master
  • ger certified connolly as Journeyer
  • DV certified connolly as Journeyer
  • link certified connolly as Journeyer
  • jtauber certified connolly as Master
  • eikeon certified connolly as Master
  • aaronsw certified connolly as Journeyer
  • mnot certified connolly as Journeyer
  • robla certified connolly as Master
  • fxn certified connolly as Master
  • her certified connolly as Master
  • vdv certified connolly as Master
  • TheCorruptor certified connolly as Master
  • Uche certified connolly as Journeyer
  • jonb certified connolly as Master
  • danbri certified connolly as Master
  • edd certified connolly as Journeyer
  • mdupont certified connolly as Journeyer
  • watete certified connolly as Master
  • Omnifarious certified connolly as Journeyer
  • pasky certified connolly as Journeyer
  • castagna certified connolly as Master
  • Ankh certified connolly as Master
  • mitsue certified connolly as Master
  • Bopon certified connolly as Master
  • olea certified connolly as Master
  • timbl certified connolly as Journeyer
  • presbrey certified connolly as Master
  • oshani certified connolly as Master
  • djweitzner certified connolly as Master
  • liam certified connolly as Master
  • mhausenblas certified connolly as Master
  • murajov certified connolly as Master
  • ittner certified connolly as Master
  • badvogato certified connolly as Journeyer

[ Certification disabled because you're not logged in. ]

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!

X
Share this page