So, the Latte; The One True Unit Of Value, representing all that’s wasteful about Millenials, preventing us from becoming rich. The single way to convey something’s monetary value.

Entirely beside the point of whether you consider Lattes to have value, I assume you consider your career does? Maybe you’re working up to a glorious technocratic empire, constant spreads in Inc., Johnny Ive begging you to please, please come back to Apple. Perhaps you’d just like to not go bankrupt.

Avdi Grimm, Generally Awesome Person and Excellent Ruby Developer, would also like this. He posted this article explaining that, while he’s not in imminent danger of dying in debtors prison, he’s not liking his income trend.

This was probably a rough thing to admit because talking about money makes people weird and evidence of failure is often taken as evidence of deserved failure. To me it was rough to read because Avdi is an excellent developer who makes fantastic resources. I’ve loved reading Confident Ruby. I’ve been a subscriber to Ruby Tapas (his short-form screencast series) for over two years. If you’re wanting to invest some cash in your career, and have that go directly to a literal Ruby Hero, go read the blog post and then buy a book or subscribe to Ruby Tapas. You’ll get value out of them. And yes, I think they’re good for a developer’s work as at least two cups of coffee.

(I’m not being paid for this post; I don’t think I’ve ever met Avdi, I just think he’s made some nifty stuff and this was a good chance to turn you all onto it.)

 

What is it?

A library to return the name and branding colour of a bank by the first few digits of a card number.  It will also help you generate CSS files to use.

What is it good for?

Changing the colours on a billing page to match the user’s banking colours, making you look impressively switched on (and maybe a little creepy).

Is there a demo?

There Sure Is.

What issues does it have?

There are only entries for users which have contributed them, so some banks will be unmatched (unless you contribute!).

Users may think you’re stealing their credit card information, despite the fact that they’re literally about to give it too them.

How do I…

Install it? npm install banks-db

Ensure my bank is present?  Like So.

Use it from Javascript?  Got you covered.

Get the docs and source?  Right Here.

 

Git (and its ilk) are tools for working collaboratively (especially with hosted services). Your commit messages are your best weapon for communicating context, and every collaborator, including Future You, depends on context to be productive. It’s not opinion, it’s Science!

See, human memory is so bad it can be erased by passing through a doorway. We can defeat doorway-induced time wasting (not to mention the change of screaming “what the hell is this?!” at code someone, maybe Past You, wrote) with great commit messages.

Randall from http://www.xkcd.com knows what's up.
(Image courtesy of XKCD because Randall is a champ.)

A great commit message:

  • Is never ‘left behind’ by code changes (unlike comments)
  • Gives all the info you need (ticket numbers, reasons for change, expected behaviour changes)
  • Shows relevant changes around your change
  • Summarises everything in 50 characters or less as the ‘subject line’

All this info, the context of the change, makes problem solving (read: coding) more efficient.  Good context helps any collaborator; there’s evidence that context-based approaches to problem solving are more effective.

Continue Reading

 

I just got upgraded to the Business lounge at Sydney Domestic.  I think it’s because it’s 8pm and the other lounge is closing.

Immaterial differences:  table service, slightly more expensive furniture, less people.

Material differences:  stabilised atmosphere Wine By The Glass machine.  Oh my yes.

Travel is *awesome*.

 

I generally don’t make New Years Resolutions.  The entire process is so arbitrary and self-loathing, it plays into the whole annus horibilis bollucks.  If you’re going to improve your life, just do so; Don’t wait for some arbitrary point to go this is the year I will be self fulfilled, all my dreams will approach realization, I will open my code chakras and purge my stale git stashes and finally learn how the hell to use Vim.  If you’re constantly trying to learn new things you’re going to be better off then it you wait to be pushed by the last two digits of the date++.

At least pick more then one point in the year to fix ALL The Things.  One thing a month.  You’ll get continuous benefits for your life and won’t be exhausted from trying to change everything all at once.  You don’t want to go through all the stress of making a change, just to suffer from a fit of Extinction Bursts all at once.  Failing at multiple goals at once can lead to feeling like a children’s toy that’s been run over, by a leaking sewerage truck, in the rain: Useless, disgusting and prone to making gross squelching sounds.

However.  It’s excellent blog credit to give a list of your New Years resolutions; Gotta get those views, that’s how you get that Internet Monies from the Internet People (Or so I hear).  So instead of giving my resolutions, I’m going to make some suggestions that everyone else could adopt.  Please feel free to give me all the credit for these, despite the willpower being expended by you and you alone.  There’s going to be twelve in total, one for each month.  Here are the first three, and I’ll publish the rest every quarter, just to kill off the temptation to start them all at once.

Improvement One: Learn a Tech

Learning a new technology has an obvious benefit: It makes you more employable.  Personally I think this is the least beneficial aspect.  Learning a new tech, especially one that is wildly different from what you do day-to-day, makes you better at your current job.

It’s been solid advice for a while, that learning a different programming paradigm makes your code better in all languages.  I don’t actually buy this.  “writes Java in Ruby” is the same as “acts Functionally in JS“; they’re both paradigm contamination.  I think that practise makes you better, but that’s a very different thing.

