Skip to main content

Posts

Wanelo Tech Gems: we've been busy!

It's been quite some time that I've posted here, to my personal blog, so long in fact, that the publishing interface a'la Blogger now looks like MS Word. Or God forbid you remember, Word Perfect. (Yes, I am that old).

But that's not what I wanted to write about.

Wanelo, the team that I lead as a CTO, has been kicking so much ass lately, that I've just had no time documenting personal projects here, even though there have been plenty.

So to sort of catch up in one blog post at once, I wanted to put a few links to some of the great content on our technical blog, that's been recently migrated to Github Pages.

Without further ado:
Multi-process or multi-threaded design for Ruby daemons A pretty awesome blog post by our own Eric Saxby about thinking in terms of GIL (global interpreter lock in ruby), it's impact on production environments, especially in multi-threaded environments, and where long-running processes may have impact on your database transactions. Ver…
Recent posts

Wanelo Blog Post: Detangling Business Logic in Rails Apps with PORO Events and Observers

I recently wrote a blog post about how Wanelo uses events and observers in plain ruby, to model application events. The base code that supports it is available in the open sourced gem ventable.

If you want your business logic "glue" to look like this below, read the above blog post.
Wanelo::Event::ProductSave.configuredonotifiesProduct,SaveNotification,SaveAction,inside::transactionnotifiesProductSaveWorker,ResaveEmailWorkerend We have found so many applications of using events in the backend Rails application, that I can not imagine building another app without it.
Having said that, right now Ventable does not support distributed events. But it absolutely could! I am considering writing a plugin for sidekiq background processing framework, that could notify any observer via a background job, and not inside the current ruby thread.    Another option is to use another thread! Lots of options for concurrency.
Perhaps one day, it will look like this: Wanelo::Event::ProductSave.co…

Nagios checks for Sidekiq Queue size monitoring and Joyent RAM size

At Wanelo we are committed to sharing as much of our code as possible with the world, since we are ourselves highly reliant on open source movement (ruby, rails, etc).

Here is a small but growing project with simple BASH shell scripts used by Nagios monitoring system to ensure things are running smoothly.

https://github.com/wanelo/nagios-checks

Please see the examples in the README on how to use it with nagios.

Getting RMagic and friends to work on OS-X Mountain Lion

Upgraded my ruby environment today to Mountain Lion.

Here is a quick checklist that I went through to get everything working.  The largest change was having to reinstall XCode and command line tools, and also download XQuarts in order to reinstall ImageMagick successfully. Without it, I was getting errors building RMagick of the following shape:
ld: file not found: /usr/lib/libltdl.7.dylib for architecture x86_64clang:
error: linker command failed with exit code 1
(use -v to see invocation)make: *** [RMagick2.bundle] Error 1

Quick checklist: Install Mountain Lion Install XCode 4.4 Install command line tools from XCode 4.4 Preferences dialog Install XQuartzIn terminal run brew update brew uninstall imagemagick brew install --fresh imagemagick wipe out your ~/.rvm folder reinstall RVM and install the latest ruby 1.9.3-p-194 run "bundle" in the project folder run "rake" and rejoice
References:

https://github.com/mroth/lolcommits/issues/65

Activity Feed Design

I normally don't publish work diagrams, but this one sort of looks like work of art.

It represents a collective design we came up with around aggregation of activity feeds on wanelo.com. If you have an account, you will soon see the results of this on http://wanelo.com/following