Introducing…

The Siyelo entourage of geeks has grown in the last couple of months, and the newcomers would like to say hi. They’ve put a lot of effort into this pageant, so do us a favor and humor them with a smile.

StuartStuart Corbishley takes the stage in a charming, floral evening gown in autumn colours. He has eight years of professional development experience singing soulful backup, five of them sporting the latest Ruby fashions. Stuart is an established photographer and says he hasn’t been this nervous since that HTML competition he won when he twelve. His first act as the new face of Siyelo will be to end world hunger.




StuartA spotlight tracks Nic Young onto stage, scattering disco reflections off the sequins covering his otherwise classy cocktail dress. Three years of business analysis follow in tow, and he has seven years of development experience dancing backup. Six of them are busting Ruby moves, and one shameful stand-in rocks php like it’s ‘97. Nic is a published author of short fiction and appreciates a good playlist. If crowned Miss Siyelo he’d put a jumping castle in every home.

Thank you and good night.

Abstracting a Service

Just as the dust settles from this years RubyFuza, I finally have a moment to reflect on how great it was.
This would be my 3rd attendence as a guest, and my 1st as a speaker. It is humbling to be around some amazingly talented and practiced developers, implementers and contributors of the Ruby community.
So my talk was titled: Abstracting a Service: A Case Study in Forward Thinking with SOA

I gave a quick round up of how in a previous project we sensed the need to abstract early, how we came to realize this and how we approached it.

Including the cheap and nasty middle step along the way.

I name drop a few RubyGems along the way as well that helped immensely in making this process easier.

Service Oriented Architecture is a massive subject on it’s own, so if anyone has any questions regarding my talk, please give me a shout.

So without further ado, here is the video.

Also slides:

Your Git Squash-merge Is Bad

… and you should feel bad.

Commit early & commit often is the way to go. Then squash your commits before they get merged to [master]. This is the gentlemanly thing to do.

With git, you can squash with an interactive rebase (git rebase -i), in which you squash your branch down to one (or two) commits. Alternatively you can use git merge --squash while merging the branch.

Having someone else merge your branch into [master] (unless you already paired with someone on the code) is good practice. It formalizes the code review step, and makes sure someone else is signing off on the code in case you did this. (In a way it also makes you feel the pain of code reviews where you might be pairing!)

Both commit-squashing methods (interactive rebase or squash-merge) give you the major benefit of a cleaner git log and lots of warm and fuzzies. However if you follow the above process (like we do), an interactive rebase tends to work better than a squash-merge.

An interactive rebase means the author is responsible for making sure their branch history is clean and will merge cleanly. This is nice. As a committer I know I can press the big green ‘Merge Pull Request’ button and shit won’t explode. Mostly.

A squash merge means the merger/committer is responsible for resolving any merge conflicts. If the committer is not the same person as the author, well, that code review just took even longer. And the Committer just rewrote history, perhaps not in a good way i.e. if someone else’s already squashed their branch, then a merge-squash is redundant and the committer will appear as the author of that merge commit. Oops.

To illustrate; The ‘before’ shot below reveals a beautifully squashed branch (via interactive rebase), by our hero, the fearlesss yet considerate Author, whom we shall call ‘Glenn’. The ‘after’ shot shows the aftermath of a squash-merge on that same branch, by the villianous Committer, The Glory Hunter;

Before:

Before merge

After:

After bad squash

Oh well, at least The Glory Hunter will show up in the git-blame if anything goes awry. Merge-squash away!

Rails Security; Being the Best Newbie & Redesigning Google

Here’s our recommended reading list for the coming week:

What the Rails security issue means for your startup

Glenn - A great overview of the Rails security issues and why they deserve your full attention.

Being the best newbie you can be

Ile - A great presentation on how you can start contributing to a successful team from Day 1 even if you don’t have the technical skills yet.

Code and Coffee meet up

Sachin - Code & Coffee Cape Town is a meetup we host every 4 weeks. It’s a great opportunity to meet other devs in and learn something new.

Rudebot

Sachin - We want one of these for our distributed team!

Debt metaphor as motivation for refactoring

Dalibor - Writing good code even if you don’t fully understand the problem you are facing can help reduce the time it will take to understand and refactor the code later on.

What is Software Design

Dalibor - It is important to know and understand what software design actually is. Knowing that it is complex and fluid can help you react appropriately to radical changes.

Redesigning Google

Dime - It might have taken a few years, but we are starting to see the fruits of Larry Page’s push for Google to have a cohesive and consistent visual style.

Effectively planning UX design projects

Dime - A step-by-step PM guide for UX projects which will help you get the most out of a tight budget

Devising a strategy for Responsive design.

Dime - Jumping head first into responsive design can be a problem if you don’t fully understand how pervasive it’s impact on your UX & development process will be.

The best image compression tools

Dime - Title says it all :)

Mobile sign up forms must die

Dime - The venerable Luke Wroblewski on why gradual engagement helps prevent you from scaring off new users.

Finally - this is how you handle annoying videobombers

TL;DR - Bacon Pancakes, Dynamic Attributes & MongoDB and Now I Know

This week we start of Dev Chat with one of Dalibor’s favourite videos at the moment- Adventure Time Bacon Pancakes New York Remix! - 10 Hours of bacon and pancakes remixed with Alicia Keys’ New York. Great way to end off a Friday afternoon.

Glenn recommended Onepager - a well designed site which solves a common problem. Glenn’s also just discovered the Ruby Rogues podcast (we know, he’s a bit delayed…). They have great panelists and interesting topics - it is practically required listening at Siyelo these days.

Ile is working on a college assignment on Rails and MongoDB for his post-graduate studie. A great article on Dynamic attributes and MongoDB/Mongoid has been helping him on his way.

Want to get a quick overview of NoSQL? Sachin shared key points from NoSQL Distilled by Martin Fowler.

Finally, if you haven’t already, we highly recommend that you sign up for the “Now I know” daily newsletter. In the words of Jimmy Wales: “It’s always fresh, always a surprise, and always interesting!”

Happy friday!