notkeepingitreal.com

software, business, and other business

RubyConf talk: Francis Hwang: Conversations vs. Laws: What do we mean when we say Ruby is dynamic?

IMPORTANT POINT: Does anything that matters have a fixed definition?

So how do we classify species? One rule is that two different organisms are of the same species if they can interbreed. But the lines are not always so clear. Elliotte Rusty Harold called out ruby arrays for doing too much. Is it a list, a stack, a map, what? It’s 3 data structures in one? But perhaps part of the problem is that he’s trying to classify something that does not need to be classified. Do we cling to definitions or let them go?

IMPORTANT POINT: People are more important than contracts.

  • In some place in Florida, authorities were concerned about thong bathing suits and covering of the buttocks. One thing led to another, and a 300-word definition of buttocks ended up on the books. Hilarity.
  • In many native american communities, people are dealt justice based on what the players in a given offense agree to – sometimes known as restorative justice.
  • How does ruby survive without namespacing in their libraries? Well, when I created a library that had the same name as an existing library (whoops), I just renamed my library. I realized that repairing the social fabric was more important than having the exact name I wanted.

IMPORTANT POINT: Life is risk, so seek it out.

You may want to be in a company that makes decisions quickly. What may happen instead is a scenario like the following: “You’re right, but this decision was made months ago and it cannot be changed now.” Some companies don’t actually need its developers to be as good as the guys from the next google. Obviously they wouldn’t mind if they got an all-star developer, but it is more important to minimize the risk of having a completely terrible developer. This also may or may not be the type of place you want to work.

IMPORTANT POINT: Things fall apart.

  • Your code won’t last forever
  • Your career won’t last forever
  • Hold on to things as long as they are useful, and then let them go

Meta note: hottest presentation ever.

RubyConf talk: Eric Hodel: Maximizing Productivity

I was having it out with my wife on the telephone for the beginning of this talk.

Main points:

  • Test
  • KISS/YAGNI
  • Do what you want
  • Hack often
  • Automate
  • Eliminate pain
  • Have fun

Don’t burn out. Use autotest. Learn new things at conferences. Do pair programming. In fact, I’ve done gang-bang programming, where one guy is typing with the computer projected and a bunch of other backseat drivers are yelling out code. The guy is only allowed to type what someone else says.

Q/A time:

  • Person with question: So it seems like a lot of people use the ruby mailing list to submit patches rather than using the tracking system. WTF?
  • Hodel: Yeah, I don’t know. Matz?
  • Matz: I like email
  • Hodel: There you go, Matz uses email as his tracking system

  • Person with question: What’s your editor of choice?

  • Hodel: Vim [that’s right]

RubyConf talk: David Chelimsky, Dave Astels: Behaviour Driven Development with RSpec

Astels from google (et al). Chelimsky from Articulate Man (et al).

Tests are nice. Tests should focus on design and documentation. Behavior driven development (BDD) emphasizes design, documentation, and, of course, behavior.

They demonstrated some ping-pong pairing, with one guy writing a failing test, and then the other guy writing the simplest implementation to make the test pass, writing a new test, and passing it off to the first guy.

They gave the background/history of rspec. Hmmm.

There are three or so ways to write these rspec tests, up to an including writing english abstracts and test cases designed to be read and even added to by non-developers.

Features:

  • Clear reporting
  • Built-in mocking, but you can also use the other hot mocking libraries that the cool kids are using
  • Integration with autotest/heckle

There is a reasonably thriving community, and looks to be a good time. It certainly isn’t for everyone – ruby test unit may be all you need. [And screw this, enough hype, I’m gem installing ZenTest]

RubyConf talk: Ben Scofield: Cleanliness Is Next to Domain Specificity

  1. Linguistics

  2. We are programming languages – they can certainly be compared to natural languages

  3. Regional dialects are crazy. Can I get a coke? Pop is delicious.
  4. Jargons and cants differ not in grammar but in vocabulary. Hmmm.
  5. Creoles and pigeons differ in both grammar and vocabulary from their parent languages
  6. Getting back to ruby, are domain specific languages (DSLs) really languages? Or are they dialects, or something else?
  7. DSLs are really just about changing the words we use
  8. Linguistic determinism is crap
  9. The eskimos do not have 33 billion words for snow. For one, “the eskimos” is not one group of people with one language. Additionally, there may be lots of snow-related words in any given native alaskan language; however, there are lots of snow-related words in English as well.
  10. Tests are testing something that is already there. Specifications come before something else – this leads you in the right – or at least the test first – direction

