Archive for March, 2007

John Backus (creator of Fortran and Backus Normal Form, BNF) Passes Away

Tuesday, March 20th, 2007

I just read on Lambda the Ultimate that John Backus passed away this past Saturday.

John Backus Receives the Turing Award
John Backus in the 1990s. Courteous IBM.



In his speech accepting the Turing Award, John Backus admonishes developers and computer scientists to look towards functional programing. He states that the composability and mathematical rigor of functional programming empowers programmers to scale and best describe the ever increasing complexity of problems. Interestingly, Backus describes the von Neumann architecture and its associate imperative programming language as obese. Backus continues saying that these obesities encourage micro-managed word at a time computing. Instead of moving data between named locations, we should focus on the larger conceptual units of the problem says Backus.

I see this debilitating behavior every day, both in developers and managers. Most IS/IT managers get caught up in the word at a time or task at a time work flow that cripples teams and organizations. Senior developers and managers must be instructors and mentors in the enterprise. They must be experience practitioners of abstraction and modeling. Their first and most important priority must be to impart the skills of scale, abstraction, modeling, and reuse to those they mentor.

Lightning Talks (Mountain West Ruby Conf)

Friday, March 16th, 2007

Ruby Binary Lottery – Mike

WAX (Web Applications X) – Dan Kirkpatrick eparklabs.com

Managing SSH keys with Capistrano or How Jamis Buck made my life easier./- Jay ???

Goldberg Ruby on Rails Generator – Coby Randquist

CruiseControl.rb – ThoughtWorks Continuous Integration Tool written in Ruby.

Why would you want to use JRuby on Rails – Charles Nutter
RailsIntegration part of JRuby Extras Project on RubyForge

LogWatchR – Pat Eyler aggregates logging for 3,000 boxes to a central machine for operation notification.
Initially it handled 600 log entries per second. Right now it notifies via email and a log file. Looking to support nagios, jabber, etc.
Now supports 2250 log entries per second.

Black-boxing with Ruby: Adding Ruby APIs and Front-ends to Existing Software – James Britt (Mountain West Ruby Conf)

Friday, March 16th, 2007

Background

Hey! Why not build everything yourself?
That’s insane. No, really. It’s a mouse hole.
Why not use a Ruby app?
Not a good selection of apps.
Why not use what works best?
P* Languages are not the work of Satan.
Big Motivation: “Hey, I wonder if …” “Wow. It never made that sound before. Neat!”

Use case: Trac Project tracking tool

But way too much mousing.
Hey, I wounder if you could use Trac from the command line?
Sure: Use Tracula. I wrote it.
Tracula uses Hpricot & Mechanize to prentend to be a browser.
tracula.neurogami.com

Brittleness gets introduced when going against web pages.
Version updates break things. Trac Plugins break things.
Yes it’s fragile, but it’s easy and it’s easy to get started.

The Django book has a cool commenting system.
Go look at beginningruby.com

Techniques

  • Screen scraping
  • DOM munging
  • Proxies, proxies, proxies

Observations

Most sites offering a real Web API
Proxies offer buffering and separation of concerns and can help avoid tool lock-in.
Robust exception handling.

RubyStuff.com – front end for CafePress
CloudPanel – EC2 admin tool

www.neurogami.com
www.jamesbritt.com

MasterView – Jeff Barczewski (Mountain West Ruby Conf)

Friday, March 16th, 2007

Jeff heard Dave Thomas talk at Java – No Fluff Just Stuff and became converted to Ruby. Beyond lightweight frameworks like Spring, Ruby was the answer being preached at NFJS. The famous 10x programmer efficiency increase with Ruby proved true.

WYSIWYG for web development. Rails Erb looks to much like the old ASP/JSP stuff. View stuff was spread across too many files in an extreme attempt to by DRY(Don’t Repeat Yourself).

Goals

  • WYSUWYG (x)html
  • Keep it simple DRY Somple Syntax iwht Ruby Flavor
  • Designed for RoR
  • Utilize Rails layouts, partials, and helpers.
  • Reduce complexity, no extra view (presentation) objects or hashes
  • Production ready scaffold templates or work from html prototype..
  • Redcude number of files. Preview in browser

