A fellow LinkedIn member asked me recently if we’d gone to Electrian’s school together, as we’d graduated in the same class from Naval Nuclear Power School. I didn’t recall his name, but it prompted me to dig around in the archives and pull up this photo. (clicking the picture will yield a 1.2 Mb PNG)
Monthly Archives: November 2008
Getting Stuff Organized
This next month, I’ll be flipping the calendar page to 2009 to schedule the next month’s work. I’ve been using a “desk-size” Day Runner – 5½” x 8½”, conveniently half a US Letter sized sheet – for fifteen years. I’ve got one of the older 3-ring models, and lots of the cool accessories: zip pouches, business card holders, etc., but I’ve bought the calendar refills each year. I’ve also printed some pages for myself: some grid pages using DOS-characters and FoxPro/DOS, dumps of my contacts, etc. But I’ve kept DayTimer and other vendors busy printing.
This year, I came across a great site, DIYPlanner.com, with some great templates to use. The host developed a set of templates, now up to version 3.0, released under Creative Commons, an nearly 80 pages of clever templates. Many other have contributed templates, graphics, word processing documents and executables to generate some really professionally-finished pages. Supporters of Getting Things Done, Hipster, the Covey plans and the other organizing techniques seem to be getting along pretty civilly, and have posted a number of interesting articles. If you’re a fan of systematic ways of doing things (and that seems to be a common trait amongst the computer nerds), check out DIYPlanner.com.
Webpages should accomodate the viewer gracefully.
I regularly run my FireFox browser with JavaScript disabled, using the great NoScript plugin. Keeping JavaScript disabled by default protects me, a little, from malicious sites. “Malicious sites” used to be a codeword for “sites you shouldn’t visit anyway,” but all sites need to be considered malicious, owned by bad guys, until you have a good reason to believe otherwise. Ad networks have accepted ad content containing malware. It happens. Bad guys figure out how to inject code into comments on legitimate sites. And phishing emails are getting so believable that everyone’s going to get caught once in a while. A first visit to a linked web site should let me examine the HTML and the page and decide if this is a site I’d like to trust. Websites that just dump me on a blank page with a disabled Flash animation FAIL.
Sites need to understand there’s good reasons for a client having their JavaScript turned off, and downgrade their presentation gracefully. For example, the http://www.searspartsdirect.com site tells me, “IMPORTANT ! This website requires JavaScript support for proper operation. It appears that your browser does not have this feature enabled. Click here for more information and assistance.” Well done. Proctor and Gamble’s pg.com site, on the other hand, hangs for 10 seconds at a blank page, and then takes me to a generic page (using a NOSCRIPT tag and redirect) telling me “PG.com is best viewed on Netscape or Internet Explorer version 4 or above. To ensure our Web site works on your system, please upgrade your browser…” Oh, puhleez! Wrong in so many ways.
Voices That Matter, Professional Ruby ’08, notes from Day Three
Well, the Day Three notes are a bit rough. Wrapping up 800 miles of commuting and not enough sleep during the conference. But at least I didn’t have to come up with bail money
Stay tuned. Expect updates, spell-fixes and proper grammar as I punch this up over the weekend…
Josh Susser, Pivotal Labs
dawn of history: agriculture, pyramids, smalltalk
what the hell happened to smalltalk? In the 80s,
arguably the most advanced software development
platform in the world. The best of the best.
At Apple, wrote a memo damning C++
Bjorne’s fault.
C++ is portable structured assembler.
SmallTalk had IDE, garbafe collection, and a big blind spot.
It’s greatest strength is also his greatest weakness.
Consider SuperMan. His moral certitude is his greatest flaw, too.
With SmallTalk, the virtual image stored everything, down to
the network stack and primitives of the file system.
Just the kernel needed to actually be implemented on the OS
itself.
Squeak is the modern implementation.
Virtual Image was very powerful, but not without costs: it made
it nearly impossible to deliver client applications.
Updating a client involved sending them code for them to compile
to update the application code, which was mixed in with
the data in the Virtual Image. Problem. Multiple vendors couldn’t
really practically share a VI, since they could easily clobber each
other’s stuff.
Was a regular at OOPSLA for years; it was all SmallTalk for the longest time. Then
C++ came along, and OOPSLA was all C++. And it wasn’t that C++ was so much
better than SmallTalk, it was that it was so much better than C.
Argues Ruby is prodeominant because of Rails, and Rails predominates because of
web apps and XP. Extreme Programming is highly adopted in the Rails community,
and TDD is very easy to accomplish. “It’s almost easier to test than not.”
Many current issues will be solved with MagLev or Rubinius or Marv.
Problem with the flexibility of Ruby/Rails is the strength and weakness: meta-programming and on-the-fly in-code creation of classes and method means that code is executed that doesn’t exist anywhere on disk. How can you find and modify and refactor code that’s not there? Answer: tough. But we have testing that should describe all the behaviors or our application, even the just-in-time code. Modifications to base classes such as Active Record to hook in and capture the creation of classes and methods. Clever!
RESTful possibilities, REST in Rails and Beyond
James Golick
Survey: who codes REST? half the hands
Example: you host a web site, want to map some data. Don’t have the geocodes, want to oursource that
Solution: remote procedure calls, SOAP or CORBA. Complexities of underlying stacks is huge: 41,659 LOC for the SOAP client in Ruby. rpc = FAIL. Roy Fielding’s PhD dissertation. Describes http as Representational State Transfer (REST)
anything can be a resource http is verb (GET, PUT) and a noun (location) Argues POST http://example.com/comment/create is NOT RESTful – Don’t Verb the Noun map.resources :post – tells the Rails router to route the request not only on the noun, but also on the verb
standardization is good.
Assumes that most “professional” ruby developers have worked with these conventions, and therefore will be productive much faster. RESTful api with YAML, JSON or XML exposed. powerful tooling. Example: James had an idea, Tweet:”walking my dogs thought I’d bore you with details of my life, blahblahblah” right from the command line. 35 minutes from concept to shipping
Things not to do in Boston while you’re drunk: Bukowski Tavern FAIL
Using Berkeley DB and Ruby for large data sets Matt Bauer
Tweets: Still at the Boston police station. #prorubyconf08 Bailsman is on the way. Still not processed completely yet. Long nite
Data collection of bike racing, 28 data points captured every 5 seconds, 1.7 TERAbytes of data annually .
Wrote a custom lighttpd plugin, SleepyCat (BerkeleyDB) and merb for data collection.
Bullet points: Open Source, highly concurrent (thousands of threads), scales to 256 TB, keys/data to 4 Gb, Supports ACID transactoion
embedded/ runs in same address space, written in C with many bindings, very small: 399 kb of text space, no SQL or Schema
Doesn’t operate on Keys or Data
Two data stores: concurrent: no recoverability; transactional: Fully recoverable, ACID
BerekeleyDB is like an Indy Car: wicked fast, but you will hit the wall. Advice: read the manuals! Plan for recovery.
Specs on performance he’s measured: Concurrent, nearly 1M records posted per second, Transactional, 128K/s
Ruby & Dbd bindings, two versions: Guy Decoux 2002-2008, passed away! Dan Janowski (2006-2007) exact
implementation of C API, Oracle API, Quite Stable, Only Three Test Cases.
Very frank about “hating” SQL – like swim floaties, we can do better. I’m not sure he understands the problem space
that SQL solves.
Code example, very C-like
Four data storage patterns: BTree (sorted balanced trees, can set fill factor high on ordered insertion),
Hash (extended linear hashing), Queue (fixed length records, head/tail push/pop), Recno (stable record number).
Simple tuple can be 8 Gb in size, one key (4 Gb), one value (4 Gb)
Flags are all-important to interface, each method call has parameters to be tunable.
Cursor support, open, first, next, last, close. create, save.