Skip to content

Instantly share code, notes, and snippets.

View qnm's full-sized avatar

Rob qnm

  • Sydney, Australia
View GitHub Profile
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
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
@qnm
qnm / keepassx.spec
Created October 13, 2013 04:11
keepassx-2.0-alpha
%define alpha alpha4
Name: keepassx
Version: 2.0
Release: 0.%{alpha}%{?dist}
Summary: Cross-platform password manager
Group: User Interface/Desktops
License: GPLv2+
URL: http://keepassx.sourceforge.net
Source0: https://github.com/keepassx/keepassx/archive/%{version}-%{alpha}.tar.gz
@qnm
qnm / gist:6422064
Last active December 22, 2015 05:09
{
"disclaimer": "See our important disclosures",
"disclaimer_url": "http://www.ratecity.com.au/disclaimer",
"title": "Low Interest Credit Cards",
"fields": {
"best_rate_percentage": "Rate %"
},
"results": [
{
@qnm
qnm / gist:5566280
Created May 13, 2013 05:08
Engine Routing Hack
Spork.each_run do
# This code will be run each time you run your specs.
RSpec.configure do |config|
config.before(:each, type: :controller) { @routes = RedBook::Engine.routes }
config.before(:each, type: :routing) { @routes = RedBook::Engine.routes }
end
end
@qnm
qnm / gist:5479610
Created April 29, 2013 03:49
Use system libv8 when using bundler, to work around fedora 19 compilation issues
bundle config build.libv8 --with-system-v8
<param value="FlashVars" name="utm_source=omg&utm_campign=homepage" />
@qnm
qnm / gist:5259944
Last active December 15, 2015 12:28
<div id="my-table"></div>
<script type="text/javascript">
function ratecityConfig() {
// product request configuration
var config ={
vertical: 'credit-cards',
stylesheet: "//www.ratecity.com.au/assets/widget.css",
container: 'my-table',
@qnm
qnm / gist:5166708
Created March 15, 2013 01:02
Webrick One Liner
ruby -rwebrick -e'WEBrick::HTTPServer.new(:Port => 3000, :DocumentRoot => Dir.pwd).start'
--------- Forwarded message ----------
From: Guy Incognito <withheld@gmail.com>
To: undisclosed-recipients:;
Date: Mon, 7 Feb 2011 22:36:28 +0100
Subject: Urgent
Hi,
Apologies for having to reach out to you like this, but I made a
quick trip, to London,United Kingdom and had my bag
stolen from me with my passport and credit cards in it. The embassy
is willing to help by authorizing me to fly without my passport, I