Month: October 2014

Business of Software

Winners and Losers

Gold Trophy, labeled for reuse from WikipediaI was listening to James Altucher’s interview with Shane Snow this morning and some of their discussion reminded me of something that Ron Carter (former podcast guest) is fond of saying. It is a quote that I try to remember and live by, so I thought that I’d share it here.

Winners take the blame when something goes wrong and give (or share) credit when things go right. Losers look to assign blame when things go wrong and hog the credit when things go right.

That’s applicable in so many areas of life. Think about the quarterback who goes before the press after a loss and says that he made the wrong read or that he has to play better when the real problem was that his receiver ran the wrong route or his offensive line was a sieve. However, on victory day that same quarterback is praising the offensive line’s protection and the play calling and the receivers’ exceptional skill.

That is the same model that we should seek to have. Don’t worry that you aren’t going to get your proper credit. If you did a great job, your teammates will know your role. And they won’t forget that you helped them shine, too. More than that, though, they’ll respect you for not throwing them under the bus when things go wrong.

This isn’t just about success and failure in a team environment. When a loser fails on solo endeavors, he’ll look to blame society, his equipment, the government, his family, his parents, whatever. Anything but turning the gaze inward and looking to see how the failure can be an opportunity to learn and grow and improve.

Winners take responsibility. Winners share credit. Winners learn from mistakes. Be a winner.

JavaScript

String Replace in JavaScript

Today, I had the need to do a String.Replace in JavaScript. I thought, “surely, this is an easily solved problem”. It turns out that I was both right and wrong.

A quick DuckDuckGo search brought back that I could do something like this:

var input = "I hate Fridays.  Fridays are the worst!";
var output = input.replace("Fridays", "Mondays");

I would expect the value of output to be “I hate Mondays. Mondays are the worst!”. But it isn’t. Instead, the value is “I hate Mondays. Fridays are the worst!”, because the replace method will only replace the first instance of the match.

The first solution that I found to this was to modify the code to use a regular expression, which the replace method also takes. All you have to do is include the RegEx and the “g” flag to make the replacement global. That would make the code look like this:

var input = "I hate Fridays.  Fridays are the worst!";
var output = input.replace(/Fridays/g, "Mondays");

This does give us the correct output of “I hate Mondays. Mondays are the worst!”, but if this were to be a reusable method or a pattern throughout an application, getting the correct RegEx can be tricky to debug or come back to later. Not everyone is a RegExpert. That’s why the next solution that I found was ingenious and was the one that I ended up going with.

In this code, you split the string on your “outgoing” string, and join it back together again with your “incoming” string. That would look like this:

var input = "I hate Fridays.  Fridays are the worst!";
var output = input.split("Fridays").join("Mondays");

That gives us our correct output of “I hate Mondays. Mondays are the worst!”. This method can be slower in some browsers (This JSPerf test has Split/Join as coming out ~40% slower in Chrome), but if you aren’t doing this several hundred times in a loop, I think the readability and maintainability of the Split/Join way makes this easy to do.

Android

Podcast Episode 26 – Rondale Williams on Android and Breaking Into the Game

Rondale WilliamsThis time, in Episode 26, I interview Rondale Williams. Rondale is a freelance mobile developer new to the development space. During the course of our interview, Rondale talks about what it is like to be self-taught, why he started to go back to college for CS, and what his advice would be to other people just starting out. We also talk about RxJava, Android Emulators, the Android vs iOS development ecosystems, and whether or not he’s found the community to be friendly.



Links Mentioned in this Show:
Rondale’s Blog
Rondale’s Twitter
Rondale’s LinkedIn
RxJava
Genymotion
Lynda.com
Pluralsight
The New Boston (Bucky’s World)
Udemy
Udacity
Meetup
RemoteCoder.io

You can also subscribe to the podcast at any of these places:
iTunes Link RSS Feed

Thanks to all the people who listen, and a special thanks to those who have rated me. I really appreciate it.

The episodes have been archived. Click Here to see the archive page.

Podcasts

Podcast Episode 25 – Increasing Productivity

Productivity - Pomodoro Timer

Episode 25 is all about increasing productivity. It isn’t about getting into the “zone” or getting into the “flow”. It isn’t even productivity hacks like “Listen to all podcasts at 2x speed” (which is a good tip and I do it every day). This episode is full of useful “rubber meets the road” practical tips that you can use to become a more productive developer.



Links Mentioned in this Show:
Trello
.Net Rocks! – Getting into the Zone
Parkinson’s Law
Entrepreneur On Fire
James Altucher – How to be a Super Human
John Sonmez
Pomodoro Technique
Music to Code By
GitHub Student Developer Pack
ReadMe.IO

You can also subscribe to the podcast at any of these places:
iTunes Link RSS Feed

Thanks to all the people who listen, and a special thanks to those who have rated me. I really appreciate it.

The episodes have been archived. Click Here to see the archive page.