Data Grave

I'm currently listening to Data Grave by Sleepy Eyes Of Death on repeat as I code and you should give them a try as well.

Stay in the zone & happy coding!

I'm currently listening to Data Grave by Sleepy Eyes Of Death on repeat as I code and you should give them a try as well. Stay in the zone & happy coding!…

Read More

The World's Greatest Company

As I'm entering my 17th year as a software developer working in large corporations and also small startups, I'm starting to reflect on what it is that truly makes me happy about my current job(s) and past jobs. For me, it's not the money, although it certainly helps pay the bills and creates options, it's never been the #1 reason for me to join a company.

What sticks out the most to me is the team, structure and product. I've been on both sides of the table in the corporate and startup worlds and my new outlook is starting to surface. Is there really a company out there like this?

Here is a list of things that makeup my ideal workplace:

  • Flat Structure
  • No Marketing Department
  • Customer Driven - The customer is the boss
  • Lean & Green
  • Act small. Think big
  • Autonomous Culture
  • Rotating Team Leadership
  • Understanding of Open-Source Philosophies
  • Distributed Team
  • Open office hours
  • Eat Ups / Drink Ups / Meet Ups / Demo Days / Roundtable Discussions / Hackathons
  • Data Driven Decisions
  • Slack / Skype / Hangouts / RTC
  • Everyone codes, or has coded, or is learning to code
  • Employee Product Ownership & Usage
  • Transparency and Open Allocation
  • Pet, Kid, Hobby, Etc Friendly Office Environment
  • Innovative and open to innovation
  • Core Values remain Clear and Enforced Core Values
  • Question everything
  • Understanding that there's always a better way, but knowing how to compromise
  • Enable employees
  • Hire character, train skill
  • Unlimited vacation days
  • Company wide involvement with social media
  • Book Clubs
  • Many Hats. Many Shoes.
  • Couches, Beanbags, Pods, Standing Desks, etc.

Of course there are many more "things" to consider, but these are what I came up with in just a few minutes. What "things" do you consider when thinking about a great team, product and company?

As I'm entering my 17th year as a software developer working in large corporations and also small startups, I'm starting to reflect on what it is that truly makes me happy about my current job(s) and past jobs. For me, it's not the money, although it certainly helps pay…

Read More

How to Go From Sedentary to Running in Five Steps

As a runner, there is almost nothing in this world that can take me to the places that running does. I find solitude in my running, I find my thoughts and my peace, I find energy and motivation, I come up with my best ideas and solve my toughest problems. Running transforms me.

I try to encourage others to run, but even if they want to do it, they don’t know how.

Today, I’m going to give you my advice (as an intermediate runner, not an expert) on how to go from sitting on the couch to being a true runner. I won’t say that it’ll be easy, especially in the beginning. But I will say that it won’t kill you (assuming you don’t have major health problems) and that it will get easier and even fun in a few short weeks.

I will start with the standard disclaimer: Before starting this program, get checked out by a doctor, especially if you have any health risks, such as heart or lung problems, major diseases, pregnancy, or the like.

If you’re fit enough to walk for 20 or 30 minutes, you should be able to do this program.

The Benefits of Running

Why should you even consider doing this program (or running at all)? Lots of reasons. Just a few to start with:

1. You’ll get healthier. There are other ways to get healthy, of course, including dozens of other types of exercises. But running is one great way. If you stick to a moderate running program, I can almost guarantee that you’ll get slimmer and your heart will get stronger and your cholesterol will go down. Your diet is a big factor, of course, but more on that in the next benefit.

2. You’ll eat better. When you start running — and this can take a few weeks or more — you start to realize that what you eat is fuel. And you realize that burgers and fries and soda are not the best fuel. So you start to eat cleaner fuel, and it can start to be a lifetime habit. This doesn’t always happen, but I’ve seen it happen a lot. It may take awhile before you get a really clean diet, but the desire to change starts relatively soon.

3. You’ll want to quit smoking. It’s hard to keep smoking if you really get into running. Some people keep smoking while running, but I’ve seen tons of runners who quit smoking, because they know that smoking doesn’t jibe with their lifestyle. If you’re looking for a good way to quit, start with running.