MasterView has a richer CRUD scaffolding than plain old Rails.

See also

Simple Bayesian Networks – Carl Youngblood (Mountain West Ruby Conf)

Friday, March 16th, 2007

Problems with causable Agents

  1. Impotence
  2. Theoretical Ignorance
  3. Pratical Ignorance
  • How to handle uncertainty?
  • Enter Probability Theory
  • Probability provides a way to of summarizing the uncertainty that comes form our laziness and ignorance

Basic Probability Theory

Bayesian Networks

Inference Methods

  1. Exact (potentially exponential)
  2. Approximate (less Accurate) – stochastic or Monte Carlo algorithms

Simple Bayesian Networks with Ruby

SBN – gem install sbn

  • 2003 – Class project
  • 2005 – C++ version
  • 2007 Ruby version

“Premature optimization ois the root of all evil.” Donald Knuth, paraphrasing C.A.R. Hoare

Pragmatic Community Driven Development in Ruby – Gregory Brown (Mountain West Ruby Conf)

Friday, March 16th, 2007
  • 86 Slides
  • Rolling the Dice with Ruport
  • Reporting Sucks
  • #mwrc irc.freenode.net
  • Ruby is a community, we should love Ruby and need Ruby
  • Are we dealing with ideologically problems, Firefox logo vs IceWeasel Logo
  • Good software is produced by involving a community
  • Lets analyze Ruport
  • Ideals:
  • Ruport is GPL. License Choices do Matter. It is important to poll the communities opinions of licenses.
  • Licenses are hard to change, Ideology isn’t
  • Don’t write your own license. It’s a matter of comprise.
  • Free Software is a gift
  • BSD/MIT favors individuals.
  • GPL favors communities.
  • RubyLang is dual licensed
  • Go with RubyLangs license and you will probably be ok with the free software crowd
  • Communities are warehouses of ideas
  • You can’t please everyone in four weeks, working part-time
  • You can only really work passionately on your problems.
  • Learn when to say no to feature bloat or -O nofun.
  • Sometimes Less is More. Tens vs Thousands. Much easier to read tens of emails vs thousands of emails per week.
  • Mailing List != Bug Tracker
  • GForge is nice. But is it what you need? Ruport needed SVN/Trac
  • Trac blurs the lines between developer/contributor/user
  • svk + cron allowed use to mirror our Trac SVN repo to the RubyForge SVN repo.
  • Tools Matter:

  • Trac has improved participation in Ruport
  • Friction Effects Contribution
  • Technical decisions and input shouldn’t occur on RubyTalk
  • Every patch, even if unapplied is valuable. Don’t dismiss them. Examples and tests can come from patches.
  • What’s Relevent

  • Create a roadmap.
  • Telling yourself what your software is, helps you build it.
  • Design Goals need scoping as well as features.
  • Use cases can drive development. We invite people
  • No Cruise-Control

  • Don’t introduce things that are only meant for you, the developer, or one single user
  • Move non-essential features or customizations for single users out to plugins.
  • Unique Poject Identity is good

  • Be Bold about your decisions

  • Take risks
  • Come up with crazy ideas
  • Start finding your community early.
  • One Last Thing – One Last Good Idea

  • Ruport 1.0 2007.05.15

Questions/Comments:

  • Look around us at other projects and how they use their community building skills.
  • Make it easy
  • Meta-documentation that describes basic processes such as howto submit but reports, patches, etc
  • Make meta-documentation stupidly easy to find
  • We need to create a collection of best practices for managing ruby projects.
  • Go read the book “Producing OpenSource Software“. It’s free online. Go Read it.

RubyQueue – Ara Howard (Mountain West Ruby Conf)

Friday, March 16th, 2007

RubyQueue is an embarrassing parallel work queue system that simply uses NFS directories as a shared queue.

  • NFS lock sharing isn’t defined to be fair. Ruby Queue uses a exponential back off algorithm to try to make NFS locking more fair.
  • NFS uses arbitrary ports, because of portmap, which causes problems for firewalls. It is possible, however, to pin those ports which makes firewall traversal possible.