Tuesday, May 15, 2007

Death, Rebirth, and yet another Ruby Blog

I deinstalled (yes, FreeBSD is assimilating me) the ports version of Ruby on my 12-inch Powerbook (still the best damn laptop, ever-Intel Macs may be fast but they are flimsy, hot, and noisy!) this afternoon due to all the pain of getting trying to onigurumu installed just so I could do named group regular expressions like in Python (more on that later).

But sometimes it is good just to clean house and start a new page. So except for the Rails nonsense, I did pretty much everything here. You know, installing libreadline, a fresh new install 1.8.6 tarball, etc. Except I'm starting from scratch with everything in /my.

But enough procrastination. Why the new blog? Why another Ruby blog? Well, the manifesto (oh, yeah, and that I'm spending too much time on Ruby on BlogFranz) is below. I hope you hold me (or us, should anyone else agree to the spirit, if not necessarily the letter of this effort) to it:

Back to the Basics - I happened to look at the README during the build and the non-hyped description of Ruby (obviously back before Ruby was cool) was:

Ruby is the interpreted scripting language for quick and easy object-oriented programming. It has many features to process text files and to do system management tasks (as in Perl). It is simple, straight-forward, and extensible.

Unfortunately most of the stuff I try to do (which is simple and system-management-ish) that I could achieve with a blink of an eye in Python (because it just works and is in there) does not work (or is not built into the standard library) with Ruby. I guess everybody is doing web development in Ruby except me. Or the various OSX, Linux, FreeBSD, OpenBSD boxes I do work on with Ruby are so hopelessly broken. I assume others are in this boat as well.

Which leads me to #2.

Rails-free - This is a timewarp. We go back to 2001 when I first encountered Ruby and it was just weird and Japanese and the socket APIs were crappy, before Metasploit 3.0. Before BaseCamp (yes my previous company actually used it for a while, and it was "allright" if a bit sluggish). Back when my wife owned the only Mac in the family. Bottom line, if its' related to Rails you won't find it here. Period. End of story. No exceptions.

Mad as hell - The "happy-ass-ness" (yes, a psychological term) of Ruby (packaging bliss, instant enlightenment? fun programming?) is maddening to me. Vomitus negro. I loathe OReilly Ruby blogs and in particular I don't like this guy or anyone else that that does "math for fun." What you find here will be hard, critical, and hype-free. No advocacy. No fanboys. Just blogs on (or references to other blogs) on how to get shit done and solve problems. A lot of this began over on BlogFranz where I talked about sloppy documentation, insecure implementations, YAML, API comparisions, and other fare that was getting way too much attention there, where I want to focus more on security, Linux, and BSDs.

JRuby - You think Ruby is bad. Try Java? But sometimes there are Java APIs you just have to use (or abuse). Jython is obsolete and what is the point of something like Groovy?!

So there you have it. I've decided to use it with UbuntuTrinux and we're using it a work. So I have to be make the best of using Ruby. So let the fun begin. And yeah, I'm not really mad. Just a blog persona.


Thomas Ptacek said...

1. You wouldn't use native Python sockets in production code (you'd use Twisted) and you wouldn't use native Ruby sockets (such as they are) either: you use EventMachine. With first-class closures, Ruby does a better job with sockets than Python does. At least until the GC runs out of steam and takes the box out.

2. The point of Jython and JRuby is less that you get to "use" Java alongside Ruby; it's that you can (eventually) compile Ruby directly into JVM bytecode, instead of interpreting ASTs.

Matt Franz said...

All depends on what you want to do:

- For whatever trivial, non-production tasks (maybe building BGP Opens or something) when I did I had more luck with Python 6 years ago.

- Who runs (or writes apps for) JVMs anyway... Java scripting languages are only useful (for me) for accessing APIs that aren't available