Dangerous Ideas

Ideas for dangerous times

Dangerous Ideas header image 5

Cross between humane text and WYSIWYG editor

March 01, 2007 · 0 comments

I like humane text formats like Markdown (which I use for this blog) or Textile for writing things like blogposts. I find that the WYSIWYG editors like FCKeditor or Kupu sometimes don’t generate markup as clean as we’d like. Of course, from a user perspective, a WYSIWYG editor is a lot easier to learn. So it’s been a tough choice, sometimes, to decide what to use. Now it looks like there might be a happy medium! While browsing Open Source Web Design, I saw a link to a new editor called WYMeditor (it takes its name from the last three letters of WYSIWYM – What You See Is What You Mean). It feels like a WYSIWYG editor, but it keeps formatting out of the way so that people can see the markup. It looks like a great idea!

→ 0 comments Tags:

Guido van Rossum on Squeak and Alan Kay

July 11, 2006 · 0 comments

Back in April, Alan Kay and Guido von Rossum participated in the Shuttleworth Summit (sponsored by Mark Shuttleworth of Ubuntu and space tourism fame). I saw a few blog posts then about cooperation between the Python and Squeak communities since the two were exchanging ideas, including an article on Shuttleworth’s blog. It sounded good, but I wondered if there would be followup. Then I saw this link to a post by Guido on a keynote by Alan at Europython. I love the prospect that the work done with Squeak and kids might be expanded to a bigger audience through Python programmers (there are a lot more Pythonistas these days than Squeakers). Of course, it also occurred to me that what they Guido wrote about Python could be said for Ruby, too. Then I read the comments and saw one from Alan that mentioned both Ruby and Python as targets to broaden the ideas in Squeak and eToys.

I really hope something comes of this. Avi Bryant wrote an article about the advantages of implementing Ruby in a Smalltalk a while ago, and it’s clear that a lot of people are interested in something like this. Squeak has also inspired projects like MetaRuby, an attempt to implement Ruby in Ruby.

It’s ironic: One of the great promises of object-oriented programming was reuse, yet today, Python and Ruby are still converging with ideas that have been in Smalltalk for 25 years. Of course, I can’t wait for it to happen …

→ 0 comments Tags:

RailsConf ticket traded! Anyone want to go to RubyConf?

June 17, 2006 · 0 comments

Wow, that was the most fun I’ve ever had deciding not to go to a conference! Thanks to everyone who expressed an interest in trading me their time for an all-expenses paid trip to RailsConf. I’ve met a lot of people I think I’ll be working with in the near future, including Sarah Mei, the person I’m sending to RailsConf.

It’s funny … just the other day I was talking with Jason Wong about recruiting strategies. I was actually offering to sell him by RailsConf ticket. I knew he had been interested in going but was too busy to really think about it during his run for a position on the local Democratic Central Committee. Turns out Jason couldn’t go, either, but after the conversation with him, I thought, hey, why not try to combine transferring the ticket with trying to find some cool Ruby and Rails programmers to work with?

Some of the people who can benefit the most from the inspiration and knowledge exchange that takes place at conferences or seminars often can’t afford to go to them. Either they’re starting out as programmers or, like Sarah, they’re seasoned developers who are relatively new to Ruby and don’t work for a company that will sponsor them to go to something like RailsConf. Many people in this situation are women, who I’m especially sympathetic to since seeing our numbers decline so much in programming (for the curious, I didn’t choose Sarah based on gender; I chose her because she has great skills, works with non-profits, could take the time off, can work legally in the U.S., lives in San Francisco – a perfect combination!).

It was especially great how many people were attracted to the social justice parts of my post. That was so cool! There were several people that were actually more interested in just working with me than RailsConf itself.

It was all serendipity this time, but the experience was so good that I’m thinking of offering one or more all expenses trip(s) to RubyConf in exchange for programming hours, too, assuming there’s interest.

If the logistics work out, I’d also like to combine the offer with mentoring by an experienced Ruby programmer. Again, the offer will be open to everyone, but I’ll of course be making an extra effort to let women and other underrepresented programmers know about the offer.

