Last month I presented a talk to Montreal.rb on Elixir - a language I have been exploring on and off over the last year. Like any good talk from a newbie, it contains bloopers, mis-information and whole lot of gusto. Watch it at your peril! Video How Elixir is Transforming My Mind from Nicholas Henry on Vimeo . Slides
Over the last year I have had the pleasure to work with Airslie Ltd , a UK-based medical informatics company, and King's College Hospital (NHS Foundation Trust) to rewrite and extended their clinical observations and assessments system, Wardware®. Wardware enables the entry, analysis and display of Early Warning Scores and other patient datasets for clinical use locally or remotely on mobile and…
Last week at Montreal.rb there was an open discussion on RailsConf held in Atlanta which I had attended this year. We discussed favorite talks, themes and general experiences. I prepared a few notes prompting folks to explore design patterns after seeing Sandi Metz's talk, Nothing is Something . Why? In the first half of Sandi's presentation she presented an example of using the Null Object…
Building an object-oriented application means inventing appropriate machinery. We represent real-world information, processes, interactions, relationships, even errors, by inventing objects that don't exist in the real world. We give life and intelligence to inanimate things. We take difficult-to-comprehend real-world objects and split them into simpler, more manageable software ones. We invent…
On Tuesday this week, I presented a talk to Montreal.rb on keeping your application secrets safe. Posted below is the video, slides and some follow-up questions during and after the presentation. Enjoy! Video Slides Questions How can I remove a secret from your Git repository? GitHub has an excellent post on how to do this: Remove sensitive data . However, if you have committed a secret to your…
Update: A transcript exists on Confreak's GitHub translations repository . Update: The presentation is now online. Unfortunately the color has been washed out when the slides were filmed, so I highly recommend you follow along with the slide deck below. Enjoy! If you attended my talk at RailsConf, Modeling on the Right Side of the Brain , thank you so much for your support and I hope you found the…
I was trying out Avdi Grimm's Quarto a week or so back for ebook generation. The toolchain looks very promising, but has a few dependencies that need to be installed before you can start publishing. These are listed in the README. Here's a quick guide in getting those installed on OSX (Mountain Lion). Note I already had the following setup: Git HomeBrew pygentize xmllinit Command line…
Recently I needed to install the Aspell library on Heroku for a side project. By default a Heroku Dyno doesn't include any non-essential libraries so your left to install these on your own. This introduced me to the world of buildpacks and an awesome build tool that Heroku provides to get the job done. Objective The objective is to have a Rails application running with FFI::Aspell , a FFI binding…
A couple of months ago I gave a presentation on Trello for a lunch and learn at Dynamo . Trello is a collaborative project planning tool that I was trying out at the time. This presentation shares my findings on how to use Trello for project management in an agile development context. Enjoy! Meet Trello from DynamoMTL on Vimeo .
My last project at Dynamo involved the porting of a Rails application integrated with Recurly to Spree for Quarterly Co. , an LA-based company. Quarterly is a subscription service, curating gifts by their selection of contributors shipped every three-months. Check out this beautifully written blog post written by Quarterly's founder, Zach Frechette, describing why he started Quarterly. Key…
You will receive this error if you have created your controller class manually (i.e. without the Rails generators) and have not inherited from ApplicationController . For example This is easily fixed by adding ApplicationController as the parent. Note the change on line #1.
Installing mysql2 Ruby gem on 10.8.4 with a home-brew install may raise the following error: mysql.h is missing. please check your installation of mysql and try again. Removing the following options from cflags in mysql_config vim `which mysql_config` resolved the issue: -Wno-null-conversion -Wno-unused-private-field Credit: https://github.com/brianmario/mysql2/issues/383
Note: This was originally posted to the Dynamo Blog . Last month we leveled-up with Crush Your Achilles Heel . This month, it s about helping your team members level-up with Share the Knowledge . This month s focus is about sharing knowledge with your team mates. After years as a solo freelancer, one of the great joys I now experience working with a team, is the learning gained from my team…
This is one of my favourite quotes on requirements: Most of us were taught to write down all our requirements at the very beginning of the project. There are only three things wrong with this: “requirements,” “the very beginning,” and “all.” At the very beginning, we know less about our project than we’ll ever know again. This is the worst possible moment to be making firm decisions about what we…
Note: This was originally posted to the Dynamo Blog . We all have it. It s that gap in our knowledge that slows our development down. It s your Achilles Heel. Every day we use the same tool, but we re never really take the time to understand the fundamentals of how it works. This might be Git, SQL, or Regular Expressions. It might be a concept that we struggle with, but have never said, OK, I need…
Note: This was originally posted to the Dynamo Blog . Since we have been using Pull Requests to drive development over a month or so now, GitHub Task Lists have been an important component. Personally, I have been using them to document my initial thoughts/brainstorming on tasks required to complete a feature and the whole team have been using them pervasively. They also have an impact on issues…
An ongoing project I have been working on at Dynamo over the last year with Hugo Frappier is a custom CMS for Tarkett Sports, a division of the Tarkett Group, "a worldwide leader of innovative and sustainable flooring and sports surface solutions". A multi-Site, multi-lingual CMS Tarkett Sports required a multi-site, multi-lingual CMS to serve all the sites of their subdivisions. FieldTurf (North…
When working with platforms such as Spree and RefineryCMS it's more than likely that I will be extending their models more often that not. This means opening the Gem to identify a specific behaviour I want to override. Vim is my text editor of choice, and I typically try to restrict my self to one instance of the editor running. It makes working with multiple buffers a lot easier! Whenever I want…
Note: This was originally posted to the Dynamo Blog . Working on multiple projects in a single day has a mental cost and less efficient than dedicating time to a single project. Segmenting the week to work on a specific project and allocating time for the unexpected is one possible solution for reducing the cost of context switching. Yesterday we had a terrific conversation in our weekly project…
Recently I posted to Facebook: You know you have a book buying problem when... you discover that you have two copies of the same book on your bookshelf. Unread. Yes, I have a book buying problem. And after that post I decided it was time to do something about it. I love reading. I find it extremely motivating and inspiring. But having a few dozen unread or partially started books is not only a…
Note: This was originally posted to the Dynamo Blog . This month s Dynamo Developer Challenge has been inspired by our own Daniel Wright —more about that in the moment. In a nutshell, for the month of April we will be experimenting across the studio with using Pull Requests to develop a new features. We are moving beyond simply using them as a Code Review tool , as we have in a past challenge.…
NOTE: This was originally posted to the Dynamo Blog . We re sharing an initiative that we ve been experimenting off and on over the last year called Improving Your Craft , a.k.a Dynamo Developer Challenges. These began as weekly challenges to help the team members and the team as a whole to improve development practices and increase developer happiness. Admittedly, when I was first driving this…
After reading Mislav Marohnić's excellent post on Vim , I decided to add ctags to my development environment. What does it buy you? It allows you to jump to method or class definitions with these commands: Setup is pretty easy: You can generate tags with: But you probably won't want to do all that manually. As Mislav points out in his post, Tim Pope shows us how to automate tag generation with git…
I've used Google Site Search for a couple of unstructured content sites (opposed to applications or structured content such as catalogs) and pretty happy with it, but there a certainly some things you should be aware of before committing to this service: The service's crawler works the same on Google.com. This means, it will only index publicly available pages that it can access. So you cannot use…
It's been a while since I have posted on this blog. So just to let you know that I'm still alive, this is what has been keeping me occupied. It's best summed up by a quote from the book Object Thinking by David West. This is a must read for any Rails developer who is following the object-oriented Rails culture. Patterns most useful to object thinkers should be derived from the problem domain, just…