Lucas Carlson has released a RSS / Atom reader for Ruby. Not too shabby for 100 lines of code.
Tim Bray spent some time with Ruby. From the sounds of it, he was impressed.
Conclusion It sure looks like more than a fad to me.
Simon Brown puts together a presentation on some best practices in Java-land. Things such as unit testing, continuous integration and project blogs are discussed.
Miguel explains Mono's new HTTP pipeline for applications.
More fun with Rails from Sam. Also check out his unit testing post if you haven't already.
Thomas Fuchs is spreading source code and goodwill around.
Very, very cool! Definitely some code I'll be pouring over the rest of the weekend.
I like the idea of using a mix-in for this.
If you read one thing over the weekend, make sure it is this post by Kevin Barnes about programming languages.
What, pray tell, is a “freedom language”? Freedom languages are those languages that put the individual programmer at the center of their philosophical world. They work hard to remove any language constructs that reduce programmer freedom, and add the most powerful constructs available. Many are post-modern languages and most tend to be syntactically dense. The other kind of language is the “safety language.” Safety languages think first about the creation of contracts between modules, objects and functions. They focus on teams rather than individuals. They remove language features that are confusing or frequently misused so that there are fewer opportunities to make mistakes and so there can be clear separation of concerns and maximum verifiability. These languages are full of barriers and check-points and well-defined paths and they tend to be syntactically verbose.
Additional commentary from @lesscode.org, James Robertson and Chris Petrilli.
TechCrunch posts about Flock.
It is a functional browser with excellent features (including firefox features like tabbed browsing, etc.). What really makes is stand out are two additional features they’ve added to build social networking directly into the browsing experience: social bookmarking and a wysiwyg blog writing tool.
What I find interesting is the list of people working there. I recognize a few names from Eazel. And no, I'm not just mentioning Eazel to show my old-school cred but if the Puma's fit...
Justin Gehtland gives some great examples about what management gains when development begins to take place using Rails. I'm sure my boss and his boss will take this link and pass it on quite happily.
This has been out for a bit but I just found it, Cocoa Design Patterns Guide. Yet another thing to-be-read.
Many of the architectures and mechanisms of the Cocoa environment make effective use of design patterns: abstract designs that solve recurring problems in a particular context. This document describes the major implementations of design patterns in Cocoa, focusing in particular on Model-View-Controller and object modeling. Its main purpose is to give Cocoa developers a greater awareness of design patterns in Cocoa and encourage them to take advantage of these patterns in their own software projects.
Duncan Booth writes about design patterns found in Python. Definitely on my to-be-read list.
What design patterns are applicable to Python? Some patterns are an intrinsic part of Python, other patterns require some careful coding to get the best from them. What new patterns appear in Python?
Craig Walls had a productive lunch. Crazy!
As he mentions, I can't help but think of the old commericial:
You got your peanut butter in my chocolate!.
No, you got your chocolate in my peanut butter!.
Greg Wilson tells of his team's experience trying to track down a bug and then getting various responses from the Python mailing list.
There have been over a dozen messages on the Python developers' list since then about how to fix this. The most interesting part for me hasn't been the proposals themselves, but rather the fact that the first thing Walter and Martin did was write little test programs and profile them to find out how fast things would actually run. To put it another way, good programmers like Walter and Martin automatically apply the scientific method to problems---they design and run experiments, collect data, and then formulate a hypothesis (a.k.a. a bug fix). It's cool to be able to watch this in action, and even cooler to have code that runs fast enough to be called interactive.
Danny Ayers thinks about using a separate WordPress install to handle project management / GTD. Some interesting ideas so he did lose me with the various semantic web ideas.
Ambidextrous looks like an amazingly cool magazine. Definitely something to think about subscribing to!
Ambidextrous Magazine is the design journal of the nascent Stanford d.school. It is a magazine for the wider design community, which includes engineers and ethnographers, psychologists and philosophers. Rather than focusing on promoting product, Ambidextrous exposes the people and processes involved in design.
Lucas Carlson shows how to extend Ruby to allow for a very nice feature in Python. Ruby is very, very cool that way.
Everyone is pointing to it, but Google Talk is out. I used these instructions to get connected via Adium.
I'm jlucas at gmail dot com if you want to chat.
Leonard writes an overview of the Python web framework and FuManChu shows more of its power.
Matthew Bohnsack breaks down this one-liner:
Article.find_all.each { |a| a.body.gsub!(/src="\/(.*.(jpg|gif|png))/, 'src=\"http://bohnsack.com\1'); a.save }
Very good nuggets of info in this reprint of a SDTimes article.
Communicating asynchronously. "Design so that a module sends the message but keeps working, aware that it's still waiting for a response and able to react if it doesn't get a response after a certain amount of time," said Hirji.
Deploying a publish-listener (also called publish/subscribe) structure for much cross-module communication. "For instance," Hirji said, "we have a piece of code whose sole job is to do nothing but receive quotes from the marketplace for all securities and broadcast these internally to our transaction processing modules. Each module listens, but it only listens for the pieces of data that it's actually interested in at that moment."
Rafe gives a different take on the popularity of Rails.
In many ways, I think that Ruby on Rails is the best development yet for Java developers. It brings more people into the MVC-centric, test infected, object-relational fold, and it gives us a platform that we Java developers can learn that retains all of our best practices but gives us the implementation speed advantage of a dynamic language. I don't know about you, but I'm much more like to port my PHP applications to Ruby on Rails than my Java applications.
How to convince your manager to let you use Ruby on Rails.
TechCrunch points to the Personal Bee, a new take on a feed aggregator.
Here's the public feed for Web 2.0 posts.
Joe Gregorio is looking for references for info on building a database. Some good stuff in the comments including TPIE, which is an environment that allows the implmentation of external memory algorithms. The research papers there look interesting.
Instructables looks awesome. Basically a community site which shows how people did various projects. I think the marshmallow gun is way cool.
Also, check out Howtoons and their projects for kids.
David Weinberger writes about one of the sessions at the FOO camp. This was one was with Toni Schneider who was with Oddpost before Yahoo bought them.
Some very interesting comments:
The most exciting stuff coming up may be around mail, calendar and address book. He says it's not about grand portals any more but about branded micro-content.
Jason over at 37signals talks about the optimum size of a team for the first cut at a project. He says three is the right number.
In the comments, someone mentioned Apple and Amazon keeping teams within two pizza size. For an existing company, I think that is much more realistic though keeping the number down can drastically increase production and development.
Tim Case has put together thoughts on how Rails incorporates many best practices in terms of software design and development, things like test-driven development, model-view-controller and convention over configuration.
You can either read it as a series of blog posts or as a pdf.
Clarence Wooten posts about three factors in Web 2.0 which is different from the original, open source, blogs and social networks. Read it.
Also read his previous post on Web 2.0 which has one of the best definitions I've seen:
Web 2.0 is a collection of small pieces of loosely joined technologies coupled with a movement towards collaboration and interoperability. This has enabled control of information to shift to individuals and has given us a voice like never before. We are now able to easily locate and connect with like-minded circles and form social networks that drive mass-collaboration — wikis , open-source and tag-based folksonomies are all examples of this.
Charlie Wood gives an overview of his product management philosophy. It boils down to crawling, walking, running and flying.
I'm sure many people are pointing to it but I've found this post on Ruby symbols very interesting. Definitely a cool feature of the language.
Edd gives an overview of what he has been doing. I always look forward to these posts because Edd is always doing interesting stuff. Unfortunately, I read this and get mad at the state of this country:
The conference carousel continues to whirl. OSCON was good, but I'm exhausted with west coast US travel right now. In addition to being photographed and finger-printed on the way in to the US, I had to be photographed and finger-printed on the way out as well. Add to that a special TSA scan, and it made the 24-hour door-to-door journey even more weary. I've many friends in the US, and always enjoy my time there, but each time I go it gets a little more inconvenient.
It is unacceptable that this is becoming the norm for anyone coming into the country.
TechCrunch is a new blog I've subscribed to. From their about page:
TechCrunch is a weblog dedicated to obsessively profiling and reviewing every newly launched web 2.0 business, product and service. In addition to new companies, we will profile existing companies that are making an impact (commercial and/or cultural) on the web 2.0 space.
Nice post about Bar Camp as well.
I have more posts from lesscode.org somewhere in the midst of the tabs I have open but this post on the reuse of code is timely.
I was talking with a co-worker today about constraints vs. trying to be generic and the issue of reuse came up. We were discussing Rails and the tendency of Java frameworks to try and be everything for everyone just in case someone has a need in the future.
The code_poet shows how to use Hibernate and Lucene together in order to make a search engine for your domain objects. This could be a very useful thing for anyone using Hibernate. [ via ]
Matt McAlister posts about EVDB, the Events and Venues Database.
A couple of interesting snippets:
So, Brian's answer to that is basically verticalizing data. The data in his system is all about events and only about events. Just as the data in flickr is all about photos. So, you can start imagining a world where del.icio.us, flickr, evdb and all these open systems with common data formats are connected to create context. Add similar data from airlines, hotels, and restaurants and you suddenly have a very powerful discovery tool for travelers.
One of the keys for the next-generation of apps that use data from these services is going to be putting it into some sort of context. While you can do many things with the services individually, putting them together and bubbling up that data in a format users can deal with, will be even more powerful.
I'm guessing that between Engadget and Gizmodo and all the other CE enthusiasts in the world that with the right incentive you could get pretty close to the same data and even add more important data, such as what people think of the products.
Wasn't that Epinions? Perhaps they were just ahead of their time.
Cameron Moll is halfway thru his four-part series on Mobile Web Design. The first part looked at reasons to deal with mobile design and the second showed four different ways to design for a mobile device. I look forward to the final two portions.
Tim Bray points out that the real issue in syndication today is not what to call the feeds but instead how subscribing to them can be made easier. He's correct in that clicking on a button which just returns text to a browser is not a good solution. However, I'm not entirely convinced about the effectiveness of his ideas.
He suggests two things which would allow for one-click subscriptions. The first is that servers would serve up the syndicated files correctly with either application/rss+xml or application/atom+xml. This would allow the user to select which app should display the feed. This is perfect if you are using a desktop client like NetNewWire as your aggregator. Unfortunately, I don't see how this would work when I use Bloglines. I know you can create a URL so that Bloglines will subscribe to the feed but your OS would need to know how to map that from the file being downloaded. Will Web-based aggregators need to write desktop apps which take the feed information and send it back to their servers? It would seem something like that would need to happen.
His second suggestion is to either switch your feed to Atom 1.0 or to add an element to your feed. I don't know exactly what this would accomplish other than putting everyone on the same format which obviously isn't a bad thing. Unfortunately, that is not going to be reality any time soon. Also, the majority of aggregators can handle all the formats now so why would I need to move mine to something else?
I do agree with his conclusion though:
Web Feeds? RSS? Call ’em what you bloody well want. It won’t matter. Until we have one-click subscription working, most people won’t use them. And whoever gets one-click subscription working first probably gets to choose the name that sticks. I’d be happiest if it was done in an open standardized works-in-all-the-browsers way, but whatever. So if you really want to influence the name, stop agonizing about it and get going on that one-click subscription.
Yes, that is the real problem facing syndication today. But I still don't think we know how to handle it.
Jeremy points to a cool looking app, Plazes. Basically it lets you share where you are connecting from at any given moment. While that is cool, I find the various tabs in Jeremy's browser just as interesting.
Feed Tools is a Ruby package that handles parsing and/or generating RSS/Atom feeds. The author has also put together a tutorial for integrating Feed Tools with Rails.
Very good interview with Guillaume Laforge, Project Manager for Groovy.
Groovy comes into my radar every so often. Usually some comment on a blog makes me check out what's new. Unfortunately I haven't really found a use to use it or a compelling reason to choose it over Jython or Python.
During the interview, he mentions Grails which I'm sure you can figure out what it is. If not, it's a Rails port done in Groovy. It seems to just be some docs on a wiki page now. We'll see about it when the code is there.
As an aside, can we put a moratorium on any project name that's a take off on Rails? This happened in the early days of Java where each project was Jsomething or in Python where it's PySomething. It just gets silly sometimes.
More writing from Leonard. This time, an article on the Cheetah templating system. From the looks of it, it is very similar in syntax and use to Velocity.
Understanding lazy fetching is intrinsic to understanding Hibernate.
Javalobby has a couple of good articles on it: Understanding Lazy Fetching and Tuning Lazy Fetching.
Jim Weirich has posted slides from his two talks at OSCON. Both are extremely informative even with only looking at the slides.
I think the more detail a slide has in a presentation, the better the presentation will be viewed overall. Just giving a base skeleton will not help me when I get back to my office after the conference but details will job my memory.
10 Things Every Java Programmer Should Know about Ruby
Also, check out his post about Thinking in Ruby. He compares the solution of a problem in Java and Ruby.
Lucas Carlson is not impressed by the output of the Y Combinator summer program. From his descriptions of the projects, I don't blame especially in comparison to his entry which was rejected.
Sam Ruby is looking into Rails and Ruby. I think this excerpt gives a great view into how someone with year's of experience in a variety of languages and technologies comes to something new:
For this reason, the first task I take when approaching a new language or framework is to distill down an equally simple example to it’s essence. Only after I ‘grok’ the example, do I then move on to bigger and better things. In this case, that presumably involves splitting the file up into chunks, seeing where the chunks belong, and then adding test cases, function, html pages, etc.
As many have noted today, Google has put together RSS/Atom feeds for news categories as well as search terms.
Digging into the search terms a bit, you can have the feed be sorted by date as opposed to relevance. Do this by adding scoring=d to the parameters for the feed. I think that will be more useful that their grouping of articles.
I do wonder if / when they will put out Atom 1.0 as opposed to 0.3. It's not that big of a deal now but it would be cool to get everyone on the same version. Yes, I understand the irony in saying that when we have multiple RSS version.
Andy Lester gave a talk on project estimation at OSCON. From reading the slides and looking at some blog posts, it was definitely a very practical and useful presentation.
One of the things which I liked was the breaking down of tasks into no bigger than 4 hour chunks. This might seem tough to do but as Andy said you can't estimate accurately beyond 4 hours.
Also, that a task was binary. It was finished or it was still being worked on. There isn't some abstract percentage completed value. I know I've done the percentage game before and it really doesn't help that much. In fact, it generally hurts you because once you've given an initial percentage completed, it is tough to continually figure out how much is left.
Check out the slides [PDF] and some notes...
Russ breaks down the recent moves by AOL and he views them in a very positive light. Personally, I'm bummed about this one:
4) They launched competitive online services such as the My AOL RSS aggregator home page and "AIM Mail". The My AOL page is good looking and functional giving My Yahoo! a real competitor for the first time in a year or so. And though the email is lagging everyone (Y! Mail, GMail, HotMail) it's a core service they now offer and I'm sure updates will be coming quickly.
We should be the ones pushing My Yahoo! and being viewed as a competitor. Unfortunately, we aren't there yet.
Matt Raible offers the things he learned at OSCON this year. I think the last line of his post is most telling:
Ideas, ideas, I have lots of ideas after last week.
That's the way you should come back from a conference. I know I did the last OSCON I went to as well as the various JavaOne's. My current schedule is to attend the No Fluff Just Stuff conference in Chicago next month. I'm looking forward to that quite a bit.
I'll try and update this post throughout the rest of the week as season begins Saturday.
Yahoo! Sports picks Chelsea to win.
ESPNSoccernet's preview has the top 4 spots on the table looking like this, Chelsea, Arsenal, Liverpool and Manchester United.
Good look at why horror stories sometimes get a bad rap from the literary crowd.
Interesting read about how code is or isn't proper Python.
To be Pythonic is to use the Python constructs and datastructures with clean, readable idioms. It is Pythonic is to exploit dynamic typing for instance, and it's definitely not Pythonic to introduce static-type style verbosity into the picture where not needed. To be Pythonic is to avoid surprising experienced Python programmers with unfamiliar ways to accomplish a task.
Jamis introduces SwitchTower, a new system of handling application deployment especially in the Rails world.
So, what is SwitchTower? Well, it’s a lot more than a utility for deploying applications—it basically lets you execute commands on multiple remote servers, in parallel. It also lets you group your servers by role and specify tasks that should only be executed for certain roles. And oh, so much more.
More docs and some additional hooks can be read as well.
A couple of conferences are looking for papers:
O'Reilly's Emerging Technology and the Open Source Database Conference.
I sent in a paper abstract a couple of years ago for ETech and it wasn't accepted. I'm hoping I have better luck this year.
I must have missed it earlier in the week but Derby has graduated from an incubator project to a full-fledged one. I might need to look into a bit for an in-memory test database.
I've been hearing about Django the last few weeks. It's a new web framework written in Python. It was broken out of a few applications which follows the sound advice given by DHH in how he broke Rails out of Basecamp.
Geert Bevin points out jo! a relatively unknown servlet container but one that supports everything you need to help development. It also looks to be embeddable which could be quite useful for application developers.
Some good advice from Michael Gloegl about how best to deal with any issues related to the mapping between Java object and database table.
Some interesting mashups ready for the summer sun. Boing Boing pointed to this a bit ago and I've had it in one of my browser tabs since then. Listening to it has been fun.
I've been lax in my Python blog reading but found this update on SQLObject from Ian Bicking. SQLObject looks pretty cool and very Hibernate-like.
Here's an introductory article written by a former co-worker, Leonard.
Ian Bicking looks at the issues facing centralized and distributed version control and how it relates to open source development.
But more practically, I think distributed systems enable private work in a way that is bad for the community. I think the private workflow so touted by distributed systems is a total non-feature, even an anti-feature. Open source development should happen in the open; that's what people usually want to do, and that's what we should encourage at every opportunity.
I never thought of this in relation to the distributed systems but it is a great point. There is no peer review for a distributed system since everyone has their own and merges happen locally. I wonder if there could be a hybrid approach, something which allows developers to be on their own, yet have their code available for the community.
I didn't realize this series was being written. I need to look into Spring again soon.
I've lost track of what number I should be on in the 52 books challenge but here are a few things I've read over the past couple of weeks. I've been on a crime fiction kick lately which has been an interesting experience. The eyebrow of The Wife has been raised a couple of times based on the titles...
I also have a couple more books from Hard Case Crime in the queue. I couldn't agree more with Lee Goldberg about the coolness of the books.
I really wish I would have been at OSCON but then again, I think I said that last year. Hopefully, next year will be different.
At any rate, I found the writeup for extracting Rails from Basecamp to be very interesting.
To me, this was the most telling quote:
Laying out the framework up front doesn’t work, you must extract it from a working application. There’s no other way.
I can only hope these additions do something to ignite the Cubs. If not, it'll be time to look towards next year.
Matt Raible blogs Dave Thomas's Ruby session at OSCON. Oh it would be fun to be there.
Some excerpts from Ryne Sandberg's induction into the Baseball Hall of Fame:
Make a great play? Act like you've done it before.Get a big hit? Look for the third-base coach and get ready to run the bases.Hit a home run? Put your head down, drop the bat and run around the bases. These guys sitting up here (other Hall of Famers) did not pave the way for the rest of us so the players could swing for the fences every time up and forget how to move a runner over to third.