No, the reason that I think learning a tech makes you better at your job is it lets you talk to other developers in their language, shows you the strengths of technologies that might make your own specialty more useful, and allows you to better boot-strap individual projects.  A shinier prototype is more likely to be turned into a Real Project.

I personally really like Code School for learning new tech.  I gave up on books because it’s difficult to know what’s worth reading and what isn’t, until you’ve enough experience to evaluate the content and, well… that experience is what you’re reading to build.  I like Code School because it treats the viewer like an adult (unlike at least one competitor) and because it builds in logical, sensible ways.  I’m not getting paid for this recommendation (although if Code School wants… call me!), I just like the product.

Improvement Two: Take a Step to Better Financial Management

Capitalism is pretty gross.  It’s also widely entrenched in society and unlikely to be replaced by anything better before the AI post-scarcity uprising, and I hear that project didn’t meet its KickStarter goal.  Money is here to stay, and Money roughly correlates with ability.  Not ability to accomplish tasks; ability to get others to help (or at least get out of the way).

Spare funds give you the ability to quit and find a better job.  Spare funds allow you to buy tools for your hobby and improve your mental health.  Spare funds let you travel.  Spare funds let you start a side project, that gets profitable, that makes you more spare funds.  It’s kind of crap that having money makes it easier to make money.  It makes life less stressful.  It literally makes you less sad and maybe happier up to a point (The literature is mixed.  This is a nice summary. TL;DR Money gives you options.  Wow, what a familiar argument…).

This is not financial advice.  I do not know what your goals are… But maybe you’re lucky enough that with focus and willpower, you can put yourself in a place with more ability to achieve them.  Maybe start with an Emergency Fund?

Improvement Three: Be a Part of your Tech Community (more)

This one is pretty easy: Get more involved in a tech community.  The cold hard reason is that it’ll serve as good networking.  Screw that.  Tech is (or should be) fun.  Tech people are some of my favourite kinds of people.  There are meetups for languages and tools and industries all over the world.  Go to a conference (like RubyConf.au!) and deliberately talk to people you don’t know. Head to your local meetup.  Join and post to some Open Source Mailing lists.

If you’re already involved, step it up.  Pitch talks to conferences and meetups.  Organize an event.  Go to a longer event or workshop (Rails Camps are amazing).  Mentoring is a huge benefit to our industry, so find a junior dev and offer.  Help less-connected people get integrated by going with them to events and introducing them to others.

Especially try to find unique and interesting voices and share them with others.  We can be faddy, prone to hero worship and appealing to authority.  Mix it up!  Share things you don’t often here, from people who aren’t often heard.  Everyone gets better that way.

Postscript: Sorry to Preach

I really really can’t stand New Years Resolutions, which is why this post is deliberately delayed.  All of these are suggestions of things that I’d like to accomplish myself, and may be helpful in your life.  They’re not aimed at anyone in particular, nor do I warrant their practicality or easy.  Any feedback, leave a comment below!

 

Something that will, sadly, not be a secret to many of you: Some people are awful.

Even if you think it’s acceptable to be a rude arrogant jerk to people in private, (and would you want, as queer person, to work with someone you know donates heavily to prevent marriage equality, even ‘in private’?) it’s very hard to argue that it’s OK in professional life.  Open Source is no longer just a fun hobby; it’s a professional reality that you will use and (hopefully) contribute to Open Source.  Unfortunately there are people in many many projects, often in significant roles, that will say things that are cruel, hurtful, that erase and trivialise people’s identities and personal triumphs and disadvantages.  They’re being bullies ‘at work’.  That’s super NOT OK.

One of the best ways to make communities professional and welcoming to beginners, as well as enhancing diversity, is to adopt and enforce a Code of Conduct.  Ashe Dryden answers all of the questions you might have about why and how far better then I could, but I want to re-enforce five things:

  1. Having a (good) Code of Conduct makes your project more welcoming to everyone willing to not be a prat.  Diversity is at the heart of the Internet
  2. Code of Conduct violations are not about being offended, they are about being unprofessional
  3. You may have a right to freedom of speech but there’s no right to freedom of consequences
  4. If there’s ‘no problem’, then there’s no harm in adopting a Code of Conduct!  (Spoiler: there totally is a problem)

And number five:

begin
  objection.text = "but you're discriminating against my right to discriminate!"
rescue RediculousCircularObjectionException => e
  objection.deny
  objection.objector.judge :pretty_harshly
  objection.objector.rebutt "Really? Really. You think that's a coherent argument?"
end

You know who’s not awful? Coraline Ada Ehmke.  She’s actually really great.  She’s proposed a Code of Conduct for Ruby Core (and wrote the original Contributor Covenant) and you can find that proposal here.  All y’all with Core Ruby accounts should go support it.

What do we have to lose?  Awful people, that’s what.  HUZZAH!

 

In my first Sound and Fury post I flat out said that people who leave negative Open Source comments are bad people and sucky developers.  This isn’t a retraction, I still totally think that.  I just wanted to share.

