Saturday, October 10, 2009

Ten Things My City Can Do to Improve Our Website

  1. Publish events in iCal format
  2. Publish electronic police reports as XML
  3. Publish 311 data (as XML)
  4. Geocode public works projects
  5. Implement short, guessable URLs
  6. Use a free mapping service
  7. Update the Transportation Data Management System
  8. Add a "Web-Friendly" link next to "Printer-Friendly"
  9. Create a data catalog
  10. Get a .gov address
Details to be added here...

Wednesday, September 30, 2009

Gov 2.0 Doers

There has been some criticism that Gov 2.0 is:

  1. Just another buzz word
  2. Just people talking about stuff, no one doing stuff
I disagree, certainly with the 2nd point. Most of the Gov 2.0 people I know and/or follow on Twitter are the doers. Here's a list of who some of them are, certainly not comprehensive, in no particular order:
  1. Brian Sobel, InnovationGeo, Are You Safe, iLive.at
  2. Dmitry Kachaev, D.C. OCTO R&D
  3. Philip Ashlock, Open Planning Project, Open 311
  4. Josh Tauberer, GovTrack.us
  5. Jim Gilliam, act.ly, GovLuv.org, TweetProgress.us, WhiteHouse2.org, and NationBuilder.com
  6. Andrew Turner, GeoCommons, FortiusOne
  7. Everyone at Sunlight Labs
  8. Carl Malamud, public.resource.org
  9. Jen Pahlka, Code for America
  10. Leonard Lin, Code for America
  11. Steve Ressler, GovLoop
  12. Noel Hidalgo, New York State Office of the CIO
  13. Raymond Yee, UC Berkeley
  14. Peter Corbett, iStrategy Labs, Apps for Democracy
  15. Kevin Merritt, Socrata.com
  16. Hillary Hartley, NICUSA, Citizen Space
  17. Guy Martin, Forge.mil
  18. Silona Bonewald, League of Technical Voters, citability.org
  19. Kevin Connor, LittleSis.org
  20. Greg Elin, United Cerebral Palsy
  21. Noel Dickover, DoD Office of the CIO, DoDTechipedia.mil
  22. Jon Udell, Microsoft, ElmCity
  23. Kim Patrick Kobza, Neighborhood America
  24. Jay Nath, City of San Francisco
  25. Wayne Moses Burke, Open Forum Foundation
  26. Micah Sifry, Personal Democracy Forum
  27. George Thomas, GSA
  28. Alan Silberberg, You2Gov.org
  29. Steve Lunceford, GovTwit.com
  30. Joseph Porcelli, Neighbors for Neighbors
  31. Luke Fretwell, GovFresh
  32. Chris Rasmussen, Intellipedia, NGO
  33. Pam Broviak, MuniGov 2.0
  34. Bill Greeves, MuniGov 2.0, Roanoke County, VA
  35. Jeff Levy, EPA Web Manager, Federal Web Managers Council
  36. Adrian Holovaty, Everyblock, chicagocrime.org
BTW, we need both "talkers" and "doers." Some people are both. Some people are connectors. Not everyone is an implementer. I tried to stick to implementers; to pick people who have projects and/or organizations dedicated to or related to Gov 2.0. There are some obvious names not on this list. That's probably because they are not implementers. Doesn't mean they're not important. If I missed someone you think should be on the list leave a comment. Be sure to tell me what project they're on. I certainly don't know everyone.

I'll try to come back with links and pictures.

Thursday, August 27, 2009

Views, Transformations, and Sources



Visualizations, like any research product, should contain bibliographic hyperlinks to sources and transformations. (Click to englarge.)

Tuesday, August 25, 2009

Why Gov 2.0 Matters To Me

I posted this here last night but took it down because it felt too personal and too much about my story. The reason I wrote it this way is because I didn't want to presume why it should matter to other people, but rather describe why it matters to me and let others find commonality in it...or not. Tim O'Reilly just posed the question: "What does Gov 2.0 mean to me?" I think he may be asking a slightly different question (definition vs. motivation), but given that I decided to put this back out there.

Friends and family have been asking me why I'm into Gov 2.0 and what I get out of it. I'm going to attempt to answer these questions for them and for me here in this post.

For me, Gov 2.0 is personal. I can't answer the question without relating it to my own story:

I was born on October 14, 1970 at Portsmouth Naval Hospital in Portsmouth, Virginia. My father was stationed at Naval Air Station Oceana in Virginia Beach. From where I sit writing this, Oceana is not more than a quarter of a mile away (as the jets/crows fly).


My mother was a teacher in the Virginia Beach Public Schools system. I grew up in that school system and my daughter is in it now, 5th grade. I have not always lived here. I spent about 10 years in the New River Valley of southwest Virginia for college, work, and graduate school. I did not intend to come back to Virginia Beach after grad school. In 1999 I was graduating with a Master of Science in Computer Science and Applications degree from Virginia Tech. It was decent ticket to anywhere and I was looking west to San Antonio, San Francisco, and Redmond. But events unfolded and I transitioned from a part-time graduate research assistant at Virginia Tech to a full-time Research Associate at Old Dominion University Research Foundation, in Norfolk, VA. Fast-forward to today, in the late summer of 2009, and I'm right back where I started. I think my internal magnets have this lat/lon set as my home base.

I'm not at ODU anymore. Today I'm a government contractor at a company I co-founded. Mostly I am a Defense contractor. I didn't set out to be that either. In fact, I was explicitly trying to avoid it. I don't want to get into all of the reasons why. It's far too complicated for anyone but me to understand and I'm not even sure I do. At risk of abusing a metaphor, suffice it to say that my internal magnets draw me to other things. But I have grown and learned as Defense contractor. I have banished narrow prejudices and have adopted new world views. I have also rekindled something in me that was instilled at a very early age by my parents: the importance of public service.

I can still see my dad standing in our driveway at my childhood home, as I would have looked up to him, telling me about public service. I remember he tended to talk specifically about civil service. Though he was in the Navy he didn't necessarily talk about military service. Grandma Curry worked for the U.S. Customs Service and I know my dad admired that. Dad also talked a lot about how involved Grandpa Curry was with Miami-Dade Parks & Recreation, in Miami, FL.

I've rarely shied away from taking initiative where I see something needs to be done and participation in organizations comes naturally to me. I've ignored the call to service once or twice. After 17 years growing up a Navy brat, the effects of having a parent coming and going every 6-8 months, and lacking any of my own life direction, I steered away from ROTC and a long term commitment to a military career. I could have gone into civil service, I suppose, but another thing about my internal composition: I'm an entrepreneur and I don't care much for layered, abstract bureaucracy. I'm not so much into rising up through the ranks as making my own way. It's not that rising up through the ranks is bad. It's highly admirable, in fact. It's just not me. For me, patience is a trained virtue. If there's one thing I've learned as a government contractor is that working either with or for government requires intense patience.

So here I am. I'm a Generation Xer. I have not served in the military or civil service. I am easily frustrated by government process. Yet, I have an intense inclination toward public service. How do those add up? What can I do to serve government? (I think this is a question lots of people like me are asking themselves.)

I think today the answers are non-traditional.

I am active in the PTA for my daughter's school. I try to remain active with our Community League. For the past two years I've organized our neighborhood's participation in Clean the Bay Day. Before then our neighborhood didn't participate in CTBD. Of course, these aren't government activities. I think they help government activities, though, and that's significant.

For me, Gov 2.0 represents a near-perfect fit with my personality, direction, and goals. I feel like it was made just for me or that I was made just to live at this time. I really do.

There is and will continue to be no shortage of debate about what Gov 2.0 is, exactly. In fact, during the second week of September there is a "summit" in Washington D.C. dedicated to the topic. Is it tech? Does it include non tech? How does it work? Who can participate? I'm not sure framing it is as important as learning to recognize it from multiple perspectives and acting. I tend to take a literal interpretation. For me, that means there is a distinct connection between Gov 2.0 and Web 2.0. Therefore, for me, Gov 2.0 tends to be significantly Web/tech enabled. But as someone experienced in working for government, I know that tech requires policy and that both are intended to work for people.

