Just a few days ago, Why the Lucky Stiff put out a blog post about the first named edition of Shoes, and I am pretty excited about it. Despite not being an avid Ruby hacker, I have to admit, I like Shoes a lot. I genuinely enjoy making simple little applications in Shoes.
Thats why, with the release of Shoes Curious, I decided to write another program using Shoes and see how they are doing.
(ed note: writing about both Why and Shoes screws with my mind. Why becomes both adjective and noun.'Thats why!' could be a surprised proclimation upon seeing Why out in public. Or it might be the beginning of a dry and poorly written sentence explaining the release of a new version of Shoes. Shoes is... are... is equally problematic.)
I am writing a quick little application that I cleverly entitled The Lazy Internet that will collect links when I am away from an internet connection, and then download them when it finds an internet connection.
It is a simple tool, but one that I occasionally wish I had during my days working without an internet connection.
That said Shoes development on OS X is still fraught with peril. (I am still running OSX 10.4, which may or may not be part of the issue.) The key problem is that running the same Shoes program with the same Shoes interpreter can yield wildly different results.
Here are a few images that show varying results I have gotten from running the same code. (You can find the code under the pictures, if I am drowning in a soup I lovingly crafted myself, please let me know!)
How its supposed to look
Please. No.
Damnit all to hell
I feel somewhat violated
The source
@@ ruby QUEUED = [] DOWNLOADING = [] DOWNLOADED = [] BANDWIDTH_THROTTLE = 50 Shoes.app :title => "The Lazy Internet", :width => 800, :height => 400 do background "071A17" stack :width => 780, :margin => 20 do flow :width => 1.0, :height => 40 do background "#071A17" @url = edit_line :width => 500, :margin_right => 50, :text => "http://" button "enqueue", :width => 100 do enqueue(@url.text) @url.text = "http://" end end stack :width => 1.0, :height => 100 do background "#A69561" @queued = para "queued downloads" end stack :width => 1.0, :height => 100 do background "#665C2C" @downloading = para "in progress downloads" end stack :width => 1.0, :height => 100 do background "#332E1E" @downloaded = para "finished downloads" end end def redraw_queued @queued.replace *(QUEUED.map { |url| url + "n" }) end def redraw_downloading @downloading.replace *(DOWNLOADING.map { |download| download + "n" }) end def redraw_downloaded @downloaded.replace *(DOWNLOADED.map { |download| download + "n" }) end def enqueue(url) QUEUED << url redraw_queued end def download dl = QUEUED[0] if dl != nil DOWNLOADING << dl QUEUED.delete dl redraw_queued redraw_downloading end end def complete(dl) DOWNLOADING.delete dl DOWNLOADED << dl redraw_downloaded end animate(8) do download end end @@
While I'm not terribly helpful in debugging, I can confirm the UI wankery is the same in Leopard.
Thanks Luke. I went on #shoes and apparently the UI stuff is consistent in Ubuntu, so I'm hopeful that OS X will get predictable too. (Wonder what its like in Windows..)
Things have been pretty consistent on Windows for me, on this first day of Shoery. Not that I haven't been having other problems.
I also am loving the Shoes.
Developing on Ubuntu, running it on Windows the minimum width appears to be bigger than on Ubuntu, so my window is wider than it should be.
Other than that, the functionality works great.
RyanE
On windows XP it looks like the first image. It crashes when you type something in the edit_line. I could tell Microsoft about it, but I don't think they'd be interested.
Reply to this entry