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 to make it happen! I don’t have any trips planned except for Thanksgiving. I don’t have any activities after work or on the weekend that take up a large amount of time. Nothing is standing in my way.
For those who haven’t heard of NaNoWriMo, hop over to the website and take a look. I’m raising money to help the nonprofit that runs it build communities in classrooms, coffee shops, libraries, and living rooms all over the world and help the inspiration flow for me and thousands of my fellow novelists. More importantly, your contribution will help The Office of Letters and Light build a more engaged and inspiring world.For the rest of this post, I want to explore why NaNoWriMo works and touch a bit on what it could mean for digital humanities. Today is my research day, after all, so I need to tie this in with my work somehow.Continue Reading NaNoWriMo, Here I Come!
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 distribution that has the same qualitative features as the distributions we saw for each of the works. Then, I want to discuss a bit what we might want to do next.Continue Reading Narrative Statistics: Revisiting Sentence Length Statistics and What to Do Next
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 narrative as a dynamic system. That is, there are several variables at play that determine the direction of a narrative. There are plot dynamics, character dynamics, and thematics that an author plays with to construct the story. They all interact in complex ways. A particular plot might require certain type of characters. A particular character might not fit certain types of plots. Some plots and characters don’t illustrate well certain themes. The author has to select the right plots, characters, and themes (and write well) for the reader to enjoy the story. Continue Reading Narrative Statistics: Figuring Out a Distribution of Words in Sentences
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. I’ve been writing the workbook for the week-long course and I think we can do it.For those who aren’t familiar with what I call the Fabulator, I’ve developed a compute engine as an extension to Radiant, an open source content management system. The goal is to provide a platform for dynamic, data-driven digital humanities project sites that fill the role of the traditional monograph. These sites make a scholarly argument using interactive web applications instead of static text. The problem is that libraries don’t want to touch these projects. No one wants to provide the long-term maintenance required to keep a web application running as the underlying languages and systems change.Continue Reading Fabulous Fabulator
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 mathematics to explore how we might approach taking ownership of computing in the humanities.[vimeo 22954934]The last slide is wrong. It should be the following:
I’ll explore the implications of this code in another post.
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 can be as important as a person’s, and knowing what the person was expecting the computer to do can be as important as knowing what the person thought they wanted the computer to do.
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. That’s the functionality we need, so that’s what we wrote.Continue Reading Page creation
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:Continue Reading Templates
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 simple game with it.The standard Exhibit practice if you have multiple views into a data set is to show the views with what is essentially a tabbed interface. You can select which view you want, but you usually don’t get both at the same time.I’m working on a second way of doing presentations of multiple views: an arranged set of views in a layer. Additional views might be done as windows above the layer, but the primary working set of views will be in a layer.I could make a system in which the author would have to lay out each view by hand specifying heights and widths and placements on a grid, but that strikes me as being too close to the typesetting and too far from the idea. I want the author to specify a general idea of what they want and then have the system do a reasonably good job of presenting that idea.What I’m playing with at the moment is a system by which the author specifies how many units they want the presentation to have for height and width. This is an arbitrary number that is used to scale other measurements so they fit in the display space. This lets the system work with computer displays, printed pages, or other devices that might not work in pixels or have the same pixel density.Then, for each widget in the layout, the author specifies the stretchability and compressibility of bits of glue that tie the widget to other widgets and the frame. Glue is also used to specify the sizing of the inside part of the widget. The system can work with the glues to find a reasonable set of heights, widths, and distances to make everything reasonably visible. This models a bit of how (La)TeX manages text on a page.The benefit of this system is that users can not only resize elements if they need to and everything will respond, but they can add new widgets in the layout and everything will automatically reshuffle to accomodate the new widget.I’m still working on a simple implementation that will let me test this. I think it’s a reasonable first pass at the problem. I know I’m using the word ‘reasonable’ a lot, but I’m not going for perfect. I’m going for something that is good enough, at least for now.My initial algorithm will try to lay out the widgets as points on a frame using the glue relationships to determine relative ordering. Once laid out, I’ll use the tensions in the glue to correct the centers. Then, I can do some slight adjustments to get the widget frames in place. It isn’t quite as simple as taking the distance between centers: the tension is between edges, so we take vertical or horizontal distance, but not diagonal distance.