I get inspiration from many places for customer service and web app ideas. It’s cool to observe how to make customers feel good about themselves and you.
I love gaming. So I subscribe to Big Fish Games for $6.99/month. For that I get one game per month, and a discount on extra ones I buy. Yesterday I checked up on my account and what I saw made me love Big Fish.
I hadn’t logged in for six months, and so hadn’t taken advantage of my monthly game download. But it turned out that I hadn’t wasted my money: I had six months’ credit waiting for me to use. Plus, for getting six games (even though included in the subscription price), they gave me credit for a free seventh. Plus, as thanks for being a member for a year, they’re sending me a plushie. They are awesome; I’ll probably never cancel my service.
Big Fish is doing it right: rewarding customers for their loyalty and giving them the feeling that they’re getting something for their money. I want our customers to feel like they’re getting an incredible value too.
The webserver’s been getting pretty busy lately, and we wondered if traffic had rebounded so soon from the yearly Thanksgiving-Christmas-New Year’s lull. We jumped over to our Quantcast page, and — wow.
One year ago, we were serving around 75,000 page-views per month. We’re now doing 200,000. Looks like it’s time to upgrade our server plan and do some “scalability” and throughput testing to see how the current architecture is holding up.
We’re pleased to introduce our second sponsor for OregonLaws.org, John Gear, of the John Gear Law Office, LLC. John practices in Salem, where he specializes in consumer law, elder law, and nonprofit law. He’s flexible in accommodating clients’ needs: “On a typical day without appointments in court or at a client’s house, I arrive at the office late in the morning and stay into the evening. I am happy to modify my schedule to accommodate working families who need to see me in the evening or even on the weekend.”
John was awarded the Lawyer of the Year award for his pro bono work with Marion-Polk Legal Aid Services elder law clinic known as ELVIS (Elder Law Volunteers In Service).
If you’re interested in joining our sponsors, you can get started here.
We’re pleased to extend a warm welcome to our first sponsor, Castleberry & Elison, PC. I’ve personally known Emily and Pete for several years; they are extremely bright, capable, and dedicated professionals. Their firm handles civil and criminal matters, including family law, personal injury, and employment cases. We’re very grateful for their support.
It’s exciting to see the speed of our project picking up and the website getting closer to covering its regular operating expenses. Corporate sponsorship is a way for organizations to support our programs and reach a select audience of people searching for legal information. Contact us to learn more.
Robb, the creator of OregonLaws.org, was honored by the City of Portland for his Civic App idea:
“The end result is that the city would focus on what only it can do best: providing raw data about itself, and, similar to the Secretary of State’s business registry, acting as a means of identification and authentication.”
“Law.Gov is a national conversation about broader access to primary legal materials in the United States across all three branches of government and across the federal, state, and local governments. . . .
“The workshops have examined copyright restrictions, privacy implications, and the technical underpinnings necessary to provide authenticated access to bulk legal materials.
“This workshop will be streamed live on the Internet, and video will be posted after the workshop on YouTube and the Internet Archive.
OregonLaws.org now provides the latest edition of the Oregon Revised Statutes. For example, here is the new law that prohibits cell phone use while driving:
A person commits the offense of operating a motor vehicle while using a mobile communication device if the person, while operating a motor vehicle on a highway . . .
(Hanukkah fell during finals this year, so there was no way I could get it done in time.)
Up until now, authors had to resort to tortured instructions when linking to N.Y. laws. Here’s how the Citizen Media Law Project does it in their excellent document, Forming a Corporation in New York:
. . . You can find the New York statute relating to the organizational meeting at N.Y. Bus. Corp. Law § 404 (link is to entire code, you need to click on the Business Corporation section, then choose Article 4 and locate the specific provision). . . .
Oy. Reminds me of the problems linking to Thomas documents. The issue here is that the state of New York doesn’t create permalinks to the statutes. I gave this a lot of thought, and created permalinks that look like this:
I wasn’t quite sure exactly what format these should take. The current scheme balances these competing concerns:
- People blog and write web pages with many different citation formats:
- A scheme that follows the Bluebook would start with N.Y. Bus. Corp. Law § 404. I saw this used by law review blog posts and the Citizen Media Law document, above.
- I found a state source that would write NY Business Corporation Law 404
- I found one law professor who’d write the equivalent of NY Business Corporation Law Section 404
- I found another who’d write NY Business Corporation Law sec. 404
- The URL is an interface between the website and search engines and web services, not just web authors.
- I’m unsure about how often (1) the consolidated laws are updated and (2) how often the state’s website is updated. I’ll add a date/revision notation to the permalink in a backwards-compatible way when I nail this down.
So the scheme above is what I settled on. Why can’t every state be like wonderful, efficient Oregon? We’ve got ORS 163.095, and the Bluebook/ALWD Or. Rev. Stat. § 163.095, and that’s it, really.
EDIT: I’ve discovered the Tanbook.
I’m completing an internally hyperlinked version of the New York Laws. I’ve looked hard, but I haven’t found any other sites that link the cross references in the text itself. (Someone please correct me if I’m wrong.) Why hasn’t this been done before? Take a look at Abandoned Property Law § 1222:
The provisions of sections twelve hundred seven, twelve hundred eight, twelve hundred eleven and twelve hundred twelve of article twelve of this chapter shall apply to all escheat proceedings under this article.
Compare with a similar Oregon statute, ORS 98.304:
Unless otherwise provided in ORS 98.302 to 98.436 and 98.992 or by other statute of this state, intangible property is subject to the custody of this state…
The reason for the lack of a hyperlinked version looks obvious: We want to figure out which statute is being referred to. That’s many times more difficult with text like “twelve hundred twelve of article twelve of this chapter” compared with “ORS 98.302″ — especially for a computer program.
Core computer science techniques can solve problems like this
A hyperlinked cross reference
I wrote a divide and conquer / recursive descent parser which interprets a legal citation and translates New York state’s idiomatic language into ordinary numbers. A factory method controls access to the algorithm; this is one of the great design patterns for writing flexible code. For example, software that changes its behavior depending on which state’s laws its displaying.
That’s the buzzword-laden summary. If anybody would like more details, drop me a line.
I ran a small, controlled “real-world” experiment comparing these two interpreters. The results show identical time performance.
My interest is Rails application speed
This site, OregonLaws.org, is a Rails 2.3.4 application. (These blog pages are the sole exception, running on WordPress.) I manage the architecture and deployment so that server response time is 200 ms or less — a goal I borrowed from Google. I’ve been interested in moving to Ruby 1.9.1 now that all of the packages I use are compatible with it. There are still some issues running Rails on 1.9.1 (such as the string encoding problems) and I wanted to see if there’s really anything to be gained by spending the time on it vs. using Ruby Enterprise Edition.
Here are the data from my trials (lower is better):
I ran the OregonLaws.org Rails 2.3.4 app in development mode with WEBrick in an Ubuntu 9.10 VM on my Mac laptop. I have the latest of each interpreter type installed: (1) The 188.8.131.52-2 MRI (standard) Ruby interpreter, installed via the Ubuntu package system. (2) The 1.8.7-2009.10 REE Ruby interpreter installed from the source code. I switch between these by changing my PATH. The entire environments are identical except for the Ruby interpreters.
After starting the server (“./script/server”) I run one trial of each page and discard the results, in order to prime any caches. I then just clicked through the pages—a mix of static and dynamic content—typing in the “Completed in” time from the development log.
I calculated cumulative average times of 73 ms for MRI and 75 ms for REE, +/- 0.5 ms. I’m reporting these as whole numbers because the decimals must be dropped according to the rules of significant digits. I believe that the 2 ms difference between them is too small to be considered a real finding. (It’s been a while since I’ve calculated statistical significance; but my gut tells me that this difference is just random noise/chance.)
These results show that these two interpreters have essentially identical execution times in a real-world scenario. Based on this, it makes sense for me to stay with REE, as it is 100% compatible with my Rails application.
- Small sample size
- App is running development mode
The results might look a little different if done in a production application, and over a longer period of time with more pages requested. For my purposes, though — to get a fairly good idea about how these two interpreters compare — I believe the results are very helpful.