July 3, 2010
How not to resolve online ordering problems
This afternoon, I received a call from an online vendor whose web site we recently used, attempting to make a purchase. He said that our recent order used a flag indicating that a 10% discount code was enabled, but we had no such discount authorized. I expected him to suggest an adjustment and/or ask exactly what we did, so that he could try to reproduce the problem.
...
Continue reading "How not to resolve online ordering problems"
April 27, 2010
"Automatic SketchUp: Creating 3-D Models in Ruby"
Although I've played with SketchUp Ruby from time to time over the past few years, my first real introduction occurred in the Fall of 2009. Igloo Studios, a well-known name in SketchUp modeling and training, brought me in to maintain some of their tools and create some others. Clearly, I had some homework to do. ...Continue reading ""Automatic SketchUp: Creating 3-D Models in Ruby""
February 10, 2010
Configuration File Trickery
I tend to use a fairly minimal subset
of YAML for configuration files.
YAML supports my favorite data structures (lists and hashes) and is easy to read and edit
(particularly if one ignores its syntax for declaring data types and such).
However, in a recent project,
I found myself using CSV
(comma-separated value) files, instead.
...
Continue reading "Configuration File Trickery"
November 9, 2009
SketchUp MashUp HeadsUp
My recent post, Using Cucumber with SketchUp, discussed one possible way to combine Google SketchUp with other packages. However, there are lots of other possible mash-ups. This entry discusses some of these; other suggestions are welcome... ...Continue reading "SketchUp MashUp HeadsUp"
November 1, 2009
Using Cucumber with SketchUp
Cucumber is a Ruby-based tool (technically, a domain-specific language) that helps programmers and their clients define and agree on tests of program behavior. These tests can be used to guide development, enforce acceptance criteria, and detect regressions.
Although it is popular in the larger Ruby community,
Cucumber has not been used (as far as I can tell) to develop Ruby-based extensions
for Google SketchUp.
This seems like an unfortunate situation;
perhaps it's time to see what can be done about it...
...
Continue reading "Using Cucumber with SketchUp"
October 20, 2009
Visualizing RDF and OWL data models
The data models for Resource Description Framework (RDF) and Web Ontology Language (OWL) can be a bit difficult to understand, even at the simplest level. Here are some visualizations (and explanations) I've found useful: I'd be delighted to hear about other ways of thinking about this. All comments and/or corrections are welcome... ...Continue reading "Visualizing RDF and OWL data models"
October 19, 2009
Semantic Web Installfest - meeting notes
I recently organized an Installfest for the San Francisco Semantic Web Meetup. It was held at PariSoMa, a co-working venue in SoMa (South of Market Street in San Francisco). Given that this was my first attempt at pulling together this sort of "hands on" meeting for the group, I think it went pretty well.
I had several reasons for organizing the meeting,
but the primary one was to bring together a group of SemWeb enthusiasts
who want to learn about the technology, try things out, discuss alternatives, etc.
I love hearing about successful Semantic Web projects,
but I also want to "get my hands dirty" using the tools.
...
Continue reading "Semantic Web Installfest - meeting notes"
October 13, 2009
Improving the Conciseness of Turtle and SPARQL
RDF/XML, the "official" serialization format for RDF (Resource Description Framework) was never designed for use by humans. Turtle (Terse RDF Triple Language) is a great improvement, but it's still a bit verbose for my tastes. SPARQL, being largely modeled after Turtle, shares many of its limitations. ...Continue reading "Improving the Conciseness of Turtle and SPARQL"
October 5, 2009
No Time for Docs at RubyConf 2009
I don't envy conference program committee members. They have a difficult and generally thankless job, made worse by occasional rants such as this one. However, I really have to say something about RubyConf 2009. ...Continue reading "No Time for Docs at RubyConf 2009"
September 23, 2009
Modeling for Network Administration
Large-scale computer networks can involve hundreds of thousands of components (eg, computers, programs, routers) and an even larger number of connections. These systems are also highly interdependent: the loss of a single component or connection can have far-reaching effects.September 8, 2009
Safety Nets for OWLs
I've been programming for several decades, but I'm relatively new to ontology development in general and OWL in particular. So, I'm certainly not an expert on the range of work in this area. However, I think I see some areas where programming best practices and tools could provide useful "safety nets" for OWL-based ontology developers. ...Continue reading "Safety Nets for OWLs"
July 31, 2009
Apple Bug Report 7109559: UI problems in iTunes
Not everyone knows that Apple has a way to submit bug reports. Or, more to the point, that they actually read them. However, it turns out that Apple engineers interact continuously with a bug tracking system called RADAR and that there is a reliable way for "civilians" to submit reports to it. I've submitted quite a few reports (about one report a month, for several years) and the responses were always polite and generally clueful. ...Continue reading "Apple Bug Report 7109559: UI problems in iTunes"
July 28, 2009
How to Chase Away Help
I'm currently looking at a wiki page for an (unnamed) Open Source project. The page has a number of minor errors; I'd be happy to help the developer(s) clean it up. Except... ...Continue reading "How to Chase Away Help"
July 26, 2009
A Triple Smörgåsbord
I recently had the pleasure of attending OSCON 2009, O'Reilly's broad-spectrum Open Source conference. It was quite an event: really, a triple smörgåsbord. ...Continue reading "A Triple Smörgåsbord"
July 18, 2009
Mechanizing the Path to Ruby 1.9
In What do we need to get on Ruby 1.9?, Yehuda Katz says he thinks it's time to get serious about migrating the Ruby community to Ruby 1.9. He then asks for specific information on show-stoppers: gems, plugins, tools, and such that don't yet work on Ruby 1.9. His request has already resulted in a lot of opinions and anecdotal evidence, but I think there is a fairly obvious way to get better information. ...Continue reading "Mechanizing the Path to Ruby 1.9"
April 3, 2009
Continuous Integration Support for Wikis
Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible.In a way, wikis have been using Continuous Integration (CI) since their inception: new content, configuration settings, and even plugins are always being added to wikis. Unfortunately, no wikis that I know of have any formal support for CI. In particular, I don't see any test suites that help wiki administrators and users detect and correct broken content, configuration problems, and/or dysfunctional plugin combinations. Perhaps it's time to resolve this deficiency. ...-- Continuous Integration, Martin Fowler
Continue reading "Continuous Integration Support for Wikis"
March 19, 2009
Video Resources for Rubyists
There are a slew of video resources available on the web, including the fabulous offerings at sites such as www.ted.com, www.poptech.org/popcasts, http://www.jaoo.dk, and mitworld.mit.edu/browse. I would strongly recommend taking a look at these, if you have a tuit or two...
However, these sites aren't focused on the interests of Ruby;
so, here are some that are.
Increasing the number of recorded talks is a win-win --
the community gets a record of the talks; the conference and presenter get publicity.
...
Continue reading "Video Resources for Rubyists"
December 12, 2008
TWiki and Foswiki: the road ahead
TWiki has been around for about a decade. It is an "Enterprise Wiki", offering a number of features that work well in corporate environments (eg, access controls, forms, scripting, skins, webs). It is a solid and mature piece of technology, with a substantial user base.Recently, a rift in the TWiki developer community caused the project to fork. Peter Thoeny retains the TWiki trademark and web sites, but most of the developers have joined Foswiki. (For details, see the Foswiki and TWiki versions of the story.) This essay attempts to predict where things will go from here and suggest how developers and administrators can cope with the inevitable dislocations.
November 23, 2008
Merb: less magic, more engineering
As discussed in "How I arrived at Ruby", I've become a big fan of Ruby. As soon as I realized that I really, really wanted to work in Ruby (a couple of years ago, at this writing), I started looking for ways to use the language professionally. (Hobby programming is lots of fun, but it doesn't pay the bills. :-)
I found that Ruby is being used in a number of contexts
(eg, administrative scripts,
Cocoa and
Google SketchUp programming).
However, Ruby on Rails
was clearly the high-order bit (or maybe byte :-),
in terms of industry buzz, contract and job opportunities, etc.
So, I got some books and dived in.
...
Continue reading "Merb: less magic, more engineering"
November 3, 2008
How I arrived at Ruby
I've used interpreted languages for several decades, starting with the Lisp and command language interpreters I found on Stanford's WYLBUR (really, ORVYL) system in the early 70's. Most of my early programming, however, was done in compiled languages (eg, Assembler, C, COBOL, Fortran). I didn't get into serious scripting until I started using Unix. ...Continue reading "How I arrived at Ruby"
November 2, 2008
Using Ruby, Perl, Python, and PHP in concert...
About a year ago, I was tasked with "tidying up" the Protégé-Frames User's Guide. This consisted of a few hundred files of rather ugly machine-generated HTML. To reduce the effort of cleaning up and maintaining the files, as well as the chance of editing errors, I wanted to mechanize the process as much as possible. That is, eliminate the repetitive and voluminous header and footer blocks, auto-generate indexes and navigational links, etc.After writing some support code, I was able to re-cast the HTML into RHTML (HTML with embedded Ruby). A two-pass generation process allowed me to collect page names and navigational information, then generate both index pages and nicely cross-linked content pages. However, that wasn't the end of the story...
...
Continue reading "Using Ruby, Perl, Python, and PHP in concert..."
Multiple sets of Terminal windows in Mac OS X (Leopard)
Back in May 2006, I wrote a blog entry about creating multiple sets of Terminal windows in Mac OS X. This weekend, I finally got around to upgrading my desktop machine to Mac OS X 10.5 (Leopard). Leopard's version of Terminal is a great improvement over the old one, but it still is only a single application. So, if I hide it, all of its windows go away.
Although my old blog entry explains how to create multiple Terminal instances,
the part that dealt with editing the executable binary no longer worked.
Because the solution involved Real Code (TM),
I decided to create a new blog entry...
...
Continue reading "Multiple sets of Terminal windows in Mac OS X (Leopard)"
May 27, 2006
Multiple sets of Terminal windows in Mac OS X
Having three screens up 24/7, it's easy to accumulate windows. I typically have several dozen available on my Mac, spread across a few dozen apps. In general, this is quite convenient. When I'm not using an app, I hide it (via cmd-H) and all of its windows disappear. If I only want to get a few windows out of the way, I WindowShade them or send them to the Dock.
Unfortunately, these approaches don't work very well
for applications that have lots of windows.
Terminal programs, for example, may have dozens of windows,
each presenting a different shell and/or application context.
Mac OS X doesn't let me hide some of an app's windows, so that's out.
The Dock and WindowShade are awkward ways to manage dozens of windows;
simply dismissing and retrieving a set of several windows becomes quite a hassle.
...
Continue reading "Multiple sets of Terminal windows in Mac OS X"
April 17, 2006
Mechanical augmentation of Wikipedia
I'm a big fan of Wikipedia.
I use it both as a personal reference tool
and as an easy way to add depth to web-based documents.
However, I think that its utility might be improved
by a bit more
mechanical augmentation.
This augmentation could take (at least :-) three forms:
generated pages, automatic content, and requested content.
...
Continue reading "Mechanical augmentation of Wikipedia"
April 13, 2006
Ontiki: first steps
Note: See the project wiki for current goals, status, etc.
Previous weblog entries
(Ontiki: an ontology-aware wiki,
Mechanically-augmented wikis)
have discussed the possibility of creating structured wikis,
using mechanical (i.e., software) augmentation.
This entry is a very early status report,
discussing my initial experiments and early progress
in this effort.
...
Continue reading "Ontiki: first steps"
March 12, 2006
Our Spotlight book is out!
Spotlight, introduced in Mac OS X 10.4 (Tiger), is Apple's new desktop search feature. Although it isn't perfect, it's quite a useful addition to other forms of file-system navigation. So, when SpiderWorks asked me to write a book on the topic, I jumped at the chance. Now, after a year of off-and-on effort, the book is available for purchase. ...Continue reading "Our Spotlight book is out!"
March 6, 2006
Mechanically-augmented wikis
I've been thinking about ways to augment wikis with mechanically-harvested information, navigation aids, etc. The result would have the convenience and flexibility of wikis, but wouldn't depend on humans to provide all of the content, links, etc. As an example, let's consider the problem of generating detailed documentation for large collections of software.Technorati Tags: knowledge representation, model-based documentation, ontiki, ontology, semantic wiki, wiki
...Continue reading "Mechanically-augmented wikis"
March 5, 2006
Using DBMS tables for inter-application communication
I have been thinking about ways to integrate some large applications and frameworks into an even larger system. In line with the Perl virtue of Laziness, I'd like to write as little code as possible, particularly if it means making changes to the apps themselves. At the same time, I'd like to avoid supporting a plethora of interfaces and protocols. Fortunately, I may have hit upon a useful approach.Technorati Tags: DBI-Link, DBI-Link, DBMS, ontology, Perl DBI, PostgreSQL, RDBMS, semantic wiki, wiki
...Continue reading "Using DBMS tables for inter-application communication"
March 4, 2006
Polyglot Programming
Programmers who are facile with multiple languages frequently combine them, to great effect, in single projects. In Using PHP as a Macro Pre-processor, I only used two languages (HTML and PHP), but others (e.g., CSS, JavaScript) could easily have been added. ...Continue reading "Polyglot Programming"
February 2, 2006
Graph-related notions about LinkedIn
LinkedIn bills itself as "an online network of more than 4.8 million experienced professionals from around the world, representing 130 industries". My spouse Vicki Brown has a weblog entry that gives a general introduction, but it says little about the graph-related aspects of the network. So, here are some initial observations, based on a day or two of my own explorations... ...Continue reading "Graph-related notions about LinkedIn"
January 28, 2006
Checking out Benford's Law...
I spend far too much time following links on Boing Boing, Digg, and Slashdot, but they're really rather addictive (and make a nice break from my other activities :-). Anyway, after reading a fascinating article on Benford's Law (courtesy of Digg), I decided to check its assertions for myself... ...Continue reading "Checking out Benford's Law..."
January 1, 2006
Using PHP as a Macro Pre-processor
I've been using macro pre-processors (e.g., cpp, m4) since I switched to Unix a couple of decades ago. I've also used assorted ad hoc processors. The shell makes a handy a runtime pre-processor for awk and sed scripts. "Little language" processors can be written using Perl, YAML, etc. In short, macro processing is not a new concept for me.
Nor, for that matter,
is its application to document markup languages (e.g.,
Troff,
HTML).
In fact, I've written several special-purpose processors
to generate and/or massage documents.
Consequently, I'm a bit embarrassed to realize that I've been missing out
on a nifty way to use macros in web pages.
...
Continue reading "Using PHP as a Macro Pre-processor"
December 28, 2005
Peirce's semeiotic as a foundation for ontology
John Sowa, an expert on knowledge representation systems, developed Conceptual Graphs (CGs) as a notation for First-Order Logic (a form of Predicate Calculus). CGs are "a system of logic based on the existential graphs of Charles Sanders Peirce and the semantic networks of artificial intelligence". The Conceptual Graphs Interchange Format (CGIF) is being proposed to ISO as part of Common Logic (CL), which seeks to define logic-based formats for knowledge interchange.
I have been following the discussions on the CG and CL mailing
lists with great interest (if not always complete understanding :-).
...
Continue reading "Peirce's semeiotic as a foundation for ontology"
Ontiki: an ontology-aware wiki
Note: See the project wiki for current goals, status, etc.As discussed in my notes on model-based documentation, I'm quite interested in tools that make it easier to combine human-edited and machine-generated content. Ontiki is a proposed design for one such tool, based on currently available Open Source software.
As an ontology-aware wiki, Ontiki would allow pages to represent classes and instances of entities and relationships. The hope is that it could combine a wiki's convenience and freedom with the strengths of ontology-based systems, allowing a graceful merging of human-edited and mechanically generated content.
Technorati Tags: knowledge representation, model-based documentation, ontiki, ontology, semantic wiki, wiki
...Continue reading "Ontiki: an ontology-aware wiki"
February 12, 2005
A PC/FreeBSD War Story
Cfcl's copy of FreeBSD 4.7 is starting to seem a bit dated. It doesn't have the latest Sendmail, never has supported DMA access on this mobo¹, etc. Also, I have some interest in playing with Kirk McKusick's latest file system hacks, etc. So, I decided to install FreeBSD 5.3 on a "spare" machine, so that I could (eventually) migrate cfcl to it.
The machine already had a 20 GB IDE drive, which is plenty big enough for the OS. I added a 200 GB drive for home directories, etc. This may have been a mistake, but it seemed reasonable at the time (where are we going and what are we doing in this hand basket?).
Then I went to the FreeBSD site,
downloaded a bunch of CD images,
put them on discs (using the Mac OS X Disk Utility's "burn" feature)
and tried an install.
Didn't work.
Complained about the CD format.
Sigh.
...
Continue reading "A PC/FreeBSD War Story"
November 21, 2004
A Truly Technoid Gear Shift Knob
Yesterday, I noticed that my right hand hurt when I tried to pick things up. I couldn't remember doing anything to it, so I started having disturbing thoughts about possible "creeping disabilities". I make my living typing and using a mouse, so this is not an inconsequential issue to me.
I mentioned this to Vicki, so today she asked me how my hand was. It seemed better and I said so. Then, a bit later, I was driving our Scion xB and I said "This is what's hurting my hand. The gear shift knob is pressing on the inside of the joint".
We both agreed that this wasn't good. Vicki suggested that we stop by Kragen Auto after breakfast, to see if they had replacement shift knobs or soft covers. We went; we looked. They didn't have much, but we did try a small ball-shaped replacement knob. I liked it; my hand held it differently, so it didn't cause the problem. But Vicki didn't like it, because it didn't fit her hand.
...
Continue reading "A Truly Technoid Gear Shift Knob"
March 3, 2004
Who Uses Macs?
There's a country dancing group I visited a while back that meets in an open-air dance pavilion in Oak Park in Santa Barbara. The sound is provided by a Macintosh (white 12" iBook), running iTunes. The callers wear FM-transmitting microphones, letting them call and dance at the same time.At one point, when the group was having trouble with a dance, a caller went over to the Mac and adjusted the _tempo_ of the tune to 80% of normal (without lowering the pitch - a sampling trick I learned from AT&T and played with, 30+ years ago, on a PDP-15).
The caller told me that the software that does this is "real expensive, about $50". I restrained myself from commenting (:-).
December 7, 2003
"exotic" features of Perl
A recent question on a Perl mailing list asked about "exotic" features of Perl. My Perl code tends to be pretty pedestrian, I'm afraid. My taste also runs toward explicit use of variables, use of strict and warnings, etc. Basically, I think that the data structures (and occasional algorithms) should be the only interesting parts; the syntax should be as boring as possible.
I've been having some fun with regular expressions and persistent data
structures, less fun (but results!) with recursive crawling of XML. I
use YAML as the default medium of exchange among my scripts, reading and
writing other formats only when forced to (e.g, by existing input or
output requirements).
...
Continue reading ""exotic" features of Perl"