How we use GitHub as a killer bug tracker and code review tool
I like a place to organize my bugs and features. I don’t like to double track in my own to-do list and in a bug tracker. I’m also a huge fan of code review. It was important to me that code review integrated well with my bug tracker.
Enter GitHub and Hub
I’ve started a few team projects, and haphazardly ended up using GitHub for bug tracker and code review. Once I found that Hub converted issues into pull requests, I fell in love.
My team has a very simple workflow for code review. (This could work well for individual projects as well by simply skipping the code review step.)
Planning and bug tracking
- Create milestones in GitHub Issues
- Create issues for features or bugs for each milestone
Development
- Create a branch for each issue you start work on
git branch –track issue8 origin/issue8
- Push to the branch on GitHub (You can commit/push as much as you want to this GitHub branch)
Code submission and review
- Convert issue into pull request with Hub
hub pull-request -i 8
- The code can be reviewed on GitHub by a co-developer
- Changes are pushed to the branch and GitHub tracks commits in the pull-request thread
- Once the code is ready — Merge
Rinse and Repeat
- Rinse: delete branch
- Repeat: create another branch for another issue
Tracking branches
The only step that felt like extra work here was adding branches for each issue. However, once it became habit I can’t imagine it any other way.
We have a master branch that is merged into, and a release branch that gets updated with each milestone. It seems natural that each issue/feature has it’s own branch to update and merge.
Create LinkShare Short Links
I have a lot of friends using affiliate links for apps in the store. The click.linksynergy links are embarrassing. The redirection is ugly, and tacky. You can create affiliate links that generate revenue without the poor user experience.
Take an iTunes link:
https://itunes.apple.com/us/app/rise-sunrise-sunset-calendar/id585146605?mt=8
Add the LinkShare partner ID and your site ID to the end of the URL. (The easiest way to find the site ID is to build a sample link using the Link Maker tool.)
&partnerId=30&siteID=<YOUR_SITE_ID>
You’ll have a functional affiliate link with no redirection:
https://itunes.apple.com/us/app/rise-sunrise-sunset-calendar/id585146605?mt=8&partnerId=30&siteID=J9ctC9ORkAk
Note: You will lose click tracking analytics with this approach. However, it is a much better user experience.
Ironically… You need to do it for you
When you’re the founder of a tech startup, your spouse will probably feel lacking in what your business demands from you most: time. You run into the frequent decision to sacrifice your time for your business, your health, or your family. You can’t choose them all. Every minute of every hour must be dedicated to one thing.
Unfortunately, family often gets the short straw.
I have some counterintuitive advice: whatever you do to ease the pain of neglecting your family, it is important that you do it for yourself - not for them.
Often we may want to point out to our significant other the amount of sacrifice we’re making for them:
‘Have you noticed? The last week I took more time off work to give you more attention.’
‘I just wanted to point out that I’m giving up work to be here right now.’
‘Going on another vacation… Remember that I miss work every time we go.’
Don’t. Stop it. You’re not helping. You’re making it worse.
Your spouse wants you to want to spend time with them. When you make it a sacrifice to be with them you’re sending the opposite message. You’re saying: ‘I’d rather be at work right now, but I know you need me to babysit you.’
Stop expressing that you wish you could spend less time with them by reminding them of what you’re giving up.
If anything, express the opposite feeling. You enjoy your work. But make sure you express to your spouse that being away from them in order to work is the sacrifice. Let them know that you miss them and wish you could spend more time with them.
The best thing about being self-employed is also the worst thing: you don’t report to anyone but yourself. When you’re not there nothing gets done. But that doesn’t mean you always have to be there. You get to define when you work and when you don’t work.
Take time off with your family because you want to - do it for you.
Recruit Rock-Star Employees on a Budget
Excited to see this post on Young Entrepreneur. It’s something I’m sure a lot of us think about frequently:
The best way to hire A-players is to be one yourself. In my many interviews with Silicon Valley venture capitalists, I learned that the best startup CEOs have great reputations among the people they’ve worked with in the past. Make sure you can tell compelling stories that show you have superior industry knowledge and a strong vision for your company’s future.
There are companies out there that seem to snatch up all of the best talent. It’s not because they have lots of money (although that helps). It’s because they have an exciting story to tell and a killer team.
I know that working with top players has had the greatest impact on my capabilities. I want to work with people that inspire me; I can only assume that for people to want to be on my team I have to inspire them.
Two Xcode plugins I didn’t know I needed
Mini Xcode - GitHub
Let’s you select scheme and device with a simple (Ctrl+7 / Ctrl + 8) shortcut. It also lets me size every window the way I’d like. No restrictions based on the toolbar.
DerivedData Exterminator - GitHub
Puts a button up on the toolbar, and works well with Mini Xcode: Select Derived Data Exterminator in Title Bar in the View menu.
Love em.
Donate because you’re one of the Lucky Ones
Mick Hagen and Undrip are doing something cool over at lucky.undrip.com for the entrepreneur victims of Sandy.
Donate. I did. Then I downloaded the song from iTunes put it on repeat, and haven’t stopped listening to it since. We really are the lucky ones.
Citizen Fund
Bryce Roberts posted about a service called SeeClickFix:
As with most crowd funding campaigns, these projects can be opened to anyone, anywhere to back. Given the right tools, I think they’d be surprised at the results the creativity and networks of their citizens can produce.
I’m really excited to watch SeeClickFix try and cut through the red tape and constrains of cities around the country and hope to see other city councils move forward with pilots.
This is very much one of the coolest projects I’ve seen in the funding community. If you believe in private funding rather than government then ‘be the change you want to see in the world’.
I’m glad that Bryce and his team saw potential in SeeClickFix. This certainly is something awesome.
Getting Healthy: My 4:50 Goal
It is time for me to be healthy: exercise regularly, eat healthy foods, and spend quality time with my family.
This post is going to be a bit more personal than usual. If you’re interested in the inspiration more than the post itself you can check out the original post on healthy goals by Alex Lawrence. Take a minute to read it. And join the cause if you’re feeling the need like I am.
Why start now?
I have not exercised regularly since I played for BYU four years ago. During those short years I had a rigorous schedule of hard exercise 6 days a week: weight lifting on Tues/Thurs/Sat and practice on Mon/Wed/Fri. Practice was a pretty intense cardio workout. By the end of my time with the team I was running about a 4:50 mile. Not fast by a racing standard; but I felt healthy.
Over the last year I ran 15.39 miles with Ashley; total. She likes to take a slow pace, so I never really tested myself. We went on a cruise at the beginning of the month and I felt the need to exercise. I ran 3 of the 5 days and it felt great. I was able to get down to about a 5:20 mile, but it was not as easy as it once was.
Today I am not feeling unhealthy or particularly healthy for that matter.
Joining #TmFit
The post by Alex is timely. I’ve been feeling my body getting older. I know that I’m only 28; but for the first time in my life I don’t feel like I am the healthiest I could be. I am not taking as good of care of my body as I should.
I’m not worried about losing weight. If anything I wouldn’t mind gaining a few more pounds. I probably won’t be tracking what I eat. I would, however, like to eat more healthy foods and less crappy foods.
Here are my goals. I’m hoping to accomplish them in 2013, but they aren’t meant to be new years resolutions.
- No more fast food. I’ve been eating poorly ever since I left my corporate job. Actually, I was eating poorly when I was a corporate stooge as well. It’s time to cut out the fast food. New rule: No fast food. None. I will live better without it.
- I want to get back to a 4:50 mile. This will mean speed training. A 4:50 mile is pretty much a full run for the entire distance. I’ll need to spend a couple days a week at the track, and the others running as well.
- I’d like to run a qualifying marathon. I don’t expect to actually run in any marathon that requires a certain pace. I’d just like to know that I’m back at that level of health.
How I’ll do it
I want to start a simple workout schedule that fits my life. I am strapped for time, so I need something that will help me meet my goals and still be possible. I need short but effective workouts for weekdays. I’ll try to get my runs in the mornings before my family wakes up.
My workout plan is 6 days a week:
- Monday short run: 1–3 miles
- Tuesday shoulders chest and abs
- Wednesday long run (7 min/mile pace): 6–9 miles
- Thursday yoga/abs
- Friday fartlek run (7 min/4:50 split): 3–6 miles
- Saturday chest back and abs
The yoga/abs workout will come from P90X. They are the best part of the workout plan. Also, for the month before the marathon I’ll likely bump my long days to 12–15 miles per day.
How I’ll track it
I’m hoping that ‘public accountability’ will mean that someone is going to point me back to this blog post during the year and say: “Are you following your plans, and reaching your goals?
I’ll be tracking each run and my total miles with the Nike+ app for iPhone and all of my stats are set to public. The app is very well done. I’ve thought about buying the FuelBand. Have any of you used it?
For my own personal records of how close I am getting to my goals I’ll likely use Day One. I love the DAYTUM concept, but the team was hired by Facebook, and they have stopped development. I may have to home brew my own solution for a database app.
- Alright. Wish me luck, it starts today.
Shots like this make me miss BYU. (via mwphoto)
3 Quick Sodastream Tips
- Test out a few different levels of fizziness to determine what you enjoy most. Personally I prefer about five pumps (until buzz). The recommended three pumps (until buzz) wasn’t enough.
- You don’t have to flavor your entire liter of fizzy water at once. I’ve learned that by using a second bottle for mixing you can have more than one flavor of soda at once.
- Don’t blindly follow the directions of the flavors. I like my flavors significantly fizzy and watered down. That means that I use about twice as many pumps as recommended and a quarter of the flavoring. Add a bit of flavoring and taste; rinse and repeat until satisfied.
I’m testing through the flavors. Some are better than I expected, and others are much worse. It probably won’t replace Diet Coke for me. But every other flavor I’ve tasted is better than their canned countertypes[1].
Overall, I’m very happy with the carbonator. The fizziness is exactly what I was hoping for. I may have to keep a few lemons and limes in my office for some simple soda water tastiness.
One of the last things to keep track of is the number of pumps I get for each CO2 cartridge and how long it lasts me.
-
Yes, ‘countertypes’ seems to be a real word. ↩