Category Archives: Raspberry

Free At Last! Shoes 3.3.2 has been released.

Yes, it took forever and it’s not perfect but we could wait forever for perfection. Shoes 3.3.2 has some fun new features and some bug fixes. Available via at the usual place.

    New with 3.3.2

  • Ruby is updated to 2.2.6 (windows still uses 2.2.4)
  • gems is updated to 2.6.8
  • Profiler with both a GUI and the more traditional text report.
    Written in Shoes and Ruby so you can modify it if you like.
    issue 232
    Wiki – how to use
  • Shoes.show_console is now Shoes.terminal with many options for size, and
    colors. It can handle some common escape sequences (colors and bolding)
    On Windows:
    Use Msys> cshoes.exe
    or install one of those ANSI dll things for your DOS era console.
    Rumor: Win 10 does support ansi escape sequences on it’s console.
    Sometimes Win7 does ok with some escape sequence.
    On OSX – scrollbars might not show up. page up/down keys and home/end
    and scroll wheel do work.
    Useful for running unit tests of Shoes and other terminal stuff like the
    profiler text report.
    Note: raspbian may have font issues for ‘monospace’ font.
    issue 236
    issue 256
  • exit should no longer be used. Please use Shoes.quit
    issue 263
  • plot widget (line,bar,scatter, pie charts and radar/spider)
    issue 288
    issue 264
    Wiki – how to use
    expect some confusion and bugs.
  • rename method ‘refresh_slot’ to ‘refresh’ before too many people
    use the old name. This could break some scripts.
    Fixed with 3.3.2

  • Radio buttons fix
    issue 274
  • A new launch script for OSX (cshoes) that works like Linux and Windows
    from the command line. Use Cobbler to create your osx cshoes script.
  • Windows: bug261 – fix font loading
    issue 261
  • debugging with byebug is much better.
    issue 263
    Wiki – how to use
  • fixed: click and release methods return the documented button. top, left
    values. Button numbers start with left button = 1 and increases from there.
    How many buttons and how they are numbered is not something Shoes can know
    about so it’s the user responsibility to be cross platform with buttons > 1.
    issue 240

State of the Shoes Address

You may have noticed that it’s been a while since Shoes 3.3.1 was released and 3.3.2 keeps getting pushed into the future. What’s going on?

Well, some of the new features are very difficult to write and time consuming to test. We’ve discovered some very difficult issues with packaging for Windows 10 and so far, there is no way to get around what Microsoft wants and what I’m willing to do to Shoes, or what your willing to do. It’s called “code signing” which requires the annual purchase of a certificate (and the price can be very high with some certificate authorities). I won’t pay for that and I don’t think you should either.

The ground shifted and all we can do is adapt. Don’t package your scripts in an exe! Just tell your Windows users to install Shoes first. Then run the .shy you created.

Ruby also shifts under our feet. As Ruby evolves, they change things. Some of those changes will involve a lot of work for the Shoes C code in the future. I just found another problem with Ruby 2.2.6 (can’t cross compile the fiddle gem for Windows) – that will slow down building and testing even more if it can’t be resolved. I also found a new dependency problem last night for Windows but that should not be too difficult.

And then there are the Shiny Things that may not work, but consume lots of time to discover if it’s a failure or a brilliant idea. Like ebook

Yetta Another Beta

This one might cause some problems because it fixes a problem where the code didn’t do what the documentation said for some click and release events. The docs say to deliver |btn, left, top| to the proc. They didn’t. From what I can tell, they never did.

We also accept/present more button numbers instead of is always “1”. Button numbers start at one and increase from there in some pattern only you and your mouse device know. Cross platform? No! Your problem to sort out if the wheel click on OSX is a different number on Linux. Most people will stick with not caring which button. Now you have options.

If you’ve worked around the lack of |btn,l,t| on click and release then you may want to test your scripts with this beta. In this case, the documentation says the right thing and the code was incorrect. Long time wrong. See here

