Somewhere in Texas...
Somewhere in Texas the secret-service is returning the village's missing idiot.
South Kingstown, RI Now blog
I am engaged in changing the way the South Kingstown town and school administration keeps us -- the members of the South Kingstown community -- aware of their activities. I believe that with awareness will come increased participation. Today I created the South Kingstown, RI Now blog to record of ideas and communications.
Creating rooted Windows Explorer windows
However, I don't want to have to use the command line to create these rooted explorers. I wanted a little GUI that would present a folder section dialog and then have it run explorer for the selected folder. I did this using Windows Scripting Host (WSH) because I knew it could do what I wanted and that everyone could use the result because everyone with Windows XP (and I assume Vista) has WSH. What I did not know how to do was how to program WSH.
When you don't know how to use a language or toolkit and you want to code something really quickly it is best to find code that does something similar to what you want and then hack it. I was lucky and found some sample code and below is the result. Save the code to the file "explore.vbe" and to run it just open it -- I have a shortcut in my Quick Launch toolbar.
set shell = WScript.CreateObject("WScript.Shell")
shell.run "explorer.exe /e,/root," & BrowseForFolder("Windows Explorer Root")
Function BrowseForFolder(strPrompt)
'Uses the "Shell.Application" (only present in Win98 and newer)
'to bring up a file/folder selection window. Falls back to an
'ugly input box under Win95.
'Shell32.ShellSpecialFolderConstants
Const ssfPERSONAL = 5 'My Documents
Const ssfDRIVES = 17 'My Computer
Const SFVVO_SHOWALLOBJECTS = 1
Const SFVVO_SHOWEXTENSIONS = 2
Dim sh, fol, fs, lngView, strPath
Set sh = CreateObject("Shell.Application")
If Instr(TypeName(sh), "Shell") = 0 Then
BrowseForFolder = InputBox(strPrompt, "Select Folder", CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName))
Exit Function
End If
Set fs = CreateObject("Scripting.FileSystemObject")
lngView = SFVVO_SHOWALLOBJECTS Or SFVVO_SHOWEXTENSIONS
strPath = ""
Set fol = sh.BrowseForFolder(&0, strPrompt, lngView, ssfDRIVES)
Err.Clear
On Error Resume Next
strPath = fol.ParentFolder.ParseName(fol.Title).Path
'An error occurs if the user selects a drive instead of a folder
If Err.Number <> 0 Then
BrowseForFolder = Left(Right(fol.Title, 3), 2) & "\"
Else
BrowseForFolder = strPath
End If
End Function
Wow, this is ugly code. But it does work.
Will code for money
I am looking for full-time or contract work. If you are interested in hiring me or just want to chat please send email to andrew@andrewgilmartin.com.
I left WaveSyndicate, a very early stage startup, because as its product was more solidly defined the product became less interesting to me. When this happens, it is always better to leave as soon as this is clear. I believe WaveSyndicate and its product have a good future and especially so with Jared Rosoff and Bob Chatham at the helm.
I left WaveSyndicate, a very early stage startup, because as its product was more solidly defined the product became less interesting to me. When this happens, it is always better to leave as soon as this is clear. I believe WaveSyndicate and its product have a good future and especially so with Jared Rosoff and Bob Chatham at the helm.
What emoticon would your grandfather use?
My grandfather was an iron worker in the ship-yards of Glasgow, Scotland. His job was to bore holes 4in thick steal plates that were used in the ship's boilers. I suspect he would have no use for iChat's emoticons.
Participation starts with awareness
For me participation in South Kingstown municipal government and school administration starts with awareness. What is happening right now in town and school? For example, did you know that the engineering drawings for the bathrooms on main st & bike path are complete and implementation is waiting on state funding (promised but now on hold)? Perhaps you are an avid bike path user and want to see the bathrooms built in place of buying more open land this year. Being aware of bike path activities would empower you to advocate for this construction. (The town, by the way, already has been able to set aside 29% of the available land for open-space.) When you are aware of what is being considered and what is being acted upon as early as possible then you don't feel blind sided when the change happens nor do you feel that nothing is happening.
You need to be able to subscribe to specific issues, categories of issues, and full text searches of issues. When new data is added to an issue -- a fact, a comment, a data set, a PDF, a GIS layer, etc -- you will be automatically notified. For some issues you want just a weekly summary sent in email on Saturday morning. For other issues you want detail emailed ASAP and an text message sent now.
You need to be able to subscribe to specific issues, categories of issues, and full text searches of issues. When new data is added to an issue -- a fact, a comment, a data set, a PDF, a GIS layer, etc -- you will be automatically notified. For some issues you want just a weekly summary sent in email on Saturday morning. For other issues you want detail emailed ASAP and an text message sent now.
Github.com's git training
Wave Syndicate is considering bringing in a trainer from Github.com to do some on-site training. (Wave Syndicate doesn't want me deleting the master branch again.) The trainer would do a couple of lecture style trainings and then some small group tutorials. The cost is $2250. Is anyone else interested in attending and sharing the costs? Email me at andrewgilmartin@3roofs.com.
The Wonder Match
This short rememberance of Bobby Fisher in Sunday's New York Times Magazine (December 28, 2008) is a fantastic piece of writing. Well worth reading both for the story and the writer's skill.
Git and the horror of the extra colon
Never enter the command line
Update: Here are my git notes at github.com
git push origin :master when you mean git push origin master. Instead of coping your master branch's local changes to the remote repository you delete the remote repository's master branch. You can't undo this mistake. My initial reaction to the fact that I just deleted the company's source code was not a comfortable one. What I soon found out, however, was that you can just push again your master branch to return it to the remote repository. I am not sure this is the correct fix but it did seem to work.Update: Here are my git notes at github.com
Routers and manually interpreting a javascript enabled UI
Why do home router/gateways have web administration interfaces that REQUIRE javascript to work? I left home this morning and forgot to forward some ports and now I am stuck trying to figure out how to do so from an ssh shell command line by manually interpreting the javascript. Manufacturers, please include REST services to configure your hardware.
A collaboration on distributed data models and their implementations
I am currently working with Jared Rosoff and Bob Chatham at Wave Syndicate. We are building a tool that needs to operate at internet scale and so I have been thinking alot about distributed architecture and implementation. Constructing a tool for this scale of use is new to me. I had some experience with this while working at Tazz Networks but I am still very much a novice.
On the drive home today I was thinking about
1. data models and using the emerging distributed data tools like Amazon’s SimpleDB and Google’s BigTable and its imitators,
2. the contending variables at play when designing a C++ data model for use with ObjectStore,
3. David Hay’s great data modeling book Data Model Patterns: Conventions of Thought, and
4. a comment made long ago in a forgotten blog posting by a PHP programmer who needed good data models and not data user interfaces.
It would be extremely useful if the data modeling community would create data models and implementations that are factored, designed and tested for each of the distributed data tools. For example, a commentary data model (for use with blogs, wikis, discussion groups, issue trackers, etc) using SimpleDB would be quite different from one using SQL, and another using BigTable. Any of the models might need more than one schema implementation per distributed data tool as each implementation differently trades off consistency, latency, concurrency, etc. I wish I had the skills now to lead something like this. It would be a great boon to both current application developments and, perhaps more so, for developer education. If you know of anything happening along these lines please drop me an email.
On the drive home today I was thinking about
1. data models and using the emerging distributed data tools like Amazon’s SimpleDB and Google’s BigTable and its imitators,
2. the contending variables at play when designing a C++ data model for use with ObjectStore,
3. David Hay’s great data modeling book Data Model Patterns: Conventions of Thought, and
4. a comment made long ago in a forgotten blog posting by a PHP programmer who needed good data models and not data user interfaces.
It would be extremely useful if the data modeling community would create data models and implementations that are factored, designed and tested for each of the distributed data tools. For example, a commentary data model (for use with blogs, wikis, discussion groups, issue trackers, etc) using SimpleDB would be quite different from one using SQL, and another using BigTable. Any of the models might need more than one schema implementation per distributed data tool as each implementation differently trades off consistency, latency, concurrency, etc. I wish I had the skills now to lead something like this. It would be a great boon to both current application developments and, perhaps more so, for developer education. If you know of anything happening along these lines please drop me an email.
A call for a new kind of town hall
Public participation in South Kingstown (RI, USA) town and school governance is negligible. Most public meetings, like this week's joint town council and school committee meeting formally opening consideration of the 2009 & 2010 budget, have only a handful of people present. Too often there is no one present.
A little consideration shows that this is to be expected: The current means of public participation were designed around the needs and wants of a very different time then our own. The town council chamber is itself a monument to these needs and wants. It is a physical community gathering spot. Other community gathering spots include the newspaper (for public notices) and the town hall bulletin board. Even the early evening meeting times accommodate a past when the man of the house could leave his children to the care of his (house)wife in the comfort of his home.
This is not the world I live nor the world of most of the people I know. Both parents work, care for the children, and do housework. Sometimes they work in staggered shifts so that at least one of them is at home with the children. And when the children have gone to bed work picks up again for another hour or two: The "mommy work hours" of 9 AM to 3 PM and then 8 PM to 10 PM.
We also communicate differently. We use e-mail and voice-mail. We chat via IM (instant messaging) or texting on our phones. We discuss every kind of subject in online groups. We share our lives with our friends through our blogs and Facebook "walls." And when we do gather in person we do so by "homing in" on a place, a time, and who will attend via a ever tightening circle of short messages over time.
This pattern is not going away. It is deepening. Just as the town council chamber was build to support participation we need now to build a different and effective mechanism for today.
We need our public documents, meetings, and other artifacts online. We need to be notified about additions. We need to be notified when they have changed. We need to be able to comment upon these online and have this commentary considered. These new tools of participation are not ancillary. They are as primary as the existing ones.
Doing this is not a great technical challenge. The software development industry routinely uses these tools everywhere and everyday. Doing this does not require a great operational cost. The tools are free, the storage and computational costs minuscule, and the support costs reasonable. The most challenging cost is to the school's and town's processes. It is not that more work will be required of officials and staff but that the work is done differently. The difference results in making visible to online tools the workings of the school and the town.
I ask all of you to please contact the school committee and town council and ask that they initiate the changes necessary to enable citizen participation in our time. Now is a very good time for change.
A little consideration shows that this is to be expected: The current means of public participation were designed around the needs and wants of a very different time then our own. The town council chamber is itself a monument to these needs and wants. It is a physical community gathering spot. Other community gathering spots include the newspaper (for public notices) and the town hall bulletin board. Even the early evening meeting times accommodate a past when the man of the house could leave his children to the care of his (house)wife in the comfort of his home.
This is not the world I live nor the world of most of the people I know. Both parents work, care for the children, and do housework. Sometimes they work in staggered shifts so that at least one of them is at home with the children. And when the children have gone to bed work picks up again for another hour or two: The "mommy work hours" of 9 AM to 3 PM and then 8 PM to 10 PM.
We also communicate differently. We use e-mail and voice-mail. We chat via IM (instant messaging) or texting on our phones. We discuss every kind of subject in online groups. We share our lives with our friends through our blogs and Facebook "walls." And when we do gather in person we do so by "homing in" on a place, a time, and who will attend via a ever tightening circle of short messages over time.
This pattern is not going away. It is deepening. Just as the town council chamber was build to support participation we need now to build a different and effective mechanism for today.
We need our public documents, meetings, and other artifacts online. We need to be notified about additions. We need to be notified when they have changed. We need to be able to comment upon these online and have this commentary considered. These new tools of participation are not ancillary. They are as primary as the existing ones.
Doing this is not a great technical challenge. The software development industry routinely uses these tools everywhere and everyday. Doing this does not require a great operational cost. The tools are free, the storage and computational costs minuscule, and the support costs reasonable. The most challenging cost is to the school's and town's processes. It is not that more work will be required of officials and staff but that the work is done differently. The difference results in making visible to online tools the workings of the school and the town.
I ask all of you to please contact the school committee and town council and ask that they initiate the changes necessary to enable citizen participation in our time. Now is a very good time for change.
Viewing a man page in Preview.app
Macintosh OS X command line to format a "man" page and open in the Preview application
groff -man /usr/local/git/man/man1/git-config.1 \ | open -a Preview.app -f
Update: Using the man -path argument you can further enhance the command line, eg
groff -man $(man --path git-config) | open -a Preview.app -f
Update 2025-6: Preview lost its ability to render PostScript so you now need to tell groff to output PDF: groff -Tpdf .... Man no longer supports the --path option so you would need to use something like
find $(manpath|tr ':' ' ') -name git-config.1
A review of the information graphics in GOOD #13
GOOD has gotten some attention recently with their partnership with Starbucks to develop and distribute the GOOD broadsheets. The sheets coincided with the presidential elections and so have both feed the discussion and feed from the discussion. On the value of the sheets and a look at the GOOD web site (http://good.is) I subscribed to the GOOD magazine for $10.
Issue #13, my first, arrived a week ago and I have been looking at it on and off since then. The magazine design has the spare and clean lines that I like. Great photography and editorial illustration. And I am attracted by the large number of double-page-spead information graphics. Unfortunately, the actual substance of the written and visualized content is mixed.
The first warning flag is the letters to the editor. The first several are responses to the vulgar language and graphics used in a previous issue. While I did not see the previous issue, the issue I do have also contains vulgar language and graphics. As one letter writer writes, this editorial indulgence lowers the seriousness of the discussion. Much like Sarah Palin’s winks and “heck yeas”. The remainder of the written content is interesting -- especially the “Portraits” section -- but thin. A modern magazine must have links into the web. Sadly, GOOD does not.
What initially drew me to GOOD was information graphics and so I was excited to see several pages devoted to this in the “Transparency” section. Upon close inspect they are utter rubbish. They exhibit a wide number of failings that anyone practicing information visualization should well know and innately avoid.
The “Up in smoke” graphic (no web link) is a stacked bar graph using cigarettes as the bars. Each cigarette presents a state. The length of the cigarette is the population and the length of the filter represents the percentage of smokers. The failure is that the width of the cigarette is also changed so that the relative proportions of the different cigarettes are kept constant. This results in NY’s 18.3% of smokers looking like a significantly smaller number than CA’s 14.9% of smokers. Further, the graph is organized by kinds of smoking bans -- no bans, work bans, bars bans, and restaurant bans -- and so finding your state is a hunting trip. A table would have been much better.
I am still trying to figure out “Seeking Refuge” (http://www.good.is/?p=12751). Just what does knowing “refugees per square kilometer” really tell me?
“Burning Fuel” (http://www.good.is/?p=12753) is a visual correlation between cars and humans. The energy in a gallon of gas is compared to common foods. While interesting, why is there an information graphic? Information graphics are supposed to enable the reader to make more connections between facts. I am looking to build upon what I know or have just read. And so I expect that when a human’s sticky insides are block-colored the same as the car’s insides that this has meaning. What correspondence am I to draw from the car’s seat cushions, battery, air filter, and some unknown box near the front-wheels's transmission with the human’s heart, liver, and mussels? Isn’t color coding a universal information graphic best-practice? Yes.
Lastly, the graphic “The three-trillion-dollar war” (http://www.good.is/?p=12755) is a perfect example of how to present a simple list (as is done on the right side of the graphic) as a complex maze of weak visual analogies. Perhaps I am missing something deeper. I want the visual to have meaning. I am rooting for the illustrator. But, in the end, I don’t think I am missing anything: It has no meaning. It is just a picture.
I am not a practitioner of information graphics. I am a consumer and a fan. I do know how to read this stuff and I know that some visual languages need to be learned before they can be read. I am willing to put the time in to understanding the visual just as much as I am in the understanding the prose. Don’t give me interesting pictures pretending to be information graphics. Please.
Let’s hope the next GOOD is not a DOOG.
Issue #13, my first, arrived a week ago and I have been looking at it on and off since then. The magazine design has the spare and clean lines that I like. Great photography and editorial illustration. And I am attracted by the large number of double-page-spead information graphics. Unfortunately, the actual substance of the written and visualized content is mixed.
The first warning flag is the letters to the editor. The first several are responses to the vulgar language and graphics used in a previous issue. While I did not see the previous issue, the issue I do have also contains vulgar language and graphics. As one letter writer writes, this editorial indulgence lowers the seriousness of the discussion. Much like Sarah Palin’s winks and “heck yeas”. The remainder of the written content is interesting -- especially the “Portraits” section -- but thin. A modern magazine must have links into the web. Sadly, GOOD does not.
What initially drew me to GOOD was information graphics and so I was excited to see several pages devoted to this in the “Transparency” section. Upon close inspect they are utter rubbish. They exhibit a wide number of failings that anyone practicing information visualization should well know and innately avoid.
The “Up in smoke” graphic (no web link) is a stacked bar graph using cigarettes as the bars. Each cigarette presents a state. The length of the cigarette is the population and the length of the filter represents the percentage of smokers. The failure is that the width of the cigarette is also changed so that the relative proportions of the different cigarettes are kept constant. This results in NY’s 18.3% of smokers looking like a significantly smaller number than CA’s 14.9% of smokers. Further, the graph is organized by kinds of smoking bans -- no bans, work bans, bars bans, and restaurant bans -- and so finding your state is a hunting trip. A table would have been much better.
I am still trying to figure out “Seeking Refuge” (http://www.good.is/?p=12751). Just what does knowing “refugees per square kilometer” really tell me?
“Burning Fuel” (http://www.good.is/?p=12753) is a visual correlation between cars and humans. The energy in a gallon of gas is compared to common foods. While interesting, why is there an information graphic? Information graphics are supposed to enable the reader to make more connections between facts. I am looking to build upon what I know or have just read. And so I expect that when a human’s sticky insides are block-colored the same as the car’s insides that this has meaning. What correspondence am I to draw from the car’s seat cushions, battery, air filter, and some unknown box near the front-wheels's transmission with the human’s heart, liver, and mussels? Isn’t color coding a universal information graphic best-practice? Yes.
Lastly, the graphic “The three-trillion-dollar war” (http://www.good.is/?p=12755) is a perfect example of how to present a simple list (as is done on the right side of the graphic) as a complex maze of weak visual analogies. Perhaps I am missing something deeper. I want the visual to have meaning. I am rooting for the illustrator. But, in the end, I don’t think I am missing anything: It has no meaning. It is just a picture.
I am not a practitioner of information graphics. I am a consumer and a fan. I do know how to read this stuff and I know that some visual languages need to be learned before they can be read. I am willing to put the time in to understanding the visual just as much as I am in the understanding the prose. Don’t give me interesting pictures pretending to be information graphics. Please.
Let’s hope the next GOOD is not a DOOG.
Michael Moore has a plan
I just signed Michael Moore's vision to save the Big 3. I don't agree with all of Moore's politics but if there is anyone who knows how incompetent the Big 3 management is and scope of the impact of their failure it is he. This is a great opertunity to use the existing infrastructure and relationships to build a new transit economy in the US.
The Incredible Convenience of Mathematica Image Processing
There are three computational tools that I would like to know well. The tools are SketchUp, ArcGIS, and Mathematica. They successfully map the user's mental model of the problem to the tool's control leavers for a solution. In the hands of a skilled practitioner incredible results are accomplished. The blog posting The Incredible Convenience of Mathematica Image Processing is a reminder of this. This is inspiring as a potential user and humbling as a software developer.
Found via Tufte blog.
Found via Tufte blog.
Socially acceptable tyrannosaurus rexs had long and muscular forearms
What if dinosaurs were intelligent beings with burial rights that left no trace of their members. What if the dinosaurs we uncover today are the rejected and banished members of their society? Perhaps socially acceptable tyrannosaurus rexs had long and muscular forearms.
Small donors funding land mine-detecton flowers
If we can fund a successful presidential election and full page advertisements for free software in the New York Times how can we get small donors to fund RedDetect and clean-up the world land mine mess?
"The Story of the Ribbon"
I stumbled upon Jensen Harris's blog and his "The Story of the Ribbon" presentation. This presentation is a wonderful case study of how the Office 2007 ribbon evolved. This long presentation is well worth watching by anyone interested in interface design and/or usability process. The content is great as is the Q&A at the end. (Excuse the "presentation junk".)
Subscribe to:
Posts (Atom)