Twitter updates

I’ve added a Project Wonderful ad to the sidebar. I’m not doing this to make any kind of significant money. Most sites with my traffic might get a penny a day in advertising if they’re lucky. I’m doing an experiment to see how Project Wonderful works, both as a publisher   Read More ...

0 Comment

If you haven’t been reading A Newbie’s Guide to Publishing, you should. As with any blog, read it with a critical mind, but Konrath does address a lot of good points about publishing and the effect that e-books are having on the industry. I’ve been reading The Innovator’s Dilemma recently.   Read More ...

0 Comment

I began the month intending to write 50,000 words. I got a bit past 5,000 and then got sidetracked by another project. I shouldn’t be surprised. This is how it’s been in the past. From the title, you might guess that the distraction was a game, and you’d be right.   Read More ...

0 Comment

Every November, I mean to buckle down and write 50,000 words. Every November, something comes up that keeps me from doing it. Last year, I taught an introductory course to creative writing at Texas A&M University. The year before, I probably got too busy with work. This year, I’m going   Read More ...

0 Comment

  Last week, we explored the Poisson distribution as a possible distribution of sentence lengths. If you look at the figure for Hunter Crackdown, the Poisson seems reasonable, but it breaks down when looking at other works. In this post, I’d like to go back and try to derive a   Read More ...

0 Comment

Thursdays are my research days. I have a couple things cooking away that I’m not quite ready to write about yet, but I want to take a little time today to explore something that I plan on doing a lot more once my cooking is done. I’m interested in studying   Read More ...

0 Comment

I bit the bullet and pushed my novel out to the Kindle, Nook, and Smashwords stores. Feel free to download a copy and write a review! It’s only $2.99, but if you want it for less, comment here sometime in the next week (before August 4th, 2011) with a link to   Read More ...

2 Comments

The Digital Humanities Summer Institute (DHSI) is in a week.  I’ll be teaching a course on data discovery, management, and presentation using a platform I’ve been developing for the last couple years.  This will be the first time other people will try to use the platform to build a project.   Read More ...

0 Comment

A couple of weeks ago, I gave a talk at the Maryland Institute for Technology in the Humanities (MITH) with the same title.  I’ve linked to the video here so you can see the slides along with my monotone voice.  In this talk, I use imagery and music along with   Read More ...

0 Comment

I’ll say right off that I don’t know how to create a great book cover.  What I want to explore in this post is my thinking behind the evolving cover for my first novel, Of Fish and Swimming Swords. When self-publishing, you have to provide covers for each of the   Read More ...

0 Comment

The other day, I talked about building an e-book for Kindle and Nook.  Today, I want to add a few things to the Makefile we created so that we can produce a PDF.  The end result will be that every time you want to create a PDF of the book,   Read More ...

0 Comment

I’m thinking about self-publishing my novel, Of Fish and Swimming Swords, on Kindle and other ebook readers.  Today, I want to talk a little about the process I’m using to build the book as I do final edits and formatting. The easiest way to build a book for Kindle and   Read More ...

2 Comments

My first novel is a queer, science fiction piece that I wrote for my thesis.  I’ve had it with a publisher for almost two years now and I haven’t heard anything back other than that the editor liked what he saw.  Given how short the shelf life is for paper   Read More ...

1 Comment

I’m working through some ideas on how to move the Utukku/Fabulator expression language more into a descriptive, functional style.  I want to be able to have the programming be exposed as an editorial statement showing how certain calculations are done or inferences are drawn.  The computer’s interpretation of the data   Read More ...

1 Comment

During the first week of March, a group of humanities scholars and developers gathered in the bowels of the McKeldin library on the University of Maryland campus.  You can see the website that talks about the results on the MITH website.  We held Corpora Camp to test some ideas on distributed humanities computing that   Read More ...

1 Comment

Image via Wikipedia Now that I’m finished with the move from Texas to Maryland, I’m starting to plan the next four or five months. This spring will be spent getting the Fabulator engine and Radiant extensions ready for DHSI.  If you are interested in getting hands-on with the system, join   Read More ...

0 Comment

If you’ve been following my Tumblr, welcome to my personal site. I’m starting a new job at the University of Maryland, College Park, on January 10th.  The Maryland Institute for Technology in the Humanities (MITH) is bringing me in as a software architect for a number of exciting projects.  I   Read More ...

0 Comment

Development is on hold for a short while as I move from Texas to Maryland to join MITH. I’ll post more when I know what this means for the future of the Fabulator gems and this blog. More information is available in the announcement.

0 Comment

I just pushed Fabulator 0.0.12 and Radiant Fabulator Extension 0.0.9 to RubyGems. The first adds the template element to libraries. The latter adds a page and page-part action for creating pages in Radiant. This will eventually enable editing of existing pages, but for now it’s aimed at creating new ones.   Read More ...

0 Comment

Templates mean a lot of things. This time, it’s building up strings within the Fabulator engine instead of building strings in the client presentation. I’ve not checked them into Github yet, but I’ve coded a fifth type of function definition in Fabulator libraries: the template type. They work like this:

0 Comment

I’m working on a set of presentation capabilities inspired by MIT’s Exhibit widget set. A lot of the data management core is identical, but I’m trying to play around with the presentation and interaction a bit more. My goal is to have something sufficiently flexible that I can implement a   Read More ...

0 Comment

Fabulator 0.0.9 is going to be full of changes. Some are relatively minor internal changes that only matter to people who have written tag libraries (i.e., me). The biggest change that will have an impact for you, the user, is the presentation layer management. XML is at the heart of   Read More ...

0 Comment

I’ve been working a little here and there on getting a workflow extension together. I still have a bit to do, but the skeleton is shaping up and passing some simple tests. The plan right now is for workflows to act like grammars in that they augment a library instead   Read More ...

0 Comment

I went ahead and pushed out new gems for fabulator, fabulator-grammar, and radiant-fabulator-extension. The last requires a database migration run to add the library table. This update brings to Radiant the ability to define libraries that can be referenced from applications through the namespace declarations. I’m starting to put together   Read More ...

0 Comment

I think we’re getting very close to having libraries sufficiently developed that we can return to focusing on actual projects. Upcoming gem releases (tomorrow or early next week) will have a good start for building libraries and grammars. A lot of work remains, but there’s enough there that we can   Read More ...

0 Comment

We’ve released a new set of Fabulator gems. These give us the better ways of defining structural elements and implementing classes. We’ll be building on these in the next releases to provide a general library scheme in XML. The goal is to allow the creation of extension tag libraries in   Read More ...

0 Comment

We’ve been busy getting a couple of different things done. These will show up in the next releases of the core Fabulator gem and the grammar gem. Grammars The following test grammar works. <g:grammar xmlns:g="http://dh.tamu.edu/ns/fabulator/grammar/1.0#"> <g:token g:name="LETTER" g:matches="[:alpha:]" /> <g:token g:name="NUMBER" g:matches="[:digit:]" /> <g:rule g:name="something"> <g:when g:matches="LETTER NUMBER LETTER" />   Read More ...

0 Comment

One of the overall guiding principles of my work is that anything that can be considered an editorial statement within the context of a particular DH project should be exposed to the project owner instead of being hidden away in Ruby code (or any other language of the day). The   Read More ...

0 Comment

As we wrap up the development of the core data transformation engine, we are starting to think about the presentation layer. How can we specify our presentations so that we don’t have to modify them when the JavaScript library APIs, HTML standards, etc., change? One of the things we’ve worked   Read More ...

0 Comment

One of the fundamental concepts I’ve been working with in the Fabulator expression engine is that a set of items should be as easy to work with as a single item. However, if we know (or think) we are working with sets of items, then we can start asking different   Read More ...

0 Comment

I’ve been working with a rapid release cycle, but I think we’re getting close to a stable core that can support new work soon. The current list of Ruby gems: fabulator 0.0.5 fabulator-exhibit 0.0.2 fabulator-grammar 0.0.1 fabulator-xml 0.0.3 radiant-fabulator-extension 0.0.3 radiant-fabulator_exhibit-extension 0.0.1 With this set, you can make a mistake   Read More ...

0 Comment

I’ve released another gem: fabulator-grammar. This will be developed into a grammar engine modeled loosely on the Perl 6 grammars. Right now, it just provides the ‘g:match($regex, $string)’ function that returns a boolean. I’m continuing to work on the Donne concordance and needed a way to pick out just the   Read More ...