4. You’ll find solitude. In the hectic bustle of everyday life, many people have trouble finding time for themselves, time to think and to find peace. Running will become your oasis of peace, a time you look forward to each day.

5. Races are super fun. Once you’ve been running for a month or two, you should sign up for a 5K. It’ll be a great time. The camaraderie among runners, slow and fast, young and old, is a wonderful thing. The feeling of accomplishment when you cross the finish line is unbeatable. And after awhile, you might try 10Ks, half marathons, maybe even a marathon. There’s nothing like doing road races.

6. You’ll lower your stress levels. It beats smoking, drinking, vegging out in front of the television, almost anything else I can think of, for getting rid of the stresses of your life.

7. You’ll think better. Running is the time when my mind is clearest. It’s hard to really think about things when you have the noise of the modern world around you, but when you’re alone on the road, you can’t help but think in silence.

8. You’ll find the warrior within you. There is something about running that transforms you. In the beginning, it can be very difficult, and there will be times when you feel like stopping, but if you can beat that little negative voice inside you that wants to stop, you will learn that you can beat anything. Running will teach you to overcome your doubts and negativity, and that’s a gift that will take you to new heights in anything you do.

The Rules

Before we start, I’d like to offer a few rules:

1. Start small. This is mandatory. Many people make the mistake of starting too hard, and they get burned out or injured or discouraged within a couple of weeks. This program is designed to get you running for life, so if you have lots of enthusiasm when you start, that’s great — but you MUST rein it in and start small. That enthusiasm that you have to hold back will keep you going for much longer if you don’t spend it all the first week.

2. Increase gradually. Another mandatory rule. If you don’t follow this rule, you shouldn’t follow the program. Trust me, I know how it feels like the rules of increasing gradually don’t apply to you … I made that mistake when I started out and got injured. Your mind (and even your heart and lungs) might be able to handle doing more, but your legs might not. It takes awhile for your muscles and tendons and ligaments and joints to adjust to the stress of running, and if you progress to rapidly, you’ll get injured. Increase but very gradually.

3. Enjoy yourself. Very mandatory. If you don’t enjoy yourself, you’ll never stick with it. So try to have as much fun as possible. Enjoy getting fit and healthy! Enjoy burning off your fat! Enjoy the sweat! Enjoy the relaxation of burning off stress! Running should be fun, not torture.

4. If you can, get a partner. This is not really a rule but a suggestion — if you can find a reliable partner, it makes it a bit easier. First, having someone to talk to while you walk (and later run) makes the time go by extremely quickly. Second, if you make an appointment to meet that person for your walk (or run), you’re more likely to stick to the appointment rather than wimp out.

The Five Steps

OK, here are the five steps to becoming a runner. There are some rough timeframes in each step, but the real rule is to increase only when you feel ready, and no sooner. If you need longer for a step, take longer. There’s no rush. But if you think you can do it sooner, I would suggest that you not.

Step 1: Start walking. Start out by walking just 3 times the first week, and four times the second. The first week, you only need to do 20-25 minutes. Increase to 25-30 minutes the second week. After this, you can graduate to the next step, or if you’d like to stay in this step for a week or two longer, that’s OK. If you stay longer, walk 4 times the third week, 30-35 minutes each time. The fourth week, stay at 4 times, but increase to 35-40 minutes.

Step 2: Start run/walking. Do this step very gradually, just a little more each time. For this step, you’ll continue to exercise 4 times a week. You want to warm up by walking for 10 minutes. Then do a very, very easy run/walk routine: jog lightly for 1 minute (or 30 seconds if that seems too hard), then walk for 2 minutes. Repeat these intervals for 10-15 minutes, then do a 10-minute walking cool down. Do this step for two weeks, or longer if you like.

Step 3: Lengthen the running. Once you’re comfortable running for a minute at a time, for several intervals each time you exercise, you’re ready to start running a little longer. Continue to exercise 4 times per week. Increase your running to 1 minute 30 seconds, with an equal walking (1:30 running, 1:30 walking) for 15 minutes. Do this a couple times or more, then increase running to two minutes, with walking for 1 minute. Do this a few times or more, then increase to running 2:30, walking 30 seconds to a minute. If any of these increases feels too hard, feel free to go back a step until you’re comfortable increasing. Don’t rush it. You should stay in this step for 2-3 weeks or more.

Step 4: Follow the Rule of 9. Once you start Step 3 above, you’re basically running with short walk breaks. This can seem difficult, but it’ll get easier. Commit to doing 9 running workouts in Step 3 … after that, it’ll get easier. The first 9 running workouts can be difficult, but after that, it almost always gets better and more enjoyable. Don’t quit before the 9 running workouts! After the 9, try running with only infrequent walk breaks.

Step 5: Take your running to new levels. First of all, celebrate! You’re now a runner. You might be walking a little during your runs, but there’s nothing wrong with that. In fact, feel free to keep doing walk breaks as you work on your running endurance. Some runners have been known to do a marathon with walk breaks, running 10 minutes and walking 1 minute. That’s completely fine. Eventually you probably won’t need the walk breaks, but no need to rush.

In this step, you want to continue taking your running to new levels. There are a number of ways to do this:

  • Gradually increase your running until you can do 30-40 minutes of running at a time, 4 days a week. Do this increase gradually, as you should be mostly running for 15 minutes at a time by the end of Step 4 … just increase by 5 minutes each week.

  • Sign up for a 5K. If you can run for 30-40 minutes, you can complete a 5K. Sign up for one (there are races almost every weekend in many places) and participate with the idea of just finishing. Have fun doing it!

  • Once you have increased your running to 30-40 minutes at a time, designate one run a week as your “long run”. Try to increase this by 5 minutes each week, until you can do an hour or more. This is your endurance run, and it is a key to most running programs.

  • Once you’ve got endurance, you can add some hills to your program. Add hills gradually, by finding a more hilly course, and eventually adding hill repeats — run (kind of) hard up the hill, then easy down the hill, and do 3-5 repeats.

  • After hills, do a little speed workout once a week. Do intervals of a couple of minutes of medium-hard running, with a couple minutes of easy running. Make these speed workouts shorter than your normal runs — if you run for 40 minutes, do 25-30 minutes for your speed workouts. Be sure to warm up and cool down with easy running for 10 minutes.

  • Tempo runs are good workouts when you’re ready. That means a 10 minute warmup, then 20 minutes or so of running somewhere between your 10K and half-marathon pace. That means going the pace you think you can race for an hour, but only doing it for 20-30 minutes.

  • Run with a group, or run alone. Don’t always run alone or with a partner. Mix things up.

  • Find new routes. Don’t always run the same routes. Try running on a track, in a different neighborhood, on a treadmill, on trails.

  • After you’ve done a few 5Ks, sign up for a 10K. Then a half marathon. Then a marathon. But do one step at a time.

Most of all, enjoy your runs!

Source: http://zenhabits.net

As a runner, there is almost nothing in this world that can take me to the places that running does. I find solitude in my running, I find my thoughts and my peace, I find energy and motivation, I come up with my best ideas and solve my toughest problems.…

Read More

A good programmer is a lazy programmer...

They say "A good programmer is a lazy programmer..." - That may be true, however I would like to turn the negative into a positive and change the phrase to "A good programmer is an efficient programmer..."

I love patterns. I see them all the time. Throughout music, throughout code, throughout life in general. They're litterally everywhere and I am constantly on the lookout for them. Today I found myself repeating the same task/pattern over and over again and I was curious to see how much time it was actually taking up throughout my day.

Problem:

So the task at hand was to deploy 17 repositories to heroku at the same time and verify that they are deployed and running by simply viewing them in a browser. Pretty simple, right? Yes, simple is NOT the issue at hand, time is. Time is everything when it comes to getting work done, so be sure to use it wisely, as I'm pretty sure you will not get any of it back...

Solution:

Write a simple Shell script that will do the following:

Navigate to 17 local repositories

$ cd ~/path/of/my/local/repositories

Deploy each property to heroku / github / some cloud based git service (in my case, heroku)

$ git push heroku master

Then confirm the site is running and deployed by opening it physically in Google Chrome like so

$ open -a Google\ Chrome http://nameofmyawesomedomain.com

And finally, (optionally) print out some console confirmation that the script completed

$ echo "Deploy complete"

My Script

(Most likley this will not help you, but have a look anyway...)

#!/bin/bash

echo "Deploying admityouhaveaproblem..."  
cd ~/Heroku/admityouhaveaproblem.github.io && git push heroku master  
open -a Google\ Chrome http://admityouhaveaproblem.com  
echo "Deploy complete"

echo "Deploying ColorMyMusic..."  
cd ~/Heroku/ColorMyMusic.github.io && git push heroku master  
open -a Google\ Chrome http://colormymusic.com  
echo "Deploy complete"

echo "Deploying beforeidiei..."  
cd ~/Heroku/beforeidiei.github.io && git push heroku master  
open -a Google\ Chrome http://beforeidiei.com  
echo "Deploy complete"

echo "Deploying convoclothing..."  
cd ~/Heroku/convoclothing.github.io && git push heroku master  
open -a Google\ Chrome http://convoclothing.com  
echo "Deploy complete"

echo "Deploying getanintern..."  
cd ~/Heroku/getanintern.github.io && git push heroku master  
open -a Google\ Chrome http://getanintern.com  
echo "Deploy complete"

echo "Deploying getgearly..."  
cd ~/Heroku/getgearly.github.io && git push heroku master  
open -a Google\ Chrome http://getgearly.com  
echo "Deploy complete"

echo "Deploying hissio..."  
cd ~/Heroku/hissio.github.io && git push heroku master  
open -a Google\ Chrome http://hiss.io  
echo "Deploy complete"

echo "Deploying jogbuy..."  
cd ~/Heroku/jogbuy.github.io && git push heroku master  
open -a Google\ Chrome http://jogbuy.com  
echo "Deploy complete"

echo "Deploying kissvote..."  
cd ~/Heroku/kissvote.github.io && git push heroku master  
open -a Google\ Chrome http://kissvote.com  
echo "Deploy complete"

echo "Deploying kywrd..."  
cd ~/Heroku/kywrd && git push production master  
open -a Google\ Chrome http://kywrd.com  
echo "Deploy complete"

echo "Deploying latched..."  
cd ~/Heroku/latched.github.io && git push heroku master  
open -a Google\ Chrome http://getlatched.com  
echo "Deploy complete"

echo "Deploying madstory..."  
cd ~/Heroku/madstory.github.io && git push heroku master  
open -a Google\ Chrome http://madstory.com  
echo "Deploy complete"

echo "Deploying meetsme..."  
cd ~/Heroku/meetsme.github.io && git push heroku master  
open -a Google\ Chrome http://meetsme.com  
echo "Deploy complete"

echo "Deploying neighborhoodly..."  
cd ~/Heroku/neighborhoodly.github.io && git push heroku master  
open -a Google\ Chrome http://neighborhood.ly  
echo "Deploy complete"

echo "Deploying picksomeone..."  
cd ~/Heroku/picksomeone.github.io && git push heroku master  
open -a Google\ Chrome http://picksomeone.com  
echo "Deploy complete"

echo "Deploying rehearseio..."  
cd ~/Heroku/rehearseio.github.io && git push heroku master  
open -a Google\ Chrome http://rehearse.io  
echo "Deploy complete"

echo "Deploying youmeyoume..."  
cd ~/Heroku/youmeyoume.github.io && git push heroku master  
open -a Google\ Chrome http://youmeyoume.com  
echo "Deploy complete"  

Save the above as deploy_script.sh and then set the permissions to be executable:

$ chmod +x ./deploy_script.sh

Next run the script:

$ ./deploy_script.sh

Conclusion

Now, before writing this simple Shell script, this process was taking up about an hour of my time each and every day (I'm doing the 365 Days of Open Source Contributions). Clearly this was not something that I enjoyed, nor was it even remotely sustainable.

By writing a script, I can now deploy code in less than 30 seconds.

Video Proof

Save yourself some time and write shell scripts locally, or possibly consider using Alfred Mac App.

Happy coding!

They say "A good programmer is a lazy programmer..." - That may be true, however I would like to turn the negative into a positive and change the phrase to "A good programmer is an efficient programmer..." I love patterns. I see them all the time. Throughout music, throughout code,…

Read More