This year I attended three important "unconferences" for Gov 2.0 movement: Transparency Camp East, Gov 2.0 Camp East, and Transparency Camp West. I will be at the Gov 2.0 Summit in a couple of weeks and at Gov 2.0 Expo next Spring. What most interests me is how I can use Gov 2.0 techniques to improve the way my city functions. I am interested also in how my customers will respond to Gov 2.0 and how I can apply it to their needs, but my motive is not winning more contracts. Sure, some will say that if they think it's what other people want to hear. Let there be no doubt that I want my business to succeed and I want to prosper from it. But I'm willing to take it on faith that both things will happen if I just keep following my passion and don't resist the pull of my internal magnets. I just want to "work on stuff that matters."

Increasingly, I want to work on stuff that matters here in Virginia Beach and in my region. But I also want to work on stuff that matters for my state, our nation, and our world. I am particularly drawn toward applications in education, where I see a growing gap between public and private education that is not just affecting the fringes, but is squarely squeezing out the middle and making our nation "dumber" as a whole. I see Gov 2.0 as a means for correcting this troublesome situation. (In general, I think Gov 2.0 can be particularly effective in areas that lack models, process, and funding.)

Early next year I hope to be kicking off the inaugural CityCamp, along with Jen Pahlka from Tech Web. Our goal is to start an unconference around the theme "Gov 2.0 goes local." Jen also has another project in the works that is very much in line with this theme. It's called Code for America and it's modeled after the successful Teach for America program. I look forward to seeing that take shape.

So, this is about the examples set by my parents (and their parents) and the lessons they taught me. It's about wanting to be a part of the solution in my community and my school system; not just a sideline complainer. It's about recognizing that I have something to offer that government needs. This is my opportunity to serve. This is why Gov 2.0 matters to me.

Friday, August 14, 2009

U.S. Code as Linked Data


"The Office of the Law Revision Counsel prepares and publishes the United States Code, which is a consolidation and codification by subject matter of the general and permanent laws of the United States."

We responded to that RFP. We = Bridgeborn, Inc, and Business Bullpen, LLC.

The Law Revision Council's recognition that the online home of the United States Code needs upgrading translates into a wonderful opportunity for the LRC, our companies, and the American People. This is much more than an opportunity to redesign web pages for an online presence.

This is an opportunity to publish the U.S. Code as linked data.

Linked data is important for the U.S. Code because it will make the Code more searchable, navigable, and usable by orders of magnitude. Linked data will also increase accessibility and lower costs of integration by making it easier for more consumers to treat the information according to their needs and possible constraints.

Sites exist already to provide the U.S. Code through styled web pages. The Legal Information Institute of the Cornell University Law School, for example, publishes a searchable HTML index of the U.S. Code. This version, however, is not well-formed, linked data. These sites also omit important text included in the official record published by the LRC, such as the Positive Law Codification actions that have been taken. These sites play an important roll is the dissemination of U.S. Code, so it is our hope that this effort will also make the U.S. Code more accessible and usable for consumers like Cornell's LII.

The LRC Web site isn't too bad really. Essentially what it needs is a global site navigation scheme, search on every page, and a good Cascading Style Sheet. There are features that could be added, such as public request for comments with voting. But the most important thing anyone can do with this site is Tag the
Code.

For example, the following text:
-CITE-
THE ORGANIC LAWS OF THE UNITED STATES OF AMERICA
-End-
-CITE-
USC THE DECLARATION OF INDEPENDENCE - 1776 01/03/2007
-EXPCITE-
THE DECLARATION OF INDEPENDENCE - 1776
-HEAD-
THE DECLARATION OF INDEPENDENCE - 1776
-MISC1-
THE DECLARATION OF INDEPENDENCE - 1776 (!1) IN CONGRESS, JULY 4, 1776 THE UNANIMOUS DECLARATION OF THE THIRTEEN UNITED STATES OF AMERICA

...

Could become:

From here, there is nowhere we can't go with the Code. We can put put it in any container, we can transform it into any view, we can access it from any device. Given tagged, well-formed, linked data, we can address every element of U.S. Code from a standard Internet URL.

While tagging the code with XML may not fully constitute linked data, it is a big step in the right direction. Decorating the those tags with RDF is easily accomplished.

There is no point in enumerating the potential applications of an endeavor such as this. They are infinite.

Friday, June 12, 2009

The Mr. Miyagi School of Software Engineering

This is a re-post from a journal entry I originally wrote over on Slashdot in 2004.  I've made some minor changes and updates for this entry.


