Domain: whytheluckystiff.net
Stories and comments across the archive that link to whytheluckystiff.net.
Comments · 19
-
Ruby
Human readable syntax, support for just about any style of programming, a lot of useful gems, and let's not forget _why's Hackety Hack.
Otherwise, I say any language which at least allows declerative (preferably functional) programming is a good choice.
Teach them what they want the computer to do first, and then go more in-depth about how you want the computer to do it. The higher level of abstraction really makes it easier once you get used to it - the single thing making functional programming hard is past experience in imperative. It's always easier to learn something, and then expand on it, then learn a lot of stuff first, and then be forbidden to use half of it when using a more restrictive paradigm. -
Re:The secret shame of Web 2.0
Except that similar RAD tools exist for desktop environments, too -- Visual Basic being the most famous, but there are others. The only advantage of a web app here is that it's cross-platform -- but you would also get that with, say, Shoes.
No, the cool, unique properties of a web app are pretty much entirely the user experience -- the fact that there's nothing to download, and no updates to manage.
That said, I'd develop just about anything as either a web app or a commandline tool, mostly because these are what I personally have experience with. I develop real web apps for a living, for the reasons I list above -- so when I want to develop a personal app to, say, track my weight, which am I most likely to use?
-
Shoes, Gibson and Garry's Mod
Shoes:
http://code.whytheluckystiff.net/shoes/Try Ruby:
http://tryruby.hobix.com/William Gibson books.
Garry's Mod.
-
Here be Dragons
Depends on what you mean by "normal Ruby." Because Ruby is so flexible, it's a great language for writing domain-specific languages (DSLs). You could argue that these aren't "normal Ruby" because they're specific to certain libraries/gems, but
... they really are just Ruby.
Take this bit of Ruby code, from _why's poignant guide to ruby ...
class Dragon < Creature
life 1340 # tough scales
strength 451 # bristling veins
charisma 1020 # toothy smile
weapon 939 # fire breath
end
or checkout some Ruby code, using Markaby ... ( also written by _why )
html do
head do
title 'Ruby is Fun'
link :rel => 'stylesheet', :type => 'text/css', :href => '/style.css'
end
body do
p flash[:notice], :style => "color: green"
self << @content_for_layout
end
end ... is that conventional Ruby? Well ... it's plain-old Ruby ... it's just uses Ruby's meta-programming magic to make DSLs. Ofcourse, DSLs aren't always what you may want, but Ruby is really, really great at making them, so you can make your code better represent what you're really programming. Like the Dragon class above ... if you've got lots of creature classes in your application, isn't that a nice and clean example of some syntax you could use?
Ofcourse, cleverness isn't good simply for cleverness' sake. If a DSL really helps, or using some other Ruby "magic," then you should use it ... but these things shouldn't be used just because you can. It can lead to overly complicated code. -
Re:Struggling to parse the submitter's blurb
-
Re:Huh? Is this the "new" English?
Let me parse it for you.
Drawings are the work of Rubyist-extraordinaire "why the lucky stiff" and technical reviewers include well known Rubyists David A. Black, Charles Oliver Nutter, and Shyouhei Urabe.
The rest of it should be passable English. -
There is already a clone...
There is already an open source clone of the api called parkplace done
in ruby/rails.
http://code.whytheluckystiff.net/parkplace
btw, O'Reilly book "Restful Web Services" - a good read by the way.
has quite a bit of coverage of S3.
I *was* interested in S3, and have
been mulling over how it might fit in with some requirements I have..but
honestly, finding out about this patent just killed my interest. If I want
vendor lock in on my stack I would be developing with .net, oracle, whatever...
Amazon, get a clue .. do you think the likely customers for your service want
vendor lock in? Those folks already have datacenters with Oracle/SANS,whatever
they aren't interested in having Amazon hosts their data. Startups that are using
open source - that's whose likely to be interested in your service.. think about it! -
Park Place - the Open Source S3 clone
Hurry, grab Park Place, the Open Source clone of S3, before it is gone.
Park Place is written in Ruby by Why. -
Hackety HackSimilar to Scratch,
why the lucky stiff has started an amazing project called Hackety Hack, in an attempt to solve the Little Coder's Predicament. It's a development platform designed for the younger coders and beginners, with an emphasis on sharing, community, ease-of-use (lots of built-in functionality), and cute cartoon characters. Currently it teaches Ruby in a series of fun lessons, but _why has stated that it might teach other languages in the future. A slick help interface comes bundled, as well as a Ruby cheat-sheet.
Come and join in the public beta testing. The forum is active and the people are nice. And don't forget to share your exciting hacks with the rest of us!
--
Eli
-
Hackety HackSimilar to Scratch,
why the lucky stiff has started an amazing project called Hackety Hack, in an attempt to solve the Little Coder's Predicament. It's a development platform designed for the younger coders and beginners, with an emphasis on sharing, community, ease-of-use (lots of built-in functionality), and cute cartoon characters. Currently it teaches Ruby in a series of fun lessons, but _why has stated that it might teach other languages in the future. A slick help interface comes bundled, as well as a Ruby cheat-sheet.
Come and join in the public beta testing. The forum is active and the people are nice. And don't forget to share your exciting hacks with the rest of us!
--
Eli
-
Re:No POP service?
Hpricot might be useful here.
http://code.whytheluckystiff.net/hpricot/ -
Re:Okay kids...(in Ruby)
I couldn't resist - in Ruby, using the beautiful (but much understated) hpricot library:
doc = Hpricot(open(html_document))
(doc/"a").each { |a| puts a.attributes['href'] }
Check it out - I've been using it for a project, and it's really fast and really easy to use (supports both xpath and css for parsing links). For spidering you should check out the ruby mechanize library (which is like perl's www-mechanize, but also uses hpricot, making parsing the returned document much easier).
-
whytheluckystiff talks about this
-
Might I recommend Ruby?
It's perfect for Highschool students. What other language has Poignant Guide?
What other language has songs which recommend it?
Check out these torrents.
No, my friend, you won't find these kinds of fun things for Python. The Python people have forgotten their humorous roots and now take themselves very seriously. -
FOSCON slide show
Check out the FOSCON slideshow .
Why the lucky stiff's performance which included his own animations, shadow puppets, and an inside look at a meeting of the Ruby cabal The Least Surprised was hilarious. -
Re:Python binding
I'm working on a project at the moment that's all Javascript on the client side and mod_python (with the very nice Publisher handler on the server. I have a simple Javascript wrapper around XMLHttpRequest for making asynchronous calls to the server (using CPS with Javascript closures as the "continuations") and I just pass all the info back in JSON format, so I can just eval() the returned text.
Surprisingly neat and (very) surprisingly flexible - you can also do stuff like pass back Javascript functions (from the server) along with the data you wish to process.
You can use the Python str() function for the most simple data conversions (eg. an array or a dictionary), but I prefer the pyjsonrpc package which has very nice little objToJson and jsonToObj functions. Better than just using Python's str() function, as it also strips out excess whitespace. I also modified it slightly to also properly convert Python booleans to Javascript booleans (it already handled null to None conversions).
It all works very nicely, a testament to the power of simplicity. The Javascript (client) side just makes requests in response to user actions (eg. button clicks) or other events, and the server responds to those requests with Javascript data (CPS is very well suited to this kind of programming).
Javascript really is a very cool programming language. I've implemented my own python.js library which adds a handful of Python-like functional programming facilities to Javascript (eg. map, filter, reduce) and dictionary/object methods like keys() and values(). It's got to the point now where I sometimes get confused as to whether I'm writing Javascript or Python, because they're so similar in all the ways that really matter.
This kind of web development is quite fun. I also have a nice advantage with the web application I'm working on, as it flat-out can't run on IE (it uses fixed-positioned divs quite extensively, along with a few other standard features that IE can't handle) and so I don't have to worry about compatibility with that fucking mess of a browser. Hooray.
:-) -
1.8.0 explanations and sample code
-
Re:Includes YAML support
Absolutely. Ruby 1.8 contains a C extension (Syck) for parsing YAML. Benchmarks have shown that Ruby's YAML parser is competitive with the marshalling standards of other popular languages. Which is a big win for developers, as YAML is much more readable.
I will also mention that if you'd like to learn YAML, you might head over to the YAML Wiki, where general documentation is starting. There's also a complete manual for the Ruby extension.
-
Re:Includes YAML support
Absolutely. Ruby 1.8 contains a C extension (Syck) for parsing YAML. Benchmarks have shown that Ruby's YAML parser is competitive with the marshalling standards of other popular languages. Which is a big win for developers, as YAML is much more readable.
I will also mention that if you'd like to learn YAML, you might head over to the YAML Wiki, where general documentation is starting. There's also a complete manual for the Ruby extension.