The beta also include the latest, almost nearly OK, plot widget.

Shiny things!

I thought Shoes should have a plot widget and I happened to have some ancient 1989 Java code (still works) that I could re-purpose into a C/Cairo based ‘plot’ widget for Shoes. Shiny! New! Fun! Might as well fix some know problems with that old code. So I did that It wasn’t the easiest thing in to do in Shoes but not the hardest either. There are many sharp edges to make round so it might not be in Shoes 3.3.2 – currently it’s issue 264.

It’s never going to be gnuplot replacement. If you need that level of control, you’re already using gnuplot or matlab. This would only be a gateway into the world of visualization).

Toy Data:
Toy Data

Real data:

I like it and there is the possibility to add to the graph in real time with new data or add new data series to plot,

It’s also a long road to release quality. I did mention the edge case problems, Yes, I did.

Breakage Ahead

Shoes 3.3.2 may not redefine Ruby exit and quit like it used to. Instead your scripts should use Shoes.quit. That should work on on Shoes 3.3.1 (and perhaps earlier). I might be the only person that calls exit or quit on a button press.

The window decorator icons and the osx global menu work as before. Avoid the panic and change your calls to Ruby quit and exit to Shoes.quit. Assuming you have any. Of course, you’ll try it and report bugs if it doesn’t work. Right? Please.


I know it seems like a long time since the last release – it has been a long time. Here is the deal, we were mucking around with command line stuff which is not cross platform by definition and is difficult to debug and test. A lot of that difficulty went away with the new cshoes launch scripts for OSX – I think I told you how great fix is?

Pretending to be a xterm console will get you into some dark places. Digging new tunnels in dark places is usually not a successful strategy for finding daylight. Dig I did.

Byebug was never well tested or used and with the old clunky osx launcher not all that usable. Shoes 3.3.2 is going to fix that. From the cshoes command line, `-d` will put you in byebug, pointing to some Shoes startup Ruby code. Set breakpoints in whatever file you intend to debug. ‘c’ and continue to it. Any args after -d are subject to normal shoes handling – so -d knows nothing about those extra args. You can debug the Ruby code of Shoes startup and processing this way or set a breakpoint on the file you want and let Shoes load it normally.

I’ve already mentioned the Shoes.terminal and it’s documented in the Shoes Manual now in case you need to change some appearance settings. Beta Time!

Yes, there are some known bugs. It’s a beta. You might find it useful.

Busy Busy

Never fear. There is work going on for Shoes 3.3.2 – but it’s edge case things, and bug fixes for stuff most people don’t care about. Yet, it has to be done.

There are so many OSX issues to fix. Since I don’t know what I’m doing in Cocoa and Objective-C, it’s taking a lot time. That said, I have made progress. Presumably, I’ve learned a lot about OSX. It is better on OSX.

What Bridge?

You might be wondering about whether any thing is happening with Shoes 3.3. Is there going to be a 3.3.2? What’s in it? Is anyone awake?

We don’t have a list of what’s in the next Shoes (3.3.2). As always, when developers don’t get feature requests then they work on their own pet peeves and the recently introduced Shoes Console was pretty lame when developers look at. A hack. A Useful hack but it could be much more useful. One developer wants to use it output results from Shoes tests and wrote a nice Shoes app to run test scripts on the internals of Shoes but the output was no where close to what a real terminal would display.

The code was particularly poor – I can say that, I wrote it! Clever but ugly. Developers care about ugly code. The first ugly is the Window was titled “Shoes Console” and we already had a “Shoes Console” – they are not the same. This one will be called Shoes Terminal. Arguably, the other Shoes Console, the one you alt-/ to, could have been renamed “Shoes Log”. On the gripping hand, The Shoes Terminal will actually do terminal things.