Background:  This was an concept born out of necessity about 5 years ago.  I needed a way to train someone with very little experience to work with Bridgeworks but I couldn't afford to spend hours and hours of my own time working with him; too many of my own responsibilities and deliverables.  It was very successful and now he is our best Bridgeworks app developer.  Fast-forward to today when I'm interviewing CS students from a local university for a summer internship.  This is a (well) paid position for which I need someone with decent coding skills who is a self-starter.  Unfortunately none of my candidates have any practical skills whatsoever.  (I don't know what the universities are teaching, but it's not what we need in industry.)  With these candidates it would be like starting from square one.  Obviously I'm not going to pay what I'm willing to pay for people who don't have the quals.  I am willing to train such a person as an unpaid intern, but that is not without its catches.  I still don't have the time to spend hours and hours with these folks.  Furthermore, ethically, unpaid internships are intended for the sole benefit of the student.  My company should not benefit in any way from the labor of unpaid interns.  Practically speaking, though, you can't train someone without giving them tasks.  Re-enter the Mr. Miyagi School of Software Engineering.


Lessons on how to train a junior programmer:


Let's call him Danielsan.


Mr. Miyagi was a very wise and clever sensei. His methodology, loosely translated, is perfect for any small software company that is bringing new developers into the system. The reason Mr. Miyagi's method works so well is because it provides intense, immersive exposure to the most important lessons while demanding relatively few additional resources from the instructor(s). Think about it. While Danielsan was busy painting the fence and sanding the deck, Mr. Miyagi was out having the time of his life!


The length of each lesson is to be determined on a case by case basis.


Lesson 1: Write SDK Documentation


Even the best developers can be notorious for not adequately commenting their code. Good documentation of an software includes both programmer's notes and comments for automated documentation (e.g., doxygen). This oft neglected task is perfect for Danielsan. An excellent way for him to learn the software from a developer's perspective is to write the documentation that explains how it all works.


Listen carefully when Danielsan asks questions about the existing code base. Discourage him from asking too many questions, except regarding complex concepts. It is important that Danielsan develop his own understanding of algorithms, relationships, dependencies, etc.


Lesson 2: Build Company Demos


Documenting the code shows Danielsan how the software developer sees things. Danielsan also needs to see the software from users' perspectives. "Users" include programmers who develop applications from the software and end users of the applications that are developed. Ideally, these would be two separate lessons. Knowing that time and money are always issues, these lessons can be condensed into one by having Danielsan build the company demos.


Architects and senior engineers loathe building company demos. While they are often happy to write test apps for in-house use, company demos bring with them a mountain of maintenance headaches and customer support issues. Whether or not your company is big enough to have it's own department(s) for maintenance and support, it's worth putting Danielsan to work on company demos so he can get his hands a little dirty and see first hand the challenges facing maintenance and support team(s).


Lesson 3: Clean House


Many companies have coding standards that must be followed by all code writers. These standards help everyone to write clean, consistent code that everyone can understand. Unless you work at a sterlized laboratory, it's a safe bet that your house always needs cleaning. A great way for Danielsan to learn this important lesson and also develop habits that are consistent with the team is to set him to work checking for adherence to company coding standards, leaks, potential security issues and the like. It's also a convenient way for you to get your code checked by a fresh pair of eyes.


The Successful Sensei


The successful sensei will know that these lessons are not opportunities for him to relax his own standards or to set Danielsan to work unguided. The successful sensei practices what he preaches. He knows which lessons Danielson must learn on his own and which require guidance. Naturally, Danielsan may occasionally bemoan his instruction. Perhaps he will consider that his training is too rote or mundane. Since you can't just throw a bunch of karate maneuvers in his face to show him what he's learned, it's important to sometimes let Danielsan work on things he finds interesting and fun. Ask him to write stand-alone utility apps that your company might need. Give Danielsan isolated new tasks within the SDK, perhaps something that requires he work with others to design interface requirements, resource requirements, etc.


to be cont'd.


Axiom 1: Tooltips are better left on.


If you leave your tooltips on, chances are better that you will learn something new each time you use your application(s). For Danielsan, tooltips are especially useful when they instruct him about fundamental principles of programming, those that transcend applications.


Axiom 1a: Some tooltips are better than others.