This here project is a brilliant solution for FLOSS.  Echo Chamber adds commenting forms that never post anywhere but local storage.  The hate-vomiting suckmonkey thinks their petty, egocentric bile is being heard and no-one else even knows it exists.  No server load.  No moderating.  Blissful, peaceful silence.

My comments, BTW, are actually on, so feel free to start a discussion with me here or on Twitter as @DylanLacey.

 

 

 

Internet Comments, am I right?

They’re occasionally a useful source of discussion (usually in curated communities or niche content) but mostly, they’re a swirling cesspoll.  The comments are where people write hateful, toxic vitriol.

On YouTube this is often in the form of attacks on the presenter.  Open Source projects, though, tend to get more… religious.  Your product isn’t their favourite product and thus must be purged.  They want a feature from the thing you made and gave them for free and DAMN HOWDY if you aren’t the worst person alive for not giving it to them.  They don’t understand how to use it and so you must perish.

If you leave pointlessly negative comments on Open Source projects, screaming demands or trashing the free work people have done for you, then as far as I’m concerned you suck as a developer and you’re a bad person.  I have more respect for the noobiest of noobs then I do for people who piss all over others in Open Source.

I’d never hire anyone who made their team-mates feel bad when they wouldn’t do something optional for them.  I’d never hire someone who yells at others rather then fixing bugs, who acts like they’re entitled to things, who can’t interact professionally in public situations.  As far as I’m concerned, you’re not a good developer if you do those things, you’re a terrible staff member who happens to be OK with development.

Being a good Open Source citizen in the venues you use it is, in my mind, a defining characteristic of good devs.  “GitHub Resumes” aren’t useful just because they show your work style but because they show your workplace style.  How you’ll get along with others.  Whether I can trust you to not ruin my team.  If you’re helpful and good at communicating and compromising and not a complete dickhead.

(Corollary: If you defend people who do this because they’re productive or talented or useful for the project, you’re also a sucky developer and a bad person.  We don’t let famous surgeons ignore ethics no matter how brilliant.)

 

A friend of mine just bought a new BMW because he’s living the Software dream.  We’re currently about 2 hours out of Sydney and I’ve been slowly going out of my mind.  I don’t do downtime well.

I’ve been trying various strategies to prevent myself chewing off my own face out of frustration, almost all of which have cost me data and will add even more money to Telstra’s bloated, greedy pockets.

My mate and I are both developers, so much of the trip has been spent listening to podcasts.

We tried out a few new ‘casts.  Clockwork is “Four people, four topics” in no more than 30 minutes.  We probably won’t subscribe; it was more of a long form digest where we prefer in-depth discussions or really unique news, and our interests didn’t really resonate with the hosts.

I wanted to find some productivity podcasts because I’m tired of getting in my own way when it comes to inflicting my own brand of fucking rad on the world.  Sadly, after two episodes I’ve decided I’ll not be listening to the Time Hackers podcast again.  One felt like the entire thing was a read for Audible.com through her affiliate link (which wasn’t called out as an affiliate link).  The other was about how having a boss is the best thing ever because they get angry at you when you procrastinate because how dare you!  I am glad I’m not her employee.  We also washed out on 168 Opportunities because it shared with Time Hackers a really ironic trait: The hosts weren’t succinct and the information not dense enough.

(I was tempted to listen No Such Thing As A Fish, a podcast by the QI elves about 4 interesting facts that plays a lot like the show, but I decided to be serious instead because… I made poor choices?)

Podcasts aside, my fingers got itchy, so I played Alphabear (If you want to find it in the iOS App Store instead… Go do that).  It’s what Scrabble would be, if Scrabble was single-player, had special powers and bears.  And because it’s about spelling words, it’s technically educational!

I mopped out my email.  I’ve been trying Inbox and I think I kinda get the premise, possibly?  It’s annoying I can’t apply multiple labels from the mobile app and I’m not entirely sure that marking things ‘done’ is archiving them but… I deleted 200 of 403 messages, so… huzzah?

That made me go and categorize Evernote notes because what’s more productive then pouring pointless hours into a productivity system?  Actually doing work, like buying USD for an upcoming trip to the States (Anyone who wants to catch up with me between the 19th of July and the 2nd August in SF, let me know!)

Started writing this blog article, so of course I had to update my Google Analytics plugin.  And install it and the WordPress app on my phone.  The WordPress App can connect to self-installs of WordPress which is pretty neat.

I didn’t play any of the 3DS games or read any of the books I planned.  I did, however, add a bunch of stuff to my reading list, including Beacon 23 by Hugh Howey, author of the freaking amazing Wool books.  Once we settled on using the Ruby Rogues podcast to save my from insanity, I picked up Astro City from a pick, along with Three Parts Dead.  That should help on the plane trip to the States, at least.

Overall productivity score… Probably about even.  I managed to get a lot more done then I expected on actual tasks, but didn’t bring anything to completion.  I did, however, get a bunch of new ideas and write this blog post hunched over my tiny phone screen, so that’s a plus.

Thank you for driving DylanLacey coaches, we hope you enjoyed your trip… And please fly next time.