I posted my original offer on Ruby mailing lists plus also on Systers (where Sarah saw it) and LinuxChix. Any suggestions for other places to post offers like this that will reach women programmers and programmers of color?

→ 0 comments Tags:

I hate Ajax

June 16, 2006 · 1 comment

Ajax was really cool before it got named ‘Ajax’ – Google Maps and Gmail, for example, had wonderful features that other Web-based mapping and e-mail services didn’t. Back then, I loved Ajax (before it became Ajax). I also liked some of the early applications that became well known at about the time Ajax started taking off, like Basecamp and Odeo. There are times when it just made adding an item to a to do list, for example, really easy – no need to reload the page! That was the Golden Age of Ajax (scary to think of an age that lasted such a short period of time), when Ajax made me feel like I could do more quicker.

Now, though, Ajax-y things (I’m using Ajax broadly, since it’s applied so broadly) are everywhere. And when Firefox hits 95 perecent CPU utilization I feel pretty far from productive. And this can happen several times a day – that’s crazy! JavaScript libraries like Prototype, Mochikit, and Scriptaculous are great, but maybe they make things too easy.

I guess it wouldn’t be as much of a problem if I only opened up a few Web sites at once, but my usage of Firefox is to have several windows with multiple tabs open in them. I guess this problem could be alleviated if Firefox had the option to suppress JavaScript processing for pages other than the current top page. I hope they add that feature at one point, but in the meantime, here’s my plea to the “Web 2.0” crowd: please apply common sense! Why do people write JavaScript that polls a Web site every 5 seconds? What could possibly possess someone to think that was a good idea?

Here’s a book idea – maybe someone should write a tale of warning to the Web 2.0 developers. Maybe call it “Crash 2.0” …

→ 1 comment Tags:

A ticket to ride (the Rails to Chicago)

June 15, 2006 · 0 comments

Update: The ticket has been traded! Thanks to all who wrote to me!

I have a ticket to RailsConf in Chicago, but I think I’m going to have to give it up. I’d be happy to sell my ticket to someone else for the original price ($400).

Of course, that’d be boring (but totally acceptable), so in the interest of getting to work with more people in the Ruby and Rails community I thought I’d also offer an option for a trade … If you don’t have the dough (or would prefer a warmer fuzzier alternative to paying with cold hard cash) I’d be willing to pay for your ticket (or even for the ticket plus airfare, hotel, and car) in exchange for your time. The requirements for this are:

  • You need to be a good programmer. By good programmer, I don’t mean the look-at-me-I-can-do-super-fancy-metaprogramming-while-chewing-gum-backwards type. After all, only about 20 percent of programming requires mad skillz (and I think we have that covered) It’s the other 80 percent I need help with, and that just requires someone with a good foundation in programming, common sense, and the ability to get stuff done without much direction. And programmers who have a great foundation in other languages (e.g. Smalltalk, Python) but who are relatively new to Ruby and Rails are welcome to try to convince me.

  • You think you’d enjoy working with me and my company. To get an idea of the sort of person I am, you might want to check out my blog (well, if you’re seeing this, you’re reading it now). Also, some info about my company. It’s called Colorful Expressions (to evoke the feeling some people feel with their computers). We’re a consulting company (we don’t have a fancy money-generating Web application – yet, anyway) that works mostly with small businesses and non-profits. We have an interest in working for social justice organizations and often end up charging a lot less than your typical programming shop would as a result.

  • You’d be willing to negotiate a favorable rate of exchange and be willing to work (paid) for time in addition to the trade if necessary. After all, I have no idea who you are and I’m going to be making more or less a snap judgment, and it’s also hard to just stick a nearly random person into a project for a few hours and expect something great to happen.

It might be that no one will want to take me up on a trade – heck, even I’m not sure whether it’s a good idea or just silly – and I’ll just end up selling the ticket. But at least I tried to be creative … ;-)

If you are interested in either buying the ticket or working out a trade, please e-mail me at jennyw@dangerousideas.com with “RailsConf” in the subject (this address gets huge amounts of spam), or, if you want to share your reasons with the world, feel free to post a comment here (but either e-mail me separately or include your contact info).

