Jul 13 2014
Leave a comment
Book Review, General

Five Benefits to Remote Work You May Not have Thought Of – A Review of Remote – Office Not Required

I’ve just finished Remote – Office Not Required, a book by 37Signals founders Jason Fried and David Heinemeier Hansson (also creator of the web framework, Ruby on Rails). Jason and David run the Basecamp project with great success using a small army of remote workers. spacer This success has made them prophets who declare the benefits of remote work to companies who do not see its value, or fear it altogether.

As a remote worker myself, who spends three days a week working from home, and two days in the office an hour and a half away in Cleveland, Ohio, I wasn’t sure if Remote would offer any nuggets about remote work that I didn’t already know and agree with.

I was only partly right.

Jason and David’s analysis of remote work gave me a greater appreciation for the paradigm and also for those companies that have embraced the remote workplace ideology, such as where I work at Within3.

Here are five of my favorites.

1. Eliminating the Commute – Sure, I am acutely aware that removing a commute is a huge benefit to remote work, but for someone like me, who is smack dab in the middle of nowhere between job hubs like Cleveland, Columbus, and Pittsburgh, Remote reminded me of how awesome the ability to mitigate such a commute really is. Without the advent of remote work, an hour and a half drive back and forth every day for five days a week would have seemed daunting (even for someone like me who loves driving). But that drive two days a week is just right, enabling me to enjoy other benefits of working from home, along with the benefits of working in a bigger city a couple times a week, especially lunch at great restaurants with my co-workers :)

2. Health – So I mentioned I love eating at restaurants. Food is definitely a passion of mine. But if I worked every day in a restaurant hub like Cleveland, my belt would be snapping off in a few weeks! Plus, the long commute would not offer me much time to exercise in the morning or evening during a work day. But since I work from home three days a week, after work, I can trade in what would be a long ride home in for a run (at least in the summer, winters in NE Ohio are awful!). That way I have more room to eat on the days I’m in Cleveland!

3. Time Flexibility – Remote work gives you the ability to get your average forty hours a week in any time during the workweek. My wife and I just had a baby, so that time flexibility really pays off when you are juggling work with visits to the midwife or pediatrician.

4. Productivity Analysis - When you are working remotely, you must be judged primarily on your ability to produce, not just where you are sitting from nine to five. It’s extra motivating to know that your project success rate is how  your company will perceive your value to them. It forces you to manage your time appropriately to get the job done!

5. The Ability to Hire Talent Anywhere – For years, companies have been restricted to offering employment exclusively to home town boys and girls, or try to woo outside talent into the home office city. If the talent didn’t want to move, the company was out of luck. Now, with remote work options, great people can be hired from all over the world! And an added benefit is that if a current employee needs to move out of the home office city for whatever reason, the ability to work remotely could may keep them with the company, saving that company time and money in finding a replacement.

Remote – Office Not Required is a book with a clear mission – to convince companies that currently do not offer remote options, or are skeptical of remote work, to embrace dramatic shifts in their thinking. It is also a rallying cry for those workers who are trying to convince their current employer to offer remote work options. But for people like me, who are currently enjoying those benefits already, it is valuable reminder to appreciate what you already have, the company leadership that makes that remote work possible!

Jul 11 2014
Leave a comment
Book Review, General

The Lean Startup – Deep Insights into Startup Best Practices

If you work for a startup in any sense, or have entrepreneurial visions of grandeur, The Lean Startup by Eric Ries will make an excellent addition to your bookshelf. Eric Ries, a seasoned entrepreneur and co-founder of IMVU (an 3D avatar based chat room), has crafted an excellent introduction to startup best practices. From inception to maturity, any startup, whether a seedling or an spacer offshoot from a well established business sequoia, can gain valuable information on how to use lean startup methodologies to help eliminate wasteful activities and instead focus on the projects and techniques to help break through the bonds of linear growth and achieve the exponential.

What I found most interesting about these best practices was the initial focus on a minimal viable product to test customer interaction and appreciation of a particular business idea. By building a rough draft of a product or feature, and unleashing it into the wild (even in perhaps an imperfect state), a company can gain valuable insights into whether or not the feature will gain traction with customers. Through the use of real life startup stories, Ries demonstrates how spending many months of careful planning, only to release a product that is ‘not quite’ what the customer is looking for, can cost a great deal of unnecessary time and energy. If instead, products and features are built to be ‘just good enough’, valuable customer data can be gathered, and utilized to either enhance the minimal viable product to make it more production worthy, or pivot onto something else that may be more valuable to the customer.