0 Comment

We have gems falling out all over the place. There are still a couple of minor hiccups, but for the most part, these should work now. In your Radiant config/environment.rb, you can use the following at the bottom to include the Fabulator extension as well as the Exhibit extension to   Read More ...

0 Comment

The fabulator-0.0.2 gem will have a slight change in the expression language. We’re also removing a function from the namespace. Right now, I’d say that the tag lib schemas are subject to change until 0.1.0, at least. The 0.0.x releases are early alphas that are just trying to get all   Read More ...

0 Comment

I finally got some stuff cleaned up, tested, and committed to github. This is mainly the template support, but I also made sure all of the code is using the same XML libraries. In this case, the GNOME LibXML suite. It’s fast and common across language platforms. Fabulator-0.0.1 is now   Read More ...

0 Comment

I’m working a bit on integrating the Fabulator engine into the Writing and Learning Communities software (source code is on github). WLC manages assignments as sequences of timed modules that manage student interaction. Except for the peer messaging, informational, and rubric modules, a module is a simple state machine with   Read More ...

0 Comment

The refactoring work for the context management has pretty much been done and checked in. We have it running on three production systems now, though I do need to investigate a possible bug in one of the programs I’ve been working on. The tests aren’t exhaustive. My next step now   Read More ...

0 Comment

We’re down to 7 scenarios not completing, and it looks like the problems are in some of the transition management code. All of the tests for the Exhibit extension are passing with the new context system. The XML extension looks like it should pass as well as soon as the   Read More ...

0 Comment

There are a few times I’ve needed some compile time information at run time inside a function. The current Fabulator engine doesn’t expose this information to a function definition, which can be problematic when you want a function to automagically use the right database, for example, without having to repeat   Read More ...

0 Comment

The new version of Radiant was released a week or so ago while I was in Los Angeles. It is the version of Radiant that I have been targeting with the Fabulator extension. This version of Radiant allows extensions to be loaded from gems, so I plan on releasing the   Read More ...

0 Comment

The last month has been spent traveling. We presented some aspects of the Fabulator engine at the Digital Humanities Summer Institute with somewhat positive reviews and a lot of questions. There’s still a lot of work to do before it is immediately obvious what the benefits of a system like   Read More ...

0 Comment

The last month has been spent traveling. We presented some aspects of the Fabulator engine at the Digital Humanities Summer Institute with somewhat positive reviews and a lot of questions. There’s still a lot of work to do before it is immediately obvious what the benefits of a system like   Read More ...

0 Comment

I’m slowly getting into the presentation side of the Fabulator system. While it’s relatively easy to include data in a page, I didn’t have a good way to produce something more dynamic, such as an Exhibit timeline, until now. While the extensions aren’t quite finished, a first run at the   Read More ...

0 Comment

There are two kinds of inheritance that are useful for applications in the Fabulator universe: is-a and has-a. There are also other kinds of inheritance in object oriented programming (OOP): mixins, interfaces, and other ways of tweaking an object class. We aren’t using those in our Fabulator applications though. The   Read More ...

0 Comment

I’ve been making a lot of small bug fixes as I’ve worked through calculating the data for a simple concordance. My current test is with 522 transcriptions (around 20-25 lines each) resulting in a word list with 7677 entries showing how often the word appears and on which pages. It   Read More ...

0 Comment

User management is one of the more difficult things, surprisingly. Authentication methods vary across sites and institutions depending on policies and available security on the server and between the server and browser. Nor are users really part of the digital humanities problem. Usually, the most a DH project needs is   Read More ...

0 Comment

I have two projects this semester that are turning out to be more alike than I expected. One has a concordance built from transcripts of manuscripts. The other is putting together a map-based browser for a set of documents. I’ve already done some work on the concordance front. I can   Read More ...

0 Comment

The Geo extension is turning into a general purpose GIS extension. This will provide us with the tools we need for the Digital Concord project. I’m currently integrating the extension with the GeoRuby gem, which will be a dependency. In addition to the geo:coding type, I’ll be introducing the geo:point,   Read More ...

0 Comment