Inside Shoes, in the C code we had repurchased some dead and forgotten C from another project and as things often do, it might not have been the best choice. But after examining other projects to borrow from – it was not completely bad. So we fixed it to do better on Linux and possibly work better on Windows and be less offensive to the sensibilities of future C developers. That took time, a lot of time and it’s still not what I’d like although Linux is usable for many escape sequence emitting code that expects an xterm. Even works on Windows if you run cshoes.exe from the Windows dos console or msys.

And then we have OSX. At first glance, you’d think it would be like any other Unix, an assumption I mad when I hacked the current Objective->C implementation. Turns out, that wasn’t a good assumption. Shoes and OSX have always had some special “doesn’t fit the mold” problems. Shoes Terminal really highlights that special OSX experience.

There’s are deep OS river gorges Shoes has been crossing over with just a rope bridge over the rivers, swaying in the turbulent wind anchored to some wooden posts in the shifting banks. We can’t fix the gorge but we might be able to run a steel cable and put the pylons in concrete anchors. Not as easy as Xena runs across rope bridges.

So, we have been busy, working on things you may never see or use. Until you do. If you’re developer looking for a challenging bridge to cross, Shoes will provide that. Consider adding your skills. Embedded C Ruby in GUI of, Gtk, Cocoa, C, Objective C, Linux, OSX, Windows – we’ll never run out of fun.

Shoes 3.3.1 (finally)

There’s only minor changes since the last beta. Let’s set this puppy loose and see what doesn’t happen! Download from here

Windows Users – you must uninstall earlier versions of Shoes before installing 3.3.1.

New with 3.3.1

  1. Video widget. If you have VLC installed, Shoes will find it (and
    you can tell Shoes where your VLC is). Once found, you can use it.
    You can not package VLC with you script however.
    Issue 133
    Caution: may not work on OSX < 10.10
  2. Secondary packaging. Use a Shoes installer script to install your app. Not
    for the casual. Too damn clever so there’s likely to
    be bugs and confusion.
    What it is
    Also read
    Issue 188
  3. Uses Ruby 2.2.4. If you have native Gems that were built by earlier
    versions, they may not work. – Uninstall and reinstall the gem.
  4. Windows: Shoes comes with win32-shortcut gem. Undocumented and the
    online docs you do find are not always up to date.

Fixed with 3.3.1

  1. start {} blocks on stacks and flows work much better.
  2. Windows: does not use FONTCONFIG_FILE env var.
    Issue 216
    Benefits: Faster install, multiple installs, enables merge packaging
  3. Linux: fixed edit_box bug with Gtk >= 3.16
    issue 217
  4. OSX: don’t duplicate windows. Nasty if it happens to you.
    Cshoes suffered from this bug too. That works better now for OSX.
    Issue 190
    Issue 175
  5. Windows: ask_color crashes.
    Issue 209
  6. updated wiki article on building Shoes with Linux.
  7. remote debugger issue with newer byebug versions
    Issue 231

Developer issues for 3.3.1

  1. deleted gtk2 code. Video code is included.
    Some rakefiles were modified and are slightly less confusing.
  2. Windows: dependencies have changed – using Gtk 3.10.9
    Read more.
    Download from here if you need them – it’s a huge file!

Shoes runs on feedback and good intentions. Without feedback, we’ll do what we think is fun for us. Register your bugs or requests.

OSX Merge packaging

Now we are complete. I guess. Maybe. OSX users can build an installer (a dmg) that
packages their script dir with their Shoes. In theory they, don’t need Xcode to do it. Here’s my Ytm demo app installer on OSX. First we have to click through the license.
and then we can drag my app to Applicationsosx-install

If your first reaction is “that is one butt ugly installer!”, then I agree with you. It’s butt ugly. for a purpose. Like exe-shoes and linux-shoes You, not me have to make it pretty because it’s your code and your users. All I did was give you some structure to work with to build your own installers for your own app for your own users.

I’m not going to do much more on Merge packaging for any platform because it’s not something I care deeply about. That’s your task if you accept it.

Take away:
You don’t have to build Shoes from source and install the dev tools to build a ‘Real app’ and an custom native installer for it that hides Shoes. You have been empowered!