Peter Christensen

  • Presentations
  • Contact Me

Password Hygiene

November 22, 2013 by Peter Leave a Comment

Github recently discovered a distributed brute force password cracking effort. Short version, scammers used a network of 40,000 IP addresses and slow, methodical retries to get around lockout restrictions.

Good news: Github emailed users who were compromised, including some that they could not confirm but suspected were compromised. If you didn’t receive that email, you’re probably ok.

Bad news: They probably tried logging into your account anyway. Check your Github Security page for failed logins (look for user.failed_login). I found one from Indonesia from 3 days ago. A GeoIP lookup tool will give you a botnet world tour.

This is as good a time to repeat password hygiene advice:

  • Do not reuse passwords across different sites
  • Use strong passwords (12-16+ characters, include symbols and alphanumerics)
  • Use a password manager so you don’t have to remember or write down strong passwords. PwSafe is cross-platform, 1Password works well for the Apple ecosystem. There are others, but make sure to use one!
  • Use 2 factor authentication for important accounts. I have it for Google, Dropbox, Github. The Google Authenticator app (iOS+Android) and Authy both work well.

Hacker News has a good discussion that covers more angles on this attack and security in general. Here’s an article about why you should not reuse passwords.

Stay safe!

Filed Under: Programming

Javascript Underwater – My JS.Everywhere Talk about OpenROV

November 13, 2013 by Peter Leave a Comment

I was invited to speak at the JS.everywhere(2013) conference. This was different from my other talks where I talked about hardware projects. The conference is about inspirational stories of coding and learning, each speaker about a unique topic. My talk is about my love of water and how the OpenROV project lets me express that in code. This version has a lot more words than the one I presented with, so you can read it without hearing me speak. I’ll update this when the videos are posted.

Thanks to the JS.everywhere team and of course to the whole OpenROV team – David Lang, Eric Stackpole, Colin Ho, Brian Adams, and more!

Javascript Underwater – The OpenROV Project from pchristensen

Download presentation (14MB pdf)

Here was a reaction to the talk:

Inspiring talks this PM at @JSeverywhere. I'm ready to learn to code while diving underwater. cc @apartovi @christensenp #jseverywhere

— Kevin F. Adler (@kevinfad) October 25, 2013

If you’d like to have me present this or similar topic at your event, please email me

Filed Under: Presentations, Programming

UI Beyond the Browser

October 31, 2013 by Peter Leave a Comment

I recently presented a talk at HTML5DevConf called “Robots, Circuits, and Drones, Oh My! Javascript for Makers“. It took a slight change from the proposed title, to “UI Beyond the Browser – Software for Hardware Projects”. It’s an evolution of the talk I gave at SpainJS about the exciting changes taking place in hardware development and ways that software developers can dive in and enjoy the fun. I think it was recorded but the videos haven’t been posted yet. I’ll update this page when they are. Video below!

I hope this is helpful to you! Special thanks to everyone that has helped me on my Maker journey so far – Jeff McAlvay and the Tempo Automation team, the OpenROVs, the Upverters, Lady Ada, Parrot for making the awesome AR Drone, Orbotix for making the delightfully magical Sphero, and more. Very special thanks to the organizers of HTML5DevConf for inviting me to speak!

UI Beyond the Browser – Software for Hardware Products from pchristensen

Download presentation (21MB pdf)

If you’d like to have me present this or similar topic at your event, please email me.

Now go, goof around, make something awesome!

Filed Under: Education, Presentations, Programming

Find the Largest Files In A Directory

October 2, 2013 by Peter Leave a Comment

tl;dr: $ find . -type f -ls | sort -r -k 7 | head -20

I’m a programmer who grew up on Windows, so while I’m competent at Unix commands, there’s a lot I don’t know. That “young and clueless with lots of time” period is a great time to pick up skills; the “busy working father” period means I have to be much more selective now.

Backstory: I have been a Dropbox user since they were in beta in 2006, and every once in a while I bump up against my free space limit and have to weed out files. This gets harder every time since everything left is something I’d previously decided to keep. COMPUTERS TO THE RESUCE!

I went to the first place I always look for these problems: Stack Overflow. There was an answer, of course, but it didn’t work for me. I tried to get it to work, but didn’t feel like looking past the man page for why the printf option wasn’t valid on my machine.

So the next place I looked was the rest of the Google search results. Eventually I came up with this:

$ find . -type f -ls | sort -r -k 7 | head -20

List all the files, sort in reverse order based on the 7th field, and take the top 20. Thanks nerds of the world for answering my question!

Filed Under: Programming

We Are All Joe/Jane Developer

August 21, 2013 by Peter Leave a Comment

[EDIT: Full attribution for the JD Intellectual Property rights]

My coworker Andres, whenever he spots “clever” code during code reviews, asks “What will Joe Developer think of this?”

(Feel free to use Jane Developer if it’s more appropriate.)

