Friday, October 3. 2008Colorado Software Summit 2008Colorado Software Summit has just posted their daily schedule.
Dave Landers has just posted his reasons why you should attend this conference. If you haven't been before then check out what Dave has to say. If you've been following this blog for any length of time, you'll know how highly I value the Software Summit. If you can only make it to one software conference this year, this is the one you should go to. You'll learn things that will save you an enormous amount of time and you'll meet some of the best people in the industry. Wednesday, October 1. 2008Range bugI appear to have found a bug in ruby - specifically in ruby 1.8.4 (2005-12-24) [i686-darwin8.7.1].
This one has been baffling me for a bit so I figured it was worth posting. Given the following code: def test num You would likely expect that this method would always return true but in fact, it does not. For values of num ranging from 1 to 536870911, it returns true. For values greater than 536870911, it returns false. I thought perhaps that 536870911 is the largest possible value that can be put in a Fixnum and that larger values are converted to BigNum. That might explain a comparison failure but it turns out that a FixNum can hold 1073741823. Now it's interesting that the failure point is exactly half of the biggest value that can be put in a Fixnum but I'm not sure what conclusions we can draw from this. Sunday, September 14. 2008Port Perry Scouting website We put a website up this weekend for Port Perry Scouting using Google Apps to host the domain. I very specifically didn't want to be hand coding a site and didn't want to be spending much money on hosting. Google Apps wasn't the most intuitive but you can't beat the price and it does everything we need.www.PortPerryScouting.com The only gotcha that we hit is that it claimed that PortPerryScouting.org was already taken so we had to end up with the .com. As near as I can tell, nobody actually does have the .org. Thursday, September 4. 2008Ruby on Rails Project NightThe next meeting of the Ruby on Rails Project Night has been announced. This one will be on Friday September 19 to accomodate an out of town speaker. James Robertson will be talking about the Seaside framework which is one of the most interesting things in the web space these days. I've been following James' blog for a long time and expect this to be a very interesting talk.
More details on Corina Newby's blog. Friday, July 25. 2008Usability testing on the cheapIt used to be that proper usability testing required a massive capital investment.
Early in my career, I was lucky enough to work for a company that had made that investment. They had a very expensive usability lab with one-way glass between rooms and cameras to record what the user did. It was always a shock to watch someone try to use your software for the first time. Places where you assumed they'd struggle, they'd just breeze through. Other places where you never anticipated problems, they'd get stuck. The software we built at that company was always better for having been through a round (or sometimes a couple of rounds) of formal usability testing. Now I see that for a mere $50 and the cost of a Mac, you can get almost all the benefit that we used to get from the full usability lab. Times sure have changed. Thursday, July 10. 2008Send Out Cards and Tim HortonsSend Out Cards has the ability to send a gift card inside a greeting card. In the US, the favorite gift card seems to be for Starbucks but that doesn't go over well here in my part of Canada. I can't think of any of my (Canadian) contacts who would want a Starbucks gift card but almost every one of them would appreciate a Tim Hortons gift card. Tim's being the coffee place of choice around here.
Well, I just found out that Send Out Cards has done a deal with Tim Hortons and that effective immediately, I can send a Tim Hortons gift card inside any greeting card. This is very happy news! Monday, June 30. 2008Eclipse GanymedeI've been using Eclipse Ganymede for a couple of days now and here are a couple of first impressions.
Wednesday, June 11. 2008Slides for my Inside Enumerable talkThe slides for the talk I did last night at the Rails Project Night are on SlideShare at http://www.slideshare.net/mbowler/inside-enumerable
Tuesday, June 10. 2008East Side Marios attempting to rebrand themselves?East Side Marios has done a great job of branding in the past. People know exactly what to expect when they eat there and the atmosphere at the restaurants is very consistent with their advertising.
So we were very surprised, and disappointed, to discover that they're changing the "feel" of the restaurant. In the past, they put on a big show for birthdays. All the staff come over to your table and sing and the person celebrating the birthday gets to spin the big wheel and get prizes ranging from free deserts to "Surprise - let's hope it isn't a pie in the face". I got the latter once and while the kids were disappointed, I was glad it was a coffee mug rather than a "pie in the face". Yesterday was my son's birthday and Saturday had been my nieces birthday so we took them both out for dinner at East Side Marios. We took them there specifically because East Sides has always made a big production about birthdays (and we like the food). So we ordered our food and waited for the staff to come over to sing and for them to bring the wheel for spinning. By the time desert arrived, it was obvious that neither one of these was going to happen so we asked our waitress and she explained that they had discontinued both of those. She said that the restaurant was trying to be more upscale now. If you haven't been to an East Side Marios', you may not appreciate how inconsistent this is with their branding. The walls are covered with empty tomato cans and jars of food stuffs and crazy sayings. This has always been a "fun" place to eat, not an "upscale" place. The place is loud, the decor is tacky and it's always a good time. Thinking that perhaps our waitress was new and just didn't understand the whole East Side process, we asked to speak to the manager. The manager then proceeded to tell us that there had been complaints and so they were changing their process. Now this is a franchise and franchises are required to follow the formula provided by head office so I have to assume that this is a change across the entire company. We hadn't come to East Sides for an "upscale" dinner. We'd come for a fun birthday dinner for two kids and they didn't get it. If we'd known in advance about these changes, we would have eaten somewhere else. Friday, May 30. 2008Rails on different Ruby implementationsOne of the big milestones in a ruby implementation is when it's able to first run a simple rails application. Until a couple of weeks ago, there were only two ruby implementations that were able to do this - the C reference implementation (Matz's ruby) and JRuby.
Today, there are four implementations that have hit this milestone. Rubinius and Iron Ruby have both just announced that they're able to run a simple rails app. This is an impressive milestone for both projects - congratulations to everyone working on those. Friday, May 23. 2008Secrets of Mental MathI listened to a truely amazing podcast this morning. Secrets of Mental Math has Arthur Benjamin demonstrating complicated "in his head" calculations in front of a live audience. He then talks about the techniques that he uses in order to do these calculations. Absolutely fascinating!
Wednesday, May 14. 2008TorontoRBIf you're working with ruby in or around Toronto, check out TorontoRB, a new site for the local ruby community.
Monday, May 12. 2008Isolated testsLooking through the rspec documentation, I find this...
This notion that we should isolate every component and test it entirely by itself is something that I've heard over and over again. At one point, I even believed that it was a good idea. Such is the way of an anti-pattern. In the beginning, it usually appears to be a good idea and it's not until you've actually tried it that you start to realize that it might not have been so good. A long time ago, I worked on a project where we followed this practice. Where the only time we touched the database was when we were testing the persistence layer. For each layer above that, we would mock out what came below so that each layer was tested in complete isolation. We had lots of tests and they all passed. So when we showed the application to our client and it started blowing up, we were shocked. We had all kinds of tests! They all passed! How was it possible that anything was breaking? We identified and fixed all those bugs and went back to show the client again. Once again, all our tests passed. Once again, the application blew up over and over again. Looking at all the bugs that had been discovered, we noticed some interesting patterns. All of the bugs that our client was finding were in interactions BETWEEN layers. Each layer by itself was covered by tests and was working fine. The interactions between layers, however, were not being tested in any reasonable way and that's where all the bugs were. I've seen this same idea in many applications. Whenever there is a strong emphasis on testing in isolation, many bugs are hidden until much later in the process. Sometimes not to be found until the application enters production. The solution to this problem is simple. Don't ever assume that your isolated tests are enough. You always have to have tests that pass through all parts of the application. Wednesday, May 7. 2008Slides from my Ruby for Java Programmers talkI've put the slides from last nights talk up on SlideShare. This is the first time I've used SlideShare so if you have any trouble accessing the slides, let me know.
Monday, May 5. 2008Pictures from the Warplane MuseumI've posted photos from our trip to the Warplane Museum. The shot below is the only plane we actually saw flying although about half of the planes are flight-ready. |