​II. Refactoring

  • He showed a bit of shit code to get flight information from kayak and refactored it into a class with a more readable API
  • Use symbols instead of strings to avoid using quotes everywhere
  • Avoid parens when that makes things more readable
  • We will never model the domain exactly, so there is always room for improvement

Cool talk!

RubyConf talk: John Lam: State of IronRuby

How delightful to be awake at 9:00 and to witness this microsoft employee trying not to get tarred and feathered by the rubyconf hoardes. Sounds like the timeframe for the release of IronRuby is fairly loose. It will certainly be interesting to see how ruby running in the .net CLR will affect the future of ruby.

RubyConf talk: Evan Phoenix: Rubinius 1.0

I like to run my talks like Roller Derby: fast, enjoyable, hard-hitting and the metaphor breaks down.

Our goal is to TAKE OVER THE WORLD for ruby.

Ruby itself, and the various implementations of ruby in other runtimes (see past two posts), have lots of lines of C, Java, and .NET, but almost no lines of ruby. Rubinius is working to make the C lines of code/Ruby lines of code ratio smaller and smaller. Rubinius is ruby for ruby programmers.

As far as performance, rubinius is faster than ruby 1.8 in 24 of 31 yarv tests.

The community is awesome – thanks. If you submit one patch, you get commit access, and we’ve never revoked anyone’s commit access!

We’re eventually looking to make a squeek-like dialect that would allow us to generate the core C code. This would allow us to work towards a goal of having 0 developer-maintained lines of C code in rubinius.

Feel good presentation – nice job!

RubyConf talk: Charlie Nutter (and his homie): JRuby: Ruby for the JVM

So who doesn’t know what JRuby is? (eerie silence). Cool, well we won’t talk about that toooo much, but it’s a java implementation of ruby. Lots of IDEs are getting support for ruby these days, and a lot of that is actually because of JRuby, since IDEs written in java were able to jack the jruby parser and utilize it for their own devious purposes (variable renaming, syntax highlighting, etc).

The jruby compiler is the first ruby compiler for a general-purpose VM. It’s ready for use! We’d recommend ahead-of-time compilation rather than just-in-time compilation for many apps. Lots of neat compiler optimizations are in there – cached literals, using native java features, etc. The ObjectSpace#each_object method has also been removed unless you pass a certain flag into jruby since it’s really slow to implement that particular method in java.

Jruby does not support standard C ruby extensions, but they would recommend pulling in native java libraries instead, as (they reckon) most of the things you would want to accomplish have already been implemented in java. Rmagick is currently being ported.

It is possible, as one might expect, to pull in java from ruby with jruby. A common use-case for this is to create GUIs with java swing, and the ruby swing abstraction actually does a lot to simplify the swing API and make it more enjoyable to use.

Upcoming features are Hibernate-backed persistence, Ruvlets (Ruby Servlet-like API), Rspec, and many others. Good times.

RubyConf talk: John Lam: State of IronRuby

How delightful to be awake at 9:00 and to witness this microsoft employee trying not to get tarred and feathered by the rubyconf hoardes. Sounds like the timeframe for the release of IronRuby is fairly loose. It will certainly be interesting to see how ruby running in the .net CLR will affect the future of ruby.

RubyConf talk: Evan Phoenix: Rubinius 1.0

I like to run my talks like Roller Derby: fast, enjoyable, hard-hitting and the metaphor breaks down.

Our goal is to TAKE OVER THE WORLD for ruby.

Ruby itself, and the various implementations of ruby in other runtimes (see past two posts), have lots of lines of C, Java, and .NET, but almost no lines of ruby. Rubinius is working to make the C lines of code/Ruby lines of code ratio smaller and smaller. Rubinius is ruby for ruby programmers.

As far as performance, rubinius is faster than ruby 1.8 in 24 of 31 yarv tests.

The community is awesome – thanks. If you submit one patch, you get commit access, and we’ve never revoked anyone’s commit access!

We’re eventually looking to make a squeek-like dialect that would allow us to generate the core C code. This would allow us to work towards a goal of having 0 developer-maintained lines of C code in rubinius.

Feel good presentation – nice job!