For a little while, I’ve been considering the potential impact of generative Artificial Intelligence on various areas of our lives, more recently I’ve had very interesting conversations about applying AI to help the creations of manga/animé. This blurb was writing to help think through the challenges, but why not posting them. Having witnessed the transition from analog to digital, and…
Matt Aimonetti
https://matt.aimonetti.net/ · 231 posts · history since 2007 · active
19 Jan 2024
9 Sept 2020
The collaboration problem: overwriting each other changes In traditional online applications, when you make a modification to the state of the object you work on, the change propagates to a central server that holds the “truth”. The server registers the change and sends back a confirmation that the change was indeed applied. The problem happens when Alice and Bob try…
3 Aug 2020
Last time I used Windows on my main development machine was sometime in the early 2000s. Over the years, I had several side Windows machines (usually because I needed Visual Studio) but I was never really serious about using a PC as my main dev machine. Things have changed a lot in almost 20 years, and especially recently. Apple is…
13 Jul 2020
We’re approaching the first anniversary of when I stepped down from my operating role at Splice. The company kept on growing rapidly and be impactful, I am very proud of what the team is doing to change things from within the music industry. I had a blast during my time off: I worked on a great project with Grimes which…
31 Jan 2020
This week, Chang Xu and I are running our very first Braintrust LA event. While the event is private and we won’t talk about who’s presenting and who’s attending, I wanted to share with you a note we wrote to the attendees. The idea of organizing Braintrust LA came to us when we discussed what we could do to help…
22 Jan 2020
Security, Privacy and Trust will be major themes in 2020. Looking at this arm report, 30% of surveyed folks were more concerned in 2019 over data privacy and security than they were in 2018. Add the elections, legal actions against Google & Facebook, Apple and others pushing for less tracking and safer data and we are going to see a…
15 Jan 2020
Chances are you should instead be investing in data engineering so you can take a deep look at your properly labeled and processed data instead of throwing hundreds of thousands of dollars in Machine Learning (ML). ML isn’t magical, you need a lot of clean, labeled data. Then you need a specific use case to design and deploy a great…
7 Jan 2020
Looking back at the last 10 years, two specific trends are very clear to me, here they are highlighted by Fred Wilson: “The massive experiment in using capital as a moat to build startups into sustainable businesses has now played out and we can call it a failure for the most part.” “The big four tech companies own monopolies or…
21 Aug 2019
In a lot of ways, I owe my professional career to music. If it wasn’t for music, I wouldn’t have learned about samplers, sequencers, MIDI and the crazy world of synthesizers. Those machines led me to computers and computer music which led me to both sound engineering and reverse engineering (RE). RE led me to a social community of hackers…
8 Jul 2019
In the previous article, I explained what data we needed to generate waveforms and showed how to use a BBC Free Open Source Software to generate that data. In this article, I will show how to draw a waveform using Google’s Flutter UI toolkit for mobile, desktop and web. Here is the end result will are going for: You can…
26 Jun 2019
Audio visualization is a fascinating topic. We often take it for granted, but sound isn’t visible and only exists over time. In the case of a video stream, you can pick a frame/image and you have a snapshot of the video at this specific time. But you can’t do that with sound. Sound is the oscillation/vibration of molecules over time,…
2 May 2019
Here’s a very opinionated tour of some of the various technologies available to individuals and companies. This is far from a complete list and the comments are based on my personal opinions which might not match your expectations, values or even experience. This first part will focus on programming languages. Programming languages Safe bets and my preferred languages Go https://golang.org…
23 Jan 2019
Originally posted on Medium Impactful innovation is what Research & Development (R&D) teams around the world are working hard towards. Yet, there don’t seem to be blueprints that are reused and trusted across companies. On one hand, we get very little visibility into this process and on the other, it seems very challenging to define and measure success. I love…
12 Jan 2019
I’ve now been the co-founder and CTO of Splice for almost 6 years. It’s officially the longest place I ever worked at. It’s funny because it does feel like we just started yesterday. I decided to write down some unedited thoughts and share them here. I remembered thinking that I’d love to know what it was really like to be…
2 Jul 2018
I’ve been the CTO of Splice for more than 5 years now, from early prototypes to today’s 100+ employees. When Steve and I started Splice, I never thought we would get this big. What I didn’t know was that one the challenges of being a CTO post product-market fit would be to build internal and external confidence around the engineering…
11 Jul 2017
I’ve seen and been in Research & Development (R&D) teams in the past. Sadly I can’t say any of these teams have been successful making a significant impact on the directions company they were serving took. R&D is often mentioned in the context of the military (in 2015, the US Army’s research, development, testing and evaluation (RDT&E), coupled with procurement…
13 Jun 2017
I don’t really do technical interviews anymore, I am lucky to be able to rely on a great VP of engineering and team that take care of the process. I still meet with the candidates but I do that more as a way for us to get to know each other and to answer their questions from both a CTO…
6 Jun 2017
The primary job of a CTO is to leverage technology to empower the business and the team. Sometimes that means making boring but safe choices, sometimes that means more risky or controversial choices. I am starting a new series to discuss some of the bets we are making at Splice and the thinking behind those choices. Realizing that some of…
12 Apr 2017
I’ve always been fascinated by systems, the way they work, the way you can put them apart and build them back up. Part of this fascination is my insatiable desire to always be learning but also a challenge I like I give myself: can we do better? This fascination is what drove me most of my career. But my focus…
27 Feb 2017
Last Thursday I took a day off and jumped on a bus headed to California City Correctional Center. I was part of a group of investors and entrepreneurs participating in a business pitch competition and graduation ceremony for aspiring entrepreneurs — who also happened to be incarcerated. These ninety-four men had worked for months, taking classes, preparing business plans, and…
27 Sept 2016
In my previous post, I discussed the challenges of growing the engineering team and defining the roles of a CTO vs VP of engineering. A common question that came up is: when is a good time to start looking for a VP of engineering. I am afraid that there isn’t a simple answer but more a mix of a few…
13 Sept 2016
Over the last 3 years I built our startup taking on multiple roles, engineer + VP of engineering + CTO, I’m finally transitioning to being a full time CTO. Funny enough, I kind of always disliked the CTO title. This is probably because this is one of the most poorly defined titles out there. It doesn’t seem to mean anything,…
19 Jul 2016
Go is a modern programming language created at Google. It’s designed to be a very rational (read non-fancy), simple, and fast programming language. It’s quickly becoming one of the key new programming languages due to its familiarity, simplicity, scalability, performance, and approach to concurrency. It’s the common language of modern systems solutions (Docker, Kubernetes, CoreOS, Hashicorp…), many of small and…
27 Jun 2016
I was invited to take part in this year’s Docker keynote to discuss how we use Docker at Splice and how our two companies share the same philosophy. I wrote a summary blog post of my talk. And you can read the official Docker blog post about the keynote Video
18 Jan 2016
Ever since I started Splice, I’ve been really eager to experiment and adapt our process to be able to be as efficient as possible while still pleasant. Setting up a process that works is hard because it depends on the size of your company, the team members and the leadership style. We tried many things as we grew and lots…
15 Dec 2015
Through this post and the following ones, I will do my best to provide you with the basic knowledge you need to understand and implement digital audio signal processing. The idea came from a conversation with my friend Chad Fowler who’s a well-known software developer, leader but also a well accomplished musician. Chad was interested in learning the basics of…
2 Dec 2015
Back in November I was in Paris for dotGo, one of my favorite Golang conferences. I was invited to speak and wanted to share something concrete with the audience, something based on my experience with Go at Splice. Go is designed for simplicity with only one way of doing one thing. That makes preparing talks pretty challenging since a lot…
17 Oct 2015
I chose the beautiful city of Medellin, Colombia to say my final goodbye to the awesome Ruby community. 10 years of being part of a community isn’t nothing and I took time to reflect on my personal experience and discuss the future of the language and its community. Video Slides
2 Sept 2015
Last week, my daughter started Kindergarten. I’m very happy for her, especially because she’s going to an awesome public school. As someone who didn’t grow up in the US, I heard a lot of stories about the American school system but one thing I didn’t know is that kids start so early. My daughter starts at 8:10am! We had to…
3 Mar 2015
I’m very glad to have had the chance to be involved with the very first Go challenge. My challenge is related to something we do at Splice: binary decoding. Read more on the Go Challenge website pattern_1.splice Saved with HW Version: 0.808-alpha Tempo: 120 (0) kick |x---|x---|x---|x---| (1) snare |----|x---|----|x---| (2) clap |----|x-x-|----|----| (3) hh-open |--x-|--x-|x-x-|--x-| (4) hh-close |x---|x---|----|x--x| (5)…
13 Sept 2014
In September 2014, I gave this talk at Baruco in Barcelona, Spain. The talk focuses on: how session authentication works in Ruby on Rails, the crypto used to protect the data, the security implications and how to share the session with applications written in other languages than Ruby (with an example in Go). To illustrate this pretty dry topic, I…
23 Jun 2014
The week of June 23rd was a good week for gophers in San Francisco. Go was a big part of Google I/O on Wednesday and Thursday, and on Monday Google run a Go SummerFest, a special instance of the GoSF meetup. I gave a talk at Go SummerFest and then later on another one during I/O. For more information about…
28 Apr 2014
Go aka golang is an amazing language but also a language that is really easy to learn due to its small scope. If you have some coding experience, you will be able to have fully working code in a matter of minutes otherwise you might want to read my free book (WIP). Very much like with many other programming languages,…
31 Dec 2013
I like to read and I have a great community on Twitter so I asked them what they think others and myself should read in 2014. Here is the compiled list of the recommended books. The good news is that most of these books are under $10, so why not picking a couple for the new year? A big thanks…
30 Nov 2013
I wanted to share sessions between my Rails and Go applications. I wanted to let an authenticated Rails user make JavaScript API calls to an endpoint written in Go. How hard could it be? Since I own both apps, I thought it would be as simple as sharing the secret session key and re-implementing Rails crypto process in Go. It…
14 Oct 2013
I just give a talk at Wicked Good Ruby Conf in Boston. I’m sure the talk will be online soon, but I figured it would be interesting to discuss it a bit further in a blog post. The format was a bit different than usual, I had a 40 minute slot and divided in 2, I made my points for…
27 Aug 2013
Over the years many people have asked me the same question: I’m starting this new project, what technology do you think I should use? Categories = [] +++ Update: Speaking of HN, here is the thread for this post
1 Jul 2013
The Go language is one of my favorite programming languages. However, sometimes doing simple things can seem a bit harder than it should. However, most of the time, the problem is just to find out how to do things the easy way. While Go’s documention isn’t bad, the real key to finding out how to do things is often to…
26 Jun 2013
Engineers love to improve things. Refactoring and optimizations drive us. There is just a slight problem: we often do that in a vacuum. Before optimizing, we need to measure. Without a solid baseline, how can you say that the time you invested in making things better wasn’t a total waste? True refactoring is done with a solid test suite in…
23 Jun 2013
A few days ago, I was wondering if using Go would be worth it when developing new web APIs. I obviously knew that Go would be faster than Ruby, but I wasn’t sure how much faster. I also wondering about the amount of work required to write get a full API implemented. I therefore wrote the same web API in…
5 Mar 2013
Ruby 2.0 has a cool new feature that many people talk about: TracePoint. TracePoint essentially allows you to hook into Ruby’s events and listen for events. Being curious and since I just started a brand new Rails 4/Ruby 2 app, I decided to write a little middleware and see what Rails is up to when handling incoming requests. Here is…
30 Jan 2013
Today I struggled to get OmniAuth and Google apps to work properly together. I just wanted to add authentication to my application and restrict access to only my Google Apps domain users. I was hoping it would be straight forward since I could use Google’s OpenID service. Turns out it wasn’t that hard, but the lack of documentation made me…
27 Nov 2012
The structure of a programming language reflects the challenges and solutions the designers decided to address. Each designer coming with his/her own background decides to tackle some specific issues in a novel way and/or often decides to borrow existing paradigms from other languages. We can’t, then, fairly judge a language without understanding what problem the language designer was trying to…
14 Nov 2012
If you are currently a software engineer you need to realize two things: Now is an awesome time to be a software engineer (probably the best time ever). Your job might not be well suited for you. I’ll show you why we are lucky bastards, why we aren’t so good at picking the right jobs and some hints on how…
2 Nov 2012
During RubyConf 2012 in Denver, Colorado Matt Aimonetti gave a talk entitled Ruby Vs. The World. ##Description of the talk: Ruby is an awesome programming language, it’s so pleasing you probably haven’t seriously looked at other languages since you switched. The programming world is evolving fast, new languages are created daily, new trends are emerging. Let’s take some time to…
9 Oct 2012
During Aloha RubyConf 2012 in Honolulu, Hawaii Matt Aimonetti gave a talk entitled mmm..mruby or why yet another Ruby implementation. ##Description of the talk: mruby is Matz’ new Ruby implementation, it’s not cooler than node.js, it doesn’t natively support Hypstermedia, it looks just like the good old Ruby. So why should we, as a community care? Matt’s talk is divided…
5 Oct 2012
During PulsoConf 2012 in Bogotá, Colombia Matt Aimonetti gave a talk entitled Tower of Babel: a tour of programming languages. ##Description of the talk: Programming languages affect the way one looks and solves problems. But comparing programming languages isn’t as simple as drawing a table comparing features. In his talk, Matt shows what he likes, dislikes, the philosophy and concrete…
20 Sept 2012
Scala is a very interesting programming language. It has for goal to provide both Object Oriented and Functional Programming paradigms. Now Scala isn’t the only recent programming language out there mixing the two paradigms. Ruby, JavaScript and Clojure are other examples of popular languages implementing both functional and OO programming patterns. Of course, they each have a different take on…
30 Jul 2012
When you first get started with the Ruby programming and you come from a different language, the only tricky piece is often Ruby’s approach to block/closure/anonymous functions. Sure the metaprogramming seems a bit odd, but you don’t have to use it. That’s why a lot of developers think that Ruby is a simple language. Turns out that when you dig…
28 Jul 2012
Have you ever wondered what the differences are between #dup and #clone in Ruby? They both create a shallow copy of an object (meaning that they don’t copy the objects that might be referenced within the copied object). However, #clone does two things that #dup doesn’t: copy the singleton class of the copied object maintain the frozen status of the…
13 Jun 2012
While it’s true that there are still a lot of places where software isn’t leveraged and many places where software needs to evolve, software is nearly everywhere!. The type of software we write today needs to interact with other software via some sort of network. Any web developer out there is used to that, (s)he writes software that runs on…
4 May 2012
Yesterday, RubyMotion was released and let’s be honest, it is one the best alternatives to Objective-C out there (if not the best). RubyMotion is a commercial, proprietary fork of MacRuby that targets iOS. This is not a small achievement, MacRuby relies on Objective C’s Garbage Collector (libauto) which is not available on iOS. Static compilation and new memory management solution…
25 Apr 2012
mruby is the latest Ruby implementation in an already quite long list: MRI REE JRuby Rubinius MacRuby Maglev IronRuby And many other less known implementations. This time, the main man behind the project is the Ruby creator himself: Yukihiro ‘Matz’ Matsumoto. I already covered the announcement, you can read more about it there. Why mruby? Following my previous article on…
20 Apr 2012
Today, two big Ruby news came directly from Japan: The Open Source release of Matz' mruby on GitHub. The announce of MobiRuby, an upcoming solution to develop iOS and Android applications using Ruby. Probably due to my involvement with the MacRuby project, people have been asking me what I thought of these news. mruby mruby is far from being a…
4 Apr 2012
Most modern web applications start as a monolithic code base and, as complexity increases, the once small app gets split apart into many “modules”. In other cases, engineers opt for a SOA design approach from the beginning. One way or another, we start running multiple separate applications that need to interact seamlessly. My goal will be to describe some of…
29 Feb 2012
Ruby on Rails undisputedly changed the way web frameworks are designed. Rails became a reference when it comes to leveraging conventions, easy baked in feature set and a rich ecosystem. However, I think that Rails did and still does a lot of things pretty poorly. By writing this post, I’m not trying to denigrate Rails, there are many other people…
23 Feb 2012
Yesterday I did some quick digging into how ORM objects are initialized and the performance cost associated to that. In other words, I wanted to see what’s going on when you initialize an ActiveRecord object. Before I show you the benchmark numbers and you jump to conclusions, it’s important to realize that in the grand scheme of things, the performance…
4 Feb 2012
During LA RubyConf 2012 in Los Angeles, CA Matt Aimonetti gave a talk entitled Ruby: time to move on. ##Description of the talk: Let’s be honest, Ruby became mainstream a few years back and it isn’t the cool underground programming language it once was. It’s quite likely that your cousin’s boyfriend who’s “into computers" knows what Ruby on Rails is.…
30 Dec 2011
Today, I asked on Twitter what non-technical books I should read in 2012. I was nicely surprised to see so many of my followers send recommendations. Here is a list of 25 books that like-minded people suggested I read. Hopefully you will find a book or two to read too. Feel free to send more recommendations via the comments. 1Q84…
21 Dec 2011
Recently I asked a friend of mine to give me pointers on how to develop a curriculum (he used to teach an education PHD program), after discussing his response on Twitter, people asked me to put it somewhere, so here it is: Process to develop a curriculum: Purpose. Know why you’re doing what you’re doing. You know how to do…
8 Nov 2011
During RubyConf Argentina 2011 in Buenos Aires, Argentina Matt Aimonetti gave a talk entitled Inside Ruby: concurrency & garbage collection explained. ##Description of the talk: Concurrency in Ruby and Python implementations is quite a hot topic nowadays. In this talk, Matt will explain how concurrency works for a language that uses a Global Interpreter Lock and it means concretely. Finally…
18 Oct 2011
After my recent RubyConf talk and follow up post addressing the Ruby & Python’s Global Interpreter Lock (aka GVL/Global VM Lock). a lot of people asked me to explain what I meant by “data safety”. While my point isn’t to defend one approach or the other, I spent a lot of time explaining why C Ruby and C Python use…
11 Oct 2011
I decided to save myself a session to the shrink and instead just write down my reflection on management. Who knows, some of you might help me and/or challenge my thought process. I recently read a great management book called the five dysfunctions of a team by Patrick Lencioni . Instead of telling you what to do, the author highlights…
3 Oct 2011
During RubyConf 2011, concurrency was a really hot topic. This is not a new issue, and the JRuby team has been talking about true concurrency for quite a while . The Global Interpreter Lock has also been in a subject alot of discussions in the Python community and it’s not surprising that the Ruby community experiences the same debates since…
1 Oct 2011
During RubyConf 2011 in New Orleans, LA Matt Aimonetti gave a talk entitled Complex Ruby concepts simplified. ##Description of the talk: Programming languages, such as Ruby, are natural and elegant. But to achieve this elegance, things have to happen under the hood. Garbage Collection, concurrency, Global Interpreter Lock, metaprogramming, C extensions are just some of the things happening with or…
14 Sept 2011
In some cases, you might have a bunch of apps running on different domains/subdomains and/or ports and you would like to make ajax requests between these services. The problem is that browsers wouldn’t let you make such requests because of the Same Origin Policy which only allowed them to make request to resources within the same domain. However, most browsers…
5 Sept 2011
Recently I wrote a small DSL that allows the user to define some code that then gets executed later on and in different contexts. Imagine something like Sinatra where each route action is defined in a block and then executed in context of an incoming request. The challenge is that blocks come with their context and you can’t execute a…
30 Aug 2011
Recently I had to build a new app as part of my research & development job at LivingSocial. My goal was to get the app up and running in just a few weeks, solid application architecture and graphic design included. When you need to build an app quickly and you want it to have some solid foundations, Rails is quite…
11 Jul 2011
Today my friend Patrick Crowley and I were talking about scaling his website: https://cinematreasures.org since an article covering his work will soon be published in a very popular newspaper. Patrick’s site is hosted on Heroku which comes by default with Varnish caching enabled. The challenge is that a lot of people using the Rails framework are used to doing page…
27 Jun 2011
Note: This was one of my first blog posts on Go and well, I won’t make any excuses, it’s pretty terrible. It’s a good example of what not to do, that is, trying to force the concepts of a different language (in this case Ruby) to Go. I almost never use reflection and the following code is the kind of…
10 Jun 2011
It’s now official, I have resigned from Sony Computer Entertainment America. I was planning on posting this a bit later but since I was politely escorted out of the building by HR/security, I have more free time to let you know of my decision. Before you ask: No, my decision isn’t directly related to the recent PSN/Sony security breach events…
14 Apr 2011
In this post I will do my best to explain why and how I reinvented the wheel and wrote a custom web framework for some of Sony’s AAA console titles. My goal is to reflect on my work by walking you through the design process and some of the implementation decisions. This is not about being right or being wrong,…
7 Mar 2011
My name is Matt Aimonetti, and in my free time I work on Apple’s open source Ruby implementation named MacRuby. I’m also the author of O’Reilly’s MacRuby book. As you can imagine, I’m very thankful that Apple initiated the MacRuby project a few years ago and have been an avid supporter. MacRuby is awesome to develop OS X native applications…
22 Feb 2011
Concurrency is certainly not a new problem but it’s getting more and more attention as machines start having more than 1 core, that web traffic increases drastically and that some new technologies show up saying that they are better because they handle concurrency better. If that helps, think of concurrency as multitasking. When people say that they want concurrency, they…
19 Feb 2011
Today I was helping someone write an Objective-C framework around cocos2d. C/Objective-C code can be called directly from MacRuby. However the Obj-C code you would like to use might be using some ANSI C symbols that are non-object-oriented items such as constants, enumerations, structures, and functions. To make these items available to our MacRuby code, you need to generate a…
31 Jan 2011
Designing beautiful and scalable software is hard. Really hard. It’s hard for many reasons. But what makes it even harder is that software scalability is a relatively new challenge, something only really done in big companies, companies that are not really keen on sharing their knowledge. The amount of academic work done on software design is quite limited compared to…
18 Jan 2011
Part of my job at Sony PlayStation is to architect scalable systems which can handle a horde of excited players eager to be the first to play the latest awesome game and who would play for 14-24 hours straight. In other words, I need to make sure a system can “scale”. In my case, a scalable system is a system…
15 Jan 2011
12 Nov 2010
##Description of the talk: This year I gave the traditional Apple’s MacRuby talk at RubyConf. My presentation focused on 2 axis: What’s new since last RubyConf Show some examples of how fun it is to hack with MacRuby ##Video {% video https://cdn.confreaks.com/system/assets/datas/768/original/448-rubyconf2010-macruby-why-and-how-small.mp4 640 360 /images/matt_aimonetti_rubyconf2010.jpeg %} Other video formats are available here ##Slides Presentation slides available on Speakerdeck ##Details of…
19 Oct 2010
I was working on a piece of code using MacRuby, Webkit and JavaScript. Calling JS from MacRuby is really straight forward but calling Ruby from JS is a but tricky. There is actually a known bug in MacRuby which was giving me a hard time. The bug should be fixed in 0.8 if everything goes according to plan. In the…
27 Sept 2010
I wrote a guest blog post for Satish Talim over at RubyLearning.org You can read it there.
22 Aug 2010
For the past 6 months, I have had regular discussions with an experienced Java developers who switched to Ruby a couple years ago. Names have been changed to protect the guilty but to help you understand my friend ‘Duke’ better, you need to know that he has been a developer for 10 years and lead many complicated, high traffic projects.…
29 Jul 2010
Recently I was tasked with finding how to optimize a web application with heavy traffic. The application (a Rails 2.3.x app) gets about 3 million requests per hour and most of these requests cannot really be easily cached so they go through the entire stack. This is probably not the case of most web apps out there. None the less,…
4 Jun 2010
Time really flies! Back in December 2005, Ruby on Rails 1.0 was released to the masses. I remember that was when I first got interested in Rails. Six months later, I was doing Rails development full time. Rails pushed me to contribute to the project, to write plugins, to improve my Ruby knowledge, to release gems and to become a…
9 May 2010
To celebrate last week’s release of MacRuby 0.6, O’Reilly and I started publishing the draft of my MacRuby book online: https://macruby.labs.oreilly.com/ I started thinking about working on “MacRuby: The Definitive Guide” last year when I realized that the project had a great future but there was a serious lack of documentation. With the support of the MacRuby team, I worked…
11 Apr 2010
During ConFoo Canada 2010 in Montreal, Canada Matt Aimonetti gave a talk entitled {{ Apple’s Ruby: MacRuby }}. ##Description of the talk: For many years, Apple has been shipping its OS with Ruby. But starting about two years ago, Apple started developing their own Ruby implementation on top of Objective-C runtime for performance and compatibility reasons. A developer can already…
During ConFoo Canada 2010 in Montreal, Canada Matt Aimonetti gave a talk entitled Rails for the non Ruby developers. ##Description of the talk: Unless you have been living on a different planet for the last few years, you have more than likely heard of Ruby on Rails. You have probably heard good and bad things about it, and might even…
15 Mar 2010
The Ruby community is a well known for at least two things: **being passionate and being **arrogant . Two characteristics that often go together but I am not going to defend or justify anything in this post, instead I will try to reflect on my own experience and will share with you my own view point. Very much like the…
22 Feb 2010
At work, we have an XML API that gets quite a lot of traffic. Last week I looked into improving its performance since we are expecting more traffic soon and want to make sure our response time is optimized. My first thought was to make sure we had an optimized ActiveSupport’s xmlmini backend. Rails 2.3.5 fixed some issues when using…
3 Feb 2010
To celebrate the relaunch of this site and since we are waiting for Rails 3.0 beta to be released, I figured I should share with you what I worked on the other night. I merged patches, refactored and released a new version of googlecharts, my Gem to create graphs using Google Chart API. sudo gem install googlecharts Here is a…
2 Feb 2010
It is now official: I have traded my freedom & home office for a job title, an Aeron chair in a cubicle and a 401K. I received my new employee package and, in less than a week, I will officially become a full-time employee at SCEA (Sony Computer Entertainment America). I’m going to work in the PlayStation department, working on…
31 Jan 2010
After going through two betas, MacRuby 0.5 final is now released and can be downloaded by clicking on the icon below: MacRuby 0.5 Don’t worry about having MacRuby and Ruby 1.8.x or 1.9 installed, MacRuby is namespaced and won’t affect your current Ruby installations, just download and launch the installer. (Note: The build was compiled for SnowLeopard only) You can…
18 Jan 2010
Over the weekend, MacRuby’s trunk became version 0.6 and the bug fixing is currently done in both the 0.5 branch and trunk. Based on MacRuby’s usual release cycle I would expect a 0.5 beta3 or 0.5 final to be released soon so most of the work can be focused on trunk. I’ll let you check on the TODO list to…
17 Jan 2010
Since Mac OS X v10.5, Apple added a technology called Scripting Bridge which allows to control and communicate with scriptable applications such as Mail, iChat or iTunes. A few weeks back, I showed how to control iChat with MacRuby. This time I’m going to show you how to control iTunes. Here is a small script that I wrote to wake…
5 Jan 2010
For Noël, my wife got me a new toy: the Amazon Kindle 2. Kindle vs Nook Before my wife bought what became my new favorite gadget, we checked on the Barnes & Noble Nook. The primary problem with the Nook was that it was out of stock. That pushed me to dig deeper and really compare both devices. The Nook…
31 Dec 2009
Here is the geekiest way I found to wish Happy New Year to my IM contacts: framework 'ScriptingBridge' app = SBApplication.applicationWithBundleIdentifier("com.apple.iChat") original_status = app.statusMessage new_year = Time.mktime(2010, 1, 1, 0, 0) loop do now = Time.now time_left = (new_year - now).ceil if time_left > 0 app.statusMessage = "#{time_left} seconds left until 2010 (EST)" else app.statusMessage = "Happy New Year 2010!"…
29 Dec 2009
To be ready for 2010, I’m taking some time off relaxing and spending time with my family in Florida. During my free time, I’ve been reading, catching up on movies and TV shows and worked on the MacRuby book that I am writing for O’Reilly. I wrote a bunch of small apps, played with various APIs and every single time…
30 Nov 2009
If you were at RubyConf 2009 or looked at the schedule, you saw that the big thing happening in the Ruby scene is the maturation of a many of the Ruby implementations: BlueRuby, HotRuby, IronRuby, JRuby, MacRuby, Maglev, MRI, REE, Rubinius, SmallRuby… Ruby developers really have plenty of choice when it comes to choosing an alternative Ruby implementation. Is that…
21 Nov 2009
During RubyConf 2009 in San Francisco, CA Matt Aimonetti gave a talk entitled Writing 2D games for the OSX platform in Ruby. ##Description of the talk: Are you a developer who would love to get into video games but get scared when he hears “OpenGL” or “rendering engines”? Or Maybe, you never considered writing a video game because you have…
16 Nov 2009
[caption id=“attachment_638” align=“alignright” width=“300” caption=“Mohandas Karamchand Gandhi”][/caption] My recent ‘Ruby revolution being over’ blog post generated quite a lot of comments. Let’s be honest, I did not expect less from the readers. However, I noticed three types of reactions I would like to address: It was not a Ruby revolution, it was a Rails revolution The revolution has stalled due…
9 Nov 2009
According to wikipedia, a revolution (from the latin revolutio, “a turn around”) is a fundamental change in power or organizational structures that takes place in a relatively short period of time. Somehow, I believe this is exactly what Ruby has done in the programming world, especially with the help of Rails. Over the last few years, Ruby lead a mini…
25 Oct 2009
This is yet another pretty simple tip. Use case: let say you want your applications users to choose one or multiple files or folder on their file system. A good example would be that you want the user to choose a file to process or a folder where to save some data. In the example above, I added a browse…
23 Oct 2009
During Rails Summit2009 in São Paulo, Brazil Matt Aimonetti gave a talk entitled The future of Ruby and Rails. ##Description of the talk: Plans for Rails 3 and tour of the various Ruby implementations. ##Slides ##Video The video of this talk is available here. ##Blog post I have had the opportunity to go to and speak at many conferences but…
9 Oct 2009
If you are writing any type of games you might want your users to interact with your application using their keyboards. This is actually not that hard. The approach is simple and fast forward if you are used to Cocoa. Everything starts in Interface Builder, add a custom view instance to your window. Now switch to your project and a…
7 Oct 2009
Good news everyone! MacRuby beta 1 has been released! Official announcement here. [caption id="" align=“aligncenter” width=“144” caption=“Download MacRuby 0.5 beta1”][/caption] Note that the download is only for SnowLeopard, intel machines. Lots of great stuff in this new release, the first one based on LLVM. Check the Laurent’s post to learn more about the work done on compilation, optimization, concurrency, compatibility…
6 Oct 2009
Let say you want to release your MacRuby app and use a custom embedded font? You probably don’t want to force your users to install the font. Well, don’t worry, just put the font file in your resources folder and use the following code: font_location = NSBundle.mainBundle.pathForResource('MyCustomFont', ofType: 'ttf') font_url = NSURL.fileURLWithPath(font_location) # in MacRuby, always make sure that cocoa…
Let’s say you would like to play an audio file in your MacRuby app/script, how would you do? It’s actually pretty simple, you just need to use NSSound. If we wanted to use a system sound we could do: NSSound.soundNamed('Basso').play But let’s look at a more advanced example with some Cocoa patterns. We will loop through all the audio files…
5 Oct 2009
Laurent just posted a MacRuby status update on the mailing list and the first official beta of MacRuby 0.5 should be released pretty soon. Let’s quickly look at Laurent’s report: Early backtracing support. Much better AOT compilation. Parts of the standard library are now pre-compiled for testing. Migrated to LLVM top of tree. Dispatcher performance is now back to normal…
30 Aug 2009
I had people asking me how come I was not blogging as much lately. Well, on top of being really busy, I have been blogging on other blogs such as the official Rails blog. There aren’t a lot of Merb news, we are waiting for Carl and Yehuda to sign out on the 1.1 release and will hopefully soon start…
27 Jul 2009
Over the weekend, I spent some time working on a Ruby + Rack +CouchDB project. Three technologies that I know quite well but that I never put to work together at the same time, at least not directly. Let’s call this Part I. Before we get started, let me introduce each component: Ruby : if you are reading this blog,…
13 Jul 2009
CouchDB is an awesome technology. I’m lucky enough to work on quite a big project where we decided to switch from MySQL to Couch for various reasons. One of the many things I like with Couch is that it handles attachments and can replicate them as well as serve them for you using the Erlang based builtin webserver. (you can…
12 Jul 2009
To celebrate the amazing work being done by Laurent Sansonetti on MacRuby here is a hello world using the new LLVM based compiler. $ echo "p ARGV.join(' ').upcase" > hello_world.rb $ macrubyc hello_world.rb -o macruby_says $ ./macruby_says hello world "HELLO WORLD" Note that to achieve this result, you need to be using the experimental branch of MacRuby and have LLVM…
27 May 2009
What’s MacRuby? MacRuby is an Apple-sponsored, open source, full Ruby implementation on top of Objective-C runtime. In other words, whatever code runs on Ruby 1.9, should/will run on MacRuby. Yes, you read correctly, MacRuby can/will be able to run all your Ruby code. That means that eventually you will even be able to run your Rails/Sinatra/new-sexy-ruby-framework app on MacRuby. Unlike…
17 May 2009
The other night, during our monthly SDRuby meetup, lots of people were very interested in learning more about CouchDB and Ruby. I tried to show what Couch was all about but I didn’t have time to show how to use CouchDB with Ruby. Here is me trying to do that in 10 minutes or less. I’ll assume you don’t have…
8 May 2009
During RailsConf 2009 in Las Vegas, Nevada Matt Aimonetti gave a talk entitled Rails 3: Stepping off of the golden path. ##Description of the talk: Back in December 2008, the Rails and Merb core teams surprised everybody by deciding to merge their teams and focus their energy on a common release: Rails 3.0. On one hand, Rails is famous for…
14 Apr 2009
We made the decision to slightly delay the release of Merb 1.1 as we ended up changing the scope of what we wanted to make available in the 1.1 release. If you have been following our releases, you know that this is not something we usually do, but we strongly believe that this is actually something that will save us…
31 Mar 2009
Following the DataMapper 0.9.11 release, we just pushed a new minor Merb release. This release is mainly targeting new developers and Windows users wanting to install the full Merb stack. Others can simply update their dependencies if they use the dependencies.rb file or install the new gems if nothing is bundled and no hard dependencies are set. Merb is a…
18 Mar 2009
We just pushed a really tiny update because of a bug in 1.0.9 affecting people using: Merb::Config[:max_memory] Merb::Config[:max_memory] has been fixed and now polls for memory usage every 30s instead of 0.25s. (memory is set in KB) This new version also uses DataMapper.repository instead of Kernel#repository (DM and Vlad related bug fix) We are still on schedule for Merb 1.1…
2 Mar 2009
Yesterday, Carl Lerche, Yehuda Katz and myself had a meeting to discuss Merb 1.1’s roadmap. Key items on the agenda were: Ruby 1.9 Mountable apps migration path to Rails3 After spending some time arguing back and forth, we decided that few things had to happen before we could migrate the current slices to pure mountable apps. Freezing the releases while…
6 Feb 2009
As they say: fail early, fail often. Well, I’ve been failing to blog recently, but as always I have some good excuses ;) Yehuda has been blogging a lot about the work done on the merge. I have been busy working on probably the awesomest CouchDB Ruby DSL/ORM. I have been working with the Rails Activists on the new wiki…
13 Jan 2009
Lately, I have been really busy with my business, an upcoming training and some non rails-merb related experimentations. (I’m learning objective-c and playing with macruby) However, here are some of the latest news: Merb 1.0.8 should be released soon with some bug fixes and some improvements The Merb book got 2 new sections, Sequel and Active Record. I’ll be spending…
6 Jan 2009
Meet today’s merbist: Hampton Catlin I’m personally looking forward to seeing Hampton’s work migrated to Rails 3 in a few months. Matt Aimonetti: Hi Hampton, could you please introduce yourself and tell us what you do for a living. **Hampton Catlin: **I’m Hampton Catlin. I’m “The Haml Guy” as I’m apparently termed all the time when introduced. I’m an early…
5 Jan 2009
Today is Monday. I usually don’t like Mondays. Being Monday goes with waking up early, going back to work, and lots of deadlines. However, today is a special Monday. It’s the first Monday of the year and I have a special announcement! During the Rails/Merb merge announcement, it was mentioned that I will be joining the soon to be created…
29 Dec 2008
Foy Savas, author or the “merb way” wrote a very well written post on “Rails monoculture” Pat Eyler, wrote an article asking if Rails and Merb would be better together. Ben Aldred, tell people to stop worrying and start loving Rails 3. fotonauts.com a Rails and Merb Photo website developed by an ex-apple team, was featured in TechCrunch. Fotonauts is…
25 Dec 2008
December 23, 2008, was an important day for the Ruby community. People who used to argue and not get along, have decided to sit down, talk and evaluate their differences. The end result is a strong collaboration of two teams who share the exact same goal. Overall, the news was very well received, just look at the tweets out there…
24 Dec 2008
This is huge! While people still try to find some drama an in hypothetical war between rails and merb. The Rails team and the Merb team announced working together on a joined version of the 2 frameworks. This is so exciting, nobody believed it could ever happen (I personally, had my serious doubt). Yehuda had a great post laying down…
23 Dec 2008
This is huge! While people still try to find some drama in a hypothetical war between Rails and merb … The Rails team and the Merb team announced today that they will work together on a joined version of the 2 frameworks. This is so exciting! Nobody believed it could ever happen (I personally, seriously had my doubt). Yehuda had…
20 Dec 2008
Today I’m interviewing Jason Seifer known for the funny envyads and the weekly RailsEnvy podcast. Matt Aimonetti: Hi Jason, could you please introduce yourself and tell us what you do for a living? Jason Seifer: My name is Jason Seifer and I do mostly web development for a living along with podcasting and screencasting. Matt Aimonetti: How did you get…
18 Dec 2008
Today, Andy Delcambre is our featured merbist. Matt Aimonetti: Could you please introduce yourself and tell us what you do for a living. Andy Delcambre: My name is Andy Delcambre and I work for Engine Yard (https://engineyard.com) as a Software Engineer. I work primarily on internal and customer facing projects. These projects are almost exclusively written in Merb. At Engine…
17 Dec 2008
](https://loriholden.com/) Today, I’m interviewing Lori Holden from YellowPages.com/AT&T Interactive. I met Lori on IRC a bit before MerbCamp 2008 where she gave a very interesting talk on Sequel. Matt Aimonetti Hi Lori, could you please introduce yourself and the company you work for? Lori Holden: Hi Matt, my name is Lori Holden. I originally became interested in software development when…
15 Dec 2008
Today, I’m starting a new series called meet the the merbists. My goal is to feature various people from our community and ask them a few questions about Ruby, Merb and their projects. Let’s get started with Derek Neighbors from Integrum. Matt Aimonetti: Hi Derek, could you please introduce yourself and the company you work for? Derek Neighbors: I am…
11 Dec 2008
I hear a lot of people asking for better Merb documentation as they are learning Merb. I remember struggling with the very same problem when I started using Rails a few years ago. The good news is that the core team is working hard on improving the state of documentation. You have the Merb Book on which I am actively…
8 Dec 2008
3 days ago, I announced the Merb Open Source Book project. I expected that few people would be interested as we heard complaints about the lack of documentation. What I did not expect, was more than 60 emails and pull requests in 2 days, people committing pages of content, fixes and offering their services to translate the book. The mailing…
4 Dec 2008
Here is a graph representing the growth of of web searches related to the programming category. This is not a comparison of the amount of searches made. We can see a huge peak around the time Merb 1.0 got released. More and more people are looking for information about what’s already being called the “Ruby web framework for the enterprise”.…
2 Dec 2008
[caption id="" align=“alignright” width=“240” caption=“Love is in the air”][/caption] Yes, it is true and no, I am not being passive aggressive or cynical. As you might have heard there has been some tension between the Rails team and the Merb team in the last few weeks. Sometimes caused by us, sometimes caused by them. I already addressed this issue in…
30 Nov 2008
Wow, It’s been two weeks since my last post. I’m really sorry about that but at the same time, I really enjoyed Qcon and Thanksgiving which did not give me much time to work on a blog post. [caption id=“attachment_291” align=“alignleft” width=“200” caption=“Mr Bean vs X-mas turkey”][/caption] Thanksgiving is a big thing in America, and after few years I got…
16 Nov 2008
I’ll try to keep the community posted on the latest merb news. Feel free to email me if you want me to feature your app, plugin, tool or blog post. Quality time with Yukihiro Matsumoto (ã¾ã¤ã‚‚ã¨ã‚†ãã²ã‚) aka Matz, Ruby author Hack time with Aaron Paterson (Nokogiri) and Bryan Helmkamp (Webrat) Merb presentation at ORUG RailsCamp Australia Rails podcast Rails vs…
14 Nov 2008
 As you must know by now, last week,Merb 1.0 got released. Because we wanted to assure the release was fine, we asked Engine Yard, Apple and YellowPages.com to help us by hiring the NSA to monitor Merb users. After all, we need to know what people complain about so we can fix it ASAP. Turns out all the echelon…
9 Nov 2008
Japanese translation On November 7, Yehuda Katz gave a talk at RubyConf and made 3 major announcements: Engine Yard to offer Merb support m|a agile to offer professional training Merb 1.0 released! The first announcement is pretty substantial. Engine Yard has been financially supporting Merb by letting some of their staff work on Merb, fly them to different conferences and…
3 Nov 2008
As you might have noticed, we’ve been pushing a lot of Release Candidates out the door. The reason is that we want to make sure 1.0 is really ready for showtime! We are also getting a lot of bug reports that help us focusing on the main issues. Today RC5 was pushed to a RubyForge mirror close to you and…
29 Oct 2008
Yesterday, Yehuda Katz annouced Merb 1.0 RC3 released and today we re released the same version with a hotfix (some dependencies got broken). Here is a quick sum up: improved the testing framework with full webrat integration. merb-action-args works with ParseTree 2.x and 3.x. improved merb-auth dependency “parse_treeâ€, :require_as => “ParseTree†{ # do stuff after the gem is loaded…
27 Oct 2008
Mislav & Pjhyett’s will_paginate plugin has been a reference in the Rails world for a little while now. The need for Pagination is arguable, but that’s not the point of this post. There are few existing pagination solutions for Merb, but people moving from Rails and porting a Rails app will be happy to hear that will_paginate is now Merb…
21 Oct 2008
As I’m writing this post, Merb 1.0 RC2 (v0.9.10) is being propagated through all the RubyForge mirrors. $ sudo gem install merb will install/update Merb Stack. Merb stack is a meta-gem/package installing all the gems you need to get started (including merb-core, merb-more, datamapper and sqlite3 driver) The main focus for this release was to fix bugs and make the…
16 Oct 2008
1.0RC1 was released less than a week ago and we are already planning to release RC2 next week or so. Thanks to all the contributors who reported RC1 bugs and submitted patches. RC2 should iron out most of the small bugs and annoyances encountered. [caption id="" align=“alignright” width=“180” caption=“Rosemary has a very old reputation for improving memory."][/caption] However, RC2 top…
I’ve been following what people say on twitter about Merb. I simply used twitter search engine. Because I only have a private twitter account I can’t reply to everyone. freels: I keep expecting merb to have a view helper for random things… @freels, feel free to let us know about the view helpers you miss. We might not be able…
13 Oct 2008
Few hours ago we finally pushed Merb 1.0 RC1 to rubyforge. RC stands for Release Candidate. And we will need your help to make a rock solid 1.0 final. For the occasion, we switched to our new wiki. Installing Merb stack is now dead easy: $ sudo gem install merb Here is a tutorial to get you started with Merb…
Tonight, the core team members present during MerbCamp got together at my place to prepare and release 1.0 RC1. The problem is that we spent more time joking, laughing and arguing about the new git system that we didn’t feel right about pushing a release at 4am :( The git -core and -more repos got merged into a centralized repo.…
11 Oct 2008
[caption id="" align=“alignright” width=“240” caption=“MerbCamp registration by Andy Delcambre”][/caption] Day 1 went very fast. The day started with a Keynote from Ezra Zygmuntowicz, author of Merb. Ezra covered the past and present of Merb and introduced Nanite: self assembling cluster of ruby processes. (Carl Lerche) introduced the awesomeness brought to you by the new router. Daniel Neighman introduced Merb’s slice…
A real quick post to let people know that MerbCamp just started. If you couldn’t make it to San Diego, you can follow live. (For FREE) [caption id="" align=“alignright” width=“160” caption=“Ezra during his Keynote”][/caption] Merb 1.0 RC should be released tomorrow with a new option to get started with a Merb stack including Merb Core, Merb More, DataMapper Core with…
9 Oct 2008
We just finished the first stand-up. A stand-up according to the scrum/xp practices is just an occastion to say what you did yesterday, what you are going to do today and any problems you encountered if any. The stand-up followed a sprint review & retrospective we had last night. The amount of work done in few hours is just amazing,…
7 Oct 2008
Some of Los Señores del Merb, AKA the Merb “core team” met tonight in a secret location in San Diego, CA. Obviously, we had to meet in a Mexican restaurant and enjoy Tuesday Fish Taco night special ;) While not everybody could make the trip, Yehuda, Andy, Daniel, Carl and myself met to plan the very first Merb Sprint. Unfortunately,…
6 Oct 2008
Mode changes to init.rb, user updating to a newer version or Merb will need to add c[:log_file] = Merb.root / “log” / “development.log” to their init.rb file or config/environments/development.rb for instance. (Newly generated apps are already setup properly) We made some changes to the way Rake files work. Merb-core doesn’t require the rspec tasks anymore so Test::Unit see annoying rspec…
5 Oct 2008
I thought I should share few changes that my affect your apps if you want to upgrade to Edge. merb_helpers which was previously in merb-plugins now moved to merb-more and got renamed merb-helpers. What that means for you is that you probably want to install merb-helpers and change the reference in your init.rb from dependencies “merb_helpers” to dependencies “merb-helpers” People…
4 Oct 2008
Merb 1.0 is almost ready to be pushed out and you might be impatient to start playing with some of the goodies not yet available in the latest stable release. Before getting started, you should know that not everything has been ironed out yet so don’t expect to have a fully stable Edge. The easiest way to get started requires…
1 Oct 2008
[caption id="" align=“alignright” width=“224” caption=“Mint was originally used as a medicinal herb to treat stomach ache and chest pains. (Something developers eating too much pizza know a bit too well)"][/caption] Paul Sadauskas aka Rando posted a very interesting article showing how he handles exceptions in his JSON webservices built on top of Merb. After discussing with NewBamboo guys it was…
30 Sept 2008
I actually run into a small problem when updated an older Merb app. Here was how my router looked like: Merb::Router.prepare do |r| r.resources :channels do |channels| channels.resources :shows do |shows| shows.resources :episodes end end end But after updating to the latest version of Merb, I got links looking like: https://localhost:4000/channels/#<Channel:0x27b7300>/shows The first thing to do is to read Carl’s…
29 Sept 2008
If you read this blog, you probably know that Merb’s best ORM friend is DataMapper. [caption id="" align=“alignleft” width=“240” caption=“compounds in basil oil have potent antioxidant and is used for supplementary treatment of stress”][/caption] Merb works very well with ActiveRecord and Sequel but most of the Merbivores get excited about DataMapper. DataMapper has a lot of cool stuff going for…
26 Sept 2008
Yesterday I spyed on wycats aka Yehuda Katz while he’s working on cleaning things up for 1.0 which will be released during MerbCamp Oct 11-12. Here is the screenshot of how you would see ugly backtraces originating from Merb’s core: [caption id=“attachment_83” align=“aligncenter” width=“150” caption=“old backtraces”][/caption] Note: Did you notice that wycats is using Ruby Enterprise Edition? Merb 0.9.8 has…
25 Sept 2008
[caption id="" align=“alignright” width=“182” caption=“Fennel, one of the primary ingredients of absinthe helps developers' creativity."][/caption] Good news regarding Merb slices: the new router allows you to mount a slice directly as: /the-slice-action (previously it had to be /the-slice/something) On IRC, Nagash came up with an interesing snippet allowing you to easily serve static views (like Django’s generic views) (Merb::Template.template_for is…
24 Sept 2008
Dear Merbivores/Merbists/Merbians, It’s hard to believe that in less that 20 days, Merb 1.0 will be released! We are all really happy to to be almost there but we have to be honest and admit that we are also under pressure. We are all dreaming of a post 1.0 world but in the meantime we have to focus on last…
23 Sept 2008
Since Merb 0.9.7 the Merb team decided to change the way you can bundle an app. Until 0.9.7 you would use the merb-freezer plugin which was supporting git submodules and gems. The only problem was that you still had to install merb-freezer on your server and it had to stay in sync with your app… kinda lame :( [caption id=""…
16 Sept 2008
That’s now finally official, MerbCamp 2008 registration are open! What an exciting time! History To understand why I’m excited, we need to go back few months back. Merb was first released by Ezra has an alternative tool to handle file uploads. Merb came to reality because Ezra needed something fast, light and flexible to handle something that, let’s be frank…
7 Sept 2008
Like most people who started with Rails a while back, I first loved Rails fixtures and ended up hating them (slow, a pain to maintain etc…). I went through different experiments, trying different existing libs, writing my own solutions etc… I wasn’t quite satisfied until I found factory_girl from thoughtbot. You might not feel the need for a decent fixtures…
27 Aug 2008
Wow, it’s been a while since I blogged. With all the cool kids saying that spending time reading RSS feeds is overrated (see Defunkt’s keynote for instance) I even wonder if people will ever read this post! Anyways, I have been quite busy preparing courses for classes I gave to a bunch a great Engineers at one of the Fortune…
27 Jun 2008
Github, probably the most famous social code hosting service just redesigned their homepage and are now featuring hosted projects. I got a very good surprise when Takeo from Powerset & Stafftool hall of fame mentioned to me that Github picked one of my gems as the first featured project! By the way, Takeo is also a Googlecharts contributor (+ a…
18 Jun 2008
In a previous article I took an example of bad metaprogramming and I pushed people to think twice before using metaprogramming. My main points were that: you might make your code way slower if you don’t know what you are doing readability might drop considerably maintainability can become an issue People left some very good comments about how to write…
I realized I haven’t updated this blog in a while. Here is a quick update on what’s happened and on things to come: RailsConf 08. Great conference, probably my last Rails Conf though. I’ll be in Orlando for Ruby Conf 08 and I’ll focus on 1 or 2 local conferences (probably mountain west and another one). MerbCamp 08 in San…
4 May 2008
Ruby is sexy, Ruby is cool and its metaprogramming potential offers some really cook features. However you might not realize that your cleverness is slowing down your code. Today I was working on cleaning up merb_helper a Merb plugin that brings a lot of the stuff Rails developers are used to. In Merb we aim for speed and try to…
27 Apr 2008
Just a reminder, this coming week end, San Diego presents BarCamp for the third time. This time, the chosen Venue is Microsoft in La Jolla I was thinking about preparing 2 intro talks, one on Merb and one on Unobtrusive Javascript (jQuery, Prototype + LowPro etc…), then we’ll see the crowd and what people are interested in. Feel free to…
16 Apr 2008
As you’ve probably heard, Rails now moved to its own GitHub repo. If, like me you were a heavy piston user, you are wondering how you will be able to do the same thing if you switch to git. First off, you need to know that Piston will soon support git. As a matter a fact it already does. At…
15 Apr 2008
THIS CONTENT is OUTDATED and can’t be used with Merb 1.0 or more recent Merb doesn’t really have a core team per say. It’s actually managed the same way Rubinius is managed meaning that few people such as Ezra, Wycats and Ivey lead the development while many other contributors have commit rights to the different repos. Patches are handled via…
10 Apr 2008
If you follow my blog, you already know what Merb is. I love Rails and I truly believe it has changed web development. At least it has changed the way I do web development. But Merb looks slick, apparently is way faster than Rails, and has less “fluff” and less magic. Now that we are getting really close to a…
8 Apr 2008
_* this content is now outdated and only applied to Merb 0.9_* I the previous post I covered few useful tips for Merb 0.9. The good news is that Merb should get its wiki setup over the week end! Here is another batch of hopefully useful tips: In init.rb, you can define a dependency and specify a version number: dependency…
5 Apr 2008
_* this content is now outdated and only applied to Merb 0.9_* I’m working on a post reporting a recent benchmark I did comparing Rails vs Merb performances for a client’s app. In the meantime, here are few tricks you might need when using Merb 0.9x In the init.rb file, uncomment and rename c[:session_id_key] (in the Merb::Config.use block) In the…
17 Mar 2008
I’m sure, at least once in your life you played with Duplos. Duplo bricks are eight times the size in volume, twice the length, height and width of traditional Lego bricks, and are easier to handle for younger children. Despite their size, they are still compatible with traditional Lego brick. Duplos are great to introduce kids to the concept of…
5 Mar 2008
I started moving some of my projects to GitHub. Here is my GitHub account. Projects moved to GitHub: GlobaLite ActiveRecord Backup mimetype-fu I’m planning on moving GoogleCharts, RandomWordGenerator and some not released stuff to GitHub so people can have fun forking my projects. Git and GitHub are the new cool things. GitHub is planning on setting up a gem server…
3 Mar 2008
If you don’t know about git and github yet, it’s time you clean up your RSS feeds and find some good source of information. Github is used by the Merb core team and I’ll show you how to use github to fork Merb, make your modifications and “submit your patch”. This is the exact reason why github is simply awesome,…
29 Feb 2008
I’ve been using git and git-svn for a little while and never had a problem… until today. On one of my project, we have a SVN repo but since I prefer using Git, I’m using git-svn. Git-svn has been great, it let me create my own local branches for each new set of features (that’s when I don’t forget to…
28 Feb 2008
For the last few months I worked on a Rails app called GumGum. GumGum is a licensing and distribution platform for online content. GumGum believes paying a flat rate to license content for online use is illogical. Offline, the flat rate model works because distribution is finite. Online, thanks to Google and other search engines, a story lives forever. GumGum…
30 Jan 2008
I haven’t posted for quite a long time. The thing is I moved to a new place and I’m really busy on working clients + setting up my new office + dealing with way too much paperwork. Anyway, enough excuses, here are few tips that I believe will be useful to some of you: ZenTest Autotest I love autotest, but…
4 Jan 2008
RSpec is an awesome testing framework. On top of being the first Ruby BDD framework the core team is doing a great job in enhancing our testing experience and therefore the quality of our code. This time, I don’t want to introduce to the latest changes but instead showing you what Josh Knowles, Bryan Helmkamp and myself came up with.…
31 Dec 2007
Being a consultant is great, being a consultant working exclusively with Ruby is awesome, being a Ruby consultant using Agile methods on great projects with cool clients is just super-awesome. The English language doesn’t seem to have a word/expression defining this feeling without using the “f-word” (at least, there’s nothing I can think of right now) I have to say…
21 Dec 2007
Supporting TimeZones is a serious pain in a developer’s neck. Thankfully, Rails comes with a bunch of tools making our life easier. One of my Rails patch just got merged in Rails Edge (Future Rails 2.1) and I believe it will make my life just a tiny be more enjoyable. Let’s look at a simple scenario, your application has many…
17 Dec 2007
What’s new? Rails default database is now sqlite3. If you are running Leopard, everything is already setup for you. As DHH mentioned, just “rails -d mysql your_app_name” if you want to generate a new app preconfigured for MySQL. Sqlite3 is great and if the only reason why you didn’t give it a try is because you have to use CocoaMySQL,…
12 Dec 2007
I just released Googlecharts 0.1.0 (few bug fixes and enhancements). The first thing you want to do is to install the gem sudo gem install googlecharts The second thing you want to do is check the great brand new website for googlecharts The third thing you want to do is to recommend me on Working with Rails ;) The fourth…
10 Dec 2007
update Nov 11: the gem is finally available there or simply: sudo gem install googlecharts Note that I’m working on merging this gem with another Google Charts gem. (see comments for more info about that) I’ve been working on a Google Chart Gem that I have ready for a beta release but unfortunately, getting a new project setup on RubyForge…
5 Dec 2007
I was recently asked by Rubyist friend (Josh Knowles) how I was organizing my Javascript files when using LowPro. LowPro is the best solution for doing Unobtrusive Javascript using Prototype. With the help of LowPro, you define behaviors that get triggered by the user. This is great, however, you’ll notice that some behaviors are used all over the place (a…
4 Dec 2007
During Thanksgiving break I had fun with a friend of mine working on a Ruby challenge while digesting the traditional turkey. The challenge was quite simple, create a small library that can generate random words from the English dictionary. But of course there was a twist. One should be able to choose the total amount of characters, the amount of…
28 Nov 2007
I recently bugged Rick Olson so much about attachment_fu that he gave me SVN access to fix few bugs. Rick being really busy with ActiveReload he didn’t spend too much time maintaining attachment_fu. On my side of things, I’ve been using attachment_fu on a lot of projects and I’ve been fixing bugs and adding new features. My first contribution to…
27 Nov 2007
If you’ve read my post on Ajax pagination you know that I’m a big fan of Dan Webb’s LowPro unobtrusive javascript library. Doing Unobtrusive Javascript (UJS) is basically registering event handlers programmatically using CSS selectors to select the elements to register. In other words : keeping things separate and avoiding inline javascript. If you’ve been using LowPro 0.4 and recently…
20 Nov 2007
A bit more than a month ago I posted a tutorial on how to use Flash with Rails to create some awesome/sexy graphs. Since a lot of people seemed interested by the topic, the SDRuby guys asked me to do a intro talk on how to create Sexy Charts with super sexy Rails. In the mean time, a lot of…
6 Nov 2007
Few of you contacted me to let me know that my RSS feed was always getting reset up to few times a day. (Thanks Josh). It looks like a Mephisto problem, so if you subscribed to the mephisto feed, please switch to this feed: https://feeds.feedburner.com/railsontherun I made sure to clean up the blog header so the old mephisto link won’t…
31 Oct 2007
As a good Rubyist, I do TDD and even BDD. Since I’ve started using RSpec I’ve started writing tests against my views. RSpec makes things really easy and I’ve been enjoying testing my views. I’m not the only one having fun, check this great post from Mr Planet Argon aka Robby Russel Recently I was working on implementing some Sexy…
15 Oct 2007
I’ve been a freelancer/consultant/contractor/mercenary for many years now. However, until now, I used to do that on the side. Few months ago, after thinking a lot about it, I finally decided that freelancing was what I wanted to do. I left my job and started my own adventure. The first reason for this switch was a desire to be more…
4 Oct 2007
date = “NOV” slug = “NOV/sexy-charts-in-less-than-5-minutes” Last time, in our ‘do it in less than 5 minutes’ series, we saw how to add quickly and simply add Ajax pagination. This time we’ll see how to add some sexy/fancy charts to your rails app. The goal is to end up with something like: Various options You might have heard or even…
27 Sept 2007
updated Nov 26 to reflect the recent low pro changes. (please use low pro 0.5 and Prototype 1.6) Recently one of my client asked me to add ‘ajax’ pagination to his application. His site already had a very nice pagination using the excellent will_paginate from Mislav and the guys(PJ & Chris) from err the blog but since my client had…
19 Sept 2007
That’s kind of cool, I was reading a post about DHH Keynote at RailsConf Europe when I realized that DHH mentioned one of my contribution to Rails Edge. “small, but to me significant improvement has also found its way to Rails 2.0: You can now create the needed databases with a rake command. By running this command, all referenced databases…
16 Sept 2007
By now, you should have heard about ambition if not read the latest post from the author. Ambition has a simple goal: making you stop writing SQL in your queries and only stick to Ruby. (who cares if you use ActiveRecord, Sequel, DataMapper or another ORM) I’m so used to the ActiveRecord way of querying the database that I was…
2 Sept 2007
I’m glad to announce a major update of Globalite. First off I’d like to thank all the translators who helped with this release. Globalite now support its first Asian language: Chinese! Ivan Chang did an awesome job creating a localization file in Chinese for Taiwan, Hong Kong and Main Land China. I’m really glad thinking that Globalite will make the…
29 Aug 2007
I’m almost ready to update Globalite with 2 major changes: Support for Chinese (Taiwan, Hong Kong and main land China) thanks to Ivan Chang Better support for Active Record error messages in forms (based on contribution from Ivan) I’m writing more tests and updating the sample app before releasing the updated version. It should be out in the next few…
25 Aug 2007
Josh Knowles shared with me a great video about working methodologies, client relationship and project management. Check it out, it’s really worth it.
22 Aug 2007
Recently, I got really annoyed at some code I had to work on. The main reason was that the developer I was working with likes making everything super DRY. While I hate repetitions I like being able to understand the code I’m reading and I want to be able to quickly refactor it. Anyway, I got over it but during…
14 Aug 2007
The Seattle.rb guys did it again! After releasing the excellent Zentest suite, imageScience, Heckle and much more, Ryan Davis and his crew came back with great news. From Saturday, August 4th to Tuesday, August 7th, the Ruby Hit Squad was in full effect. After almost 4 days working almost none stop, they released Vlad the Deployer What’s Vlad? Some sort…
28 Jul 2007
is one of my favorite web application of the moment. It got publicly released last April (2007) by the activereload ninjas. Since then, they also released but I’ll keep that for another post. I’ve been using Lighthouse for a little while and I have to admit that I was a bit confused at first. I’d like to share with you…
24 Jul 2007
I just released a simple plugin that I use to backup and restore databases instead of using a mysql dump. check out the plugin page File structure will look like that: I use this plugin to backup my apps running in production. When I need to debug an application, I just need to restore the db locally and debug. The…
23 Jul 2007
Here is another type for attachment_fu users. This evening I wanted to try Railroad to generate one of my app diagram. I alreay wrote my own script generating a .dot file that I usually import in omnigraffle before exporting a pretty version for my clients. The thing is, my script is quite simple and only covers models while railroad also…
21 Jul 2007
I recently had to deal with an interesting challenge. I had to write a simple interface between a rails app and a Flash application. Nothing hard and if you browse the archives, you’ll find examples and tutorials on how to create a REST interface to communicate between Rails and Flash. The thing was that this time I had to interface…
15 Jul 2007
I recently had a discussion with someone(not really familiar with Ruby and its frameworks) and this person didn’t realize the power of IRB and the Rails console. Not, this irb, the Ruby IRB. According to wikipedia IRB is a shell for programming in the object-oriented scripting language Ruby. IRB is run from the command line and allows the programmer to…
13 Jul 2007
resftul_authentication is a great plugin, but not always resftful… especially if like me you dropped unit test for RSpec. I have a set of RSpec examples I use all the time on all my projects requiring restful_authentication, obviously I always end up tweaking them because each application has its specific needs. However, I was recently asked what’s the way of…
11 Jul 2007
For many Americans, the 4th of July reminds them of their freedom. Since I didn’t grow up in the US, for the 4th of July was a great occasion for a BBQ with friends and enjoying fireworks. However, things changed this year when I decided to leave my full time job as Rails developer to become a consultant and work…
3 Jul 2007
If you haven’t check out the Globalite sample app yet, here are some screenshots. Here is the French yml file used for the UI translation/localization: Here is the code to display a select box so the user can choose the publication date: So you know, <code><%= :published_date.l %> </code> is the same as <code><%= :published_date.localize %> </code> Globalite will try…
27 Jun 2007
Today I updated Globalite, refactoring the code and fixing some issues. I added a bunch of aliases since I was tired of typing: <code>Globalite.current_language = :fr </code> I shortened it to <code>Globalite.language = :fr </code> But the old method is still available so it won’t break your code ;) The major change with this update is a better support for…
26 Jun 2007
The Rails hackfest is a chance for people to be rewarded for contributing source code to Ruby On Rails. The value of their contributions are accumulated and the results charted. I’m honored to be listed as contributor number 4 few days before the end of the month. I know I got lucky with some of my patches getting merged in…
Globalite contributor: Marcus Derencius just submitted a Portuguese translation for Rails. Your application can now speak Portuguese thanks to Globalite and Marcus :)
Globalite contributor: Marcus Derencius just submitted a Portuguese translation for Rails. Your application can now speak Portuguese thanks to Globalite and Marcus :)
22 Jun 2007
Quick note to let you know that I updated mimetype_fu to actually get the mime type of a file using the file command on mac and linux. I still didn’t post an example since I’m planning on writing a patch for attachment_fu.
14 Jun 2007
mimetype_fu/ is a new plugin I just wrote. It’s simple and it can be really useful if you need to get the mime type of a file already on your server. During one of my project, I add to migrate old assets from a legacy system to a new Rails app. The new app uses attachment fu and even though…
6 Jun 2007
Recently I helped few people moving to Rails Edge and start using RSpec. I realized that I learned few tricks and even if for me everything seemed quite simple, things are not that simple when you recently started with Rails. This would work on Mac and Linux, sorry Windows users, you’ll have to slightly change the code below. Live on…
2 Jun 2007
The guys at integrum launched their resources site as promised. — CHECK IT OUT — There’s not much there yet but I would recommend to subscribe to their feed!
26 May 2007
I’m quite glad to let you know that my first patch made it to Rails Edge. UPDATE: Ryan Daigle covered the new added features in his blog How cool is that? That’s a great achievement that I owe to josh Knowles and Josh Susser Josh Knowles and Matt Heidemann from Integrum started working on rake_tasks a little while ago. I…
22 May 2007
Josh knowles and Matt Heidemann from Integrum and I released few weeks a go a cool plugin called rake_tasks The thing is that the plugin was getting too big when I started hacking the MySQL adapter and adding utf-8 support we figured out it was smarter to split the plugin and create db_tasks and svn_tasks I temporarily hosted db_tasks there:…
15 May 2007
I’ve been recently slightly annoyed by the lack of simple yet powerful internationalization/localization plugin for Rails. It seems like the only real solution out there is Globalize However, it’s a heavy, bloated, hard to setup plugin. I might seem to complain, but I’m actually glad that someone came up with a decent solution. Globalize is quite powerful but I would…
11 May 2007
This morning I couldn’t remember how to get an array with only the unique properties of a Model attribute. For instance, I have a User model, and I want to retrieve the list of all my users' cities. I also don’t want to retrieve all the attributes and only the unique rows. in my model: <code>def self.cities User.find(:all, :select =>…
9 May 2007
I’m working on a Rails project and I need to make sure that our code is compatible with PostgreSQL. I never installed/used before and since I’m lazy and rely on other people knowledge, I decided to install Postgresql using MacPort. It was actually simpler than I expected. I simply followed this post and almost everything went ok. <code>sudo port install…
26 Apr 2007
DrNic the most famous Australian Rails developer surprisingly doesn’t spend most of his time working on Rails read interview That’s maybe why he recently became so active in the Rails community ( see Magic Multi-Connections, Magic Models, map_by_methods, Gem Generator etc..) Today he released something very helpful for the Rails Community, not another Gem or another cool plugin to extend…
18 Apr 2007
I recently realized that a lot of people using RSpec didn’t use the great TextMate bundle designed for them. You might not think you need an extra bundle, or maybe you never used a bundle ever and don’t know why you would try one. I’ll try to change your mind, let’s look at some screenshots first: This is what you…
9 Apr 2007
With the recent Buzz around Adobe Apollo I figured out that since I recently switched to Mac and that I didn’t try the latest Flex upgrade, I should try Flex 2.01 for Mac. I really like what Adobe did with Flex, Unit testing, better accessibility, etc… but one thing I regret, it’s getting closer and closer to Java and AS3…
2 Apr 2007
30 Mar 2007
I recently started working on migrating an old PHP based application to a new sexy Rails app. The old model was kind of messy, the usual case of bloated, feature creep app written by many people without any standard conventions. Anyway, I have to migrate users and content from many sites using the legacy app. Data Structure Instead of having…
UPDATE: Aslak Hellesoy just mentioned in a comment that the trunk version of RSpec bundle for TextMate ( svn://rubyforge.org/var/svn/rspec/trunk ) doesn’t require the RSpec Gem installed anymore. To install the bundle: <code> cd ~/Library/Application\ Support/TextMate/Bundles/ svn co svn://rubyforge.org/var/svn/rspec/branches/0.9-dev/RSpec.tmbundle </code> I recently discovered RSpec, well, not really, but I finally got to start using RSpec. For those who don’t know RSpec…