librelist archives

« back to archive

Green Shoes Problems

Green Shoes Problems

From:
Jason Scharf
Date:
2012-04-07 @ 02:27
Hello:

I'm very new to Shoes and Ruby programming.  I have written an app in 
Shoes that opens and functions as expected.  However, when I run it in 
terminal with Green Shoes the formatting and functionality is all wrong.
Specifically the page layout is not even close to the way it looks when 
opened with Shoes.  Furthermore, there are links to URL's that don't even 
function when run in terminal with Green Shoes.  Any ideas?    

Jason

Re: [shoes] Green Shoes Problems

From:
Cecil Coupe
Date:
2012-04-07 @ 02:52
Hi Jason,

  There are differences between Shoes (aka Red Shoes) and Green Shoes,
both graphical layout and internal functionality.

  If you can share your code, we can test it and advise you. There can
be platform specific issues to work around as well, so tell us about
your version of OSX/Windows/Linux and if there are errors in the console
terminal window or the Shoes Console Window. Also, in the case of Green
Shoes which version of Ruby are you using?

  Without details, we can't offer much advice.

--Cecil


On Fri, 2012-04-06 at 22:27 -0400, Jason Scharf wrote:
> Hello:
> 
> I'm very new to Shoes and Ruby programming.  I have written an app in
> Shoes that opens and functions as expected.  However, when I run it in
> terminal with Green Shoes the formatting and functionality is all
> wrong.   Specifically the page layout is not even close to the way it
> looks when opened with Shoes.  Furthermore, there are links to URL's
> that don't even function when run in terminal with Green Shoes.  Any
> ideas?    
> 
> Jason


Re: [shoes] Green Shoes Problems

From:
Jason Scharf
Date:
2012-04-07 @ 03:12
Of course:

My Ruby version is 1.9.3.  I'm using OSX 10.6.8.

Here is the code:

require 'green_shoes'

Shoes.app :title => "asset manager", :width =>1000, :resizable => false do
  background rgb(191, 209, 229)
  para "TOC Asset Manager", :stroke => blue, :font =>
  "helvetica", :align => "center", :size => 20
    flow do
      caption "Encoders", :font => "helvetica", :align => "left"
      caption "Decoders", :font => "helvetica", :align => "right"  
        stack do
          flow do
            check 
            para link("EBU41", :click => "http://192.168.1.1"), :align => "left"
            check.move(820, 0)
            para link("EBU5", :click => "http://10.75.16.128"), 
:displace_left => 770
            list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", "TVRO4",
"TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>780 
        stack do
          flow do
             check
             para link("EBU42", :click => "http://192.168.1.1"), :align => "left"
             check.move(820, 0)
             para link("EBU6", :click => "http://192.168.1.1"), 
:displace_left => 770
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>780
        stack do
          flow do
             check
             para link("EBU43", :click => "http://192.168.1.1"), :align => "left"
             check.move(820, 0)
             para link("EBU7", :click => "http://192.168.1.1"), 
:displace_left => 770
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>780
        stack do
          flow do
             check
             para link("EBU48", :click => "http://192.168.1.1"), :align => "left"
             check.move(820, 0)
             para link("EBU8", :click => "http://192.168.1.1"), 
:displace_left => 770
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>780
        stack do
          flow do
             check
             para link("EBU49", :click => "http://192.168.1.1"), :align => "left"
             check.move(820, 0)
             para link("EBU9", :click => "http://192.168.1.1"), 
:displace_left => 770
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>780

        stack do
          flow do
             check
             para link("EBU52", :click => "http://192.168.1.1"), :align => "left"
             check.move(820, 0)
             para link("EBU10", :click => "http://192.168.1.1"), 
:displace_left => 770
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>772
        stack do
          flow do
             check
             para link("EBU53", :click => "http://192.168.1.1"), :align => "left"
             check.move(820, 0)
             para link("EBU11", :click => "http://192.168.1.1"), 
:displace_left => 770
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>772
        stack do
          flow do
             check
             para link("EBU54", :click => "http://192.168.1.1"), :align => "left"
             check.move(820, 0)
             para link("EBU12", :click => "http://192.168.1.1"), 
:displace_left => 770
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>772
        stack do
          flow do
             check
             para link("NET27", :click => "http://192.168.1.1"), :align => "left"
             check.move(820, 0)
             para link("EBU15", :click => "http://192.168.1.1"), 
:displace_left => 770
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>772
        stack do
          flow do
             check
             para link("NET28", :click => "http://192.168.1.1"), :align => "left"
             check.move(820, 0)
             para link("EBU16", :click => "http://192.168.1.1"), 
:displace_left => 770
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>772
        stack do
          flow do
             check
             para link("NET29", :click => "http://192.168.1.1"), :align => "left"
             check.move(820, 0)
             para link("EBU17", :click => "http://192.168.1.1"), 
:displace_left => 770
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>772
        stack do
          flow do
             check
             para link("NET30", :click => "http://192.168.1.1"), :align => "left"
             check.move(820, 0)
             para link("EBU18", :click => "http://192.168.1.1"), 
:displace_left => 770
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>772
        stack do
          flow do
             check
             para link("EBU91", :click => "http://192.168.1.1"), :align => "left"
             check.move(820, 0)
             para link("EBU19", :click => "http://192.168.1.1"), 
:displace_left => 770
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>772
        stack do
          flow do
             check
             para link("EBU95", :click => "http://192.168.1.1"), :align => "left"
             check.move(820, 0)
             para link("EBU20", :click => "http://192.168.1.1"), 
:displace_left => 770
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>772
        stack do
          flow do
             check.move(820, 0)
             para link("EBU22", :click => "http://192.168.1.1"), 
:displace_left => 845
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>847
        stack do
          flow do
             check.move(820, 0)
             para link("EBU23", :click => "http://192.168.1.1"), 
:displace_left => 845
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>847
        stack do
          flow do
             check.move(820, 0)
             para link("EBU25", :click => "http://192.168.1.1"), 
:displace_left => 845
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>847
        stack do
          flow do
             check.move(820, 0)
             para link("EBU26", :click => "http://192.168.1.1"), 
:displace_left => 845
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>847
        stack do
          flow do
             check.move(820, 0)
             para link("EBU27", :click => "http://192.168.1.1"), 
:displace_left => 845
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>847
        stack do
          flow do
             check.move(820, 0)
             para link("EBU28", :click => "http://192.168.1.1"), 
:displace_left => 845
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>847
        stack do
          flow do
             check.move(820, 0)
             para link("EBU29", :click => "http://192.168.1.1"), 
:displace_left => 845
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>847
        stack do
          flow do
             check.move(820, 0)
             para link("EBU30", :click => "http://192.168.1.1"), 
:displace_left => 845
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>847
        stack do
          flow do
             check.move(820, 0)
             para link("EBU31", :click => "http://192.168.1.1"), 
:displace_left => 845
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>847
        stack do
          flow do
             check.move(820, 0)
             para link("EBU32", :click => "http://192.168.1.1"), 
:displace_left => 845
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>847
        stack do
          flow do
             check.move(820, 0)
             para link("EBU33", :click => "http://192.168.1.1"), 
:displace_left => 845
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>847
        stack do
          flow do
             check.move(820, 0)
             para link("EBU40", :click => "http://192.168.1.1"), 
:displace_left => 845
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>847
        stack do
          flow do
             check.move(820, 0)
             para link("EBU41", :click => "http://192.168.1.1"), 
:displace_left => 845
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>847
        stack do
          flow do
             check.move(820, 0)
             para link("EBU42", :click => "http://192.168.1.1"), 
:displace_left => 845
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>847
        stack do
          flow do
             check.move(820, 0)
             para link("EBU43", :click => "http://192.168.1.1"), 
:displace_left => 845
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>847
        stack do
          flow do
             check.move(820, 0)
             para link("EBU48", :click => "http://192.168.1.1"), 
:displace_left => 845
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>847
        stack do
          flow do
             check.move(820, 0)
             para link("EBU49", :click => "http://192.168.1.1"), 
:displace_left => 845
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>847
        stack do
          flow do
             check.move(820, 0)
             para link("EBU51", :click => "http://192.168.1.1"), 
:displace_left => 845
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>847
        stack do
          flow do
             check.move(820, 0)
             para link("EBU52", :click => "http://192.168.1.1"), 
:displace_left => 845
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>847
        stack do
          flow do
             check.move(820, 0)
             para link("EBU53", :click => "http://192.168.1.1"), 
:displace_left => 845
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>847
        stack do
          flow do
             check.move(820, 0)
             para link("EBU55", :click => "http://192.168.1.1"), 
:displace_left => 845
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>847
        stack do
          flow do
             check.move(820, 0)
             para link("EBU56", :click => "http://192.168.1.1"), 
:displace_left => 845
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>847
        stack do
          flow do
             check.move(820, 0)
             para link("EBU57", :click => "http://192.168.1.1"), 
:displace_left => 845
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>847
        stack do
          flow do
             check.move(820, 0)
             para link("EBU58", :click => "http://192.168.1.1"), 
:displace_left => 845
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>847
        stack do
          flow do
             check.move(820, 0)
             para link("EBU59", :click => "http://192.168.1.1"), 
:displace_left => 845
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>847
        stack do
          flow do
             check.move(820, 0)
             para link("EBU62", :click => "http://192.168.1.1"), 
:displace_left => 845
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>847
        stack do
          flow do
             check.move(820, 0)
             para link("EBU63", :click => "http://192.168.1.1"), 
:displace_left => 845
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>847
        stack do
          flow do
             check.move(820, 0)
             para link("EBU64", :click => "http://192.168.1.1"), 
:displace_left => 845
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>847
        stack do
          flow do
             check.move(820, 0)
             para link("EBU65", :click => "http://192.168.1.1"), 
:displace_left => 845
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>847
        stack do
          flow do
             check.move(820, 0)
             para link("EBU66", :click => "http://192.168.1.1"), 
:displace_left => 845
             list_box :items => ["NONE","TVRO1", "TVRO2", "TVRO3", 
"TVRO4", "TVRO5", "TVRO6", "ASI" ], :width =>90, :displace_left =>847
          end   
        end                    
          end   
        end                    
          end   
        end                    
          end   
        end                    
          end   
        end                    
          end   
        end                    
          end   
        end                    
          end   
        end                    
          end   
        end                    
          end   
        end                    
          end   
        end                    
          end   
        end                    
          end   
        end                    
          end   
        end                    
          end   
        end               
          end   
        end               
          end   
        end               
          end   
        end               
          end   
        end               
          end   
        end               
          end   
        end               
          end   
        end               
          end   
        end               
          end   
        end               
          end   
        end               
          end   
        end               
          end   
        end               
          end   
        end               
          end   
        end          
          end   
        end               
          end        
        end               
          end  
        end      
          end   
        end               
          end   
        end               
          end   
        end               
          end   
        end               
          end  
        end               
          end   
        end          
          end
        end   
          end
        end          
          end   
        end               
          end   
        end             
          end    
        end    
          end  
        end 
    end
end

The links are just to a random router on my network so I could see the 
browser point to something.  They will be real links at some point.  I get
two errors when I run the app from my terminal:

1.  Xlib:  extension "RANDR" missing on display 
"/tmp/launch-Y10dRX/org.x:0".  I get this error right away, but the app 
opens.

2.  Sorry, your platform [x86_64-darwin10.8.0] is not supported...  I get 
this error when I click on any link in the app.

Thanks in advance for any help.

On Apr 6, 2012, at 10:52 PM, Cecil Coupe wrote:

> Hi Jason,
> 
>  There are differences between Shoes (aka Red Shoes) and Green Shoes,
> both graphical layout and internal functionality.
> 
>  If you can share your code, we can test it and advise you. There can
> be platform specific issues to work around as well, so tell us about
> your version of OSX/Windows/Linux and if there are errors in the console
> terminal window or the Shoes Console Window. Also, in the case of Green
> Shoes which version of Ruby are you using?
> 
>  Without details, we can't offer much advice.
> 
> --Cecil
> 
> 
> On Fri, 2012-04-06 at 22:27 -0400, Jason Scharf wrote:
>> Hello:
>> 
>> I'm very new to Shoes and Ruby programming.  I have written an app in
>> Shoes that opens and functions as expected.  However, when I run it in
>> terminal with Green Shoes the formatting and functionality is all
>> wrong.   Specifically the page layout is not even close to the way it
>> looks when opened with Shoes.  Furthermore, there are links to URL's
>> that don't even function when run in terminal with Green Shoes.  Any
>> ideas?    
>> 
>> Jason
> 
> 
> 

Re: [shoes] Green Shoes Problems

From:
Cecil Coupe
Date:
2012-04-07 @ 04:57
Jason,

Thanks for the code. 

Generally speaking, in Shoes gui layouts, absolute pixel positioning of
controls and stacks/flows will lead to grief. On my Linux box, Red shoes
running your script has some GUI "artifacts", aka errors. Green shoes
does much worse as you reported. 

Your flows and stacks are not properly terminated with end statements in
the *correct* place. As is, every flow and stack is part of the
flow/stack ahead of it. That is probably why you tried pixel positioning
and are frustrated.

Shoes.app do
flow 
 @s1 = stack do
   caption "encoders"
   # All the encoders stacks/flows and controls 
   check ...
   listbox ..
   # Next encoder
   check ...
   listbox....
  end # end Stack @s1
 @s2 = stack do
   caption "decoders"
   # All the decoders 
   check ...
   listbox ...
  end # stack @s2
end # end flow of two stacks of
end # Shoes app

Get something like that working first and then you can align left, right
or add margins to make it look pretty.

More in the comments below.
On Fri, 2012-04-06 at 23:12 -0400, Jason Scharf wrote:
> The links are just to a random router on my network so I could see the
> browser point to something.  They will be real links at some point.  I
> get two errors when I run the app from my terminal:
> 
> 1.  Xlib:  extension "RANDR" missing on display
> "/tmp/launch-Y10dRX/org.x:0".  I get this error right away, but the
> app opens.

Ick, X11 and RANDR. Probably not a show stopper.
> 
> 2.  Sorry, your platform [x86_64-darwin10.8.0] is not supported...  I
> get this error when I click on any link in the app.

For me that url attempts to login to the router in a Firefox browser
window.

I suspect you have run into two Mac specific gtk/X11 issues with green
shoes.  I'll have to let the 64 bit OSX folks debug that. But first, you
need to get the GUI flows and stacks correct (no checkbox.move, Que?)

Re: [shoes] Green Shoes Problems

From:
ashbb
Date:
2012-04-07 @ 07:36
Hi Jason,

Thank you for pointing out the layout problem.

# @Cecil, thank you for the replies. :)

Sorry, Green Shoes doesn't support `:displace_xxx` style.
And please read this: http://ashbb.github.com/green_shoes/vs.RedShoes.html

So, if you want to run the same code both with Red and Green Shoes.
How about this one?

https://gist.github.com/2326156

It works on my Windows 7-32bit. Although I've not confirmed on other
platforms...
Try it out. ;-)

ashbb

Re: [shoes] Green Shoes Problems

From:
J. Kaiden
Date:
2012-04-07 @ 12:24
hi Jason,

  Cecil's comments are good ones - check out some of the samples that come
with shoes, or the list of samples here -
http://shoes-tutorial-note.heroku.com/ - for some ideas about how all these
stacks and flows work ;)

  something i'm working on with ashbb's help is documenting differences
between red and green shoes - there are a few, but they're generally small
and can be worked around - hopefully i'll have some kind of something
written about it before too long...

keep shoesin'...

 - j



On Sat, Apr 7, 2012 at 7:36 AM, ashbb <ashbbb@gmail.com> wrote:

> Hi Jason,
>
> Thank you for pointing out the layout problem.
>
> # @Cecil, thank you for the replies. :)
>
> Sorry, Green Shoes doesn't support `:displace_xxx` style.
> And please read this: http://ashbb.github.com/green_shoes/vs.RedShoes.html
>
> So, if you want to run the same code both with Red and Green Shoes.
> How about this one?
>
> https://gist.github.com/2326156
>
> It works on my Windows 7-32bit. Although I've not confirmed on other
> platforms...
> Try it out. ;-)
>
> ashbb
>
>

Re: [shoes] Green Shoes Problems

From:
jdscharf@gmail.com
Date:
2012-04-07 @ 20:13
Thanks everyone for the help.  I will work on it and let you know how I'm 
progressing. 

Jason Scharf



On Apr 7, 2012, at 8:24, "J. Kaiden" <jakekaiden@gmail.com> wrote:

> hi Jason,
> 
>   Cecil's comments are good ones - check out some of the samples that 
come with shoes, or the list of samples here - 
http://shoes-tutorial-note.heroku.com/ - for some ideas about how all 
these stacks and flows work ;)
> 
>   something i'm working on with ashbb's help is documenting differences 
between red and green shoes - there are a few, but they're generally small
and can be worked around - hopefully i'll have some kind of something 
written about it before too long...
> 
> keep shoesin'...
> 
>  - j
> 
> 
> 
> On Sat, Apr 7, 2012 at 7:36 AM, ashbb <ashbbb@gmail.com> wrote:
> Hi Jason,
> 
> Thank you for pointing out the layout problem. 
> 
> # @Cecil, thank you for the replies. :)
> 
> Sorry, Green Shoes doesn't support `:displace_xxx` style.
> And please read this: http://ashbb.github.com/green_shoes/vs.RedShoes.html
> 
> So, if you want to run the same code both with Red and Green Shoes.
> How about this one?
> 
> https://gist.github.com/2326156
> 
> It works on my Windows 7-32bit. Although I've not confirmed on other 
platforms...
> Try it out. ;-)
> 
> ashbb
> 
>