Joe Developer is our fictional persona of a capable but not outstanding developer. He knows the popular parts of commonly used APIs, the mainstream parts of the language, but doesn’t know or use quirky constructs or features. He’s probably better at writing code than reading it, and he doesn’t have any particular knowledge of the domain.

You might think we look down on Joe Developer, like he’s not one of us, that he’s not smart. That’s not the case at all – Joe Developer is us.

We have a team of about 10 people and a 3 year old codebase. People have joined and left the team during that time. Even the most senior or most productive people on our team haven’t written more than 20% of the code, and haven’t even seen more than half of it. Some code is new and evolving quickly. Most business reasons behind the code are only documented in our issue tracker and the brains of the people that worked on it.

This means that most of us, most of the time, have to actually read code to understand what it’s doing and how to modify it. Reading new code without the benefit of knowing the domain is hard enough. You have to read, understand, and simulate the execution of the code in order to reason about it. And that’s hard! Brian Kernighan (creator of C and Unix) said:

“Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.”

When you’re reading code, you are Joe Developer. Joe reminds us of the difficulty of reading vs writing code, of the power imbalance between the writer and the maintenance programmer a year later. It’s a clever shorthand reminding us to be clear, concise, and as simple as possible in our code. Putting 5% extra attention and rework to accommodate Joe Developer makes reading and revisiting code so much easier. We don’t fix everything, but we remove the most burdensome, most confusing time-sinks, producing an outsized benefit.

We look out for Joe Developer because we are all Joe Developer.

(Andres already wrote about Joe Developer on our company blog)

Filed Under: Programming

Programming The Real World – Presentation Slides

July 6, 2013 by Peter 1 Comment