P.S. Chicago a really fun city to visit. For vegetarians, Soul Vegetarian East and The Chicago Diner are two great restaurants not to be missed. Also, since RailsConf overlaps with Chicago’s 2006 Pride Weekend, there are tons of once-a-year events happening. I hope that people going to the conference get a chance to explore the city.

→ 0 comments Tags:

Squeak without an operating system

May 17, 2006 · 0 comments

I haven’t had time to check this out, but SqueakNOS was recently re-released. In this context, NOS stands for “No OS”, although that could also be “as OS”. It’s a project to enable Squeak to run on bare metal (or, in the case of VMWare, virtual metal).

From the SqueakNOS project site at SourceForge:

Squeak is an open, highly-portable Smalltalk-80 implementation, it runs on almost every operating system, and in bare hardware. What we gonna do with SqueakNOS is getting rid of the OS under Squeak, and we’ll implement all the functionality in Smalltalk

→ 0 comments Tags:

Back from Smalltalk Solutions

April 28, 2006 · 0 comments

Just got back from Smalltalk Solutions in Toronto. I thought about blogging about some of the sessions, but others are doing a much better job of that – you can see some posts at Planet Smalltalk, particularly at James Robertson’s blog.

My interest in going to Smalltalk Solutions was to learn more about the community, and how people were using Smalltalk these days. Also, to find out how people were using Seaside for Web development. It’s not that I’m not happy with Rails, but for some things, Seaside does work better. The most intriguing thing about Squeak, for me, is that you can have your entire stack in two files, which means you could easily install a local Web server for offline access to a database. If you use something like Magma, you can include the database server in the image. That’s a whole lot easier than installing Ruby, Rake, Rails, Mongrel, and MySQL for something equivalent.

