Skip to content

Commit

Permalink
layout changes
Browse files Browse the repository at this point in the history
  • Loading branch information
briandoll committed Jun 14, 2010
1 parent 4d03a6e commit 37db7a4
Show file tree
Hide file tree
Showing 42 changed files with 84 additions and 117 deletions.
8 changes: 5 additions & 3 deletions _layouts/default.html
Expand Up @@ -31,7 +31,6 @@
<a href="mailto:brian@emphaticsolutions.com">Brian Doll</a>, Software/Systems Architect, San Francisco Bay Area, California
</div>
<div id="icons">
<a href="/talks.html" title="Recent Talks"><img src="/images/talk-icon.png" border="0"></a>
<a href="http://github.com/briandoll/" title="briandoll on github"><img src="/images/octocat_gems_32.png" border="0"></a>
<a href="http://twitter.com/briandoll/" title="@briandoll"><img src="/images/twitter_32.png" border="0"></a>
<a href="http://www.linkedin.com/in/briandoll" title="LinkedIN"><img src="/images/linkedin_32.png" border="0"></a>
Expand All @@ -46,8 +45,11 @@
</div>
</div>
<div id="bio" class="yui-b">
<hr/>
Brian Doll is a husband, father, thought worker, tree-hugging, music-loving, punk, atheist, non-conformist, optimist, Quality seeker. Here you'll find a mix of thoughts on fitness (Crossfit, Paleo foods), philosophy and programming (Ruby, Rails and other goodies).
<hr/>
<div><strong>About the author:</strong></div>
<p>Brian Doll is a business-focused technologist who has been building things on the web for over 13 years. He has extensive experience in retail, media and financial service industries in both start-up and large enterprise environments.</p>
<p>He enjoys speaking on lean engineering, web application performance and systems architecture. Having been inspired by Ruby and reinvigorated by Rails, Brian has been an avid contributor in the Ruby/Rails community since early 2007.</p>
<p>Additionally, he is a husband, father, thought worker, tree-hugging, music-loving, punk, atheist, non-conformist, optimist, Quality seeker. Phew! Here you'll find a mix of thoughts on fitness (Crossfit, Paleo foods), philosophy and programming (Ruby, Rails and other goodies).</p>
</div>
</div>
<div id="ft">
Expand Down
4 changes: 4 additions & 0 deletions _layouts/post.html
Expand Up @@ -2,6 +2,10 @@
layout: default
---

<h1><a href="{{page.url}}">{{page.title}}</a></h1>

<div id="post-date">{{ page.date | date(page.date,'%B %Y') }}</div>

{{ content }}

<hr>
Expand Down
Expand Up @@ -3,8 +3,6 @@ layout: post
title: Passing by Value, Reference and somewhere in between
---

h1. {{ page.title }}

I had recently run into what one might call an anti-pattern in a code base I was recently working in, and wanted to refresh my memory on exactly how java deals with object parameters that are modified within the method body. To be totally honest, the code (similar to the first code snippet below) was so strange to me because I had never ever seen that (anti-)pattern before. It’s likely an artifact left over from a C programmer that may have forgotten the language differences.

This discussion is often had, but usually leaves the participants more confused than when they started. Java passes by value, right? Or is it reference? What is it with primitives again? Oh man, forget it.
Expand Down
Expand Up @@ -3,8 +3,6 @@ layout: post
title: Software Engineering Book Recommendations
---

h1. {{ page.title }}

I always find it fascinating what books people prefer on various topics. I put together the following list of books I really enjoy, broken down by category. Please feel free to add to the list, or to comment on the selections.

h3. People, Projects and surviving them both
Expand Down
Expand Up @@ -3,8 +3,6 @@ layout: post
title: Drag and drop AppleScript to convert video
---

h1. {{ page.title }}

My parents were kind enough to get us a "JVC Everio digital video camera":http://www.jvc.com/presentations/everio_g/ after our son was born. The camera has incredible picture quality, loads of features and fits in the palm of your hand. We shot loads of video of his first few weeks and soon enough it came time to make our first DVD to send to friends and relatives.

