Orange Mad Bad

That title is a meme. What’s a meme? A dumb idea or something important? Something like that. I use it like a joke on people who believe that. The long name for my Rube Goldberg cyber machine is Trumpy Bear Burglar Amusement Device. It’s purpose is too confuse a burglar or make them think ‘this place is nuts, I’m not touching anything’. Mostly its just fun to work on.

This post will have a crappy demo movie and a bunch of poor pictures showing the components with a few words about them.

Trumpy Bear seated on his book case. He’s an above average genius. The lamp is part of Trumpy Bear. It gets turned on and off depending on what he’s doing.

This is the Official Trumpy Bear. You can see the certificate on the right. Wrapped in the flag, of course. The box next to his feet is a Bluetooth speaker. Note the clip on microphone on his tie. All the political types love microphones. Trumpy Bear does speak and he does listen and sometimes he does what you ask.

Under the small shelf is a Raspberry Pi 4/4GB with SSD and a fully used 7 port USB hub and a power strip. We do need the speed of a Pi 4. It uses a Wifi connection.

I call this part ‘The Ranger’ The two circles on the bottom belong to an ultrasonic sensor for measuring distance (to the person standing in front). The LCD screen displays informational messages. The eyes on the top are a Camera with auto IR sensing (sees in the dark if needed) Inside the box is and ESP32 micro-controller. It’s separate device from the the Pi.

This is touch screen monitor for the Pi 4. This was a late addition to the project but it really helps with debugging and it has some control function that will be discussed in another post. Shown here is the Pi 4 booting up.

Now we are getting to fun stuff. This is a test laser turret under construction. The little box in the back is yet another Raspberry Pi. A Pi 0w. The pi is wired to what I call the ‘Fire Control’ box. It’s really just a servo controller with a simple circuit to turn the laser on and off. You can see the laser diode in the “Turret”. This one doesn’t look like a Laser Turret but I have several designs. You can see the two servos for pan and tilt.

Here is second laser turret in the back corner of the family room. Yes, another Pi 0w. The laser is turned on in this photo. These are not dangerous lasers but don’t tell anyone. It’s the design I like best but the mismatch colors should tell you it’s not finished either.

This is the better design, IMO. Sadly, it’s difficult to print and assemble.

Yes, the TV and AV system is part of ‘the experience’ To play loud you need bigger speakers. Buried in the back is a old Raspberry Pi 2. It’s needed. You can’t see it but there is also my Hubitat Elevation home automation hub and 7 port ethernet switch and a UPS because there is a lot of money to protect there.

There’s another computing in use that you can’t see – a Nvidia Jetson Nano which runs some vision computations for Trumpy Bear. Yes, there are a lot of small computers and they do nothing until….

Everything is in a partial state of completion. For example, a few days later I printed a new, prettier box for the ‘Ranger’.

Teaser: Trumpy Bear

Yes, I bought one from a late night TV commercial. Because I think it’s funny and even funnier knowing that some won’t find the humor. It was the ‘statement’ part of something I wanted to build. It’s been under construction for months and will probably never end.

Forgive the picture quality. I don’t care enough to spend the time to do that correctly. More to follow – it’s a long story involving all kinds of fun technologies.

Need better fish?

As you have guessed by now, I’m not maintaining Shoes 3 anymore. I do still answer some questions on github but nothing new is likely. I owe you an explanation of why. It’s pretty simple. My health is bad and is not going to get better. The Shoes community (Shoes 3 or Shoes 4) is not growing and there is little enjoyment in working on code that no one else cares about enough to help code the internals. The underlying technology employed is evolving in ways that run counter to what Shoes is and does.

It’s just time to quit. We had fun, we learned some things and we’ll leave it at that.

I started computing long ago from the hardware perspective of gates and registers and clocks and boolean logic and arithmetic. I wanted to get back into building things. Physical things. Things you can use or look at when your done. Some people take up painting or wood working for a hobby. Or they restore a classic automobile. I thought Home Automation might be a good fit. I was correct about that.

After some research I bought a Hubitat hub and some smart light switches. That’s enough to get deep into networking with Z-Wave and Zigbee. The motion sensors don’t do what I wanted so I built a couple of my own. Arduino and C++ and ESP32 and electronic things. And Groovy device drivers for Hubitat. They didn’t do what I wanted but they are still good enough to use and have 3 of my sensors in my house. I thought Cameras as motion sensors might solve my problem. I bought more hardware. Wrote python code for them. It was better. It would be even better if they had object detection. That’s a little compute intensive so I bought a Nvidia Jetson Nano for its CUDA abilities. Using rpc calls from the Raspberry pi’s with cameras.

Home automation is fun. It’s not cheap but it’s multi-discipline and I use it all the time (24×7). You might notice that I’ve got all kinds of little computers everywhere, none of them alike. But they only do one thing each and it’s my code so I don’t have to fixed it or update it once it works well enough. Lots and lots
of little computers sending little messages on the networks.

Still, I needed a goal. Even a silly goal would do. I found one and if I write any new posts at this website, it will be about my silly Rube Goldberg-esque machine. More of a performance art piece than useful device but it pulls in all the things above plus a few more – I ‘had’ to get a 3D printer and that device alone would be enough hobby for most tinker’ers. I even have a small Shoes program in the mix which brings my full circle.

Website re-org

It’s time! As we all know, I have no skills for website design but lack of skills never stopped me before. Shoes 3.3.8 is being worked on and one of the things is AppImage as a Linux packaging option. It’s shiny! I want! Which led me to all kinds of thoughts about Shoes in general and then how the websites are a little tired and maybe I should fix this one before I get carried away. See the Downloads page. Expect more changes to the website(s).

Shoes 3.3.7 is Released

Finally. Yes it has been a long time. This was not a bunch of bug fixes although there are some of those. The previous post discussed what’s in 3.3.7 but I’ll include the Changelog here just in case you don’t want to read that post. We did add some thing since that post, mostly for shoes maintainers, hint -> see the Vagrant notes.

Download from here.

New with 3.3.7

Fixed with 3.3.7

  • Major fixes to radio buttons. Possible backwards compatibilty issues.
    https://github.com/shoes/shoes3/issues/391
  • Fewer complaints (none?) from Gkt 3.20+ systems
  • OSX: fullscreen incomplete
    https://github.com/shoes/shoes3/issues/408
  • app.name = now works as documented.
  • https://github.com/shoes/shoes3/issues/408
    May Break Existing Scripts
  • command line –ruby working again
  • OSX: buttons can be created that use non default height.
  • Finally fixed the pristine gems error for OSX.