This customer-centric approach permeated the entirety of the book, which, coming from a developer’s standpoint, is not something I feel we generally think about enough. Developers are often extremely code-centric in their thinking. This is certainly important (don’t want to build complete junk, even if it is only the minimal viable product), but we also should not be oblivious to the business needs of our customers. Ries emphasizes that in a startup, all employees and stake-holders, regardless of roles, should be in constant communication with each other to ensure the system being built is indeed for the customer. And while participating in business thought and discussion, developers can gain deeper insight into customer needs, helping them avoid rabbit trails and design the most appropriate system for any particular feature. At Within3, the startup I currently work for, company and product managers, business development, and customer support weekly share goals and practices which I definitely appreciate. It helps me feel more integrated into the company as a whole, and offers the engineering team the opportunity to better understand both the in-house and customer needs for our business.

While reading The Lean Startup, I did feel some of the points were hammered home a little to hard, and I found myself zoning out in a few places where the information seemed overly redundant or was presented like a college lecture. But thankfully, Ries would toss a real life startup story my way and re-engage me. I found the stories by far the most interesting and helpful aspect of the book and the most effective tool in validating Ries’ suggestions.

All in all, a good read and a valuable looking glass into the moving parts of the startup engine and how to make them churn along as efficiently, and powerfully, as possible.

Jun 02 2014
Leave a comment
General, News

Three Alternatives to Objective C for iOS Development

Are you interested in building an iOS app, but not eager to learn Objective-C? You’re not alone! Objective-C is chained by the bonds of C compatibility, and when compared to dynamic languages and their frameworks, such as Ruby and Rails, it is not the most pleasant thing to jump into. Although the power C based languages offer can be extremely useful, it seems that in the modern age of software development, iOS development could be made more pleasurable.

Thankfully, iOS software developers have choices!

Continue reading

May 30 2014
Leave a comment
Authentication, Controllers

Nokogiri and the Ruby SAML Toolkit

I ran into a problem today while working with the Ruby SAMLToolkit, an open source project by the OneLogin Identity Provider. This toolkit offers a relatively easy way to implement SAML authentication into your Rails application. Ratified in 2005 as an OASIS standard, SAML is definitely a great protocol to use for single sign on solutions in your application.

Since SAML is an XML based protocol, I’m sure you can image that in the Rails world, the nokogiri gem would prove useful in implementing SAML single sign on inside a rails app, since nokogiri enables robust document parsing, which is needed for the XML used by SAML.

And sure enough, the Ruby SAML Toolkit utilizes nokogiri!

But there’s a gotcha here. Nokogiri has a Nokogiri::XML module with a few constants: XML_C14N_1_0, XML_C14N_EXCLUSIVE_1_0, and. XML_C14N_1_1. These constants are utilized depending on the standard serialization of the SAML XML being processed during the single sign on handshakes between your application and the identity provider. Continue reading

Tagged Authentication, LibXML, Nokogiri, OneLogin, SAML, Single Sign On
May 27 2014
Leave a comment
Tests Link

System Tests vs. Unit Tests

System Tests vs. Unit Tests

A very interesting article by David Heinemeier Hansson Describing the greater value of system tests over granular unit tests. I’ve definitely seen some of David’s points play out in web systems more concerned about users interacting with the interface than intricate calculations. Although, for those web applications where one small bug might cause significant monetary loss, like in financial related software, seems unit tests would still be extremely relevant.

spacer

May 24 2014
Leave a comment
Book Review, General, Views

Fear Not, SASS is with You

I was recently handed a front-end project at work, essentially a redesign for the carousel on our application’s home page.

Though on the surface, this project seemed straight forward, it scared me.

Why?

I like to consider myself a good back-end/server-side developer also competent in javascript/jquery. But as far as heavy duty css’ing, I can make an interface look ok, but fully realizing our designer’s mockups through CSS seemed tricky.

A side story:

When I was still living with my folks 10 or so years ago, my mom wanted to replace a storm door. I thought, “I can do this!” So on a gorgeous Saturday, without taking any measurements, I drove to the hardware store, purchased the door my mom was interested in, and proudly brought it home.

After removing the old door, I lifted the new one into the empty frame, and realized, it was not going to fit. My mother had apparently taken no measurements, and I had not bothered to verify that she’d taken measurements.

But being the resourceful person that I am, I decided to use the one tool I had available that could possibly solve my problem – a chainsaw. As carefully as possible, I used the tip of the chainsaw to chip away at one side of the frame until the opening was large enough to fit the door. It was quite a hassle, and the frame was looking pretty rough, but thankfully, the installed storm door covered my less than beautiful hack job.

This is how I felt about my front-end development work. I could certainly use my CSS chainsaw skills to ultimately get that carousel to look just right, but behind the scenes, the frame might be a mangled mess.

But that’s when our front-end developer came to my rescue. He took the chainsaw from my hands, and gave me a ruler that enabled me to size a storm door properly to the frame, or in my case, cleanly style a carousel.

SASS!

An acronym for Syntactically Awesome Style Sheets, it is well named.

