notkeepingitreal.com

software, business, and other business

RubyConf talk: Kyle Maxwell: JRuby in the Wild

Jruby is already kind of an easy sell in big companies. It’s the quickness of rails with the familiarity of java.

But

I’m not trying to to sell JRuby to enterprises [well clearly, or else he wouldn’t be giving this talk at rubyconf].

JRuby can work well, even for startups – it’s just about choosing the best tool for the job.

Why might one choose JRuby?

  • performance
  • library support (in fact, we wanted Lucene for search!)
  • extending the language without using C

Getting started:

  • easy install
  • don’t use textmate to code java
  • casting can be tricky (java needs arrays to have only one type of object in them, ruby not so much)

RubyConf talk: Jay Phillips: Next-Gen VoIP Development with Ruby and Adhearsion

Adhearsion is not a rails plugin. Rails is certainly hot though. After all, the web is hot. Telecom, at least historically, is not at all hot.

Enter VoIP.

Asterisk, the defacto standard, has a fairly tough-to-get-into codebase. Maybe adhearsion can do something.

Your phone is actually a universal remote. There are mad possibilities for controlling doors, video games, and all manner of electronics.

There are lots of fun hijinx you can get into: spoofing caller id, locking out automated telemarketers, integrating with instant messaging, ETC.

Adhearsion is open source software that abstracts away this technology with ruby in an extensible, easy to understand way. “Weasels have destroyed the phone system.” Word!

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: Matz: Saturday Keynote

Language matters or not?

Twitter made a 1000% performance gain with mysql, solaris, and dtrace. No language change. So if many languages provide similar feature-sets, what is the difference?

Attitude

Python believes in a “one true way,” while ruby believes in diversity.

Ruby is doing well – Martin Fowler of thoughtworks was telling me that ruby is making his life difficult, since if thoughtworks employees can’t use it, they quit. :) And that seems great, since there is business value in fun; after all, there is lots of gain in programmer productivity based on enthusiasm.

Ruby 1.9:

  • Major incompatibilities include encoding jank and block argument restrictions
  • Minor incompatibilities abound, including File.exists? [which some guy had asked about the previous night]
  • Lots of new features – he showed off external iterators

Languages (and empires) go through cycles:

  • Humble beginning
  • Success
  • Pride
  • Conflict/War
  • Drop to nothing

Ruby is somewhere between success and pride, so at least we know where we’re headed. :) We will eventually go enterprisey to please the “suit people” – yeah, I know, I don’t want to either. :)

We’ve got such an awesome, nice, smart community. Let’s change the world!

RubyConf talk: Kyle Maxwell: JRuby in the Wild

Jruby is already kind of an easy sell in big companies. It’s the quickness of rails with the familiarity of java.

But

I’m not trying to to sell JRuby to enterprises [well clearly, or else he wouldn’t be giving this talk at rubyconf].

JRuby can work well, even for startups – it’s just about choosing the best tool for the job.

Why might one choose JRuby?

  • performance
  • library support (in fact, we wanted Lucene for search!)
  • extending the language without using C

Getting started:

  • easy install
  • don’t use textmate to code java
  • casting can be tricky (java needs arrays to have only one type of object in them, ruby not so much)

RubyConf talk: Jay Phillips: Next-Gen VoIP Development with Ruby and Adhearsion

Adhearsion is not a rails plugin. Rails is certainly hot though. After all, the web is hot. Telecom, at least historically, is not at all hot.

Enter VoIP.

Asterisk, the defacto standard, has a fairly tough-to-get-into codebase. Maybe adhearsion can do something.

Your phone is actually a universal remote. There are mad possibilities for controlling doors, video games, and all manner of electronics.

There are lots of fun hijinx you can get into: spoofing caller id, locking out automated telemarketers, integrating with instant messaging, ETC.

Adhearsion is open source software that abstracts away this technology with ruby in an extensible, easy to understand way. “Weasels have destroyed the phone system.” Word!