what I learned over the years

Menu

Somebody knows Shoes

I’m a fairly late adopter compared to some of you. When Shoes came out, I had followed it, but never tried it. It’s been at least 8 months now, and I finally got around to it. I guess I don’t really try something out unless I have a use for it in my mind. Still waiting for that Haskell project…

Anyway, trying out Shoes was…easy. Outside of compiling it, actually. I take that back. Once I read the README and figured out what packages I needed, it was easy. Even easier when I found the executables. Running the sample code was…easy. And trying out your own app…you guessed it…even easier. It helps that there’s a ton of examples and documentation. Makes me think that when programming, you should keep the API of your code in mind, so that it’s easy to use after you’ve implemented it.

Two things strike me immediately. _why took his ability to make DSL in Ruby to heart. I don’t have to think about the buffering, cursor positions, etc. Even better, the functions are orthogonal and consistent.

You can not only move shapes around to follow your mouse, but also widgets, like buttons.

Motion gets executed whenever your mouse moves around on the Shoes screen. So you can have a button dancing opposite to your mouse. Another surprising thing is that an app is structured like a webpage, and different pages have urls. And routing is declared in the app block itself! And not only that, it takes regexs

class Dictionary < Shoes url '/', :index url '/(\w+)', :word

def index stack do title "Enter a Word" @word = edit_line button "OK" do visit "/#{@word.text}" end end end

I’m not sure how far this sort of thing can go when building more complex GUIs, but so far, it seems pretty promising. There were a couple things that were broken on Ubuntu, however. I couldn’t get margins to work, as well as rounded corners: