Subscribe

May Policeman

May 14th 13:12
by why

Hello, everybody, sorry for the absence. I am preparing the release of Shoes 3 (which close friends call “Policeman.”) This release is a huge deal, as it will include Ruby 1.9, a much faster and progressive Ruby.

Here’s the first set of Policeman builds. Notice there is no video support. I am taking this chance to upgrade to VLC 0.9, which is a big job as well.

Builds will appear on the recent builds page as they are released.

A Few Days Later

December 9th 22:14
by why

First off: Adium Top Words. One of the first apps I’ve seen distributed as a DMG. This is good to see.

And, actually, this has me thinking. Shoes should have a feature to open Shoes-packaged executables. It’s just a matter of extracting and running the shy! (Also, the packager could learn to repack executables into other formats.)


Shoes 3 is plugging along already with some very important fixes to Windows.

Here’s what I’m hoping to accomplish with this one:

  • Stability – fewer crashes, faster painting and text layout.
  • Upgrades – to all dependencies on all the platforms. (New Cairo, new Pango, new VLC, codecs, etc.)
  • Windows – better Vista support and friendlier, friendlier, chummy as can be.

Features are on hold for a month. Now is all about slimming down.

Raisiiiins!!

December 6th 01:50
by why

And I will leave you only with this.

Shoes 2 (Raisins) In The Oven

December 4th 17:10
by why

Shoes 2 is coming tomorrow. This is the last set of builds. Do a once over and let me know of anything glaring.

Other builds are listed on the recent builds page.


As for what’s new:

  • Shoes has a splash screen. I know, I know! But if you run Shoes without any arguments, previously it was just popping an “Open File…” dialog. Which was weird. So all we’re doing is replacing it.
  • Crash on OS X when using the download method. Very stupid little problem that bit a lot of people.
  • Automatic proportional scaling of images.
  • Added the pong example.
  • Bug in coordinate reporting for nested slots. Thanks, Tieg!
  • Error handling during gem installation. (Like in case a compiler is missing.) Thanks, Vassilis Rizopoulos!
  • You can now run Shoes directly from the OS X installer, without installing.
  • Log HTTP errors. Thanks, Alexander Rakoczy!
  • And a number of fixes to the packager, especially on Windows.

What is Shoes?

November 26th 14:29
by why

In preparation for Raisins, the new What is Shoes? page attempts to explain Shoes visually, with screenshots, for new people.

The page features this app Pixel Painter, which has to be one of the loveliest little apps I’ve seen in Shoes yet.

A Manor Well Shod

November 24th 17:08
by why

Graham Ashton: [Shoes] was designed as a replacement for an HTML rendering engine for use when teaching people to code, so it’s pretty familiar to people who know a fair bit of HTML.

You know, I’ve never heard it put that way. Shoesers, you agree?

Sounds like this London event went great. Two twitter apps were showcased: Talon, written in Shoes, and Tweetobix, written in Monkeybars.

Putting A Shoe On Your Database

November 20th 16:52
by why

David Jones: There you are; a cross-platform desktop app that doesn’t require a full-on build environment, and can be distributed with the source exposed for later improvements.

Could it be? Are we starting to emerge from this struggle with gems? He has ActiveRecord loading through Shoes.setup. It certainly looks that way. (Saw this on RubyFlow.)

Survey Of Interest

November 20th 11:52
by why

On Ruby-Talk, an announcement for a survey of Rubyists. The topic is desktop apps.

Alex Fenton: The background to this is that there are sporadic threads on GUI programming on this group, but little overall picture of Ruby GUI usage emerges. New options for GUI development have emerged in recent year. I’m interested to know who’s doing what, and how Ruby could be a better language for these kind of applications.

Shoes isn’t strictly a “GUI” library, really. More of a Ruby distro for writing graphical apps (not just interfaces.) But it’s listed among the options and I’ll definitely be following the results of the survey, even though the audience for Shoes is more along the lines of hobbyists and the young.

Shoes Versus Adobe Air

November 18th 10:07
by why

Shoes is quite a bit smaller than Air, but I suppose they are closer competitors than Shoes and QT or Shoes and wxWidgets.

Justin Duewel-Zahniser: [In Air, if] you could use Rhino to code javascript against the Java APIs, suddenly you could do nifty things on the client side like break out an OpenGL window or play an MP3 (without Flash). I imagine this is fundamentally a security issue for Adobe, though, since they currently have strict rules about client/server communication and file system access. Shoes provides an app layer on top of all that is Ruby, whereas Adobe provides pretty much only a self-contained GUI box.

I like what he says about Shoes needing more holistic tutorials about how to create intermediate-level apps. He also proposes a simpler Haml and Sass markup for Shoes. Maybe there’s something to that?

November Pre Release

November 17th 14:08
by why

Here is Shoes 0.r1091, with some important fixes for the Raisins release. I still have some changes to the manual and to URL classes before the release.

Other builds are archived at the recent builds page.


So what’s new?

  • Hpricot, SQLite3 and JSON gems are included and installed as proper gems. Previously, I had them as plain, installed libraries. This solves some problems with gems that were trying to upgrade Hpricot, such as the Twitter gem.
  • Fixed problems on 64-bit Linux.
  • Fixed custom HTTP requests (:method, :headers and :body options) for the download method.
  • Bug in hide/show for nested slots.
  • Added more robust argument parsing.
  • More docs in the manual.

64-bit Shoes

October 24th 15:31
by why

I’m happy to say that I’ve finished a round of debugging Shoes on various 64-bit platforms. Most notably the new Ubuntu 8.10 running on 64-bit. Recent commits also take care of some threading problems in the image cache.

da6abc: sha-1 had problems on 64-bit arch due to length of the unsigned long.

3f82dfe: separate out the shoes_image_downloaded function, which wasn’t thread-safe. now it runs in the main thread, after the completed event is fired.

Downtown Double Pac

October 19th 00:54
by why

I wanna know what’s going on here.

(from @selenamarie.)

Eighty Commits Later

October 15th 10:26
by why

Sorry it’s been a month since the last set of builds. Here we have Shoes 0.r1057, with the OS X threading fixes applied. And, of course, lots beyond that.

Other builds are archived at the recent builds page.


Among the commits this time around:

  • On OS X, Ruby’s threads were conflicting with some Cocoa calls, causing a crash, especially in the gem installer. This was solved by using the Cocoa exception handler.
  • Brand-new support for loading from external fonts, such as TrueType and OTF files.
  • New page in the manual: The Styles Master List.
  • By default, the download method now follows HTTP redirects. This can be turned off by using :redirect => false in the method options.
  • Shoes apps now run inside their own anonymous namespace, rather than in the Shoes namespace. This is further explained on The Rules of Shoes, in the section The Main App and Its Requires.
  • New setting for all native controls: :state => "disabled" and :state => "readonly".
  • Audited all the UTF-8 code, found issues on both Windows and OS X.
  • Added HTTP proxy support on Windows.
  • And, naturally, many other repainting issues, memory leaks, and bothersome things were cared for.

Styling Master List

October 13rd 18:36
by why

The Shoes Manual: Rather than making you plow through the whole manual to figure out what styles go where, this helpful page speeds through every style in Shoes and suggests where that style is used.

This complete Shoes styles list is still being constructed, but I would venture that it’s the last big missing piece of the built-in manual. All the styles can be individual found through the built-in manual search.

Moving To Libvlc 0.9

October 12nd 10:43
by why

Don’t worry, folks, there’s just some controlled entropy underway in the Shoes git repo. You’ll probably see some build problems over the next few days, but it’s all to a good end. Some breaking changes in libvlc 0.9 cause Shoes’ video support to fall apart on Ubuntu Intrepid.

I’ve been meaning to upgrade to 0.9 on Mac and Windows anyway. The new API is much better and lets us play multiple video files at once and hook into some plugins, should we choose.

Very Basic Toots For Shoes

October 6th 14:32
by why

An Introduction to Shoes: Shoes is a GUI toolkit for Ruby (among other languages) and is like no other. Not designed for serious, large-scale GUI applications, Shoes applications tend to be small, useful and clever programs. Things in Shoes are also drastically simplified and the learning curve is very shallow, meaning anyone can just jump right into Shoes with both feet.

I’m impressed by how short and to-the-point these little Shoes tutorials are. There’s obviously a lot of care and hard work by Amanda & Michael Morin in these. (Although the icons in front of each tutorial somehow made me think this was just a page of links.)

New Today: External Fonts

October 6th 12:03
by why

I’ve just finished checking in support for loading fonts from external files. The new method is called the font method.

 font "phonetica.ttf"

 Shoes.app do
   para "A sample sentence.", :font => "Phonetica"
 end

I’m using platform-specific code to load the font, so fonts only work on the platforms that support them. TrueType and OpenType fonts are the most widely supported (and available) types. The docs linked above list what fonts are supported by which platforms.


Also, there’s a new Shoes::FONTS constants for getting a complete list of the fonts you can use. You get back an array of font family names.

This makes it really convenient for generating a font selector with a simple ListBox:

 Shoes.app do
   list_box :items => Shoes::FONTS
 end

I’ve been waiting around for Pango to do this for me, but I’m really happy with how little code it actually took to just access the platform APIs directly.

Avoid OpenURI In Shoes

October 5th 09:30
by why

Adam Nelson: As you can see, the worst performers are the stock Net::HTTP implementations in both 1.8.6 and 1.8.7, though 1.8.6 is noticeably worse due to the 1K buffer size vs 16K for 1.8.7. The best performer is curb (libcurl bindings for Ruby), under with 1.8.6 and 1.8.7.

This sort of performance chokehold is part of the reason you should use the download method rather than OpenURI. The download method uses its own threaded Curl binding on Linux, WinHTTP on Windows and NSURLConnection on OS X.


It’s not just a performance problem with OpenURI, though. It can block your main window.

Yesterday, Emanuel Carnevale came to the list with some OpenURI code that was blocking his app:

doc = Hpricot(open("http://domonomnom.tumblr.com/random"))

Which was easily replaced with:

download "http://domonomnom.tumblr.com/random" do |domo|
   doc = Hpricot(domo.response.body)
   # ... do tings with doc ...
 end

Having the block in there is important so the method can return back to your app and fire the block later when the download completes.

Shoes In London?

October 3rd 13:13
by why

Could there be a Shoes presence at the delightfully cheap Ruby Manor event in London?

Murray Steele: Anyone that’s been to an LRUG event where I can possibly shoe-horn in a random element will have been utterly amazed at the awesome things I can make Shoes do. I’m proposing that if folk are interested I can take a month or so to learn Shoes even more and regale you all with tales of my derring-do and shoes-related witchcraft. Or, just a quick intro into Shoes, which ever seems of most interest to the group.

Witchcraft? Derring-do? Someone fancies himself quite the shoudini. Put him on, let’s see what this is about.

The Shoes Of Your Mind

October 3rd 12:06
by why

Wilhelm Chung: 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.

I’m glad to have Wilhelm around. He’s raised a memory leak in clear which I’m addressing at this very moment.


His comment about keeping it all in your mind is a crucial part of Shoes. One of the key tenets embraced by Shoes goes like this:

A. Whitehead: By relieving the brain of all unnecessary work, a good notation sets it free to concentrate on more advanced problems.

Furthermore, having ten essentials is an idea taken from Bonnie Nardi’s studies of spreadsheets. She felt that if there was an immediately useful subset of a language, then users could be immediately productive, they could learn quicker and the language would have practical effect.