Skip to content
Oct 11 10

New Project: Permalinks for USPTO Trademark Registrations

by Robb

I was doing some trademark research at the firm I’m clerking at, and found just what I was looking for: a particular abandoned trademark registration.  I wanted to send a partner an email about it, and so I mistakenly did the natural thing: I copied and pasted the URL (the link) to the USPTO web page.

He replied a few minutes later: the link wouldn’t work.  They never do; they expire after 10 minutes or so.  And so what happens?  Attorneys print out or create PDFs of the USPTO web pages in order to discuss them.

I immediately thought that there must be something that could be done here, and so I started the Trademark Permalink project:

Create links that don’t expire to trademarks at the U.S. Patent & Trademark Office. Use them in emails, on your website, or anywhere else you want to point someone to a trade/service-mark registration.

EDIT:

The story’s gotten a little more complicated:  In the past day or so, I discovered that it’s possible that my work might be superfluous: The “TARR” USPTO web app provides single-document retrieval via URLs that don’t time out.  Many (most?) practitioners seem to only know about the TESS service, though, which *does* time out.  Also, the TARR data seems to come from a different source, and is definitely a different format.  For example, the IBM registration I use as an example:

…can be linked to directly on TARR:

http://tarr.uspto.gov/servlet/tarr?regser=serial&entry=75871833

However, like I mentioned above, TARR only seems to give single-document retrieval.  TESS will return the results of a query like “All TMs owned by so-and-so.”  I’ve been planning to expand my service to create PURLs for these kinds of TESS look-ups as well.  (This was the motivation for me to make the service in the first place: I had run a query finding six TMs that I wanted to share with a colleague.  But the URL of the search results timed out before he saw my email.)
Confused yet?  :-)
Oct 6 10

New website administration strategy: test-driven configuration

by Robb

Think 200 is a web experiment that combines web server configuration with one of the best programming practices: test-driven development. It works with Apache, Nginx, IIS, or any other web server. The new idea goes like this:

  1. You find a web page that’s not returning the status code or results you wanted it to (i.e. redirecting to the wrong place).
  2. You write a test (which will fail) which “asserts” the behavior you want it to have.
  3. You edit your config files, periodically re-running all of the tests.
  4. When all of the tests pass, your job is done.

The same benefits of TDD should apply to TDC.

Jun 26 10

CivicApps and the Search for Ideas

by Robb

I just found out that I won one of the two Best Idea awards given in the first annual CivicApps for Greater Portland contest;  I was completely surprised and very honored.  My idea is Community-Contributed Datasets.

CivicApps.org in a nutshell

Back in the old days, i.e. 2008, cities like Portland would create apps (interactive websites) for us like this:

The old way

The old way of making apps

They’d get a team together, look at the Datasets available to it, come up with ideas, and then build the apps.  PortlandMaps, an awesome web app, was made this way.  But there’s a new trend and Portland’s setting an example for other cities.  First, the city adopts a policy of transparency, publishing all of its raw data in addition to the finished apps:

CivicApps 1

First, cities make their raw data available

Then, curious and entrepreneurial individuals, companies, and other organizations step in and independently create new apps.  This frees up city resources and results in more apps and services coming online:

CivicApps 2

Then, 3rd parties can step in and contribute

This is the entire purpose of the CivicApps.org project and website: to enable this creative environment.  By the way, this is the same idea behind the federal Data.gov project.

My idea: we can contribute data too

It occurred to me that many organizations have valuable data about the city.  And some even have the expertise to publish the data in “open formats” just like the city of Portland is doing:

My idea

My idea: We can provide datasets too

For example, my project, OregonLaws.org, publishes a glossary of legal terms specific to Oregon.  This is already up and running as a Dataset.

It will, though, take some work to implement my idea.  Some questions to answer are;  How will these 3rd party Datasets be integrated into the palette of “official” ones?  How will the data be authenticated or verified?

The near future

The end result of all this is that the city could become a nexus of information.  In addition to providing raw data about itself, it can act as a means of identification and authentication. There’s a precedent for the government acting in this role, e.g. the Secretary of State’s business registry performs a similar service.

Update

Oregon Business Magazine covered the CivicApps contest:  Keeping PDX a Hot Spot for App Development

Jun 1 10

Why “git” instead of “svn”?

by Robb

As I learn git, I’m experiencing advantages that I haven’t seen described together. Also, I haven’t seen a description from the perspective of the real-world differences in your files, so here goes:

Background context

Subversion uses a single, central repository which is in a remote place. And in your project, it maintains .svn/ directories in every sub-directory. Git on the other hand, gives each developer their own full-fledged repository. And then, instead of relying on many hidden directories in your project, it creates one that lives only in the top-level directory; in .git/. So again: that’s the only place it stores info; nowhere else in your code.

Interesting, huh?

The advantages I’ve found

So now that I’ve begun to use git, it’s already been a nicer experience than subversion:

Deleting a subdirectory doesn’t screw with the versioning like it does in svn.  (Because no version info is stored there.  In svn, you need to repair things; re-create the empty directory so you can delete it, etc.  I do this to myself periodically.)

It’s totally painless to put existing stuff into git — it stays right where it is. E.g., a website that’s in use. You can initialize the repository and commit the current version of the files while they’re in use. This isn’t possible with svn: you have to check it in, then check it out.

It’s easy to work on a new idea: it’s really easy to create a branch to work on it, and then switch back and forth. In svn, this is enough of a pain that I don’t do it in actual practice.  Git finally makes it easy for me to use revision control like I’ve always wanted: be able to check out our group’s code, test ideas out, and rollback in my own little world without disturbing the others, and finally commit only the changes I want to.

Git assumes you meant to delete that file. That’s been nice and convenient:  I deleted a file without going and telling git first about it.  Git adds a ‘delete’ operation to your list of things to check in.  Awesome.  Svn does it the other way around:  You can’t just do normal file operations; you have to also tell subversion that yes, you did mean to do that.

Git has the GitHub killer app. It’s the Netscape of the WWW.  I haven’t found an equivalent for Subversion — web-based or not.

So that’s what I’ve come up so far; I’ll add more when I see them.

May 22 10

Check your web server configuration with ruby test cases

by Robb

I’m releasing a new open source library, HTTP-Assertions, that I use behind the scenes at OregonLaws.org.  It helps me keep the server running smoothly and make sure that my changes to the config files haven’t introduced new bugs.

It introduces these new assert methods to the Rails testing environment:

  assert_200
  assert_forbidden
  assert_temp_redirect_to
  assert_perm_redirect_to

Here’s an example:

  assert_200('https://www.oregonlaws.org/ors/161.360')

See the README on github for more details.