I recently presented a talk at the Spain.js conference and I spent a long time (a long, long time) making my slides.  Then I realized that while it was a good slide deck for the presentation, it was nearly useless without me accompanying it.  Since the talk was not recorded :(, I reworked the slides completely to serve as a standalone deck.

I hope this is helpful to you! Special thanks to everyone that has helped me on my Maker journey so far – Jeff McAlvay, the OpenROVs, the Upverters, Lady Ada, and more.  Super thanks to the organizers of Spain.js for inviting me to speak and to Manilla for sponsoring my travel.

Programming the Real World: Javascript for Makers from pchristensen

Download Presentation (17MB pdf)

If you’d like to have me present this or similar topic at your event, please email me

What did people think of the talk?

An amazing talk by @christensenp. Programming the real world. My fav so far! #spainjs.

— Michael Koper (@michaelkoper) July 6, 2013

 

@christensenp Thanks for such an awesome talk, plenty of entry points and resources, inspirational examples and good for thought #spainjs

— Raul Murciano (@happywebcoder) July 6, 2013

 

speaker @christensenp is re-kindling my desire to learn hardware/electronics. You’re never too old to start, right? #spainjs

— David LeMieux (@lemieuxster) July 6, 2013

 

Enjoy, and go make something!

Filed Under: Education, Presentations, Programming

Meteor Discovered

May 29, 2013 by Peter Leave a Comment

tl;dr: Discover Meteor is a great book for learning to program in Meteor.  Highly recommended.

New programming languages, tools, and paradigms come out all the time, old nuggets get rediscovered or reinvented, and old mistakes get remade. It’s dizzying and hard not to get cynical about it (ack, writing that sentence turned 13 of my facial hairs gray!), but every once in a while, persistence is rewarded. I just got very lucky and was rewarded twice.

Backstory

I heard about Meteor over a year ago when it was announced on Hacker News. It sounded cool but too immature at the time.

Then a few months ago I heard that Sacha Greif was writing a book on Meteor. [Side Note #1: how did I hear about it? I signed up for Sacha’s email list after buying his last product. Email marketing works!] A book signals tech maturity because a) there’s enough meat to fill a book with content, and b) someone is betting a bunch of time that it will become more popular.

A new project came up where Meteor would be a great fit so I bought the Full Edition of Discover Meteor.

[Read more…]

Filed Under: Programming

How To Teach Yourself Programming

May 3, 2013 by Peter Leave a Comment

This didn’t come through my new web-crush Mentii, but it is another bit of advice that I thought deserved to go farther than one email. This is a friend that lives near a tech center and wants to learn programming, but has no background or experience other than normal computer usage.  I looked at some of the university programs near him and gave my recommendations, but that’s not widely relevant.  The important part was:

tl;dr: YOU HAVE TO TEACH YOURSELF PROGRAMMING

The full version was this:

I highly, highly recommend doing a lot of programming on your own.

First, the programming requirements for college aren’t a perfect match with what you need for a job, and there are not enough intense programming courses to get you fully proficient.  You wouldn’t expect to get in shape if you only took P.E. classes, would you?

Second, some people just don’t enjoy or “get” programming – it’s a specific way of thinking that some people take to naturally, lots can learn, and some people truly do not enjoy it. Doing your own will make school easier, prepare you better for work, and let you know really quickly if programming is not for you.

There are many, many sub-fields within programming, but for beginners, I would recommend choosing one of these 2 paths:

  • Web programming – server-side languages, HTML, Javascript, CSS.  This is probably the skillset that currently has the lowest bar for getting a full-time job.  There’s an infinite amount of knowledge above those 4 components, but you can learn enough of these in 6 months to contribute to a web development team.
  • “Maker” programming – Arduino, Javascript, electronics, robotics.  Smart devices are just now hitting the early adopter phase (Pebble watch, Nest thermostat, lost of stuff on Kickstarter) but there are tens of thousands of products that need to be reinvented with network connectivity and inexpensive microprocessors, and probably thousands more products that haven’t been imagined yet (this smart fork is probably my favorite).  In 3-5 years, I think an interdisciplinary electronics+code prototyping skillset will be the next big class of technical skills, alongside web, mobile apps, and desktop software.

I know much, much less about Maker programming than web programming, so I’ll withhold my advice there. For teaching yourself web programming, I recommend the following resources:

  • Learn Python the Hard Way (free online) – Python is a simple but powerful language. It’s probably the language that looks the most like the process it describes. It’s also used heavily by Google and NASA, as well as being the most prominent language for science and math. This book assumes no previous programming knowledge and only basic computer usage. It’s 52 lessons going from printing text to a screen, all the way to storing data collected from a web page. It’s a very, very solid and broad introduction to programming.
  • Codecademy (free online) – this is a series of online lessons and exercises. This is probably narrower than LPTHW but includes interactive elements and has lessons for more technologies (LPTHW only uses Python but covers a wider range of programming topics)
  • Try Ruby (free online) – a short (~15 min) online interactive tutorial to learn the Ruby programming language (that’s what I use and lots of web companies use)
  • Rails for Zombies (free online) – a series of interactive lessons to learn Rails, a set of tools in the Ruby language that makes it fast to build web sites. These are aimed at beginners and released by the same people that make Try Ruby
  • Rails Tutorial (free online) – an intermediate set of lessons about building websites using Ruby and Rails. It assumes more programming familiarity so it’s not great to start with but if you finish RFZ you’re probably ready for it. It covers more advanced coding practices, web site principles, and more. Very, very thorough.
  • Code School (paid ~$25 courses online) – a collection of high quality courses with video and interactive lessons covering a variety of web technologies.

I have dabbled or perused most of these but I’ve been programming for 20 years and professionally for almost 10, so I’m not the target audience.  I have heard good things about them and they all come from sources I trust and respect.

The most successful programmers I know are the ones that are the most prolific – they write a lot of code, of different types, to solve different problems, because that’s the way you learn.  And the more you learn, the better equipped you are to solve the next problem you face.  So no matter what you use to learn, you should program a lot.  University CS programs have some intensive programming courses, but it’s too small a percentage of the time you spend learning.  You have to supplement it yourself.

Filed Under: Education, Programming

When We Build – Notes and Quotes

January 30, 2013 by Peter Leave a Comment

I just watched an inspiring video about what it means to be a designer today.  It’s called “When We Build” by Wilson Miner.

Wilson Miner – When We Build from Build on Vimeo.

It’s worth watching the video because the images, music, video, and his hypnotically powerful vocal pacing are outstanding.  But if you don’t have time now or you need more convincing, here are my notes.  Most of the quotes are word for word because he chose his words and ideas as carefully as he chose his media.

Wilson, thank you so much for this talk – I can’t even imagine how powerful it would be in person.

[1:00] Warning that it’s going to be a strange talk
I’ve been cynical about the potential of what we do – “It’s just a website, get over it”
This is a uniquely exciting time to be designing digital tools and products

[Read more…]

Filed Under: Education, Programming

Understanding the Clojure Development Ecosystem

January 10, 2013 by Peter 4 Comments

Lots of books, talks, and blog posts help people learn Clojure the language, but leave out prosaic issues outside of the language, like development environments and using libraries. This covers the gap between dipping your toe in and confident proficiency.

This guide assumes you are aware of Clojure and want to become a Clojure programmer.

Sections

Why Clojure?
The Philosophy of Clojure
Language Tools
Rich Hickey’s Talks
Baby Steps
Leiningen
nREPL
nrepl.el
Helpful Tips
Appendix – Links

[Read more…]

Filed Under: Clojure, Programming

« Previous Page
Next Page »

Categories

  • Blog
  • Book Review
  • Business
  • Clojure
  • Education
  • Emacs
  • Fun
  • iOS
  • Lisp
  • Personal Sprints
  • Pictures
  • Polyphasic
  • Presentations
  • Programming
  • Rails
  • Startups
  • Uncategorized

Copyright © 2025 · Minimum Pro Theme on Genesis Framework · WordPress · Log in