Developer Issues with 3.3.7

  • Vagrant boxes are available for ease of building
    https://github.com/shoes/shoes3/wiki/Build-with-Vagrant
  • make/**/env.rb – link against distributed libyaml
  • Added lib/package/* for merge packaging.
  • Using nsis 3.03 for Windows installer. Maintained and faster!
    with unicode and large string enabled. Potential to break
    user written installers.
  • Better cross build rakefiles: xrpi, xwin7 and xmsys2 targets.
  • Includes plugin for MXE to build all Windows dependencies
    new target ‘mxe’ is the preferred target for Windows
    method of cross compiling for Windows.
    https://github.com/shoes/shoes3/wiki/MXE-Dependencies

Known Bugs

What the h*ll is happening with Shoes?

A long time without a post! Indeed. I could apologize I could explain. I could make up a story. What to do? What to do? Make up an explanation and explain too much?

There is a shoes 3.3.7 beta in the usual place. There is also a shoes 3.3.8 beta. What’s the story with that? 3.3.7 has one nasty bug for some situations – you can’t manual resize the window down after expanding it. I rarely do that myself and it only happens if the window has menus. I spent so much time trying to find that bug that I created a user layout feature for Shoes 3.3.8 which took way more time than I thought, there much more that can be done and there we are.

Menus? Shoes has menus now? It does in 3.3.7 and I love typing ^Q to quit Shoes apps. I do that a lot. I like it so much I replaced the cobbler buttons with menus. There are likely to be edge cases like that resize bug. Of course you can create and change menus for your app.

You can write shoes apps that use multiple monitors. You wouldn’t do this for machines that don’t have multiple monitors, of course.

You can (try) to provide a Gtk3 theme for Linux and Windows. I say try because it’s a lot harder that you think. Themes are often tied to ‘theme-engines’. There are several engines, not available everywhere, each with multiple versions and bugs. For Shoes we can’t depend on a theme engine so the theme has to be engine free – good luck finding one of those on the internet. Also many themes depends on the version of Gtk3. My version of GTK3 is not going to be the same as yours. Future versions of Shoes will use a newer Gtk3 version. But, if you want to write your own Shoes theme, you can do it.

There is a new settings class. Themes and monitors and menu enabling have to happen very early when shoes gets initialized so they are part of anew settings class that reads a startup.yaml file (if you have one). Note there are two user fields that someone clever could use to prevent theft or …

Merge packaging is provided from a Wizard in Cobbler. This used to be 3 scripts that only a few people knew about. It merges your app with Shoes and hides Shoes. It is NOT platform independent. Shoes Windows can merge Shoes Windows. OSX for OSX. Linux x86 for Linux x86. Each one has very unique requirements for installers. Yes, they use installers. Shoes provides some help with the installers but you’ll need to learn them. Just like a real application developer.

You might detect a theme for Shoes 3.3.7 — writing real applications. Menus, themes, installers – It’s all in the manual and see the wiki.

Everybody hits the wall on using Flows and Stacks to do layout. Your complaints (mine too) have been heard. Shoes 3.3.8 provides a general ‘layout’ class. See the wiki article and this github issue. It lets you write your own layout manager. You could do something similar with Shoes Widget class. Almost. Mostly for proof of concept, two new user layouts are provided – written in Shoes/Ruby, a simple Grid (GridBag) and something close to the AutoLayout used by Apple and some JavaScript frameworks. These are good enough to play with. AutoLayout is non-trivial – it uses the Cassowary-ruby gem to solve a group of constraints. There’s even a Visual Format Language (VFL) parser available.

That’s what I’ve been doing.

Still Alive

I’m recuperating from my surgery 3 and a half weeks ago. That’s a long time. I’m still beat to shit and there is much to recover before I say new-normal. But, I’m home, alive, and getting back the things I like to do.

Shoes 3.3.6

Pretty much the same as the beta. One feature, one bug fix. At the usual place

-------------- Shoes 3.3.6 -------------------------------

=== New with 3.3.6
* Can set font and stroke color for Button, edit_line, edit_box,
list_box and switch native widgets.
https://github.com/shoes/shoes3/issues/179

=== Fixed with 3.3.6
Linux versions may not have workable symlinks to .so's
https://github.com/shoes/shoes3/issues/392

As I mentioned in the previous post, I’m going into the Hospital next week for surgery. I expect recovery will take a few weeks so I’m going to be mostly offline until mid March.

Shoes 3.3.6 Beta and More

A 3.3.6 beta just a few weeks after 3.3.5? What’s going on?

A couple of things. First, it fixes some show stopper bugs for a few people. Second, its adds
a feature you might care about – you can set the font and stroke color for native widgets like edit_line, edit_box, button, list_box and switch (except for BSD – it’s too special). I’ve been working on that feature for a long time – time to let people test it and I can get to other things.

Betas here.

I have also done a lot of work to clean up Shoes from a maintainer point of view. Why? Because I have been diagnosed with oral cancer and I wanted shoes internals to be clean(er) if someone else has to replace me as maintainer. Today I got the treatment plan and while nothing is scheduled yet, I’ll probably survive. I know people are curious about these things so I’ll share some information.

Almost 5 years ago I had neck cancer which involved chemotherapy, radiation, and surgery. Clever people might connect the dates and think I started maintaining Shoes 3 after that ‘event’ for something to do while waiting to learn if they got all the cancer out of my neck. They would be correct. Three years later (2016) I’m pronounced cured and I’m also deep in have fun with Shoes.

I don’t know when exactly but I’ll have to travel to Salt Lake City, Utah, USA where they will cutout a chunk of my right jawbone and rebuild the jaw with a chunk of bone take from my lower leg. I’ll be there for at least a week, probably more. I know these things don’t heal all that fast so I’ll be miserable for a least a month. But, I’ll probably survive and I don’t have to suffer months of chemotherapy or radiation. Pick your misery! I’m good with this option. So one day my attention to Shoes will drop to zero and maybe a few weeks or a month later I’ll return to Shoes.

It goes without saying but I will say it again – we can always use to folks to help with Shoes 3.

Shoes 3.3.5

Shoes 3.3.5 is available from the usual place. It fixes some Show Stoppers bugs for newer OSX and some Linux variants (Arch). We provide modifiers for the event handles so click can tell if control or shift was pressed (or both). Added a wheel event.

For the brave, it adds an arcane feature only In the know experts might care to exploit. I’ll be waiting for those bug reports 😉

The ChangeLog is


-------------- Shoes 3.3.5 --------------------------------

=== New with 3.3.5
* Add 'wheel' event
https://github.com/shoes/shoes3/issues/287
* can preprocess events with new event {block}
https://github.com/shoes/shoes3/issues/383
https://github.com/shoes/shoes3/wiki/event-streams
Experts Only

=== Fixed with 3.3.5
* Arch linux (probably others) are missing symlinks to libraries
https://github.com/shoes/shoes3/issues/392
* Windows cpu utilization
https://github.com/shoes/shoes3/issues/387
* OSX High Sierra (10.13) couldn't start Shoes
https://github.com/shoes/shoes3/issues/398
* Profiling has new output options for workaround
https://github.com/shoes/shoes3/issues/390

=== Developer Issues with 3.3.5
https://github.com/shoes/shoes3/issues/399
* no Linux 32 bit provided.
* last release for osx 10.9 (mavericks)
* freebsd status is 'experts with free time'