I learned some interesting things at the conference and met some great people. I would have loved to learn more about Magma, and the SQL interface to it that Bryce Kampjes mentioned someone is working on, but there weren’t any sessions on it. Here are some highlights of sessions I did attend:

  • Alan Knight presentated GLORP, an ORM that supports several databases, particularly PostgreSQL. Unlike Rails’ ActiveRecord, GLORP was designed to map classes to arbitrary tables. So there’s a lot more flexibility, but it’s also a little harder to setup. I generally prefer AR’s way of doing things – following conventions so that you spend as little effort as necessary doing configuration. However, GLORP isn’t that much harder to use, and for accessing legacy data, I would guess it’s a lot easier, based on my experiences trying to use AR for that. Apparently, the latest version of GLORP is not on the Web page (as of the presentation), but in the Cincom repository. Alan said he’d put a more recent version online soon. The Squeak port is apparently reasonably up to date and is available on SqueakMap.
  • Avi Bryant and Andrew Catton’s presentation on Ajax in Seaside didn’t go quite as planned – most of the people who showed up didn’t know anything about Seaside, so we spent the first half of the tutorial session setting up Seaside. The person who was sharing my laptop didn’t even know anything about Smalltalk – she had come to the session wanting to learn about Ajax in general (she wants to use it with PHP). It was interesting to hear Avi’s and Andrew’s thoughts on Ajax – although Ajax is pretty easy to use from Seaside (there’s built-in support for Prototype and script.aculo.us), they use it minimally in Dabble. However, Avi did mention to me that with Ajax there’s less need for the multi-page workflows that Seaside does so well using continuations.
  • Avi’s and Andrew’s talk on Dabble was great – it’s very interesting hearing how an innovative startup got started without any external funding. It was nice to hear how they were able to fund their very interesting startup using consulting, which had largely come from a job they had quit (they were so productive with Seaside that the client wanted to retain them as consultants). They’ve done no marketing for Dabble so far, but they have quite a bit of interest – almost all of it from blogs and user group meetings. Right now, they’re running on only one server (but prepared to expand), which means Dabble in practice uses fewer resources than originally estimated. They’re not using a database backend yet – their customers have very little data, and they find that using a Squeak image for each client is working well. It was also interesting to hear that their infrastructure (launching VMs on demand, etc.) was built in Ruby.
  • Bryce Kampjes gave a presentation on his Smalltalk to machine code compiler, Exupery. He thinks he can get some Smalltalk code to perform as fast as C. Most processors can handle more than 1 instruction per clock cycle, but typical C programs only send one instruction; those extra slots could be used for the overhead of Smalltalk programs, leaving the execution time nearly the same. It may have disadvantages when it comes to power consumption, but for some server side applications this would be great.
  • Karen Hope presented a talk on converting a Smalltalk project in Java. I’m not at all interested in Java, and originally went because she was the only woman presenter in the Smalltalk tracks, and I wanted to support another woman in the field. Turns out it wasn’t quite what I expected – she said from the beginning that one of her themes would be Smalltalk: Good, Java: Bad. And I thought it’d be a guide on how to transition to Java … ;-) She brought up a host of interesting issues when management decides (independent of the technical staff) to transition to another technology. Also, porting from an untyped language like Smalltalk to Java offers a lot of intersting challenges – a lot of Smalltalk’s power cannot be expressed well in Java, so some things just didn’t translate over easily. Karen’s experiences resonated with a lot of people … her session went well over the allotted time, and there was a line of people waiting to talk with her by the time I left.
  • Lukas Renggli presented Pier and Magritte. Pier is a content management system and is built on Magritte, which is a “meta-description framework” – basically an object store that allows you to see objects in a variety of ways. I had heard a little of Pier earlier from Brian Rice who’s thinking of using it for the Slate Web site. Brian said it compares favorably to Plone, which I’m familiar with from other projects. I found the talk interesting, and Pier is certainly very flexible. However … it’d need a bit of work before I could use it as a CMS. The main reasons are URLs and scalability. Pier is capable of using nice urls, like http://example.com/this/is/an/url, but appends a long Seaside session string. This probably isn’t the best for Web SEO, and is hard to bookmark. Worse, though, is that Pier, as is, is difficult to scale. Several people suggested putting a cache in front of Pier, but the problem with that is that every time you get a cache miss, that’s possibly another session. If you have a lot of sessions simultaneously, and multiple entry points to your Web site, this could add up. Lukas suggested creating a visitor to create static pages. I think maybe extending Pier so that it saves static pages would be good – most CMS pages are dynamic for editing, but not for viewing, so that would be appropriate. One thing I found a little interesting – Lukas developed Pier without much influence from other CMSes. On the one hand, Pier could be improved a bit from looking at the features that projects like Plone, Joomla, and Drupal offer. On the other, Pier has a bunch of innovative features and is designed to be easily extensible.

I found the conference pretty educational, along the same lines as RubyConf. I probably would have gotten more out of it if I hadn’t been getting over a cold, but I was happy I went.

Some ideas for improvement: It would be great to choose a venue that had wi-fi and power outlets for laptops. The Toronto Metro Convention Centre offers vendors wi-fi for $395, but that’s a bit more expensive than most conference attendees would want to pay! Also, although it was interesting combining Smalltalk Solutions with LinuxWorld and NetworkWorld, I didn’t see much cross over. I did sit next to a LinuxWorld attendee who went to Avi and Andrew’s Ajax w/ Seaside presentation, but she attended that because she thought it was a general Ajax workshop and she wants to use Ajax with PHP. Maybe combining forces with someone like Ruby Central would make more sense, since there’s a bit more overlap of interest – many Rubyists are also Smalltalkers or ex-Smalltalkers, and vice versa.

→ 0 comments Tags:

Croquet 1.0 is out!

April 20, 2006 · 0 comments

Croquet 1.0 has been released!

Croquet is a 3D environment written in Squeak. Some people have compared it to Second Life, although, unlike Second Life, Croquet is open source, operates peer to peer, and you can change it at almost any depth from the environment itself.

Things like Croquet and DabbleDB make me think that Smalltalk is about to make a resurgence. That’s one of the reasons I’m going to Smalltalk Solutions in Toronto. More on that next week.

→ 0 comments Tags:

Rails app in a sub-directory, with SSL (Apache reverse proxy)

April 10, 2006 · 0 comments

