|
![]() |
|
I’m dropping a large blog post on everyone to just say that I haven’t died, I’ve just been busy working on my book for A/W about Mongrel. I had contracted with them to do a book about deploying Mongrel, but then decided it wouldn’t be a very good book since we’d already done one about that topic and there wasn’t too much more to say. Well the book is now about how I wrote Mongrel, kind of teaching you about writing a network server in Ruby and C but doing it by teaching you about Mongrel. The first part of the book is going slow, so I’ve had to hide out and not answer much email. It’s still murder writing a book like this though because I have to write it fast to meet a deadline. The book will cover things like writing parsers, efficient network code, HTTP the protocol, Ruby’s sockets, Event based programming, and even how Mongrel’s parser is used in other languages and servers. You can think of it as “Zed’s Last Book of Ruby Tricks”. After that I’ll be working on my “Protocols and Performance” book which will be a more expanded and serious version of the same topic, not focused on Ruby. ConferencesAt the same time however I need to go to at least two more conferences. One I just finished was Ruby En Rails 2008 which was a blast to attend. Amsterdam is a fantastic city, there was tons of great people and man do they have a bunch of software shops popping up there. I think they have the hottest Rails market in Europe based on my limited experience. I’m glad they invited me too. You can check out my presentation which was funny, but according to Obie very pointless. I also met the Phusion Passenger guys and holy fucking crap are they on to something. If anyone is going to actually take on Mongrel in the hosting area it’s Passenger. The developers are super cool nice guys (unlike me) and even DHH likes their stuff. He really never liked anything I built, so hopefully those guys get more support. About the only thing keeping them from taking over is that they use forking so a few libraries that keep resources open will have serious problems. They’ll probably have to think up some kind of thing for that soon, but I think most Rails deployments could get pretty far with Passenger. UPDATE: Hongli says: “Actually this has already been solved. 2 months ago, to be exact – before Phusion Passenger was released. :) Some libraries keep resources open, yes, but the only things that we have to worry about are open file descriptors. We used to close file descriptors upon forking, based on a black list of file descriptors to close, but we quickly found out that that doesn’t work very well and easily resulted in file descriptor leaks. So now we close all file descriptors, except those that are specified in a white list (i.e. stdin, stdout, stderr and a few others). Everything has been working flawlessly since then.” For years everyone has tried to “beat mongrel” but just couldn’t pull it off. I personally wouldn’t care much since developers should use the best tool out there, but man the people trying to unseat Mongrel just suck at it. My favorite was how Charles declared Mongrel dead in 2007. I grabbed it and tried to upload an image when it crashed with a out-of-memory error. It took them like nine months to fix that shit. Here’s a clue, before you try to compete with someone who makes no money on their software and actually doesn’t work on it very much, at a bare minimum try to get the fucking protocol to allow an upload. Things might work better for you then. Honestly though, it shouldn’t be that hard to beat Mongrel since Mongrel is crippled by Ruby. What the Phusion guys are pulling off is just using Apache to do the heavy lifting and then let their module do the work to stream out to Rails. It’s not a new idea, they’re just doing a great job marketing it and educating people while keeping things simple. The kicker is that they also have support for Rack and WSGI. Now that’s fucking sexy. What is very new about Passenger is that even though it does forking, Hongli managed to clean up much of Ruby’s memory management so that each fork is small and clean. This should greatly reduce your memory footprint, I think an estimated 15-30%. Announcing EaRingThere was also working software which came out of my talk that you might like to try. It’s called EaRing, and it’s the perfect accessory to every Ruby company. EaRing is a weirdo assembly language that’s almost like a scripting language. You hand it a sane assembler script and it compiles it on the fly and runs it. It’s fast and very dynamic and probably won’t work on any computer you have. Still, you can grab it from the EaRing project page and you can grab the source with bzr branch http://zedshaw.com/repository/earing/. I wrote it quickly in my spare time during the two weeks before the conference, so it’s not the greatest code ever. My Last Ruby ConferenceThe next conference, and sadly my last Ruby conference will be Ruby Fringe in Toronto. This conference was apparently made in my honor/image and should prove to be pretty damn great, if it doesn’t get all the organizers and speakers passively aggressively killed by Chad Fowler. Why is RubyFringe my last Ruby conference? Well my friends, I honestly don’t know why Ruby conferences keep inviting me. I ripped on tons of people and basically called everyone a bunch of ghetto fab whores. Of course I only meant the small percentage of people and the companies that are fucking up Ruby, but I said it and then walked away to go work on something else for a while. I figured that’d be it and then I could get back to more fun things. Instead, I apparently said what a lot of programmers stuck at the bottom wanted to say but didn’t have the courage. I think now they look at me as the guy who can possibly call bullshit on all the goings on in the Ruby world, but honestly I’m not really that powerful. I basically have a huge nasty mouth and very little fear of reprisal. There’s nothing I can do to change the way things work, all I can do is write about how I feel about the industry and hope that some of the ideas sink in to the next batch of programmers. The number of times I hear “Steak and Strippers” at conferences tells me I’m doing a good job at that through my blog. If people want things to change, don’t invite me to a conference, invite other people who care about your language and have something new to say. One of the reasons I’m a draw at conferences is I never recycle a presentation and I try to write software for every single one. Whether the software is the presentation itself in Factor, Python build tools to make the presentation, or some nifty hack I wrote, it doesn’t matter. I always have new software to present on or with. If you want to keep things solid and real at conferences, make this demand of your speakers. They should not recycle talks, and they should present some kind of software. I’m still going to write about how retarded the whole software industry is, and I’ll attend conferences that have nothing to do with Ruby. I’ll be at DefCon and another conference in Poland, and probably a few others, but none that have to do with Ruby. I’ll definitely be focusing on the dicks who think they’re at the top of the Ruby community and the companies trying to make a buck off the Ruby Proletariat. But, I can’t justify going to Ruby conferences anymore. Sorry. My Work At The Bear Is DoneSome people were wondering what happened at Bear Stearns. Well, Bear is no more. They were bought out in a single weekend by JPMorgan Chase for about 2 billion dollars. The building that Bear owns is worth 1.5 billion. Bear had been around for about 80 years, survived the Great Depression, World War II, Vietnam, and several market crashes, and was worth 400 billion around that time. To have them evaporate in a weekend is fucking scary as hell. The dumbest thing is that I held out and waited around in NYC to go work at Bear. I had thought, man these fucking start-ups can’t pay me and flame out like crazy. I think I’ll go hide out in banking since they never go under. Wow, that worked out great. It’s not really something you can predict, but the first day I went to work at Bear they announced their problems with subprime mortgages. The CEO lied to everyone and claimed it was only 4% of their business, but the truth is “much greater” as we found out later. I’m sure we’ll never know how much the idiots running Bear actually sunk into subprime mortgages, but I’m thinking it was probably closer to 50% of the company or more. The various start-ups still aren’t that much better, and companies like Microsoft and Google aren’t very appealing. So I’m kind of waiting around and just focusing on writing and music now. Now, what I got out of the deal was a super sweet severance package that sets me up for a short time, assuming I can keep my costs low. The deal to buy Bear closed on the 2nd of June, and the second I’m allowed I’ll spill more details about what everyone got and how it affected me. If you get a job working at any company related to the financial industry, demand twice the market rate for your salary. Having a company worth close to 400 billion dollars die in a weekend is amazing. There is definitely some bad shit going to happen to our economy and I wouldn’t set foot in a finance institution to set the place on fire. Rumor ControlUPDATE: Well that was fast. I originally said Jay Fields was spreading this rumor, but Jay says he’s never said this, although he did say it in several jabs at me at the RuPy2008 conference. I’ve edited to remove Jay and just replaced it with “Random ThoughtWorks Asshole” or RTWA. I’ll give him the benefit of the doubt and assume it’s just a random ThoughtWorker. Apparently RTWA has been running his/her fat mouth so I think I’ll include a little bit of rumor control. Although it is kind of funny so I let it slide for a while, but now it’s just dumb. RTWA’s been telling people that on the fateful Bear Stearns Ruby on Rails project (which ThoughtWorks fucked up) I wrote a text editor and made everyone use it. Alright, now think about this for a second. First off, I am not that good. And, if I did write a text editor in a day (the part he keeps leaving off) do you really think it’d be good enough to make people use it? Also, if you know me I’m dead against making programmers use anything they don’t like. Why would I make them use a text editor I wrote if they didn’t like it? Shit I just wrote an assembler for fun and did a whole presentation on it to a packed crowd and I still don’t think it’s good enough. Right, I’m gonna make people use a fucking editor I wrote. Here’s the real story. The ThoughtWorkers were insisting on using fucking Eclipse for the IDE and forcing everyone to use it. Eclipse is a nasty fucking piece of software, but it also meant that nobody learned how a real Rails application is laid out because Eclipse’s only real feature is a hot key to find files. After close to a month of watching programmers fight with Eclipse’s shitty text editor I said we have to find something new. Let’s do a shoot-out. We tried every fucking editor there was. We even had a grid on the wall with all the features we wanted, and none of them met our goals. We basically wanted Textmate, but we were stuck on Linux so we were screwed. Now keep in mind that myself and another programmer were happily using Vim and Emacs when nobody was around or cared, and we’d crank out shitloads of great code with them. I’m a Vim whore so if I was going to force anyone to use an editor it’d be Vim. More on that later. After trying every IDE, me and another developer decided to try every editor we could find. We went through about 20, and then I remembered J from way back in the day. J is this weird editor that is written in Java, but uses a Common Lisp system the author of J wrote to actually write the editor. Now, the funny thing is J is pretty small, but had all the features everyone wanted. Problem was that J was bitrotted and needed a facelift. So, I grabbed the Substance Swing look and feel, and hacked it into the source in about an hour. I then fixed a few annoying bugs, and asked people to try it. Anyone who liked it just went and used it, everyone else suffered with Eclipse. I even created a Barbie Pink theme for one of the female developers to annoy her male arch nemesis. It was kind of fun. Now, as we’d hit bugs I’d do a fix here and there, but really I spent maybe a day total working revising an editor that other programmers willingly used. Later, after everyone had been weened from their Eclipse addiction, people asked me to teach them Vim. Yes, that’s right, they asked me to teach them Vim. I actually didn’t want to because I wasn’t sure how it’d work for them, but they all liked it except for a few people who still used J or Emacs. I gave them one class in Vim and they were capable in a few hours. I am straight up not lying about that, and I’m still kind of weirded out by it, but that’s how it went down. We ended up with some people using Vim, some using J, some using Emacs, and then a couple of remote developers who were forced to do lame Citrix were forced to use a terminal window through SSH. They tried Vim for a while, and I think they eventually used Nano before just giving up and hacking on some C# code for the project. Eclipse is horrible over Citrix. Here’s the difference between my style and the ThoughtWorks style. ThoughtWorkers like RTWA hear this and think I’m crazy. “You wrote your own editor! OMG what about the bus factor?!” What they fail to see is that everyone got to experience a wide variety of editors and all learned something new, eventually deciding they liked Vim. By the end of the project everyone in the room could easily switch between editors and pairing wasn’t a problem at all. In my style, programmer choice leads to stronger programmers because they are exposed to new ideas and ways of doing things. In the RTWA way, they are treated like factory workers or even just lowly assembly line widgets that all have to be the same so ThoughtWorks can rotate out newly minted trainees and train on the client’s dime. Keep that in mind when they want to “standardize” on a particular programmer tool. What you’re doing is removing any creativity and happiness a programmer derives from using her favorite tools. The irony is, RTWA, one of the strongest advocates for everyone using the same shitty Eclipse editor, was walking around a conference in Poland insulting me claiming I forced people to use an editor I wrote. Use your brain when you hear things like that. I don’t have any reason to lie to people since I don’t make any money anyway. Always remember that I advocate programmers being allowed to use their favorite tools, and exposing them to new stuff they might not know about. Another funny thing about the Vim experience: I also use Vimperator and the Awesome Window Manager among other fun tools. I never would force this environment on other people as it is very particular to how I work, but they would sit with me and watch me code, then ask me what I was using. I’d tell them and they’d go off and install it and then use it themselves. I’d give them quick training in it, and other people would go find similar tools that fit their needs. Good tools don’t have to be forced on people. And Remember, I’m An AssholeNext, I think he’ll try to tell you how I ripped into one of their consultants, but I’m sure he’ll leave off how all of the ThoughtWorkers would constantly bully my employee because my guy was making them look bad. I sure as hell ripped into that turd fucking TWer when he started to rant at my guy yet again claiming the shitpile they wrote was “just like the 12 rails code bases I have on my laptop”. They would constantly lie about how their code was just like any other Rails project, which was total unmitigated bullshit. Him and his TW buddies would constantly pick on my guy (who was 10 times the developer they ever could be) mostly because he’d speak out against their idiotic design decisions. Remember when you’re in charge that you first try to calmly get people to quit doing subversive social bullshit, but eventually you have to shut it down any way you can. That kind of psychological torture can drive some people to hurt themselves and can get you sued if you let it continue. What amazed me is everyone was outraged at me telling this guy to fuck off with his “+1 Reputation Healing Laptop-of-12-code-bases” and shut his fucking mouth, but nobody ever jumped on him and his TW buddies for putting up signs insulting my guy. Yes, signs, only about a single employee that worked at Bear Stearns, their client. Nobody who thinks that’s the correct professional behavior for a consultant deserves to be listened to. It is evil, subversive, ruthless bullshit for no reason. Here’s the truth, my guy was a very nice man who had some personal problems like we all do at times. It isn’t polite for me to go into what he was dealing with, but having a bunch of scrub coders try to tear him down daily while dealing with all the other bullshit in the company sure as hell wasn’t helping him. I tried my best to help him out, but it was just a fucked situation all around, and I wasn’t dealing with things very well either. About the only thing I could do was keep the TWers from hurting him further with their psychological warfare bullshit. This is the thing they don’t tell you in business school. These dumb fuck sales tactics and shit like NLP hurt the decent and truly fragile people. The idea that all members of a team must be carbon clones removes their identities and forces the individuals who are intelligent out of a job for no real benefit to the software process. If my guy had been forced off the team or out of the job I’m not sure what would have happened to him. He was a very nice man and needed to leave on his own power, not forced out. I considered it my job to keep everyone else from pushing him out, even though I knew he wouldn’t stay very long. He’s doing great now at a hot start-up making money, but I still feel very bad about how he was treated. Hopefully me telling people about it will make sure that nobody else gets treated poorly by those frat boys pretending to be programmers. Finally, I Got A Sweet GuitarI’ve been getting back into practicing my guitar and learning more about music. I kind of stopped for a while, but recently I went out and bought a very nice Schecter with a white body. At first I didn’t know it was marketed as a great Metal guitar. I mostly play Jazz and Blues, but when I played it I loved the way it felt. What’s even better about this thing is that I got it for $500 off because the idiots at Guitar Center didn’t know that you have to replace the 9volt battery in it or the active EMG pick-ups don’t work right. I was playing it, and then did some research, and after I bought it I replaced the battery and it was a totally different guitar. Dumbfucks. Of course I had to tinker with it and fucked up the tuning something fierce. I’ve never had a guitar with a floating bridge before, so when I went to tune it I knocked it all out of alignment. Took me forever to get that thing back, but now it sounds like it did when I bought it. Very crisp and easy to play. I also bought this incredibly fun Ukulele that is electric/acoustic and has six strings. The two extra strings are sympathetic strings, and the jack for the Uke uses sensors to detect the string vibrations translating them into sound. What I do is I run it through my POD X3 or various other sound modulation systems to make some evil sounding things nobody should listen to sober. Going Dark For A WhileI have like three rants all piled up in my WIP directory ready to go, but I want to let them simmer and work on them when I have more space in my head. Right now I’ve got to focus on the book and then after that I’ll be publishing more stuff. Feel free to email me if you have questions or are using the software on my site. I use most of the stuff here daily so if you track the Bazaar repository for each one then you can pull down any changes I make. I won’t announce them on the blog though, just track them if you’re interested. See ya in a few months. |