Skip to content

Instantly share code, notes, and snippets.

View qnm's full-sized avatar

Rob qnm

  • Sydney, Australia
View GitHub Profile
A few year ago, a team that sells products to large media companies invited me to help them as a consultant because they were concerned that their engineers were not working hard enough. However, the fault was not in the engineers; it was in the process the whole company was using to make decisions. They had customers but did not know them very well. They were deluged with feature requests from customers, the internal sales team, and the business leadership. Every new insight became an emergency that had to be addressed immediately. As a result, long-term projects were hampered by constant interruptions. Even worse, the team had no clear sense of whether any of the changes they were making mattered to customers. Despite the constant tuning and tweaking, the business results were consistently mediocre.
-- Eric Ries, Lean Straup
Notes from POODR, compiled by @qnm
* Part of the difficulty of design is that every problem has two components. You must not only write code for the feature you plan to deliver today, you must also create code that is amenable to being changed later. For any period of time that extends past initial delivery of the beta, the cost of change will eventually eclipse the original cost of the application.
* Your job is one of synthesis; you must combine an overall understanding of your application’s requirements with knowledge of the costs and benefits of design alternatives and then devise an arrangement of code that is cost effective in the present and will continue to be so in the future.
* Designs that anticipate specific future requirements almost always end badly. Practical design does not anticipate what will happen to your application, it merely accepts that something will and that, in the present, you cannot know what.
* The break-even point for design depends on the programmer. Inexperienced programme
gem install travis --no-ri --no-rdoc
echo "env:\n global:\n" >> .travis.yml
# encrypt SSH key - based on [squeezing private SSH key into .travis.yml file][4]
base64 --break=0 ~/.ssh/id_rsa_deploy > ~/.ssh/id_rsa_deploy_base64
# be sure to update the repository name to match the GitHub naming convention
ENCRYPTION_FILTER="echo \$(echo \" - secure: \")\$(travis encrypt -r <repo name> \"\$FILE='\`cat $FILE\`'\")"
split --bytes=100 --numeric-suffixes --suffix-length=2 --filter="$ENCRYPTION_FILTER" ~/.ssh/id_rsa_base64 id_rsa_ >> .travis.yml

Keybase proof

I hereby claim:

  • I am qnm on github.
  • I am qnm (https://keybase.io/qnm) on keybase.
  • I have a public key whose fingerprint is 0BEB A995 D088 13E8 426F 181F F5DA 5200 00DC 3E37

To claim this, I am signing this object:

default: &default
hostname: 54.79.33.54
username: blackout
password: <%= ENV['BUNNY_PASSWORD'] %>
queue: test-firehose-dummy
development:
<<: *default
queue: prod-firehose
@qnm
qnm / index.html
Last active August 29, 2015 14:14 — forked from benjchristensen/index.html
<html>
<head>
<title>Mock</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.3/d3.min.js"></script>
<script src="http://labratrevenge.com/d3-tip/javascripts/d3.tip.v0.6.3.js"></script>
<style>
/* tell the SVG path to be a thin blue line without any area fill */
path {
stroke-width: 1;
fill: none;
@qnm
qnm / 11_sysinfo
Created May 2, 2015 12:10
openwrt on erlite3
#!/bin/sh
verify_sysinfo() {
if [ -f /tmp/sysinfo/board_name ]; then
name=$(cat /tmp/sysinfo/board_name)
case "$name" in
er|erlite|erpro)
continue
# /etc/ushare.conf
# uShare UPnP Friendly Name (default is 'uShare').
USHARE_NAME=helios
# Interface to listen to (default is eth0).
# Ex : USHARE_IFACE=eth1
USHARE_IFACE=br-lan
# Port to listen to (default is random from IANA Dynamic Ports range)
We couldn’t find that file to show.
[robsharp@robsharp rc]$ bundle show
Gems included by the bundle:
* actionmailer (2.3.5)
* actionpack (2.3.5)
* activerecord (2.3.5)
* activerecord-oracle_enhanced-adapter (1.2.4)
* activeresource (2.3.5)
* activesupport (2.3.5)
* addressable (2.1.2)
* data_objects (0.10.2)