Having an account on TextDrive, I’m used to setting up Rails applications on Lighttpd, and setting up Apache as a reverse proxy. Turns out it’s a bit harder when you throw two additional requirements in the mix: having the Rails application live in a sub-directory (instead of its own virtual host), and using SSL.

After a lot of false starts, I came across this article on setting up Typo in a sub-directory, which works great (after I recompiled lighttpd w/ PCRE support). However, that article talks about a setup without SSL. Under SSL, the links work fine, but whenever there’s a redirect, Rails would use http:// instead of https://. A bit more searching later, and I found an article with a fix and another article explaining the redirect problem in more depth.

→ 0 comments Tags:

Dabble; Smalltalk and Seaside v. Ruby on Rails

January 30, 2006 · 0 comments

I asked nicely, and Avi Bryant was kind enough to give me access to Dabble recently! It’s a really amazing application, and I’m really looking forward to giving it a run through. For those who don’t know, Dabble is a Web-based service that makes it easy to create database applications – without code. Here’s an example of a public Dabble application for Smalltalk jobs – it includes RSS feeds generated by Dabble, and HTML views.

My first application will probably be a version of the humble to do list. The to do list applications I use most often these days are the ones in my Treo/Palm Desktop and the ones in Basecamp. Both are relatively simple, and work fine as far as they go, but I find that I almost always revert to a text format for to do lists because to do list applications invariably are less flexible than I’d like.

This may all change, though. Dabble seems flexible enough that I can setup my to do lists to track any information I want, and even allows me to change my mind about what I want to track and takes care of backend changes magically.

As someone who makes her living partly as a programmer (I’m a Jill of all trades, really), I wish I could get my hands on the Dabble code – it would make things so much easier. And I mostly program in Ruby on Rails these days. That said, I really like Smallthought’s effort to keep Dabble code-free (from the users’ standpoint) – I can’t remember seeing anything as powerful as Dabble that didn’t involve coding before.

Of course, Dabble is written in Avi’s Seaside framework, so at least part of the power is available to programmers.

Unlike most Rails programmers, I chose to use Rails after already choosing to use Ruby, and I chose Ruby almost completely because it closely resembled Smalltalk. The main reasons that I’m not using Squeak and Seaside right now instead of Ruby and Rails are:

  • The libaries I find myself needing a lot exist more often in the Ruby world than in Smalltalk (well, at least Open Source Smalltalk; I bet I could find most of what I need in VisualWorks). Things like regular expressions are not common in the world of Squeak (with Squeak, you can use a C plug-in, but it’d be nicer if it there were a native way to do regexes). Another library I’ve been using recently is Ferret, which is a Ruby port of the Lucene search engine.
  • Smalltalk isn’t exactly the best when it comes to integrating with non-Smalltalk libaries (again, this might be different with the commercial Smalltalks).
  • Squeak’s license. I’m not sure this is a big deal – there are some who think SqueakL is freer than many open source licenses – but it’s a recurring issue, if only because Debian won’t include it in their distribution.
  • Believe it or not, but … Rails’ larger marketshare makes it easier to sell to customers.

Maybe when Dabble leaves beta and becomes a killer app. Seaside will get a lot more attention, and then the last of the issues above will go away. As for the others … at one point, the benefits of using Squeak an Seaside could outweigh the cons. There are plenty of times I’ve hunted down bugs in a Rails application where I wished I had something even remotely approximating Seaside’s debugging support. The breakpointer script is certainly better than nothing, and better than what some other frameworks offer, but it still has nothing on Seaside/Squeak. And, of course, there’s the fact that Seaside is a stateful framework. This means that you can set an instance variable in one method and expect that it’ll still be set when you call the next method, even if that’s in between a couple of page loads. And, of course, being a continuation-based framework (maybe the reference continuation based framework), there’s support for the back button.

If you haven’t seen Dabble in action, read through the Smallthought blog and check out the videos:

Also, if you’re curious about Seaside and when you might use it instead of Rails, check out the Ruby on Rails Podcast inteview with Avi Bryant. The sound quality starts off poorly, but it gets (somewhat) better later on.

→ 0 comments Tags:

A Computer of One's Own

January 20, 2006 · 1 comment