Its most basic and powerful feature allows a developer the ability to avoid repetitive scopes via nesting. Here’s an example:

//CSS
.wrapper { px; }
.wrapper .button { color: red; }
.wrapper .button .big { px; }

//SASS
.wrapper {
  px;
  
  .button {
    color: red;
    
    .big {
      px;
    }
  }
}

That one trick makes styling in SASS much more pleasant than CSS. And the nice thing is that SASS is compiled into regular old, nasty CSS for you. Throw in Compass, and you now have a toolset of cross browser, pre-built reusable styling patterns at your disposal.

For instance, need a nice, horizontal list? Just include the following in your SASS file:

@import "compass/typography/lists/horizontal-list

//And to use:
ul.horizontal {
  @include horizontal-list; 
}

If you’re using CSS exclusively, you are missing out. And I can tell you, even if you are a primarily backend software developer, as long as you have a basic understanding of CSS, SASS/Compass should come easily to you. A one hour overview was enough to get me started, and a few fifteen minute refreshers got me through the project with a carousel that meets the design specs without hiding a very ugly frame.

If you are a rails engineer, SASS is already built in to versions 3.1 and later.

This article is not meant to be a comprehensive guide on how to install and fully implement SASS and Compass, but I hope it inspires you to look into it if you haven’t already. In my opinion, back-end developers should be as competent as possible in front-end work as well as server-side stuff. I’ve been bitten so many times by having to constantly offload front-end work to other devs. Depending on their schedule, which is often quite busy, you may have to wait a good bit for the styling to be complete before you can move on. Plus, it’s just fun being able to put together the engine and paint the frame :)

If you’d like a comprehensive guide on how to install SASS and Compass and use their many awesome features, I HIGHLY recommend the following book.

spacer

 

Pragmatic Guide to SASS by Hampton Catlin & Michael Catlin

Short enough to read in a day or to, and useful afterwards as a reference, it should pretty much get you fully up to speed.

Good luck SASS-ing!

Tagged Compass, CSS, Design, SASS, Stylesheets
May 08 2014
Leave a comment
General, News Link

Go – Is it A Programming Language to Consider?

Go – Is it A Programming Language to Consider?

I’ve been researching up and coming programming languages, and Google’s Golang (Go) language looks very interesting! As far as web development, looks like the Revel framework may have a bit more maturing to do, but as far as efficiency, Go seems to have a lot of potential! Although ruby will remain my first love, Go looks to be a worthwhile language to learn. I’m also interested to see what happens with the open source project Skynet, which marries Go with Ruby via polyglot computing (basically seamlessly utilizing multiple programming languages as needed to get a job done) for building massively distributed apps.

Tagged Go, Revel, Skynet
May 06 2014
Leave a comment
News

RVM Github Security Path Redirect Fails to githubusercontent Domain

On April 25, 2014, Github initiated the following security patch (https://developer.github.com/changes/2014-04-25-user-content-security/).

Unfortunately, the redirect from github.com to githubusercontent.com was failing during chef provisioning for my team’s vagrant instance.

I forked rvm and updated appropriate instances of github.com to githubusercontent.com to accommodate the Github security patch.

RVM has since been updated to include these updates in version 1.25.25. The issue was closed here.

Tagged github, githubusercontent, rvm
Apr 28 2014
Leave a comment
Book Review, General

The Passionate Programmer – A Review

spacer If you’re looking for an inspiring software development book with practical advice on how to become not only a better programmer, but a better employee, communicator, and overall balanced person, I highly recommend The Passionate Programmer by Chad Fowler.

As software developers, we have the unending pressure and desire to continually improve our craft, to stay ahead of the curve, and not become obsolete in an ever  changing industry. Chad offers useful tips on how to improve personal productivity within one’s current place of employment, expand industry knowledge and confidence by contributing to open source software, and brand oneself by becoming a helpful member of the software development industry as a whole.

Self evaluation and incremental, daily goals empower the developer to achieve these tasks. Even those of us with an already busy schedule can daily implement small drops of Chad’s advice to the bucket of our career which will help keep each of us relevant and useful in the software development industry.

Each chapter is short and the book is laid out in such a way to make it difficult to put down. Perhaps the first non-fiction book that kept me up late reading for a few nights, I found each of the 53 tips relevant. And each chapter/tip is followed by a call to action with very do-able suggestions to help you implement the tip.

Well worth the read and I’m already am attempting to put Chad’s advice to practice!

Apr 24 2014
Leave a comment
General

Find Free Ebooks on Amazon with Nokogiri

If you need an html, xml, etc… parser for your latest Rails application, nokogiri may be the tool for you.

Allow me to introduce a real life example for which I found it quite useful.

Continue reading

Older posts
gipoco.com is neither affiliated with the authors of this page nor responsible for its contents. This is a safe-cache copy of the original web site.