I just created a new project for geo-coding addresses: http://github.com/jgsmith/ruby-fabulator-geo. Combined with the ability to walk through the TEI documents housed on a Radiant site and execute XPath queries against them, we can extract address information and get the latitude and longitude from Yahoo! Maps (only works for US and   Read More ...

0 Comment

I just checked in some changes that show ‘with’ working, at least to some degree. More use cases will help flesh it out. The ‘with’ keyword in expressions is used to add information to nodes without changing which nodes are being returned by an expression. This is useful for annotating   Read More ...

0 Comment

I’m making good progress on the concordance front.  I can now do the following: c:concordance(“some text”)/some/count This will convert the string to a concordance object (implicitly compiling the concordance) and give the the frequency/count of the word “some”. My goal now is to get the “with ./*/foo := bar” fragment   Read More ...

0 Comment

At a basic level, a concordance is an annotated word frequency chart.  Presentations and corpus might differ across projects, but any project with a concordance manages tables of words tied to frequencies and other information. My current work is to set up an environment where we can say something like   Read More ...

0 Comment

I’m working on some functions that can be useful for a concordance.  Right now, that’s a function to give me the frequency of each word in a text. I’ve successfully defined it as follows: function_decl 'count-words', %{ f:histogram( f:split( f:normalize-space( f:keep( f:lower-case($1), ('lower') ) ), " " )/* ) },   Read More ...

0 Comment

I created a github repository for the XML extensions to Fabulator.  This is the first step towards a set of general purpose functions for managing TEI documents.  With this and recent changes to the core Fabulator Radiant extension, we can browse TEI documents in the CMS and extract information from within the   Read More ...

0 Comment

The Donne project has a special markup language for their transcriptions.  I’ve created a Radiant filter that can transform it into HTML for viewing.  This afternoon, I was able to change the parser in the filter from producing HTML to producing a data structure that I can manipulate in the   Read More ...

0 Comment

The Fabulator is a way to build interactive applications within Radiant.  I’m using it as the framework for building several DH projects this semester that work with transcriptions of textual artifacts.  I just pushed a set of changes that allow the fabulator applications to traverse the page hierarchy and access page content (for example,   Read More ...

0 Comment

Michael Godwin, General Counsel, Wikipedia Foundation, is on campus today visiting with various digital humanities groups and giving a talk titled, “After the Revolution.” I’ve been thinking about the role of libraries and the Internet and academic responses to Wikipedia.

0 Comment

Since starting in the College of Liberal Arts in November, 2007, as the new lead developer for digital humanities, I’ve been putting together some design ideas and initial code towards a Digital Resources Workbench.

0 Comment

The NEH and other U.S. federal government agencies are pushing the digital humanities projects to result in something that can be shared. If this is an application that people can use, especially an application that resides on a central server, then the NEH is also wanting provisions for long-term maintenance. Ultimately, digital   Read More ...

0 Comment

I was looking around the web for references about EAD, an XML vocabulary mentioned in a Digital Humanities Working Group meeting Monday. I could see cases where people would want to have documents marked up with both TEI and EAD. XSLTs basically describe a function that is applied to an XML document resulting   Read More ...

0 Comment

Slashdot recently pointed to an article on CNET News, “Intel: Software needs to heed Moore’s Law,” that raises the alarm about hardware advancement outpacing software development advancement.

0 Comment

I’ve given the novel I’m writing for my thesis the working title, Of Fish and Swimming Swords. I don’t have names for the second or third novel yet, but ideas are beginning to come together. They’ll complete the arc begun in the thesis.The last two nights, I’ve woken with farely vivid   Read More ...

0 Comment

This series of posts writen for the Emerald Dream forums tries to walk through the design of World of Warcraft and Emerald Dream. We will explore how WoW is designed and where guilds fit into that design. We will also take a look at how guilds should be organized based   Read More ...

0 Comment

One of the problems in web application design is the disconnect between traditional programming languages and the statelessness of the web. There are ways to work around this, storing session information in hidden fields, setting cookies and tracking session information there or on the server. There are languages designed for   Read More ...

0 Comment

Abstract: We explore string comparison, graph theory, and dimensional analysis and their implications in computational textual analysis. In the process, we develop some expectations that can be tested on a large text such as Beowulf, though we only lay out those expectations and do not test them due to the computational   Read More ...

0 Comment