I read a lot of programming blogs regularly, and subscribe to several feeds on Smalltalk. I think that’s how I came across an article on Ted Leung’s blog about how he and his wife are teaching their daughters to program using Smalltalk (they started with Python). I thought Julie Leung’s article on their daughters learning programming was even more interesting. I thought these articles were great because I think the lack of women programmers is one of our culture’s great ills (not that we have any shortage of ills, mind you), and it’s great to read stories about parents encouraging their girls to learn programming at a young age. Secondarily, it was great to hear how well Squeak Smalltalk and Stéphane Ducasse’s “Squeak: Learn Programming with Robots” are working as teaching tools. I loved where Julie wrote:

Abigail’s stopped hugging the book, but I do hope she and her sisters continue to enjoy programming.

Hugging the book! That’s great!

Julie started her article with a link to an article on misbehaving.net that in turn lined to a writeup on Grand Text Auto on a talk by Hanna Wallach on women and computing (how’s that for indirection?). Some stuff that came out of that talk:

  • Women make up 28% of programmers in the proprietary software world, but only 1.5% in the FOSS world.

  • Men first get computers when they’re 15 on average; women don’t get their first computers until they’re 20.

Julie also writes about the passion that many programmers find for their art:

Most of all I want my daughters, like Elliot, to have a passion for discovery, creativity, logic and design, and to love learning, whether it is Squeak or Python or a language or book yet to be written.

I hope that there are more parents like the Leungs who are encouraging their daughters to learn programming at a young age! And that more parents follow Jill of misbehaving.net’s advice: “Buy your daughters computers!”.

If this happens, it’ll go a long ways to having more young women interested in programming and computer science as they enter college, or have that skill to apply to whatever they do. But what do we do about keeping women in computer programming positions? Back in the 1980s, we had a lot of women in CS programs in college. We’ve slid downhill a lot since those days, and not just in FOSS (I have doubts about that 28% figure in proprietary programming – it’s certainly far from true at most Bay Area companies I’ve seen). While encouraging intial interest in programming is a big problem, retaining women in the field of programming after they’ve started working professionally seems to be an even bigger problem.

I know some very successful women programmers. But I also know many who have dropped out of the field entirely. Not because of lack of interest, but because they felt there were so many barriers at work. In fact, of the female programmers I’ve worked with, I think fully half are now doing something other than programming.

The reasons aren’t mysterious, and there’s a long list that includes:

  • Child care is a problem in this country (and others). Both in that it’s not as valued as it should be, and also that it falls unevenly on women. As bad as it is at most companies, it’s even worse for FOSS projects – I don’t know of any FOSS projects that include child care collectives (although that would be really interesting to see!).

  • Discrimination and harrassment. Things have gotten better over the years, but this is still a big problem. In FOSS, it’s even worse, because there is no HR or other department to intervene when something happens. There’s always the community, but … well, not all communities are friendly to women programmers.

  • Unintentional discrimination and exclusion. It’s just weird being the only one (or few) of anything in a large group. And given the strict gender divisions in so many aspects of our society, being the only woman, or one of a few women, in a group of men can be troubling even if no one means you ill.

How do we address these and other issues? I’m not sure, but one thing I’ve noticed is that a lot of women (myself included) have struck out on their own. Starting your own company is a great way to have control over your future (no more consternation about who gets the promotion, ‘cause you’re the boss!). And maybe it’s also a good way to start companies that will be women-friendly as they become bigger (of course, there’s no need to grow super big – it’d be great if there were tens of thousands of small women-owned, women-friendly companies flourishing).

So, parents, in addition to buying your daughters computers, maybe teach them something about starting their own businesses!

As for FOSS … it’s so great to hear that people like Hanna are making strides in the quest to make established FOSS projects like Debian more women-friendly, via efforts like Debian Women. Those efforts are important, and I look forward to seeing how they develop.

But I’d also really like to see more FOSS projects get started by women. I think it’s easier to start out with gender equity than to try to achieve it after a project has become established in a very uneven way. I don’t know of many FOSS projects that were founded by women – I’d love to hear of any, though, especially ones where groups of women are involved. And, if I ever find the time, maybe start one …

→ 1 comment Tags: