A well-designed Domain Specific Language (DSL) can help you be more productive as a developer, thus making you, your team and your clients happier. In this post, I’ll guide you through the design and creation of a simple DSL to create EPUB files. We’ll start with a regular API and refactoring until we get to a DSL solution.
This post is about pretty code, how to get nil out of the way, and be more confident.
Does this code look familiar?
user && user.ask_for_email
How about this?
<% if user && user.admin? %>
<% end %>
If you are a developer, chances are very good that you know what Object-Oriented (OO) code is. You might have also heard about OO Design Patterns, things like single responsibilities, decoupled code, and my subject here: Dependency Injection (DI).
OO Design patterns help you write code that is easier to change, and easier to test. Being quite abstract concepts, they apply to many modern programming languages, including Java, Ruby and PHP. Each language has its own way to do things, thus each language implements the concepts in a different way. Some implementations are similar, others not so much. In this article I’ll talk about Dependency Injection with a special focus on web development. I’ll explain what DI is, and I’ll elaborate on Ruby’s implementation. Finally, I’ll compare the Ruby approach with PHP’s view on DI.
What must an Operating System do to satisfy web developers’ needs? This is a tricky question, as each person is a whole different world, so it’s impossible to have a single answer to satisfy every person.
One could say “Well, because each person is different, the OS must be able to adapt to all different kinds of people”. Basically, meaning the OS must be easy to customize. This is great, but when is it too much customization? Systems that are very customizable also tend to be hard to use. In this post I’ll compare the three most used Operating Systems out there, namely Windows, OS X and GNU/Linux. I like FreeBSD but the userbase is so small I sadly won’t consider it here.
When talking about customization, I’d say Linux is king. Windows, on the other hand, is not natively customizable, but easy to use and with sane defaults. OS X gets the best of both worlds. That’s just my humble opinion, as I don’t consider myself to be a full power user of any of those systems, I just use them to get work done on a daily basis.
The Beezwax web dev team had a great time at RailsConf at the end of last month. The three days of the conference were packed with interesting talks, necessitating a series of painful triages each day as we selected which to attend and which to leave unseen. But now that ConFreaks has posted full video for almost all of the talks, everyone can catch up. Here are five of Shivam’s and Kevin’s favorites:
Bringing UX to Your Code (Joe Mastey)
What happens when you apply the principles of User-Centered Design, familiar to many from The Design of Everyday Things, to code? The results look much like the values of clarity and readability core to the Ruby community, but Mastey points out some antipatterns in the Ruby and Rails APIs, as well as some more inspirational design decisions. And the lapidary principles enumerated in the talk themselves are a useful pair of glasses for code.
[Authored by Ian]
I’ve probably written a hundred render_not_found methods in my life as a Rails dev. Usually they just render a static file under /public, and maybe, if I’m feeling nice, give an XML response. No more!
[Authored by Ian]
In my last post, I described my preferred methodology for integrating Rails and FMP. In this post, I’ll discuss an alternative technique using FMP’s external SQL sources functionality. Since IANAFMPD (I am not a FileMaker Pro Developer), I’ll skip the implementation details and just cut to when it’s an appropriate solution.