It turns out the Everio cameras create .mod files, which are similar to MPG files, but.. um.. aren't. I'm guessing this was a way to avoid paying royalties for MPG compression, but this does leave a little bit of leg work for the user. (And *no*, you can't just rename them to .mpg, I have no idea why most websites suggest that as they are not compatible.)
Expand Down
2 changes: 0 additions & 2 deletions _posts/2007-09-28-testing-static-vs-dynamic-typing.textile
Expand Up @@ -3,8 +3,6 @@ layout: post
title: Testing - Static vs. Dynamic Typing
---

h1. {{ page.title }}

Cedric Beust recently wrote an article entitled "Continuous Tax":http://beust.com/weblog/archives/000462.html where he describes the term "Continuous Tax" to be "dead-on" in describing what it's like to work with dynamically typed languages.

This topic interests me for a variety of reasons but mostly because Cedric is quite authoritative in the world of software testing, what with the "framework":http://testng.org/doc/ and the "book":http://beust.com/weblog/archives/000459.html and all.
Expand Down
Expand Up @@ -3,8 +3,6 @@ layout: post
title: Leaky abstractions, seepage of a dangerous kind
---

h1. {{ page.title }}

<small>(This is an excerpt from an article I wrote at my day job. Specifics about team members and the projects at hand have been removed.)</small>

*What are leaky abstractions?*
Expand Down
Expand Up @@ -3,8 +3,6 @@ layout: post
title: Dancing with dynamic features in Ruby
---

h1. {{ page.title }}

I was working on a "browse" page recently for a rails-based web application. The page was not all that uncommon, requiring a listing of categories with a long list of subcategories. Without getting into much detail, I'll note that each of these top-level types are represented by different models.

A particular "bad smell" emerged when seeing some repetitious code in a controller:
Expand Down
2 changes: 0 additions & 2 deletions _posts/2007-12-05-blocks-closures-and-the-ruby-way.textile
Expand Up @@ -3,8 +3,6 @@ layout: post
title: Blocks, Closures and The Ruby Way
---

h1. {{ page.title }}

I recently attended my first "Ruby Meetup":http://ruby.meetup.com/6/calendar/6597195/ here in San Francisco. One of the talks, given by "Bala":http://ruby.meetup.com/6/members/3936949/ was on "Blocks" in Ruby.

Let me first say that I have somewhat of a crush on Ruby right now. I haven't been this excited about hacking at some code in ages. Ruby is a dynamic language, letting me do things I used to do in Perl, but in a way that seems clean and concise. I won't dare talk ill of Perl, but I'm betting you know what I mean.
Expand Down
2 changes: 0 additions & 2 deletions _posts/2007-12-18-actionwebservice-on-rails-2.textile
Expand Up @@ -3,8 +3,6 @@ layout: post
title: ActionWebService on Rails 2
---

h1. {{ page.title }}

Well, I can't just say _nothing_ about the recent release of Rails 2 _(.0.2)_, right?

One of the apps I'm working on uses a SOAP web service. I know, how old skool. As you have likely read, "ActionWebService (AWS) has been ousted from rails core.":http://weblog.rubyonrails.org/2007/12/7/rails-2-0-it-s-done
Expand Down
Expand Up @@ -3,8 +3,6 @@ layout: post
title: Quick Book Thoughts - Presentation Zen
---

h1. {{ page.title }}

I've been anticipating the release of "Presentation Zen":http://www.amazon.com/Presentation-Zen-Simple-Design-Delivery/dp/0321525655/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1199680549&amp;sr=8-1 by "Garr Reynolds":http://www.presentationzen.com/ for a few months now. My copy arrived on Friday, the first of three days without electricity due to a bit of a storm we've had out here in Northern California.

The book was fun to read in all respects and the design of the book itself, along with the presentation samples inside, are truly elegant.
Expand Down
2 changes: 0 additions & 2 deletions _posts/2008-01-26-troubleshooting-tips.textile
Expand Up @@ -3,8 +3,6 @@ layout: post
title: Troubleshooting Tips
---

h1. {{ page.title }}

Troubleshooting a software issue can be at once fun and frustrating. We're elated when the problem is solved (or at least, understood), but the methodical process of troubleshooting can be as much familiar as frantic.

Here are a few troubleshooting tips we all probably know, but need reminding of from time to time:
Expand Down
2 changes: 0 additions & 2 deletions _posts/2008-03-06-news-traveling-around-the-internets.textile
Expand Up @@ -3,8 +3,6 @@ layout: post
title: News traveling around the internets
---

h1. {{ page.title }}

A few interesting tidbits came across the many diverse and often redundant news sources I pay attention to lately. It occurred to me that there is somewhat of a natural flow to information these days. First, some event occurs, then somebody tweets about it.. and so on it goes. It takes a bit of time to jump from one medium to the next, and the accuracy tends to wane while the audience grows.

Here is how I see it:
Expand Down
Expand Up @@ -3,8 +3,6 @@ layout: post
title: Google Calendar Sync Doesn't
---

h1. {{ page.title }}

Many folks were near jubilation when Google "announced Google Calendar Sync":http://googleblog.blogspot.com/2008/03/google-calendar-sync.html. It's a windows application that lives in the dock that handles the chaos involved in syncing two calendars, not to mention dealing with Exchange. Unfortunately, for business users the _hoorah!_ did not last very long.

Users will need to pay special attention when reading the "known issues":http://www.google.com/support/calendar/bin/static.py?page=known_issues.cs to find:
Expand Down
Expand Up @@ -3,8 +3,6 @@ layout: post
title: Quick Book Thoughts - The Back of the Napkin
---

h1. {{ page.title }}

With a densely populated landscape of business books out there, it's nice to see something truly unique. "Solving problems and selling ideas with pictures", reads the apt subtitle of this napkin-shaped, unassuming book that may finally be what you've been looking for.

"Dan Roam":http://digitalroam.com/ has written a fun and frank book about ideating through business ideas using visual methods. Dan focuses on the _communication_ aspect of problem solving, using simple yet surprisingly impactful techniques for expressing ideas in ways that ensure everybody "gets it".
Expand Down
2 changes: 0 additions & 2 deletions _posts/2008-05-06-soap-headers-per-request-in-ruby.textile
Expand Up @@ -3,8 +3,6 @@ layout: post
title: Supporting unique headers per SOAP request in soap4r
---

h1. {{ page.title }}

"soap4r":http://dev.ctor.org/soap4r is a SOAP implementation in Ruby. If you're writing a SOAP client in Ruby (with or without Rails), soap4r is great. Until it isn't. Since this is a rather specific use case that I'm solving for, I'll assume that you have some experience using soap4r.

*Headers*
Expand Down
Expand Up @@ -3,8 +3,6 @@ layout: post
title: Connecting to Oracle from Ruby on Rails
---

h1. {{ page.title }}

When Rails 2 was "initially announced":http://weblog.rubyonrails.org/2007/12/7/rails-2-0-it-s-done, we heard that commercial database adapters would be maintained outside of rails core.
<blockquote>
The commercial database adapters now live in gems that all follow the same naming convention: activerecord-XYZ-adapter. So if you gem install activerecord-oracle-adapter, you’ll instantly have Oracle available as an adapter choice in all the Rails applications on that machine. You won’t have to change a single line in your applications to take use of it.
Expand Down
Expand Up @@ -3,8 +3,6 @@ layout: post
title: Deep Send
---

h1. {{ page.title }}

h3. or, How to wrangle with large object graphs and come out alive

In a perfect world, all of our objects are small, orderly and well defined. They encapsulate data that is semantically obvious and easy to work with. And then... in an obvious homage to "Jack Handey":http://en.wikipedia.org/wiki/Jack_Handey, we attack that world with large, complex and ugly object graphs, mostly the result of monolithic integration technologies like SOAP.
Expand Down
2 changes: 0 additions & 2 deletions _posts/2008-08-14-new-gem-rails_framework_diff.textile
Expand Up @@ -3,8 +3,6 @@ layout: post
title: New gem - rails_framework_diff
---

h1. {{ page.title }}

It started on twitter:
<blockquote>
It's amazing how hard it is to find problems when caused by developers incorrectly modifying framework-generated files. - "Chad Fowler":http://twitter.com/chadfowler/statuses/885401839
Expand Down
Expand Up @@ -3,8 +3,6 @@ layout: post
title: statulo.us - how getting fit somehow still involves programming
---

h1. {{ page.title }}

First, "David Heinemeier Hansson":http://loudthinking.com/ spoke of "the surplus":http://railsconf.blip.tv/#1170044. Spend it on yourself, he said. Invest in you.

What does that mean to you? How do you interpret that? Jamis got into woodworking. Somebody else is playing the banjo. The ukulele perhaps? "Get out of your editor", David said, and I somehow quickly forgot about that part.
Expand Down
Expand Up @@ -3,8 +3,6 @@ layout: post
title: Transparency, Responsibility, Accountability
---

h1. {{ page.title }}

"Kent Beck":http://www.google.com/search?hl=en&q=kent+beck speaking at RailsConf 2008. I think this is the most interesting and poignant presentation of the year.

<p><embed src="http://blip.tv/play/Ace1Roa8BA" type="application/x-shockwave-flash" width="320" height="270" allowscriptaccess="always" allowfullscreen="true"></embed> </p>
2 changes: 0 additions & 2 deletions _posts/2008-09-19-new-gem-greatest_common_factor.textile
Expand Up @@ -3,8 +3,6 @@ layout: post
title: New gem - greatest_common_factor
---

h1. {{ page.title }}

Ruby already provides the ability to find the greatest common factor (gcf) of two integers. What if we could determine the greatest common factor across a whole array of integers? Now we can.

I've just released "greatest_common_factor on github.":http://github.com/briandoll/greatest_common_factor/tree/master
Expand Down
Expand Up @@ -3,8 +3,6 @@ layout: post
title: Quick and Easy - Cache RSS feeds in your Rails app
---

h1. {{ page.title }}

Displaying a feed within your Rails app is pretty easy. It turns out caching that RSS feed is pretty easy too. I recently added cached RSS feeds to an app and had a few tiny hoops to jump through, so I thought I'd document them here for anyone else looking to solve the same problem.

Caching is easy. Cache invalidation is hard. For an RSS feed, we'd have to ping the feed to determine if any data had changed. Why bother? Instead of fetching the RSS feed on every single page request, let's cache it for a fixed period of time.
Expand Down
1 change: 0 additions & 1 deletion _posts/2008-12-13-train-to-not-suck-at-life.textile
Expand Up @@ -3,7 +3,6 @@ layout: post
title: Train to not suck at life
---

h1. {{ page.title }}

In an early edition of the "CrossFit Journal":http://journal.crossfit.com, Coach Glassman talks about the "foundations of CrossFit":http://www.crossfit.com/cf-download/Foundations.pdf (pdf):
<blockquote>
Expand Down
1 change: 0 additions & 1 deletion _posts/2009-01-12-clean-eating-how-I-make-it-work.textile
Expand Up @@ -3,7 +3,6 @@ layout: post
title: Clean Eating, How I make it work
---

h1. {{ page.title }}

h2. "But I already eat healthy!"

Expand Down
2 changes: 0 additions & 2 deletions _posts/2009-04-20-Golden-Gate-Ruby-Conference.textile
Expand Up @@ -3,8 +3,6 @@ layout: post
title: Golden Gate Ruby Conference
---

h1. {{ page.title }}

"GoGaRuCo":http://gogaruco.com/ was a huge success by any measure. "Josh Susser":http://blog.hasmanythrough.com/ first mentioned his idea for a local Ruby conference during a "San Francisco Ruby Meetup":http://www.meetup.com/sfruby/ a year ago or so. This past weekend 200 rubyists gathered at the "Swedish American Hall":http://www.cafedunord.com/?page=directions ready for "18 presentations":http://gogaruco.com/schedule/ and lots of break time in between to hang out and hack.

"Pivotal Labs":http://pivotallabs.com/, a sponsor of the event, provided live video coverage ("video available soon":http://pivotallabs.com/gogaruco/talks) and live-blogged every talk. Instead of rehashing each presentation, I wanted to collect my thoughts on the presentations that I liked the most.
Expand Down
2 changes: 0 additions & 2 deletions _posts/2009-05-02-automated-user-acceptance-testing.textile
Expand Up @@ -3,8 +3,6 @@ layout: post
title: Is there such a thing as free automated user acceptance testing?
---

h1. {{ page.title }}

"User acceptance testing":http://en.wikipedia.org/wiki/Acceptance_testing#User_acceptance_testing is a big milestone in software development, regardless of the methodology in use. At this stage, the customer (business analyst, system owner, client, etc.) is determining if the feature that's been developed actually matches their needs. To perform acceptance testing on web-based applications, people tend to fire up their browser and click around until they feel confident that things are working as expected.

Tests like these are very coarse grained. Unlike a "unit test":http://en.wikipedia.org/wiki/Unit_testing, where specific small components are tested in isolation, an acceptance test requires all the various moving parts to work together perfectly. Even when your unit test suite runs perfectly, that's no guarantee that the entire application stack is performing as expected. However, when an acceptance test fails, you know something is wrong. It also requires much more work to locate the exact issue, since there may be many moving parts that are working together in support of a particular feature.
Expand Down
2 changes: 0 additions & 2 deletions _posts/2009-05-19-always-a-student.textile
Expand Up @@ -3,8 +3,6 @@ layout: post
title: Always a student
---

h1. {{ page.title }}

"You're like a student of this stuff", he said. I thanked him, realizing that it was one of the greatest compliments I had ever received. I never felt the urge to pursue an advanced degree; my associates degree in _visual communications_ was hardly a deep dive into academia. Instead, I have always felt a constant need to learn on my own. In a way, I'm a life-long student of everything that I find interesting.

I'm always surprised, then, to meet people interested in a topic, but never actually learning much about it. "I was never given the opportunity" or "My company never paid for that training course" are poor excuses. The act of learning something can be different from person to person. Some people can learn a lot just by reading, others learn best by seeing and doing. Any way you slice it, you too can become an "autodidact":http://en.wikipedia.org/wiki/Autodidact, you just need to have the right perspective on learning.
Expand Down
2 changes: 0 additions & 2 deletions _posts/2009-09-06-the-rules-of-software-deployment.textile
Expand Up @@ -3,8 +3,6 @@ layout: post
title: The rules of software deployment
---

h1. {{ page.title }}

Any sufficiently complex software application will require a well thought-out deployment strategy. While a basic deployment strategy is quite suitable for a basic application, many applications require careful orchestration of interdependent systems to make for a successful release. For example, a web application may need to consider: source code, configuration files, content management data, application data, user data, cached data, search indexes, content delivery networks, background jobs, system monitoring tools, external services and APIs, as well as the user experience during the release process.

No matter how seemingly simple or complex your application is, there are a number of rules that should be followed. These rules apply regardless of language, release schedule, SCM, deployment toolset or infrastructure.
Expand Down
Expand Up @@ -3,8 +3,6 @@ layout: post
title: Allowing multiple failed assertions per test
---

h1. {{ page.title }}

h3. One assertion per test

This is a very common TDD guideline. Jay Fields posted "a good summary of why he feels one assertion per test is a good practice":http://blog.jayfields.com/2007/06/testing-one-assertion-per-test.html. If you read closely, however, you can see that the main reasons Jay doesn't like multiple assertions per test is that the feedback provided from the test suite is usually poor.
Expand Down
2 changes: 0 additions & 2 deletions _posts/2009-11-23-has_many_through_across_databases.textile
Expand Up @@ -3,8 +3,6 @@ layout: post
title: has_many :through across multiple databases in Rails
---

h1. {{ page.title }}

h3. A tale of two databases

Web applications usually start out so simply, yet so few of them stay that way for long. Some applications grow to utilize multiple databases, for instance. Perhaps your an eCommerce site that has a different database for your catalog and transactional data. "In Rails, we can do this pretty easily.":http://jonathansng.com/ruby-on-rails/multiple-database-connections-with-rails/
Expand Down
Expand Up @@ -3,10 +3,6 @@ layout: post
title: Lean Software Engineering - My progression toward Kanban
---

h1. {{ page.title }}

<div id="post-date">{{ page.date | date(page.date,'%B %Y') }}</div>

h3. In the beginning, there was...

_Nothing_. That's right. I'll bet that long before many of us suffered "the waterfall model":http://en.wikipedia.org/wiki/Waterfall_model we first suffered from the lack of any process at all. As a maker of things, having no defined process can feel wonderful and free at first. In hindsight, many have called this "cowboy coding":http://en.wikipedia.org/wiki/Cowboy_coding but it's actually worse than that. Cowboy coding sounds romantic. A man or woman on their horse, acting on any whim that strikes them, as hedonistic as they want to be. In reality, having no process, no schedule, and basically no rules leads to nothing more than horse shit. No maker wants that.
Expand Down

0 comments on commit 37db7a4

Please sign in to comment.