News for hackers. Stuff that matters.
Re:Colorful programs for Mac OS X, Linux and Windows by iigs on Thursday August 14, 2008 @08:00PM (#276597)
Mad props to _why.

I'm a huge fan of the idea of shoes. I tried an earlier version and found it just a bit lacking in features for things I wanted to do (networking, I think). Obviously this is the idea -- everybody wants a language that is nothing but exactly the features they want/need, but all of my sample application ideas were things that were going to need some kind of networking (network tic-tac-toe), and it didn't look like I could do what I wanted with it.

The last time I talked to a kid about computer programming, I asked what they'd want to write, and they said "a game", and drilling down I came to the conclusion that what they really wanted was a level editor for an otherwise complete game engine.

Obviously this is aimed at someone subtly different, but I think it this idea extended to have some graphics/network/game oriented gimmies would be really popular.

Re:Colorful programs for Mac OS X, Linux and Windows by rcoder on Thursday August 14, 2008 @09:36PM (#276663)
Shoes code is Ruby code. The name of the binary may be different, and shoes bundles a different standard library, but you can still access any Ruby libraries you like from your Shoes app.

That doesn't make it a "level editor for [a] game engine", but it certainly should give you more than enough tools to build a networked tic-tac-toe game.

Re:Colorful programs for Mac OS X, Linux and Windows by misuba on Thursday August 14, 2008 @08:28PM (#276615)
Why should a GUI toolkit have networking features?
Re:Colorful programs for Mac OS X, Linux and Windows by zenspider on Thursday August 14, 2008 @09:49PM (#276675)
points to x11 and squeak smalltalk

that's why... GUI objects that have intrinsic knowledge of networking are actually really powerful and useful.

Re:Colorful programs for Mac OS X, Linux and Windows by duane on Saturday August 16, 2008 @01:17PM (#277815)
Really?
Re:Colorful programs for Mac OS X, Linux and Windows by iigs on Thursday August 14, 2008 @08:57PM (#276631)
It appears that I confused the missions of Shoes and Hackety Hack, which would explain my misaligned expectations.

It looks like Shoes is intended to be the graphics engine for writing Ruby apps including HH, and HH is supposed to be the easy-to-use general purpose programming language.

I would be curious to see how non-trivial applications fit within the Shoes framework. My experience with ambitious frameworks has been that they work great until you want to do something that isn't perfectly aligned with its intent/charter/design, then you start fighting them really fast. Maybe Ruby or Shoes offer ways around this, but if you have to write non-trivial network or disk i/o code maybe the total win you get from a really simple GUI framework is diminished.

Re:Colorful programs for Mac OS X, Linux and Windows by rcoder on Thursday August 14, 2008 @09:56PM (#276683)
Shoes is a GUI framework. It just handles drawing widgets (buttons, text boxes, video player frames, etc.) on screen. Think of it as a equivalent to a web browser, with a single language (Ruby) used to define content, layout, and behavior, instead of the mish-mash that is HTML, CSS, and Javascript.

True, once you break out into the "big bad world" of network protocols and disk I/O, your code may not be quite as dead simple, but it really shouldn't be too hard for most folks to jump from this:

  Shoes.app do
    button "PUSH!"
  end
...to this:

  Shoes.app do
    stack do
      @text = para("hostnames go here...")
      button("PUSH!") { @text.replace(File.read("/etc/hosts")) }
    end
  end
...and from there to this:

  Shoes.setup do
    gem 'simple-rss'
  end
  
  require 'simple-rss'
  require 'open-uri'
  
  Shoes.app do
    stack do
      banner "News.YC Headlines"
  
      button("Fetch") do
        @articles.clear
        
        rss = SimpleRSS.parse(open("http://news.ycombinator.com/rss").read)
        
        rss.items.each do |item|
          @articles.append { para(item.title) }
        end
      end
      
      @articles = stack
    end
  end
That isn't so bad, is it?