Standing Desk Conversion
May 21, 2012
I built a topper this weekend to convert my sitting desk into a standing desk and it turned out to be really easy.
I’ve been interested in the idea of a standing desk since talking to Emily Smith and Charlie Pratt several months ago, both touting the improved level of energy and productivity they feel by standing. Having recently bought new desks at Bold, I just wasn’t ready to commit full-time to something I didn’t know how much I would like.
Enter the desk topper. For $30 in supplies and a few hours of work, this is the perfect solution. If I love it, it stays. If I hate it, it goes.
Day One has gone pretty well. I’ve got some tiredness in my feet and lower back, but nothing unbearable. I do feel a bit like I’m towering over everything around me, but at 6′ 5″ that’s not an entirely new feeling. Drowsiness is non-existant and all-in-all it’s been a productive day of work.
I plan to add a mounting bracket to secure the base of the iMac. It freaks me out too much having it nearly two feet off of the main desk.
I’ll check back in at the end of this week for an update on how it feels, any noticeable complications and/or unexpected upsides, and my decision on a plan for Week 2.
UPDATE: After a week of using the standing desk topper I’m still on board with it. There was definitely some fatigue through the week, but I think that had a lot to do with adjusting muscle groups. I notice I am a lot more alert and attribute that to the general fact that I’m standing and would collapse otherwise. I did notice that my legs and back became tired more quickly the day after a thorough night of volleyball the previous day. I expect that to become less of an issue as well in the days and weeks to follow. So far, so good!
Loading environment-specific configuration files in CodeIgniter
May 17, 2012
About a year ago, CodeIgniter got the addition of an ENVIRONMENT constant which saved me a lot of headaches with managing difference between my various environments (development, staging, production).
// Conditional I add to index.php to self-determine the environment
if ($_SERVER['SERVER_NAME'] == 'mysite.dev')
{
define('ENVIRONMENT', 'development');
}
else
{
define('ENVIRONMENT', 'production');
}
if (defined('ENVIRONMENT'))
{
switch (ENVIRONMENT)
{
case 'development':
error_reporting(-1);
break;
case 'testing':
case 'production':
error_reporting(0);
break;
default:
exit('The application environment is not set correctly.');
}
}
Not only is it great for setting up server configurations like error reporting, it’s perfect for use in config files as well.
// Cloud asset bucket
switch (ENVIRONMENT) {
case 'development':
$config['s3_bucket'] = 'mybucket_develop';
break;
case 'staging':
$config['s3_bucket'] = 'mybucket_staging';
break;
case 'production':
default:
$config['s3_bucket'] = 'mybucket_production';
break;
}
Instead of having to ignore configuration files in Git to handle the differences in production vs. development, now all that is necessary is a conditional to handle the variations.
Fast-forward a year, all the way to yesterday, and I happened upon another great little feature: “Environment-specific configuration files.” It was really by accident that I stumbled on it and only did because I was searching for ENVIRONMENT in my full CI project.
// Is the config file in the environment folder?
if ( ! defined('ENVIRONMENT') OR ! file_exists($file_path = APPPATH.'config/'.ENVIRONMENT.'/config.php'))
{
$file_path = APPPATH.'config/config.php';
}
What! So basically this is telling me that I can have a ‘development’ and ‘production’ folder inside of my ‘application/config’ folder and it will precede the main config.php file. Better yet, it works for all the config files (hooks, constants, routes and even libraries).
I headed to the CI docs and found one paragraph about environment-specific configuration files in the Config class docs. Not exactly prime real estate if you want to get noticed…
Since this was such a surprise to me, I figured it might be helpful to someone else as well. No more conditionals, no more Git ignores. Nice!
Greenville Grok
March 18, 2012
I’m new to the web conference scene. I’ve never been to SXSW, Brooklyn Beta, or the like, but there’s something about Grok that’s highly appealing. I continue to believe that CoWork is an anomaly in the web world and if you’re within driving range of Greenville, you’d be out of your mind to not rent a desk and join that fantastic community. So, knowing that this great group of folks was hosting a conference; how could I not sign up?
Grok isn’t just your typical conference where you can sit back and consume. You’re expected to be a part of the conversation, to contribute your thoughts and experiences, and even to lead the dialogue at times. “How crazy, I don’t have anything to add,” was my first thought. While I’m not the type to force my voice to be heard, I was able to add my perspective and even get some feedback on stuff we are working on at Bold. Thirty or so folks willing to provide their years of insight and experience on something our little 4-person shop is working on right now. Priceless!
But Grok is more than just a web conference, it’s a chance to meet your heroes, your Twitter friends, and to discover new, highly talented people you’ve never come into contact with before. On that note, I’m going to share some folks I’ve been wanting to meet for some time that I finally got to have conversations with this weekend as well as a few people I met for the first time and wish I had known for much longer.
People I’ve Wanted to Meet
- Rogie King – What an awesome, solid guy. Not only does he knock out some of the best work I’ve seen, this guy cares for the community. Without even trying, so many are encouraged by his support, feedback, and passion. I could have used way more time with this guy and hope to find some in the future.
- Joshua Blankenship – How could you say anything but good things about Joshua? I was really struck this week by his pure authenticity. Such a great thinker and leader. I’d work for this guy any day.
- Chandler Van De Water - This guy bring the energy and the fun. There’s never a dull moment when Chandler is around (that is, unless he just spent three hours zip lining on little sleep). I want that beer app!
- Emily Smith – I’ve actually know Emily for a while, but never gotten to have real conversation. I was lucky enough to have Emily as a travel buddy from SF and needless to say it turned the disaster that is airline travel into something great. Emily is top-notch at what she does, but is really well-rounded as well. I learned a ton about healthy eating and psychology. If you need IA/UX for a project, Emily is the first person you should contact.
People I Wish I’d Known Sooner
- Tyler Sloan – “Mr. Southern Hospitality”. Tyler invited me into his home for the weekend without even knowing me and I think it’s part of what made Grok so great. He and his wife, Allie, were so fun to hangout with and chat. If you don’t know Tyler, you need to pronto.
- Jeremy Jantz – I had several really great conversations with Jeremy. One of the nicest guys I met. I think we might be kindred spirits. I want to know beer like this guy!
- David Stevens – Another all-star from Newspring. David and I talked after my 10/20 and gave me really great feedback about FRVNT, threw out a ton of ideas, and shared a lot about what he’s up to at Newspring. Really smart guy. I look forward to collaborating down the road.
Both lists could easily be significantly longer because I met so many great people. This is why we need to Grok. Let’s continue to make this community great, support one another, put faces to names, and continue to do the best work we can by supporting one another. Thank you to Matthew Smith and the CoWork folks for such a great event. I can’t imagine not being there next year!
CodeIgniter Startup Script
February 24, 2012
Ever since CodeIgniter moved over to GitHub I’ve been interested in figuring out a way to use the EllisLab repository code inline with our specific project code to simplify updates but haven’t found a great way to go about it.
Fairly recently I came across CodeIgniter Starter which is a step in the right directoin: A GitHub repo that has some configuration and project setup in place. I didn’t love that it comes with certain Sparks pre-installed and at Bold we run our system files outside of the webroot. Still left me with a decent amount of configuration to get up and running.
I use Sublime Text 2 for coding (you probably should be using it too) and recently there was a great Package built by NetTuts called NetTuts+ Fetch. It simplifies the retrieval of remote files and packages by downloading them from a preset source and “injecting” them into a project. It got my juices flowing again about automating CodeIgniter project setups.
Enter Bash scripting. I’ve always loved Bash scripts and realized that this was the perfect use case. Let’s automate all of the steps and configuration that happens on every new CI project with a short command line operation.
As I mentioned, at Bold we run CI system files outside of the webroot. This script retrieves the latest CI version, automates the clean up of the folder structure, installs placeholder asset files, and optionally sets up the Sparks installer (no actual Sparks are installed), adds the project to a local Git repo, pushes the initial commit to a remote Repo, and installs Git Flow. Lots of stuff going on there, but now deploying a new CI project takes about 10-15 seconds from start to finish. Pretty great!
Check out the code and full docs on GitHub at: https://github.com/bold/codeigniter-startup-script
CodeIgniter Spark for SendGrid’s Newsletter API
February 16, 2012
I’ve submitted my first CodeIgniter library to GetSparks.org in an effort to start giving back to the community that has provided us with so many great tools. This library is a wrapper to the SendGrid Newsletter API and supports all of their provided methods.
What is SendGrid?
SendGrid is a easy-to-use email delivery service similar to Postmark or Amazon’s SES. They provide a great way to send transactional emails using CodeIgniter’s core email library and SMTP. However, they also offer a newsletter service at no additional cost which supports recipient lists and send scheduling.
Where Can I Get It?
INSIGHT: Who is the star of your product?
October 23, 2011
Link: http://37signals.com/svn/posts/3029-who-is-the-star-of-your-product-do-you-want
Great perspective on how we should strive to build products. It’s not about people thinking our work is great, it’s about our work making people think they are great.
Managing CodeIgniter Packages with Git Submodules
September 26, 2011
Link: http://philsturgeon.co.uk/blog/2011/09/managing-codeigniter-packages-with-git-submodules
Great post on how to include Git projects within other Git projects as submodules. I’ve been wanting to do this for a long time!
Introducing dashEE – The Missing ExpressionEngine Dashboard
September 9, 2011
CodeIgniter US State Helper
August 11, 2011
I’m working on a project today and building a credit card checkout form for what seems like the 1,000th time. It occurred to me that a US State Helper would save me from having to 1) look up all of the states every time, and 2) dump them into an array and build out functions for easy conversions and validation. I figure this may help some people out there, so enjoy!
Download
Offered for free and without support: Spark or GitHub
Documentation
Installation
If you are using the Spark, install as usual. Otherwise, the helper file (helpers/state_helper.php) will need to be moved into your ‘application/helpers’ project directory.
Configuration
No configuration involved. Just load the helper as your would any other helper.
<?php
// Spark
$this->load->spark('state-helper/1.0.0');
// Or, Helper file
$this->load->helper('state');
?>
Usage
There are currently four helper functions available to simplify dealing with US states in CodeIgniter.
- state_array() — Returns an array of US state names where the array’s keys are the corresponding two-letter abbreviation.
- state_dropdown($name [, $selected [, $id [, $class]]]) — Returns the HTML for a <select> dropdown where the <option> values are the states’ two-letter abbreviations and the displayed values are the full state names.
- $name — The name to be placed on the <select> element.
- $selected (optional) — The particular state’s two-letter abbreviation to be set as the default.
- $id (optional) — ID attribute to be placed in the <select> tag.
- $class (optional) — Class attribute to be placed in the <select> tag.
- abbr_to_name() — Converts state’s two-letter abbreviations into their full state name.
- name_to_abbr() — Converts full state names into their respective two-letter abbreviations.
- is_valid_state() — Checking function to see that the provided full state name OR two-letter abbreviation is valid. Returns boolean TRUE or FALSE.
Bold Welcomes Mike Meyer!
May 23, 2011
Link: http://hellobold.com/hired/
Bold is more than excited to announce the first member to join our team: Mike Meyer. Mike is moving West from South Carolina to the Golden State and we can’t wait to get him out here!