├── .gitignore ├── favicon.ico ├── images ├── qu.png ├── wm.png ├── about.gif ├── algol.png ├── api.gif ├── bcm_1.png ├── cape.png ├── cmdt.png ├── digg.gif ├── error.gif ├── feed.png ├── home.gif ├── mail.gif ├── mate.png ├── pac.gif ├── pop.png ├── print.gif ├── pushr.png ├── rails.png ├── rcov.png ├── share.gif ├── snake.png ├── spark.png ├── tag.gif ├── tgs.jpg ├── tools.png ├── vim.png ├── vlad.png ├── Camping.gif ├── amigac.png ├── antirsi.png ├── big_box.gif ├── biznik.png ├── desktop.png ├── github.gif ├── google.png ├── helipad.gif ├── macvim.png ├── massive.png ├── mobile.gif ├── notice.gif ├── rdebug.gif ├── reddit.png ├── riotjs.png ├── search.gif ├── shadow.gif ├── shadow4.gif ├── spinner.gif ├── texture.png ├── theme1.png ├── theme2.png ├── theme3.png ├── theme4.png ├── theme5.png ├── theme6.png ├── theme7.png ├── tweetfu.png ├── twitter.gif ├── ui_cat.gif ├── uicat2.gif ├── uicat3.gif ├── vbrowse.png ├── verify.png ├── vimtmux.png ├── wingman.png ├── yourapp.png ├── 11promos.png ├── box_theme1.png ├── box_theme2.png ├── box_theme3.png ├── box_theme4.png ├── box_theme5.png ├── box_theme6.png ├── burn_baby.png ├── ctrlescape.png ├── delicious.gif ├── deployed.png ├── depwhack.png ├── ebiwrite.gif ├── feed-icon.png ├── good_graph.png ├── gradient2.png ├── happiness.png ├── highrise.png ├── hjkl_mac.png ├── icons │ ├── cph.png │ ├── loom.png │ ├── deadline.png │ ├── ebiwrite.png │ ├── helipad.png │ └── tiktrac.png ├── linkedin.gif ├── login-bg.gif ├── mate-thumb.png ├── monkey_1.png ├── monkey_2.png ├── multitap1.png ├── multitap2.png ├── no_sphinx.gif ├── rcov_thumb.png ├── rsyncdiff.png ├── screenshot.gif ├── shadow_1.gif ├── shadow_2.gif ├── shadow_3.gif ├── shadow_4.gif ├── shadow_5.gif ├── shadow_6.gif ├── slider_end.gif ├── spectrum.png ├── text-mate.png ├── transmit.png ├── unix_plate.png ├── vim-better.png ├── work │ ├── loom.png │ ├── furnish.png │ ├── helipad.png │ ├── tiktrac.png │ ├── deadline.png │ ├── ebiwrite.png │ ├── large │ │ ├── loom.png │ │ ├── deadline.png │ │ ├── ebiwrite.png │ │ ├── furnish.png │ │ ├── helipad.png │ │ ├── tiktrac.png │ │ └── reutersrealestate.png │ ├── logos │ │ └── furnish.gif │ └── reutersrealestate.png ├── android_case.png ├── captcha │ ├── 180.png │ ├── 6118.png │ └── 78452.png ├── captor_blog.png ├── changes_diff.png ├── changes_list.png ├── endtroducing.png ├── font_larger.gif ├── font_smaller.gif ├── fowd2010 │ ├── qix.png │ ├── anna.png │ ├── elliot.png │ ├── sarah.png │ ├── simon.png │ └── strange.png ├── heligoitunes.png ├── ig_delicious.png ├── instruments.png ├── iphone-tech.png ├── not_sharing.gif ├── print_small.gif ├── screenshot2.gif ├── shadow_grey.gif ├── share_small.gif ├── slider_track.gif ├── textile_big.png ├── tokyo-night.jpg ├── with_sphinx.gif ├── yourappicon.png ├── automator_menu.png ├── automator_setup.png ├── box_theme_base.png ├── colour_scheme.png ├── dconstruct │ ├── mann.png │ ├── bridle.png │ ├── coates.png │ ├── david.png │ ├── dawes.png │ ├── death.png │ ├── gruber.png │ ├── hannah.png │ ├── marty.png │ └── warren.png ├── deadline-iphone.gif ├── idisk_overview.png ├── iphone_nav_bar.png ├── sand_traveler.png ├── securetrading.png ├── slider_handle.gif ├── textile_small.png ├── textmate_list.png ├── vim-powerline.png ├── zxspectrum_48k.jpg ├── ctrlescape-thumb.png ├── deadline_mac_blog.png ├── instruments_small.png ├── mac_modifier_keys.png ├── screenshot_thumb.gif ├── screenshot_thumb2.gif ├── crossbrowsertesting.png ├── everything_express.png ├── screenshots │ ├── editing.jpg │ ├── editing.png │ ├── dashboard.jpg │ ├── dashboard.png │ ├── editing_thumb.jpg │ └── dashboard_thumb.jpg ├── select_bundle_item.png ├── spinner_transparent.gif ├── tab_bar_controller.png ├── terminal_cheat_sheet.png ├── textmate_subversion.png ├── constants_are_changing.png ├── navigation_controller.png ├── session_encapsulation.png └── silent-running-poster.png ├── files ├── vim │ └── vim.png ├── UploadtoBackpack.zip └── deploy │ ├── deploy_audit.pdf │ └── deploy_audit.zip ├── include ├── images │ ├── alex.png │ ├── home.png │ ├── mail.png │ ├── tile.png │ ├── email.png │ ├── glboxes.png │ ├── iDisk.png │ ├── shadow.gif │ ├── sound.gif │ ├── title.gif │ ├── title.png │ ├── trash.jpg │ ├── HappyMac.png │ ├── msn_wink.gif │ ├── projects.png │ ├── background.png │ ├── background2.png │ ├── journal │ │ ├── ffx.jpg │ │ ├── fry.jpg │ │ ├── ico.jpg │ │ ├── pa.jpg │ │ ├── tori.jpg │ │ ├── apple.jpg │ │ ├── bebop.jpg │ │ ├── meta1.jpg │ │ ├── meta2.jpg │ │ ├── meta3.jpg │ │ ├── meta4.jpg │ │ ├── meta5.jpg │ │ ├── meta6.jpg │ │ ├── meta7.jpg │ │ ├── ntk-cf.jpg │ │ ├── stairs.jpg │ │ ├── stamps.jpg │ │ ├── cinematic.jpg │ │ ├── crimson.jpg │ │ ├── fatality.jpg │ │ ├── morgaine.jpg │ │ ├── ntk-flyer.jpg │ │ ├── ntk-tech.jpg │ │ ├── pavillion.jpg │ │ ├── station.jpg │ │ ├── lemon_jelly.jpg │ │ ├── ntk-arcade.jpg │ │ ├── ntk-flyer2.jpg │ │ ├── ntk-flyer3.jpg │ │ ├── picture(2).jpg │ │ ├── southlondon.jpg │ │ ├── ntk-inventory.jpg │ │ ├── thumbnails │ │ │ ├── ffx.jpg │ │ │ ├── fry.jpg │ │ │ ├── ico.jpg │ │ │ ├── pa.jpg │ │ │ ├── apple.jpg │ │ │ ├── bebop.jpg │ │ │ ├── meta1.jpg │ │ │ ├── meta2.jpg │ │ │ ├── meta3.jpg │ │ │ ├── meta4.jpg │ │ │ ├── meta5.jpg │ │ │ ├── meta6.jpg │ │ │ ├── meta7.jpg │ │ │ ├── tori.jpg │ │ │ ├── crimson.jpg │ │ │ ├── fatality.jpg │ │ │ ├── morgaine.jpg │ │ │ ├── ntk-cf.jpg │ │ │ ├── ntk-tech.jpg │ │ │ ├── stairs.jpg │ │ │ ├── stamps.jpg │ │ │ ├── station.jpg │ │ │ ├── cinematic.jpg │ │ │ ├── ntk-arcade.jpg │ │ │ ├── ntk-flyer.jpg │ │ │ ├── ntk-flyer2.jpg │ │ │ ├── ntk-flyer3.jpg │ │ │ ├── pavillion.jpg │ │ │ ├── lemon_jelly.jpg │ │ │ ├── ntk-inventory.jpg │ │ │ ├── southlondon.jpg │ │ │ ├── 02-08-03_17-07-00.jpg │ │ │ ├── 03-07-03_20-20-30.jpg │ │ │ ├── 05-10-03_13-37-09.jpg │ │ │ ├── 06-06-03_22-42-29.jpg │ │ │ ├── 06-09-03_13-11-49.jpg │ │ │ ├── 06-09-03_14-40-49.jpg │ │ │ ├── 07-06-03_20-43-36.jpg │ │ │ ├── 09-07-03_13-54-55.jpg │ │ │ ├── 10-07-03_10-34-09.jpg │ │ │ ├── 11-06-03_12-19-46.jpg │ │ │ ├── 11-07-03_18-26-22.jpg │ │ │ ├── 11-09-03_13-38-28.jpg │ │ │ ├── 11-09-03_20-38-19.jpg │ │ │ ├── 13-07-03_19-51-37.jpg │ │ │ ├── 13-10-03_17-12-20.jpg │ │ │ ├── 15-06-03_14-07-45.jpg │ │ │ ├── 15-08-03_13-20-05.jpg │ │ │ ├── 15-12-03_08-41-06.jpg │ │ │ ├── 16-10-03_18-03-09.jpg │ │ │ ├── 16-10-03_18-37-52.jpg │ │ │ ├── 16-12-03_08-05-30.jpg │ │ │ ├── 17-10-03_13-15-38.jpg │ │ │ ├── 17-12-03_16-20-15.jpg │ │ │ ├── 19-07-03_11-37-45.jpg │ │ │ ├── 19-12-03_00-27-24.jpg │ │ │ ├── 19-12-03_14-39-37.jpg │ │ │ ├── 20-12-03_20-48-59.jpg │ │ │ ├── 22-12-03_08-11-10.jpg │ │ │ ├── 23-12-03_12-29-20.jpg │ │ │ ├── 24-08-03_12-34-19.jpg │ │ │ ├── 24-10-03_16-00-49.jpg │ │ │ ├── 27-06-03_20-44-01.jpg │ │ │ ├── 27-07-03_16-40-41.jpg │ │ │ ├── 27-12-03_21-26-54.jpg │ │ │ ├── 27-12-03_22-32-55.jpg │ │ │ ├── 28-07-03_22-18-30.jpg │ │ │ ├── 28-11-03_16-14-20.jpg │ │ │ ├── 29-01-04_08-14-06.jpg │ │ │ ├── 29-12-03_10-44-31.jpg │ │ │ └── 30-08-03_19-29-51.jpg │ │ ├── 02-08-03_17-07-00.jpg │ │ ├── 03-07-03_20-20-30.jpg │ │ ├── 05-10-03_13-37-09.jpg │ │ ├── 06-06-03_22-42-29.jpg │ │ ├── 06-09-03_13-11-49.jpg │ │ ├── 06-09-03_14-40-49.jpg │ │ ├── 07-06-03_20-43-36-1.jpg │ │ ├── 07-06-03_20-43-36.jpg │ │ ├── 09-07-03_13-54-55.jpg │ │ ├── 10-07-03_10-34-09.jpg │ │ ├── 11-06-03_12-19-46-1.jpg │ │ ├── 11-06-03_12-19-46-2.jpg │ │ ├── 11-06-03_12-19-46.jpg │ │ ├── 11-07-03_18-26-22.jpg │ │ ├── 11-09-03_13-38-28.jpg │ │ ├── 11-09-03_20-38-19.jpg │ │ ├── 13-07-03_19-51-37.jpg │ │ ├── 13-10-03_17-12-20.jpg │ │ ├── 15-06-03_14-07-45.jpg │ │ ├── 15-08-03_13-20-05-1.jpg │ │ ├── 15-08-03_13-20-05.jpg │ │ ├── 15-12-03_08-41-06.jpg │ │ ├── 16-10-03_18-03-09.jpg │ │ ├── 16-10-03_18-37-52.jpg │ │ ├── 16-12-03_08-05-30.jpg │ │ ├── 17-10-03_13-15-38.jpg │ │ ├── 17-12-03_16-20-15.jpg │ │ ├── 19-07-03_11-37-45.jpg │ │ ├── 19-12-03_00-27-24.jpg │ │ ├── 19-12-03_14-39-37.jpg │ │ ├── 20-12-03_20-48-59.jpg │ │ ├── 22-12-03_08-11-10.jpg │ │ ├── 23-12-03_12-29-20.jpg │ │ ├── 24-08-03_12-34-19.jpg │ │ ├── 24-10-03_16-00-49.jpg │ │ ├── 27-06-03_20-44-01.jpg │ │ ├── 27-07-03_16-40-41.jpg │ │ ├── 27-12-03_21-26-54.jpg │ │ ├── 27-12-03_22-32-55.jpg │ │ ├── 28-07-03_22-18-30.jpg │ │ ├── 28-11-03_16-14-20.jpg │ │ ├── 29-01-04_08-14-06.jpg │ │ ├── 29-12-03_10-44-31.jpg │ │ └── 30-08-03_19-29-51.jpg │ ├── shadowAlpha.png │ ├── shadow_grey.gif │ ├── tiny_noise.png │ ├── macs │ │ ├── home_emac.png │ │ ├── home_laptop.png │ │ ├── work_desktop.png │ │ ├── work_laptop.png │ │ └── thumbnails │ │ │ ├── home_emac.png │ │ │ ├── home_laptop.png │ │ │ ├── work_laptop.png │ │ │ └── work_desktop.png │ └── noepatents_liberty120.png ├── files │ ├── iwap.tar.gz │ ├── webTunes.tar.gz │ ├── xmms-glboxes.tar.gz │ └── foaf.rdf └── style.css ├── robots.txt ├── terminal_cheat_sheet.pdf ├── Makefile ├── old_index.jade ├── javascripts ├── google-code-prettify │ ├── lang-go.js │ ├── lang-ml.js │ ├── lang-vb.js │ ├── lang-lua.js │ ├── lang-scala.js │ ├── lang-sql.js │ ├── lang-tex.js │ ├── lang-vhdl.js │ ├── lang-wiki.js │ ├── lang-apollo.js │ ├── lang-proto.js │ ├── lang-yaml.js │ ├── lang-hs.js │ ├── lang-lisp.js │ ├── lang-css.js │ ├── lang-n.js │ └── lang-clj.js └── site.js ├── README.md ├── stylesheets ├── home.styl └── small.styl ├── _config.json ├── _posts ├── 2009-03-11-hack-the-tube.textile ├── 2007-01-05-hpricot-google-search-snippet.textile ├── 2008-06-27-rails-tutorial-part-1.textile ├── 2009-02-09-molopix.textile ├── 2008-09-25-building-a-singlesign-on-system-in-rails.textile ├── 2008-09-11-guerrilla-software-marketing-strategies.textile ├── 2008-09-08-analytics-with-capistrano.textile ├── 2004-08-02-internationalisation-with-xslt.textile ├── 2008-09-22-dynamic-rails-error-help.textile ├── 2011-03-25-everything-express.textile ├── 2009-03-06-getting-started-with-iphone-development.textile ├── 2008-01-08-10-essential-ruby-gems.textile ├── 2006-09-06-macfriendly-terminal-cheat-sheet.textile ├── 2009-01-04-smsweb-apps-and-rapid-fluid-support.textile ├── 2010-01-21-dailyjs.textile ├── 2009-01-29-new-project-quite-useful.textile ├── 2006-11-23-easy-zip-compression-in-ruby.textile ├── 2012-04-02-use-vim.md ├── 2009-04-15-secure-trading-rails-plugin.textile ├── 2008-02-04-some-ruby-on-rails-plugin-stats.textile ├── 2009-04-10-beautiful-algorithms.textile ├── 2006-11-10-load-your-vimrc-with-helipad.textile ├── 2008-10-08-captor-a-capistrano-gui.textile ├── 2008-10-03-top-5-uses-for-capistrano.textile ├── 2009-04-02-open-map-technology.textile ├── 2006-07-02-backpack-automator-plugin.textile ├── 2009-04-21-deadline-for-mac-and-github-hooks.textile ├── 2010-10-25-wingman.textile ├── 2008-01-18-start-using-test-driven-development-today.textile ├── 2004-10-19-using-xslt-with-bad-html.textile ├── 2009-10-09-gemcutter.textile ├── 2010-04-27-boring.textile ├── 2006-01-24-knowing-javascript.textile ├── 2007-03-07-rails-quality-control-tip-use-verify-in-controllers.textile ├── 2009-11-12-iphone-tech-talks.textile ├── 2006-11-30-serversent-events-in-opera.textile ├── 2009-03-10-the-rosetta-stone-of-iphone-ui-development.textile ├── 2007-03-06-rails-speed-tip-link-tag-caching.textile ├── 2006-12-23-dashboard-widgets-are-great-with-prototype.textile ├── 2009-03-04-mini-app-tweetfu.textile ├── 2012-01-13-using-powerline-with-mac-os.md ├── 2005-12-21-javascript-function-to-help-with-accesskeys.textile ├── 2009-04-09-lets-make-a-game-snake.textile ├── 2012-04-23-zx-spectrum.md ├── 2006-02-28-what-you-absolutely-must-know-about-textmate.textile ├── 2006-04-21-rsi.textile ├── 2012-01-15-vim-keyboard.md ├── 2009-02-04-googles-a-glutton-for-it.textile ├── 2009-07-31-dystopian-index.textile ├── 2012-09-12-sponsored-content.md ├── 2005-12-15-google-home-module.textile ├── 2005-12-16-google-home-api-security.textile ├── 2009-08-20-happiness.textile ├── 2008-11-13-rails-doesnt-crash-a-lot-love-it-and-create-amazing-things.textile ├── 2005-11-29-singletable-inheritance-and-validates-as-unique.textile ├── 2010-04-06-jschat-ico-updates.textile ├── 2006-04-05-php-5s-anonymous-functions.textile ├── 2009-06-23-iphone-30-development-glitches.textile ├── 2005-12-10-scriptaculous-when-to-use-ajax-and-effects.textile ├── 2009-02-02-crossbrowser-testing-followup.textile ├── 2009-10-26-riot-testing.textile ├── 2008-11-08-deadline.textile ├── 2005-11-18-javascript-mini-bibliography.textile ├── 2012-03-20-the-key-to-android-domination.md └── 2006-05-31-using-apis-dont-forget-about-rss-and-atom-feeds.textile ├── cookies.jade ├── bin └── feed_images.sh ├── tags.jade ├── contact.jade ├── index.html ├── about.jade ├── _includes └── sidebar.jade └── _layouts ├── default.jade └── post.jade /.gitignore: -------------------------------------------------------------------------------- 1 | *.sw? 2 | .DS_Store 3 | _site/ 4 | node_modules/ 5 | -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/favicon.ico -------------------------------------------------------------------------------- /images/qu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/qu.png -------------------------------------------------------------------------------- /images/wm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/wm.png -------------------------------------------------------------------------------- /images/about.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/about.gif -------------------------------------------------------------------------------- /images/algol.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/algol.png -------------------------------------------------------------------------------- /images/api.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/api.gif -------------------------------------------------------------------------------- /images/bcm_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/bcm_1.png -------------------------------------------------------------------------------- /images/cape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/cape.png -------------------------------------------------------------------------------- /images/cmdt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/cmdt.png -------------------------------------------------------------------------------- /images/digg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/digg.gif -------------------------------------------------------------------------------- /images/error.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/error.gif -------------------------------------------------------------------------------- /images/feed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/feed.png -------------------------------------------------------------------------------- /images/home.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/home.gif -------------------------------------------------------------------------------- /images/mail.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/mail.gif -------------------------------------------------------------------------------- /images/mate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/mate.png -------------------------------------------------------------------------------- /images/pac.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/pac.gif -------------------------------------------------------------------------------- /images/pop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/pop.png -------------------------------------------------------------------------------- /images/print.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/print.gif -------------------------------------------------------------------------------- /images/pushr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/pushr.png -------------------------------------------------------------------------------- /images/rails.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/rails.png -------------------------------------------------------------------------------- /images/rcov.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/rcov.png -------------------------------------------------------------------------------- /images/share.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/share.gif -------------------------------------------------------------------------------- /images/snake.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/snake.png -------------------------------------------------------------------------------- /images/spark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/spark.png -------------------------------------------------------------------------------- /images/tag.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/tag.gif -------------------------------------------------------------------------------- /images/tgs.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/tgs.jpg -------------------------------------------------------------------------------- /images/tools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/tools.png -------------------------------------------------------------------------------- /images/vim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/vim.png -------------------------------------------------------------------------------- /images/vlad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/vlad.png -------------------------------------------------------------------------------- /files/vim/vim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/files/vim/vim.png -------------------------------------------------------------------------------- /images/Camping.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/Camping.gif -------------------------------------------------------------------------------- /images/amigac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/amigac.png -------------------------------------------------------------------------------- /images/antirsi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/antirsi.png -------------------------------------------------------------------------------- /images/big_box.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/big_box.gif -------------------------------------------------------------------------------- /images/biznik.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/biznik.png -------------------------------------------------------------------------------- /images/desktop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/desktop.png -------------------------------------------------------------------------------- /images/github.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/github.gif -------------------------------------------------------------------------------- /images/google.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/google.png -------------------------------------------------------------------------------- /images/helipad.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/helipad.gif -------------------------------------------------------------------------------- /images/macvim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/macvim.png -------------------------------------------------------------------------------- /images/massive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/massive.png -------------------------------------------------------------------------------- /images/mobile.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/mobile.gif -------------------------------------------------------------------------------- /images/notice.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/notice.gif -------------------------------------------------------------------------------- /images/rdebug.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/rdebug.gif -------------------------------------------------------------------------------- /images/reddit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/reddit.png -------------------------------------------------------------------------------- /images/riotjs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/riotjs.png -------------------------------------------------------------------------------- /images/search.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/search.gif -------------------------------------------------------------------------------- /images/shadow.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/shadow.gif -------------------------------------------------------------------------------- /images/shadow4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/shadow4.gif -------------------------------------------------------------------------------- /images/spinner.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/spinner.gif -------------------------------------------------------------------------------- /images/texture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/texture.png -------------------------------------------------------------------------------- /images/theme1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/theme1.png -------------------------------------------------------------------------------- /images/theme2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/theme2.png -------------------------------------------------------------------------------- /images/theme3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/theme3.png -------------------------------------------------------------------------------- /images/theme4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/theme4.png -------------------------------------------------------------------------------- /images/theme5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/theme5.png -------------------------------------------------------------------------------- /images/theme6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/theme6.png -------------------------------------------------------------------------------- /images/theme7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/theme7.png -------------------------------------------------------------------------------- /images/tweetfu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/tweetfu.png -------------------------------------------------------------------------------- /images/twitter.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/twitter.gif -------------------------------------------------------------------------------- /images/ui_cat.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/ui_cat.gif -------------------------------------------------------------------------------- /images/uicat2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/uicat2.gif -------------------------------------------------------------------------------- /images/uicat3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/uicat3.gif -------------------------------------------------------------------------------- /images/vbrowse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/vbrowse.png -------------------------------------------------------------------------------- /images/verify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/verify.png -------------------------------------------------------------------------------- /images/vimtmux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/vimtmux.png -------------------------------------------------------------------------------- /images/wingman.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/wingman.png -------------------------------------------------------------------------------- /images/yourapp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/yourapp.png -------------------------------------------------------------------------------- /images/11promos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/11promos.png -------------------------------------------------------------------------------- /images/box_theme1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/box_theme1.png -------------------------------------------------------------------------------- /images/box_theme2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/box_theme2.png -------------------------------------------------------------------------------- /images/box_theme3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/box_theme3.png -------------------------------------------------------------------------------- /images/box_theme4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/box_theme4.png -------------------------------------------------------------------------------- /images/box_theme5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/box_theme5.png -------------------------------------------------------------------------------- /images/box_theme6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/box_theme6.png -------------------------------------------------------------------------------- /images/burn_baby.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/burn_baby.png -------------------------------------------------------------------------------- /images/ctrlescape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/ctrlescape.png -------------------------------------------------------------------------------- /images/delicious.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/delicious.gif -------------------------------------------------------------------------------- /images/deployed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/deployed.png -------------------------------------------------------------------------------- /images/depwhack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/depwhack.png -------------------------------------------------------------------------------- /images/ebiwrite.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/ebiwrite.gif -------------------------------------------------------------------------------- /images/feed-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/feed-icon.png -------------------------------------------------------------------------------- /images/good_graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/good_graph.png -------------------------------------------------------------------------------- /images/gradient2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/gradient2.png -------------------------------------------------------------------------------- /images/happiness.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/happiness.png -------------------------------------------------------------------------------- /images/highrise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/highrise.png -------------------------------------------------------------------------------- /images/hjkl_mac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/hjkl_mac.png -------------------------------------------------------------------------------- /images/icons/cph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/icons/cph.png -------------------------------------------------------------------------------- /images/icons/loom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/icons/loom.png -------------------------------------------------------------------------------- /images/linkedin.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/linkedin.gif -------------------------------------------------------------------------------- /images/login-bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/login-bg.gif -------------------------------------------------------------------------------- /images/mate-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/mate-thumb.png -------------------------------------------------------------------------------- /images/monkey_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/monkey_1.png -------------------------------------------------------------------------------- /images/monkey_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/monkey_2.png -------------------------------------------------------------------------------- /images/multitap1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/multitap1.png -------------------------------------------------------------------------------- /images/multitap2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/multitap2.png -------------------------------------------------------------------------------- /images/no_sphinx.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/no_sphinx.gif -------------------------------------------------------------------------------- /images/rcov_thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/rcov_thumb.png -------------------------------------------------------------------------------- /images/rsyncdiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/rsyncdiff.png -------------------------------------------------------------------------------- /images/screenshot.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/screenshot.gif -------------------------------------------------------------------------------- /images/shadow_1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/shadow_1.gif -------------------------------------------------------------------------------- /images/shadow_2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/shadow_2.gif -------------------------------------------------------------------------------- /images/shadow_3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/shadow_3.gif -------------------------------------------------------------------------------- /images/shadow_4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/shadow_4.gif -------------------------------------------------------------------------------- /images/shadow_5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/shadow_5.gif -------------------------------------------------------------------------------- /images/shadow_6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/shadow_6.gif -------------------------------------------------------------------------------- /images/slider_end.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/slider_end.gif -------------------------------------------------------------------------------- /images/spectrum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/spectrum.png -------------------------------------------------------------------------------- /images/text-mate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/text-mate.png -------------------------------------------------------------------------------- /images/transmit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/transmit.png -------------------------------------------------------------------------------- /images/unix_plate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/unix_plate.png -------------------------------------------------------------------------------- /images/vim-better.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/vim-better.png -------------------------------------------------------------------------------- /images/work/loom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/work/loom.png -------------------------------------------------------------------------------- /images/android_case.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/android_case.png -------------------------------------------------------------------------------- /images/captcha/180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/captcha/180.png -------------------------------------------------------------------------------- /images/captcha/6118.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/captcha/6118.png -------------------------------------------------------------------------------- /images/captor_blog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/captor_blog.png -------------------------------------------------------------------------------- /images/changes_diff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/changes_diff.png -------------------------------------------------------------------------------- /images/changes_list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/changes_list.png -------------------------------------------------------------------------------- /images/endtroducing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/endtroducing.png -------------------------------------------------------------------------------- /images/font_larger.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/font_larger.gif -------------------------------------------------------------------------------- /images/font_smaller.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/font_smaller.gif -------------------------------------------------------------------------------- /images/fowd2010/qix.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/fowd2010/qix.png -------------------------------------------------------------------------------- /images/heligoitunes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/heligoitunes.png -------------------------------------------------------------------------------- /images/ig_delicious.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/ig_delicious.png -------------------------------------------------------------------------------- /images/instruments.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/instruments.png -------------------------------------------------------------------------------- /images/iphone-tech.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/iphone-tech.png -------------------------------------------------------------------------------- /images/not_sharing.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/not_sharing.gif -------------------------------------------------------------------------------- /images/print_small.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/print_small.gif -------------------------------------------------------------------------------- /images/screenshot2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/screenshot2.gif -------------------------------------------------------------------------------- /images/shadow_grey.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/shadow_grey.gif -------------------------------------------------------------------------------- /images/share_small.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/share_small.gif -------------------------------------------------------------------------------- /images/slider_track.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/slider_track.gif -------------------------------------------------------------------------------- /images/textile_big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/textile_big.png -------------------------------------------------------------------------------- /images/tokyo-night.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/tokyo-night.jpg -------------------------------------------------------------------------------- /images/with_sphinx.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/with_sphinx.gif -------------------------------------------------------------------------------- /images/work/furnish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/work/furnish.png -------------------------------------------------------------------------------- /images/work/helipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/work/helipad.png -------------------------------------------------------------------------------- /images/work/tiktrac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/work/tiktrac.png -------------------------------------------------------------------------------- /images/yourappicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/yourappicon.png -------------------------------------------------------------------------------- /include/images/alex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/alex.png -------------------------------------------------------------------------------- /include/images/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/home.png -------------------------------------------------------------------------------- /include/images/mail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/mail.png -------------------------------------------------------------------------------- /include/images/tile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/tile.png -------------------------------------------------------------------------------- /files/UploadtoBackpack.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/files/UploadtoBackpack.zip -------------------------------------------------------------------------------- /images/automator_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/automator_menu.png -------------------------------------------------------------------------------- /images/automator_setup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/automator_setup.png -------------------------------------------------------------------------------- /images/box_theme_base.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/box_theme_base.png -------------------------------------------------------------------------------- /images/captcha/78452.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/captcha/78452.png -------------------------------------------------------------------------------- /images/colour_scheme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/colour_scheme.png -------------------------------------------------------------------------------- /images/dconstruct/mann.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/dconstruct/mann.png -------------------------------------------------------------------------------- /images/deadline-iphone.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/deadline-iphone.gif -------------------------------------------------------------------------------- /images/fowd2010/anna.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/fowd2010/anna.png -------------------------------------------------------------------------------- /images/fowd2010/elliot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/fowd2010/elliot.png -------------------------------------------------------------------------------- /images/fowd2010/sarah.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/fowd2010/sarah.png -------------------------------------------------------------------------------- /images/fowd2010/simon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/fowd2010/simon.png -------------------------------------------------------------------------------- /images/icons/deadline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/icons/deadline.png -------------------------------------------------------------------------------- /images/icons/ebiwrite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/icons/ebiwrite.png -------------------------------------------------------------------------------- /images/icons/helipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/icons/helipad.png -------------------------------------------------------------------------------- /images/icons/tiktrac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/icons/tiktrac.png -------------------------------------------------------------------------------- /images/idisk_overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/idisk_overview.png -------------------------------------------------------------------------------- /images/iphone_nav_bar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/iphone_nav_bar.png -------------------------------------------------------------------------------- /images/sand_traveler.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/sand_traveler.png -------------------------------------------------------------------------------- /images/securetrading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/securetrading.png -------------------------------------------------------------------------------- /images/slider_handle.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/slider_handle.gif -------------------------------------------------------------------------------- /images/textile_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/textile_small.png -------------------------------------------------------------------------------- /images/textmate_list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/textmate_list.png -------------------------------------------------------------------------------- /images/vim-powerline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/vim-powerline.png -------------------------------------------------------------------------------- /images/work/deadline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/work/deadline.png -------------------------------------------------------------------------------- /images/work/ebiwrite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/work/ebiwrite.png -------------------------------------------------------------------------------- /images/work/large/loom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/work/large/loom.png -------------------------------------------------------------------------------- /images/zxspectrum_48k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/zxspectrum_48k.jpg -------------------------------------------------------------------------------- /include/files/iwap.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/files/iwap.tar.gz -------------------------------------------------------------------------------- /include/images/email.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/email.png -------------------------------------------------------------------------------- /include/images/glboxes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/glboxes.png -------------------------------------------------------------------------------- /include/images/iDisk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/iDisk.png -------------------------------------------------------------------------------- /include/images/shadow.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/shadow.gif -------------------------------------------------------------------------------- /include/images/sound.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/sound.gif -------------------------------------------------------------------------------- /include/images/title.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/title.gif -------------------------------------------------------------------------------- /include/images/title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/title.png -------------------------------------------------------------------------------- /include/images/trash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/trash.jpg -------------------------------------------------------------------------------- /robots.txt: -------------------------------------------------------------------------------- 1 | # See http://www.robotstxt.org/wc/norobots.html for documentation on how to use the robots.txt file -------------------------------------------------------------------------------- /terminal_cheat_sheet.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/terminal_cheat_sheet.pdf -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | deploy: 2 | @bin/feed_images.sh 3 | rsync -avz "_site/" web2.helicoid.net:/var/www/alexyoung.org/ 4 | 5 | -------------------------------------------------------------------------------- /images/ctrlescape-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/ctrlescape-thumb.png -------------------------------------------------------------------------------- /images/dconstruct/bridle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/dconstruct/bridle.png -------------------------------------------------------------------------------- /images/dconstruct/coates.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/dconstruct/coates.png -------------------------------------------------------------------------------- /images/dconstruct/david.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/dconstruct/david.png -------------------------------------------------------------------------------- /images/dconstruct/dawes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/dconstruct/dawes.png -------------------------------------------------------------------------------- /images/dconstruct/death.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/dconstruct/death.png -------------------------------------------------------------------------------- /images/dconstruct/gruber.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/dconstruct/gruber.png -------------------------------------------------------------------------------- /images/dconstruct/hannah.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/dconstruct/hannah.png -------------------------------------------------------------------------------- /images/dconstruct/marty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/dconstruct/marty.png -------------------------------------------------------------------------------- /images/dconstruct/warren.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/dconstruct/warren.png -------------------------------------------------------------------------------- /images/deadline_mac_blog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/deadline_mac_blog.png -------------------------------------------------------------------------------- /images/fowd2010/strange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/fowd2010/strange.png -------------------------------------------------------------------------------- /images/instruments_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/instruments_small.png -------------------------------------------------------------------------------- /images/mac_modifier_keys.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/mac_modifier_keys.png -------------------------------------------------------------------------------- /images/screenshot_thumb.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/screenshot_thumb.gif -------------------------------------------------------------------------------- /images/screenshot_thumb2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/screenshot_thumb2.gif -------------------------------------------------------------------------------- /include/images/HappyMac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/HappyMac.png -------------------------------------------------------------------------------- /include/images/msn_wink.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/msn_wink.gif -------------------------------------------------------------------------------- /include/images/projects.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/projects.png -------------------------------------------------------------------------------- /files/deploy/deploy_audit.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/files/deploy/deploy_audit.pdf -------------------------------------------------------------------------------- /files/deploy/deploy_audit.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/files/deploy/deploy_audit.zip -------------------------------------------------------------------------------- /images/crossbrowsertesting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/crossbrowsertesting.png -------------------------------------------------------------------------------- /images/everything_express.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/everything_express.png -------------------------------------------------------------------------------- /images/screenshots/editing.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/screenshots/editing.jpg -------------------------------------------------------------------------------- /images/screenshots/editing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/screenshots/editing.png -------------------------------------------------------------------------------- /images/select_bundle_item.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/select_bundle_item.png -------------------------------------------------------------------------------- /images/spinner_transparent.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/spinner_transparent.gif -------------------------------------------------------------------------------- /images/tab_bar_controller.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/tab_bar_controller.png -------------------------------------------------------------------------------- /images/terminal_cheat_sheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/terminal_cheat_sheet.png -------------------------------------------------------------------------------- /images/textmate_subversion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/textmate_subversion.png -------------------------------------------------------------------------------- /images/work/large/deadline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/work/large/deadline.png -------------------------------------------------------------------------------- /images/work/large/ebiwrite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/work/large/ebiwrite.png -------------------------------------------------------------------------------- /images/work/large/furnish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/work/large/furnish.png -------------------------------------------------------------------------------- /images/work/large/helipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/work/large/helipad.png -------------------------------------------------------------------------------- /images/work/large/tiktrac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/work/large/tiktrac.png -------------------------------------------------------------------------------- /images/work/logos/furnish.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/work/logos/furnish.gif -------------------------------------------------------------------------------- /include/files/webTunes.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/files/webTunes.tar.gz -------------------------------------------------------------------------------- /include/images/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/background.png -------------------------------------------------------------------------------- /include/images/background2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/background2.png -------------------------------------------------------------------------------- /include/images/journal/ffx.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/ffx.jpg -------------------------------------------------------------------------------- /include/images/journal/fry.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/fry.jpg -------------------------------------------------------------------------------- /include/images/journal/ico.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/ico.jpg -------------------------------------------------------------------------------- /include/images/journal/pa.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/pa.jpg -------------------------------------------------------------------------------- /include/images/journal/tori.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/tori.jpg -------------------------------------------------------------------------------- /include/images/shadowAlpha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/shadowAlpha.png -------------------------------------------------------------------------------- /include/images/shadow_grey.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/shadow_grey.gif -------------------------------------------------------------------------------- /include/images/tiny_noise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/tiny_noise.png -------------------------------------------------------------------------------- /images/constants_are_changing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/constants_are_changing.png -------------------------------------------------------------------------------- /images/navigation_controller.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/navigation_controller.png -------------------------------------------------------------------------------- /images/screenshots/dashboard.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/screenshots/dashboard.jpg -------------------------------------------------------------------------------- /images/screenshots/dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/screenshots/dashboard.png -------------------------------------------------------------------------------- /images/session_encapsulation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/session_encapsulation.png -------------------------------------------------------------------------------- /images/silent-running-poster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/silent-running-poster.png -------------------------------------------------------------------------------- /images/work/reutersrealestate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/work/reutersrealestate.png -------------------------------------------------------------------------------- /include/files/xmms-glboxes.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/files/xmms-glboxes.tar.gz -------------------------------------------------------------------------------- /include/images/journal/apple.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/apple.jpg -------------------------------------------------------------------------------- /include/images/journal/bebop.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/bebop.jpg -------------------------------------------------------------------------------- /include/images/journal/meta1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/meta1.jpg -------------------------------------------------------------------------------- /include/images/journal/meta2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/meta2.jpg -------------------------------------------------------------------------------- /include/images/journal/meta3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/meta3.jpg -------------------------------------------------------------------------------- /include/images/journal/meta4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/meta4.jpg -------------------------------------------------------------------------------- /include/images/journal/meta5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/meta5.jpg -------------------------------------------------------------------------------- /include/images/journal/meta6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/meta6.jpg -------------------------------------------------------------------------------- /include/images/journal/meta7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/meta7.jpg -------------------------------------------------------------------------------- /include/images/journal/ntk-cf.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/ntk-cf.jpg -------------------------------------------------------------------------------- /include/images/journal/stairs.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/stairs.jpg -------------------------------------------------------------------------------- /include/images/journal/stamps.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/stamps.jpg -------------------------------------------------------------------------------- /include/images/macs/home_emac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/macs/home_emac.png -------------------------------------------------------------------------------- /images/screenshots/editing_thumb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/screenshots/editing_thumb.jpg -------------------------------------------------------------------------------- /include/images/journal/cinematic.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/cinematic.jpg -------------------------------------------------------------------------------- /include/images/journal/crimson.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/crimson.jpg -------------------------------------------------------------------------------- /include/images/journal/fatality.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/fatality.jpg -------------------------------------------------------------------------------- /include/images/journal/morgaine.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/morgaine.jpg -------------------------------------------------------------------------------- /include/images/journal/ntk-flyer.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/ntk-flyer.jpg -------------------------------------------------------------------------------- /include/images/journal/ntk-tech.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/ntk-tech.jpg -------------------------------------------------------------------------------- /include/images/journal/pavillion.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/pavillion.jpg -------------------------------------------------------------------------------- /include/images/journal/station.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/station.jpg -------------------------------------------------------------------------------- /include/images/macs/home_laptop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/macs/home_laptop.png -------------------------------------------------------------------------------- /include/images/macs/work_desktop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/macs/work_desktop.png -------------------------------------------------------------------------------- /include/images/macs/work_laptop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/macs/work_laptop.png -------------------------------------------------------------------------------- /images/screenshots/dashboard_thumb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/screenshots/dashboard_thumb.jpg -------------------------------------------------------------------------------- /include/images/journal/lemon_jelly.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/lemon_jelly.jpg -------------------------------------------------------------------------------- /include/images/journal/ntk-arcade.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/ntk-arcade.jpg -------------------------------------------------------------------------------- /include/images/journal/ntk-flyer2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/ntk-flyer2.jpg -------------------------------------------------------------------------------- /include/images/journal/ntk-flyer3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/ntk-flyer3.jpg -------------------------------------------------------------------------------- /include/images/journal/picture(2).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/picture(2).jpg -------------------------------------------------------------------------------- /include/images/journal/southlondon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/southlondon.jpg -------------------------------------------------------------------------------- /images/work/large/reutersrealestate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/images/work/large/reutersrealestate.png -------------------------------------------------------------------------------- /include/images/journal/ntk-inventory.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/ntk-inventory.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/ffx.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/ffx.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/fry.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/fry.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/ico.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/ico.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/pa.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/pa.jpg -------------------------------------------------------------------------------- /include/images/noepatents_liberty120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/noepatents_liberty120.png -------------------------------------------------------------------------------- /old_index.jade: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Alex R. Young 4 | paginate: true 5 | --- 6 | 7 | !{paginatedPosts()} 8 | !{paginate} 9 | -------------------------------------------------------------------------------- /include/images/journal/thumbnails/apple.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/apple.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/bebop.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/bebop.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/meta1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/meta1.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/meta2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/meta2.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/meta3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/meta3.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/meta4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/meta4.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/meta5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/meta5.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/meta6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/meta6.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/meta7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/meta7.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/tori.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/tori.jpg -------------------------------------------------------------------------------- /javascripts/google-code-prettify/lang-go.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/javascripts/google-code-prettify/lang-go.js -------------------------------------------------------------------------------- /javascripts/google-code-prettify/lang-ml.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/javascripts/google-code-prettify/lang-ml.js -------------------------------------------------------------------------------- /javascripts/google-code-prettify/lang-vb.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/javascripts/google-code-prettify/lang-vb.js -------------------------------------------------------------------------------- /include/images/journal/02-08-03_17-07-00.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/02-08-03_17-07-00.jpg -------------------------------------------------------------------------------- /include/images/journal/03-07-03_20-20-30.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/03-07-03_20-20-30.jpg -------------------------------------------------------------------------------- /include/images/journal/05-10-03_13-37-09.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/05-10-03_13-37-09.jpg -------------------------------------------------------------------------------- /include/images/journal/06-06-03_22-42-29.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/06-06-03_22-42-29.jpg -------------------------------------------------------------------------------- /include/images/journal/06-09-03_13-11-49.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/06-09-03_13-11-49.jpg -------------------------------------------------------------------------------- /include/images/journal/06-09-03_14-40-49.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/06-09-03_14-40-49.jpg -------------------------------------------------------------------------------- /include/images/journal/07-06-03_20-43-36-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/07-06-03_20-43-36-1.jpg -------------------------------------------------------------------------------- /include/images/journal/07-06-03_20-43-36.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/07-06-03_20-43-36.jpg -------------------------------------------------------------------------------- /include/images/journal/09-07-03_13-54-55.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/09-07-03_13-54-55.jpg -------------------------------------------------------------------------------- /include/images/journal/10-07-03_10-34-09.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/10-07-03_10-34-09.jpg -------------------------------------------------------------------------------- /include/images/journal/11-06-03_12-19-46-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/11-06-03_12-19-46-1.jpg -------------------------------------------------------------------------------- /include/images/journal/11-06-03_12-19-46-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/11-06-03_12-19-46-2.jpg -------------------------------------------------------------------------------- /include/images/journal/11-06-03_12-19-46.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/11-06-03_12-19-46.jpg -------------------------------------------------------------------------------- /include/images/journal/11-07-03_18-26-22.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/11-07-03_18-26-22.jpg -------------------------------------------------------------------------------- /include/images/journal/11-09-03_13-38-28.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/11-09-03_13-38-28.jpg -------------------------------------------------------------------------------- /include/images/journal/11-09-03_20-38-19.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/11-09-03_20-38-19.jpg -------------------------------------------------------------------------------- /include/images/journal/13-07-03_19-51-37.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/13-07-03_19-51-37.jpg -------------------------------------------------------------------------------- /include/images/journal/13-10-03_17-12-20.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/13-10-03_17-12-20.jpg -------------------------------------------------------------------------------- /include/images/journal/15-06-03_14-07-45.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/15-06-03_14-07-45.jpg -------------------------------------------------------------------------------- /include/images/journal/15-08-03_13-20-05-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/15-08-03_13-20-05-1.jpg -------------------------------------------------------------------------------- /include/images/journal/15-08-03_13-20-05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/15-08-03_13-20-05.jpg -------------------------------------------------------------------------------- /include/images/journal/15-12-03_08-41-06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/15-12-03_08-41-06.jpg -------------------------------------------------------------------------------- /include/images/journal/16-10-03_18-03-09.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/16-10-03_18-03-09.jpg -------------------------------------------------------------------------------- /include/images/journal/16-10-03_18-37-52.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/16-10-03_18-37-52.jpg -------------------------------------------------------------------------------- /include/images/journal/16-12-03_08-05-30.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/16-12-03_08-05-30.jpg -------------------------------------------------------------------------------- /include/images/journal/17-10-03_13-15-38.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/17-10-03_13-15-38.jpg -------------------------------------------------------------------------------- /include/images/journal/17-12-03_16-20-15.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/17-12-03_16-20-15.jpg -------------------------------------------------------------------------------- /include/images/journal/19-07-03_11-37-45.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/19-07-03_11-37-45.jpg -------------------------------------------------------------------------------- /include/images/journal/19-12-03_00-27-24.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/19-12-03_00-27-24.jpg -------------------------------------------------------------------------------- /include/images/journal/19-12-03_14-39-37.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/19-12-03_14-39-37.jpg -------------------------------------------------------------------------------- /include/images/journal/20-12-03_20-48-59.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/20-12-03_20-48-59.jpg -------------------------------------------------------------------------------- /include/images/journal/22-12-03_08-11-10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/22-12-03_08-11-10.jpg -------------------------------------------------------------------------------- /include/images/journal/23-12-03_12-29-20.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/23-12-03_12-29-20.jpg -------------------------------------------------------------------------------- /include/images/journal/24-08-03_12-34-19.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/24-08-03_12-34-19.jpg -------------------------------------------------------------------------------- /include/images/journal/24-10-03_16-00-49.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/24-10-03_16-00-49.jpg -------------------------------------------------------------------------------- /include/images/journal/27-06-03_20-44-01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/27-06-03_20-44-01.jpg -------------------------------------------------------------------------------- /include/images/journal/27-07-03_16-40-41.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/27-07-03_16-40-41.jpg -------------------------------------------------------------------------------- /include/images/journal/27-12-03_21-26-54.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/27-12-03_21-26-54.jpg -------------------------------------------------------------------------------- /include/images/journal/27-12-03_22-32-55.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/27-12-03_22-32-55.jpg -------------------------------------------------------------------------------- /include/images/journal/28-07-03_22-18-30.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/28-07-03_22-18-30.jpg -------------------------------------------------------------------------------- /include/images/journal/28-11-03_16-14-20.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/28-11-03_16-14-20.jpg -------------------------------------------------------------------------------- /include/images/journal/29-01-04_08-14-06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/29-01-04_08-14-06.jpg -------------------------------------------------------------------------------- /include/images/journal/29-12-03_10-44-31.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/29-12-03_10-44-31.jpg -------------------------------------------------------------------------------- /include/images/journal/30-08-03_19-29-51.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/30-08-03_19-29-51.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/crimson.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/crimson.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/fatality.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/fatality.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/morgaine.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/morgaine.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/ntk-cf.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/ntk-cf.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/ntk-tech.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/ntk-tech.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/stairs.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/stairs.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/stamps.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/stamps.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/station.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/station.jpg -------------------------------------------------------------------------------- /include/images/macs/thumbnails/home_emac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/macs/thumbnails/home_emac.png -------------------------------------------------------------------------------- /include/images/macs/thumbnails/home_laptop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/macs/thumbnails/home_laptop.png -------------------------------------------------------------------------------- /include/images/macs/thumbnails/work_laptop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/macs/thumbnails/work_laptop.png -------------------------------------------------------------------------------- /javascripts/google-code-prettify/lang-lua.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/javascripts/google-code-prettify/lang-lua.js -------------------------------------------------------------------------------- /javascripts/google-code-prettify/lang-scala.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/javascripts/google-code-prettify/lang-scala.js -------------------------------------------------------------------------------- /javascripts/google-code-prettify/lang-sql.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/javascripts/google-code-prettify/lang-sql.js -------------------------------------------------------------------------------- /javascripts/google-code-prettify/lang-tex.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/javascripts/google-code-prettify/lang-tex.js -------------------------------------------------------------------------------- /javascripts/google-code-prettify/lang-vhdl.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/javascripts/google-code-prettify/lang-vhdl.js -------------------------------------------------------------------------------- /javascripts/google-code-prettify/lang-wiki.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/javascripts/google-code-prettify/lang-wiki.js -------------------------------------------------------------------------------- /include/images/journal/thumbnails/cinematic.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/cinematic.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/ntk-arcade.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/ntk-arcade.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/ntk-flyer.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/ntk-flyer.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/ntk-flyer2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/ntk-flyer2.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/ntk-flyer3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/ntk-flyer3.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/pavillion.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/pavillion.jpg -------------------------------------------------------------------------------- /include/images/macs/thumbnails/work_desktop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/macs/thumbnails/work_desktop.png -------------------------------------------------------------------------------- /javascripts/google-code-prettify/lang-apollo.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/javascripts/google-code-prettify/lang-apollo.js -------------------------------------------------------------------------------- /include/images/journal/thumbnails/lemon_jelly.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/lemon_jelly.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/ntk-inventory.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/ntk-inventory.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/southlondon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/southlondon.jpg -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Alex's Blog 2 | 3 | This blog is made with [Pop](http://popjs.com/) (GitHub: [alexyoung / pop](https://github.com/alexyoung/pop), License: _MIT_). 4 | 5 | -------------------------------------------------------------------------------- /include/images/journal/thumbnails/02-08-03_17-07-00.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/02-08-03_17-07-00.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/03-07-03_20-20-30.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/03-07-03_20-20-30.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/05-10-03_13-37-09.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/05-10-03_13-37-09.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/06-06-03_22-42-29.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/06-06-03_22-42-29.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/06-09-03_13-11-49.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/06-09-03_13-11-49.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/06-09-03_14-40-49.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/06-09-03_14-40-49.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/07-06-03_20-43-36.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/07-06-03_20-43-36.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/09-07-03_13-54-55.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/09-07-03_13-54-55.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/10-07-03_10-34-09.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/10-07-03_10-34-09.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/11-06-03_12-19-46.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/11-06-03_12-19-46.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/11-07-03_18-26-22.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/11-07-03_18-26-22.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/11-09-03_13-38-28.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/11-09-03_13-38-28.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/11-09-03_20-38-19.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/11-09-03_20-38-19.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/13-07-03_19-51-37.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/13-07-03_19-51-37.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/13-10-03_17-12-20.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/13-10-03_17-12-20.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/15-06-03_14-07-45.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/15-06-03_14-07-45.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/15-08-03_13-20-05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/15-08-03_13-20-05.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/15-12-03_08-41-06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/15-12-03_08-41-06.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/16-10-03_18-03-09.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/16-10-03_18-03-09.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/16-10-03_18-37-52.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/16-10-03_18-37-52.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/16-12-03_08-05-30.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/16-12-03_08-05-30.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/17-10-03_13-15-38.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/17-10-03_13-15-38.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/17-12-03_16-20-15.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/17-12-03_16-20-15.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/19-07-03_11-37-45.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/19-07-03_11-37-45.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/19-12-03_00-27-24.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/19-12-03_00-27-24.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/19-12-03_14-39-37.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/19-12-03_14-39-37.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/20-12-03_20-48-59.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/20-12-03_20-48-59.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/22-12-03_08-11-10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/22-12-03_08-11-10.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/23-12-03_12-29-20.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/23-12-03_12-29-20.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/24-08-03_12-34-19.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/24-08-03_12-34-19.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/24-10-03_16-00-49.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/24-10-03_16-00-49.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/27-06-03_20-44-01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/27-06-03_20-44-01.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/27-07-03_16-40-41.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/27-07-03_16-40-41.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/27-12-03_21-26-54.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/27-12-03_21-26-54.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/27-12-03_22-32-55.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/27-12-03_22-32-55.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/28-07-03_22-18-30.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/28-07-03_22-18-30.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/28-11-03_16-14-20.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/28-11-03_16-14-20.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/29-01-04_08-14-06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/29-01-04_08-14-06.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/29-12-03_10-44-31.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/29-12-03_10-44-31.jpg -------------------------------------------------------------------------------- /include/images/journal/thumbnails/30-08-03_19-29-51.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/alexyoung.org/master/include/images/journal/thumbnails/30-08-03_19-29-51.jpg -------------------------------------------------------------------------------- /stylesheets/home.styl: -------------------------------------------------------------------------------- 1 | article 2 | border-radius: 5px 3 | margin-bottom: 10px 4 | transition: background-color 600ms ease-in 5 | -webkit-transition: background-color 600ms linear 6 | -------------------------------------------------------------------------------- /_config.json: -------------------------------------------------------------------------------- 1 | { "url": "http://alexyoung.org" 2 | , "title": "Alex R. Young" 3 | , "permalink": "/:year/:month/:day/:title" 4 | , "perPage": 10 5 | , "exclude": ["\\.swp"] 6 | , "require": ["pop-disqus"] 7 | , "autoGenerate": [{"feed": "feed.xml", "rss": "feed.rss"}] } 8 | -------------------------------------------------------------------------------- /stylesheets/small.styl: -------------------------------------------------------------------------------- 1 | panel-border-colour = #b3b1ac 2 | 3 | nav.panel 4 | position: static 5 | float: left 6 | margin: 0 7 | border-bottom: 1px solid panel-border-colour 8 | 9 | #content 10 | width: 600px 11 | margin-left: 20px 12 | 13 | #container 14 | margin: 0 15 | -------------------------------------------------------------------------------- /javascripts/site.js: -------------------------------------------------------------------------------- 1 | $(function() { 2 | prettyPrint(); 3 | 4 | $('.tag-list a.tag').live('click', function(e) { 5 | e.preventDefault(); 6 | $(this).parents('h2').next('.posts').toggle(); 7 | }); 8 | 9 | if (window.location.hash) { 10 | $(window.location.hash).next('.posts').show(); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /javascripts/google-code-prettify/lang-proto.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.sourceDecorator({keywords:"bytes,default,double,enum,extend,extensions,false,group,import,max,message,option,optional,package,repeated,required,returns,rpc,service,syntax,to,true",types:/^(bool|(double|s?fixed|[su]?int)(32|64)|float|string)\b/,cStyleComments:!0}),["proto"]); 2 | -------------------------------------------------------------------------------- /javascripts/google-code-prettify/lang-yaml.js: -------------------------------------------------------------------------------- 1 | var a=null; 2 | PR.registerLangHandler(PR.createSimpleLexer([["pun",/^[:>?|]+/,a,":|>?"],["dec",/^%(?:YAML|TAG)[^\n\r#]+/,a,"%"],["typ",/^&\S+/,a,"&"],["typ",/^!\S*/,a,"!"],["str",/^"(?:[^"\\]|\\.)*(?:"|$)/,a,'"'],["str",/^'(?:[^']|'')*(?:'|$)/,a,"'"],["com",/^#[^\n\r]*/,a,"#"],["pln",/^\s+/,a," \t\r\n"]],[["dec",/^(?:---|\.\.\.)(?:[\n\r]|$)/],["pun",/^-/],["kwd",/^\w+:[\n\r ]/],["pln",/^\w+/]]),["yaml","yml"]); 3 | -------------------------------------------------------------------------------- /_posts/2009-03-11-hack-the-tube.textile: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Hack the Tube" 4 | categories: 5 | - programming 6 | --- 7 | 8 | By Tube I mean the London Underground. I just finished writing this over at Quite Useful: "Hack the Tube":http://quiteuseful.co.uk/post/85487010/hack-the-tube 9 | 10 | The article features Ruby and JavaScript examples of using "Tube Updates":http://tubeupdates.com/ by "Ben Dodson":http://bendodson.com/ to get Tube status updates. 11 | -------------------------------------------------------------------------------- /_posts/2007-01-05-hpricot-google-search-snippet.textile: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Hpricot Google Search Snippet" 4 | categories: 5 | - hpricot 6 | - ruby 7 | - programming 8 | - snippets 9 | --- 10 | 11 | With "hpricot":http://code.whytheluckystiff.net/hpricot/ you can do anything! 12 | 13 | {% highlight ruby %} 14 | puts ((Hpricot(open(URI.escape("http://www.google.com/search?q=#{term}"))))/"a.l").collect { |link| "#{link.innerHTML}: #{link.attributes['href']}" }.join("\n") 15 | {% endhighlight %} 16 | -------------------------------------------------------------------------------- /_posts/2008-06-27-rails-tutorial-part-1.textile: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Rails Tutorial Part 1" 4 | categories: 5 | - writing 6 | - rails 7 | - ruby 8 | --- 9 | 10 | My Rails tutorial (part 1 of 4) has been published in "Linux Format 108":http://www.linuxformat.co.uk/modules.php?op=modload&name=NewArchives&issue=108. It shows you how to build a Rails-powered photo gallery, by using basic techniques and popular plugins. 11 | 12 | Grab it from your favourite newsagent and let me know what you think! 13 | -------------------------------------------------------------------------------- /cookies.jade: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | a#home(href="/") alexyoung.org 6 | 7 | .free 8 | h1 Cookies and Privacy 9 | 10 | p This website uses the following third-party services that create cookies during browsing:
11 | 12 | ul 13 | li 14 | a(href="http://carbonads.net/") Carbon Ads 15 | li 16 | a(href="http://disqus.com") Disqus 17 | 18 | h2 Disabling Cookies 19 | 20 | p 21 | If you do not wish to store cookies from this website, then change your browser's settings to block them. 22 | -------------------------------------------------------------------------------- /bin/feed_images.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | cat _site/feed.xml | sed "s/img src='\/images\//img src='http:\/\/alexyoung.org\/images\//g" > _site/feed_1.xml 4 | cat _site/feed_1.xml | sed 's/img src="\/images\//img src="http:\/\/alexyoung.org\/images\//g' > _site/feed.xml 5 | rm _site/feed_1.xml 6 | 7 | cat _site/feed.xml | sed "s/img src='\/images\//img src='http:\/\/alexyoung.org\/images\//g" > _site/feed_1.xml 8 | cat _site/feed_1.xml | sed 's/img src="\/images\//img src="http:\/\/alexyoung.org\/images\//g' > _site/feed.xml 9 | rm _site/feed_1.xml 10 | -------------------------------------------------------------------------------- /_posts/2009-02-09-molopix.textile: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "MoloPix" 4 | categories: 5 | - photography 6 | - iphone 7 | - apps 8 | --- 9 | 10 | "Alan Bradburne":http://alanbradburne.com/, a fellow Rails and iPhone developer who I've worked with, has released his first iPhone app: "MoloPix":http://molopix.com/. It takes multiple photos and combines them into one image, and has an integrated website so you can share them straight from the iPhone. 11 | 12 | I wrote a review for it on "Quite Useful":http://quiteuseful.co.uk/post/76738117/review-molopix. 13 | -------------------------------------------------------------------------------- /_posts/2008-09-25-building-a-singlesign-on-system-in-rails.textile: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Building a Single-Sign-On System in Rails" 4 | categories: 5 | - rails 6 | - programming 7 | --- 8 | 9 | I've just finished writing an article about how I built a single-sign on server in Rails: 10 | 11 | "Building our centralised authentication system":http://blog.helicoid.net/2008/09/25/building-our-centralised-authentication-system 12 | 13 | It was actually an incredibly rewarding experience. I've written up design notes, rationale and provided tips on avoiding problems. 14 | -------------------------------------------------------------------------------- /tags.jade: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | h1 Tags 6 | 7 | p Click a tag to view the associated posts. 8 | 9 | .tag-list 10 | - var tags = allTags(); 11 | - if (tags && tags.length > 0) 12 | - for (var i = 0, tag = tags[0], posts = postsForTag(tag); i < tags.length; i++, tag = tags[i], posts = postsForTag(tag)) 13 | h2(id=tag) 14 | a.tag(href="#") (#{posts.length}) #{tag} 15 | .posts 16 | - for (var j = 0, post = posts[j]; j < posts.length; j++, post = posts[j]) 17 | p 18 | a(href="#{post.url}") #{post.title} 19 | -------------------------------------------------------------------------------- /_posts/2008-09-11-guerrilla-software-marketing-strategies.textile: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Guerrilla Software Marketing Strategies" 4 | categories: 5 | - marketing 6 | --- 7 | 8 | "Guerrilla Software Marketing Strategies":http://biznik.com/articles/guerrilla-software-marketing-strategies is an article I wrote for "Biznik":http://biznik.com about our experiences marketing my web applications. It covers (proven!) free techniques for marketing your software. 9 | 10 | If you find this useful I'm thinking about following it up with an article about what *didn't* work for us. 11 | -------------------------------------------------------------------------------- /contact.jade: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: About 4 | --- 5 | 6 | a#home(href="/") alexyoung.org 7 | 8 | .free 9 | h1 Contact 10 | 11 |Please wait while the contact form loads, or visit it directly.
12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /javascripts/google-code-prettify/lang-hs.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t-\r ]+/,null,"\t\n\r "],["str",/^"(?:[^\n\f\r"\\]|\\[\S\s])*(?:"|$)/,null,'"'],["str",/^'(?:[^\n\f\r'\\]|\\[^&])'?/,null,"'"],["lit",/^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)/i,null,"0123456789"]],[["com",/^(?:--+[^\n\f\r]*|{-(?:[^-]|-+[^}-])*-})/],["kwd",/^(?:case|class|data|default|deriving|do|else|if|import|in|infix|infixl|infixr|instance|let|module|newtype|of|then|type|where|_)(?=[^\d'A-Za-z]|$)/, 2 | null],["pln",/^(?:[A-Z][\w']*\.)*[A-Za-z][\w']*/],["pun",/^[^\d\t-\r "'A-Za-z]+/]]),["hs"]); 3 | -------------------------------------------------------------------------------- /_posts/2008-09-08-analytics-with-capistrano.textile: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Analytics with Capistrano" 4 | categories: 5 | - capistrano 6 | - programming 7 | - ruby 8 | --- 9 | 10 | I just posted this article to my company's blog: "Analytics with Capistrano":http://blog.helicoid.net/2008/09/08/analytics-with-capistrano 11 | 12 | bq. If you want realtime stats on your web site, why not try using Capistrano to collect data and create graphs and tables? It's pretty easy to do this, and the beauty is you don't need to make any modifications to your application. 13 | 14 | 15 | -------------------------------------------------------------------------------- /_posts/2004-08-02-internationalisation-with-xslt.textile: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Internationalisation with XSLT" 4 | categories: 5 | - xslt 6 | - php 7 | - internationalisation 8 | --- 9 | 10 | I've found two approaches to this: 11 | 12 | * "Re: internationalization / localization of XSLT output":http://sources.redhat.com/ml/xsl-list/2000-08/msg01318.html 13 | * "An XSLT style sheet and an XML dictionary approach to internationalization":http://www-106.ibm.com/developerworks/library/wa-xslt/ 14 | 15 | I think the second method looks like the best. I like the idea of using a general XSLT template to add in generic functionality too. 16 | -------------------------------------------------------------------------------- /_posts/2008-09-22-dynamic-rails-error-help.textile: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Dynamic Rails Error Help" 4 | categories: 5 | - rails 6 | - javascript 7 | - programming 8 | --- 9 | 10 | "!http://farm4.static.flickr.com/3121/2877961211_045d355329_o.png!":http://www.flickr.com/photos/helicoid/2877961211/ 11 | 12 | Here's a JavaScript snippet intended for Rails that I just posted over on my company's technical blog. It displays the error message for each field when you click on the field, making it easier to see exactly what went wrong when saving a record. 13 | 14 | Read it here: "Dynamic Rails error help":http://blog.helicoid.net/2008/09/22/dynamic-rails-error-help 15 | -------------------------------------------------------------------------------- /_posts/2011-03-25-everything-express.textile: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Everything Express" 4 | categories: 5 | - talks 6 | - events 7 | --- 8 | 9 | !/images/everything_express.png! 10 | 11 | I did a talk entitled "Everything Express":http://asyncjs.com/express/ at the "Async JavaScript meetup":http://asyncjs.com/ in Brighton. I covered almost everything required to get a real "Express":http://expressjs.com/ web app off the ground and deployed. 12 | 13 | The slides can be downloaded from "bit.ly/everythingexpress":http://bit.ly/everythingexpress. 14 | 15 | The meetup itself has a great bunch of people and is held in a perfect location. If you're a budding JavaScript hacker I recommend it. 16 | 17 | -------------------------------------------------------------------------------- /_posts/2009-03-06-getting-started-with-iphone-development.textile: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Getting Started with iPhone Development" 4 | categories: 5 | - iphone 6 | - programming 7 | --- 8 | 9 | !/images/tools.png! 10 | 11 | I just published "Getting Started with iPhone Development":http://quiteuseful.co.uk/post/84047428/getting-started-with-iphone-development over at "Quite Useful":http://quiteuseful.co.uk. It covers the basics and should help you decide if you really want to take the plunge: 12 | 13 | * Decide if iPhone development is right for you 14 | * Understand what skills are required 15 | * Learn about what Apple requires from you and how apps are deployed to phones for testing and the iTunes Store 16 | -------------------------------------------------------------------------------- /javascripts/google-code-prettify/lang-lisp.js: -------------------------------------------------------------------------------- 1 | var a=null; 2 | PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(+/,a,"("],["clo",/^\)+/,a,")"],["com",/^;[^\n\r]*/,a,";"],["pln",/^[\t\n\r \xa0]+/,a,"\t\n\r \xa0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,a,'"']],[["kwd",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/,a], 3 | ["lit",/^[+-]?(?:[#0]x[\da-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[de][+-]?\d+)?)/i],["lit",/^'(?:-*(?:\w|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?)?/],["pln",/^-*(?:[_a-z]|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?/i],["pun",/^[^\w\t\n\r "'-);\\\xa0]+/]]),["cl","el","lisp","scm"]); 4 | -------------------------------------------------------------------------------- /_posts/2008-01-08-10-essential-ruby-gems.textile: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "10 Essential Ruby Gems" 4 | categories: 5 | - programming 6 | - ruby 7 | - gems 8 | --- 9 | 10 | Despite leaving it for a while, I'm going to continue my previous article, "A taxonomy of Rails plugins", relatively soon. I've been inspired by the excellent plugins by "errfree":http://errfree.com/ and come up with a few ideas of my own during the heavy workload of 2007. In particular, I'd like to clarify testing Rails plugins. But more of that in the near future. 11 | 12 | For now, have a look at "10 essential ruby gems":http://blog.helicoid.net/2008/01/08/10-essential-ruby-gems/. It's hosted on my company's new blog, where you'll eventually find more articles by me with a greater emphasis on web design. 13 | -------------------------------------------------------------------------------- /_posts/2006-09-06-macfriendly-terminal-cheat-sheet.textile: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Mac-friendly Terminal Cheat Sheet" 4 | categories: 5 | - mac 6 | - cheatsheets 7 | - terminal 8 | - console 9 | --- 10 | 11 | One of my colleagues wanted help with his mac's terminal, so I put together a little cheat sheet containing all the commands and keyboard shortcuts I find essential. I marked the most awesome time-saving commands with stars, and even added a few emergency help tips: 12 | 13 |
14 |
15 | It's all basic stuff, but if you're new to using the command line (and when I say command line I really mean bash), this should help you kick some ass.
16 |
--------------------------------------------------------------------------------
/_posts/2009-01-04-smsweb-apps-and-rapid-fluid-support.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "SMS/Web Apps and Rapid Fluid Support"
4 | categories:
5 | - sms
6 | - fluid
7 | - ssb
8 | ---
9 |
10 | I recently wrote two articles over on my company's blog. The first is about supporting the JavaScript API for "Fluid":http://fluidapp.com in your web app: "Rapid Fluid support":http://blog.helicoid.net/2008/12/26/rapid-fluid-support. The other is on "sending SMS from web apps":http://blog.helicoid.net/2009/01/03/tips-on-sending-sms-from-web-applications. Both of these articles draw from my recent technical challenges at "Helicoid":http://helicoid.net.
11 |
12 | I recently added Fluid and SMS support to "Deadline":http://deadlineapp.com/, into which I've poured most of my recent creative energy.
13 |
--------------------------------------------------------------------------------
/_posts/2010-01-21-dailyjs.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "DailyJS"
4 | categories:
5 | - javascript
6 | - programming
7 | ---
8 |
9 | Back in November I started a new JavaScript programming blog called "DailyJS":http://dailyjs.com, with help from "Ric Roberts":http://ricroberts.com/ and "Justin Knowlden":http://gusg.us/. I post almost every day about interesting developments in JavaScript -- techniques, tips and library/tool reviews.
10 |
11 | I recently toiled over a lengthy review of "JavaScript Performance Rocks!":http://dailyjs.com/2010/01/19/javascript-performance-rocks/ by Amy Hoy and Thomas Fuchs -- a book that has taught me a lot despite my years of JavaScript experience.
12 |
13 | DailyJS has quickly gained popularity (unlike every other blog I've ever started), so if you're serious about JavaScript check it out!
14 |
--------------------------------------------------------------------------------
/_posts/2009-01-29-new-project-quite-useful.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "New Project: Quite Useful"
4 | categories:
5 | - writing
6 | - blogs
7 | ---
8 |
9 | !/images/qu.png!
10 |
11 | I've started a new project called "Quite Useful":http://quiteuseful.co.uk. The inspiration is "Quite Interesting":http://www.qi.com/ with a twist on productivity. Currently Quite Useful takes the form of a blog, twitter and delicious account.
12 |
13 | I've been posting useful everyday tips and software applications with a group of friends from London. We intend to keep things relevant to UK readers, but international content is of course welcome. One area we'd like to focus on is reviewing and promoting UK-based tech startups.
14 |
15 | If you'd like to take part (by writing) or get your app featured on Quite Useful, "contact me":http://alexyoung.org/contact
16 |
--------------------------------------------------------------------------------
/javascripts/google-code-prettify/lang-css.js:
--------------------------------------------------------------------------------
1 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n"]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com",
2 | /^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]);
3 |
--------------------------------------------------------------------------------
/_posts/2006-11-23-easy-zip-compression-in-ruby.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "Easy Zip Compression in Ruby"
4 | categories:
5 | - ruby
6 | - programming
7 | ---
8 |
9 | I needed a quick way of exporting data as zlib from a controller in Rails, so I came up with this:
10 |
11 | {% highlight ruby %}
12 | def export
13 | send_data compress_string(Document.find_all.to_xml), :filename => 'backup.xml.gz'
14 | end
15 |
16 | def compress_string(data)
17 | gz = Zlib::GzipWriter.new(StringIO.new(''))
18 | gz.write data
19 | gz.close.string
20 | rescue
21 | gz.close
22 | raise
23 | end
24 | {% endhighlight %}
25 |
26 | Another way would be to use tempfiles with Tempfile -- I wanted to benchmark and profile using files compared to StringIO, but that'll be an exercise for another day.
27 |
28 | This could also work nicely with Minitar.
29 |
--------------------------------------------------------------------------------
/_posts/2012-04-02-use-vim.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "usevim: For hjkl Wizards"
3 | layout: post
4 | tags:
5 | - blogs
6 | ---
7 |
8 | [Usevim](http://usevim.com/) is my new blog all about Vim. You can follow it on the usual social networks:
9 |
10 | * Twitter: [@vimnews](http://twitter.com/#!/vimnews)
11 | * Facebook: [vimnews](https://www.facebook.com/vimnews)
12 | * Google+: [usevim](https://plus.google.com/102329700005777172238)
13 | * Feed: [usevim](http://feeds.feedburner.com/usevim)
14 |
15 | I've been collecting interesting Vim-related links for years, and I've wanted to launch a Vim blog for a long time.
16 |
17 | The format is similar to [DailyJS](http://dailyjs.com/) -- weekly plugin roundups and lots of original content. I'm currently publishing every Monday, Wednesday, and Friday.
18 |
19 | If you've got Vim plugins or tips to share, or would like to write a guest post, [get in touch](http://usevim.com/contact.html).
20 |
--------------------------------------------------------------------------------
/_posts/2009-04-15-secure-trading-rails-plugin.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "Secure Trading Rails Plugin"
4 | categories:
5 | - programming
6 | - money
7 | ---
8 |
9 | !/images/securetrading.png!
10 |
11 | I use "Secure Trading":http://www.securetrading.com/ for "Helicoid's":http://helicoid.net payment processing. I wrote a payment processor plugin for our apps about two years ago, and it's been in production since then. A few people have asked me to open source the code, so here it is: "securetrading-rails":http://github.com/alexyoung/securetrading-rails/tree/master.
12 |
13 | I'd like to integrate it with "ActiveMerchant":http://www.activemerchant.org/ because I like their API, but I haven't had time so far.
14 |
15 | Out of all the payment processing companies I've dealt with, which is a lot, Secure Trading have been the most reliable with the best customer service. Their XML API is relatively straightforward too.
16 |
--------------------------------------------------------------------------------
/_posts/2008-02-04-some-ruby-on-rails-plugin-stats.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "Some Ruby on Rails Plugin Stats"
4 | categories:
5 | - ruby
6 | - rails
7 | - programming
8 | - plugins
9 | ---
10 |
11 | There are now almost 1000 entries in the main resource for Ruby on Rails plugins, "Agile Web Development's Plugins Directory":http://agilewebdevelopment.com/plugins. Of these, 596 have repositories listed that are accessible. I wanted to see how many of these plugins came with some form of tests, so I created a spider (using a "web spider library":http://rubyforge.org/projects/spider/) and performed some basic analysis on each repository.
12 |
13 | After reading a few magazines, and watching two entire TV shows, the spider came back with a result: *54% of the plugins have tests*.
14 |
15 | It's amazing to think that there's almost 1000 plugins in one directory, and a good proportion have tests amongst those I could easily analyse.
16 |
--------------------------------------------------------------------------------
/_posts/2009-04-10-beautiful-algorithms.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "Beautiful Algorithms"
4 | categories:
5 | - programming
6 | - ruby
7 | ---
8 |
9 | I'm starting a new series on Quite Useful called "beautiful algorithms":http://quiteuseful.co.uk/post/94808348/beautiful-algorithms. I'm going to talk about the algorithms behind graphical effects, especially those from the demo scene back in the 90s.
10 |
11 | !/images/burn_baby.png!
12 |
13 | I've posted some examples to my GitHub account if you want to check out what I've been researching so far. They use "Ruby Processing":http://wiki.github.com/jashkenas/ruby-processing/, which is a pretty accessible way to try out ideas.
14 |
15 | * "Fire effect":http://github.com/alexyoung/fire-p5r/tree/master
16 | * "Tunnel effect":http://github.com/alexyoung/tunnel-p5r/tree/master
17 |
18 | Please contribute improvements to these and I'll include them. Imagine what the demo scene would have been like if people shared code on GitHub!
19 |
--------------------------------------------------------------------------------
/_posts/2006-11-10-load-your-vimrc-with-helipad.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "Load Your .vimrc with Helipad"
4 | categories:
5 | - helipad
6 | - vim
7 | ---
8 |
9 | Helipad is a little web notepad I wrote to throw to-do lists, notes, ideas and bits of code at. My idea was to make the perfect partner for my actual physical notepad.
10 |
11 | Like everything I do, it has an API, and that allowed me to do something that I've found amazingly useful: load my vimrc remotely.
12 |
13 | I know there's a million other ways to do this, but I think it illustrates something unexpected and interesting that you can do with web application APIs. And, on the same topic, the AmbientClock uses your Google Calendar to change its colour according to how busy you are.
14 |
15 | I'd love to hear about anyone else using web APIs for fun stuff. Just drop me a line!
16 |
--------------------------------------------------------------------------------
/_posts/2008-10-08-captor-a-capistrano-gui.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "Captor: A Capistrano GUI"
4 | categories:
5 | - capistrano
6 | - ruby
7 | - programming
8 | ---
9 |
10 | !/images/captor_blog.png!
11 |
12 | Here's an idea I've been playing with today: "Captor":http://github.com/alexyoung/captor/wikis, a GUI for Capistrano management. It's a very rough prototype right now.
13 |
14 | Goals:
15 |
16 | * Make running tasks across multiple projects easier
17 | * Interpret the output from Capistrano graphically so it's easier to understand
18 | * Secondary: Provide a wizard-like interface for creating Capistrano files, with recipe management and configuration
19 |
20 | Caveats:
21 |
22 | * The prototype is messy because I can't get Shoes to load net/ssh (I get openssl errors), so I'm using drb to communicate with cap
23 | * There's no project settings management yet, but that will be easy to add
24 | * The interface isn't cool enough yet
25 |
26 | "Read my notes on the project":http://pad.helicoid.net/document/public/f5181afb
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/_posts/2008-10-03-top-5-uses-for-capistrano.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "Top 5 uses for Capistrano"
4 | categories:
5 | - capistrano
6 | - rails
7 | - programming
8 | - sysadmin
9 | ---
10 |
11 | I recently posted my "top 5 uses for Capistrano":http://blog.helicoid.net/2008/10/02/top-5-uses-for-capistrano over at "Helicoid's Blog":http://insider.helicoid.net -- including juicy code snippets!
12 |
13 | I like "Capistrano":http://capify.org/ a lot. It's now doing all kinds of things to ease my workflow, from backing up servers to providing me with detailed signup statistics for each of my web apps. Whilst I'm still the only developer designing and building 4 successful web apps I need all the help I can get, so I've naturally cobbled together a range of software techniques to help. At least, until I can find an army of robots to do the work for me.
14 |
15 | Seriously, as soon as we hit enough subscribers to take on another developer I'll be straight out in London hunting down the finest Ruby developers, with bribes in the form of shares and beers.
16 |
--------------------------------------------------------------------------------
/_posts/2009-04-02-open-map-technology.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "Open Map Technology"
4 | categories:
5 | - maps
6 | - geolocation
7 | - geocoding
8 | ---
9 |
10 | I've been doing a lot of work with maps lately. Mainly Google Maps. Apparently, Google's ToS isn't as straightforward as I thought, and certain very reasonable situations render usage outside Google's terms.
11 |
12 | I'm not saying I don't like Google Maps though, I've come back to it many times for dozens of projects over the years; it's indispensable. However, there are open alternatives. I researched the open alternatives for a series of "Quite Useful":http://quiteuseful.co.uk posts (my other blog):
13 |
14 | * "Open Map Technology":http://quiteuseful.co.uk/post/91193356/open-map-technology
15 | * "Introduction to OpenStreetMap":http://quiteuseful.co.uk/post/91537132/introduction-to-building-apps-with-openstreetmap
16 | * "Introduction to OpenLayers":http://quiteuseful.co.uk/post/91861336/introduction-to-openlayers
17 |
18 | It's incredible to see what people are with open source technology in this area.
19 |
--------------------------------------------------------------------------------
/_posts/2006-07-02-backpack-automator-plugin.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "Backpack Automator Plugin"
4 | categories:
5 | - backpack
6 | - automator
7 | ---
8 |
9 | I have a public Backpack page where I upload images to show people. So say I'm chatting to online, I can just cmd-click a file and upload it then paste them a URL to the image. To make this quicker, I created an Automator workflow.
10 |
11 | When I want to share an image, I cmd-click it and select Upload to Backpack:
12 |
13 |
14 |
15 | The resulting URL is then added to the clipboard so I can easily paste it.
16 |
17 | If you want to be able to do this, download this workflow: Upload to Backpack
18 |
19 | Then configure it with your account's URL, the page ID where your images are going to go (you can see this in the page's URL), and your username and password:
20 |
21 |
22 |
23 | Just "Save As Plugin" once you've set it up.
24 |
--------------------------------------------------------------------------------
/_posts/2009-04-21-deadline-for-mac-and-github-hooks.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "Deadline for Mac (and GitHub Hooks)"
4 | categories:
5 | - programming
6 | - deadline
7 | ---
8 |
9 | !/images/deadline_mac_blog.png!
10 |
11 | "Deadline":http://deadlineapp.com is a reminder web app I made. It sends out alerts through SMS, email and IM, and now it works with Mac OS too. I spent this weekend building a Mac cocoa app for it that integrates with Growl. You can download it here: "DeadlineGrowl":http://dl.getdropbox.com/u/221414/deadline/DeadlineGrowl.zip
12 |
13 | Deadline also works with GitHub: "Deadline: Notification API and GitHub support":http://blog.helicoid.net/articles/2009/04/18/deadline_notification_api_and_github_support. It uses post-receive hooks to grab commit messages and notify you through your preferred notification method.
14 |
15 | I really like the idea of hook URLs. Deadline has a generic notification API (it's just a GET to a URL) you could use to notify your users about events in your apps. If you're interested in using this, or using Deadline's API for a project, let me know and I'll give you a hand.
16 |
--------------------------------------------------------------------------------
/_posts/2010-10-25-wingman.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "Wingman: Open Source To-Do List App"
4 | categories:
5 | - programming
6 | - projects
7 | - rails
8 | ---
9 |
10 | !/images/wingman.png!
11 |
12 | I'm a big fan of a certain popular to-do list app for Mac OS. But I've stopped using it because I've made an open source replacement called "Wingman":http://github.com/alexyoung/wingman/. You can download it and install it on your computer or server. Alternatively, try it out on "wingman.heroku.com":http://wingman.heroku.com/. I can't promise you won't lose data on the Heroku instance, so treat it as a demo version.
13 |
14 | It's built with OpenID, Rails 3, MongoDB, and jQuery UI. The interface closely follows the Mac app that I've clearly been inspired by, but has Gmail-style keyboard shortcuts.
15 |
16 | I started working on it about 2 months ago. I built the basic version completely in JavaScript while drinking too much over a rainy weekend. It still only really has one page, and saves everything through a Rails app's JSON API.
17 |
18 | It's not finished yet, and there are a lot of glitches, but feel free to fork it and submit patches if you like it enough.
19 |
20 |
--------------------------------------------------------------------------------
/_posts/2008-01-18-start-using-test-driven-development-today.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "Start Using Test Driven Development Today"
4 | categories:
5 | - programming
6 | - testing
7 | ---
8 |
9 | "Start using Test Driven Development today":http://blog.helicoid.net/2008/01/18/protip-start-using-test-driven-development-today is a post I wrote over on my company's blog. It covers how TDD has improved my work since I started "Helicoid Limited":http://helicoid.net, and how you can start using TDD right now.
10 |
11 | # Learn how to write basic tests in your chosen language – don’t worry about fully learning the test framework, start by copying examples
12 | # When adding a new feature, start by creating tests first. Write code to satisfy these tests
13 | # Refactor old code to work well with automated tests
14 | # Write test data carefully and patiently, using this as a design technique for exploring the quality of your data modelling
15 | # Find a mocking library so you can write encapsulated tests that don’t require external resources
16 | # Find a tool for producing coverage reports in your chosen language
17 | # Investigate automated testing triggered when deploying/releasing code
18 |
19 |
--------------------------------------------------------------------------------
/_posts/2004-10-19-using-xslt-with-bad-html.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "Using XSLT with Bad HTML"
4 | categories:
5 | - php
6 | - xslt
7 | - programming
8 | ---
9 |
10 | We have a PHP CMS with a lot of poorly written HTML in the client-contributed content. This kept causing my XSL template system to output XML errors. I got around this problem by:
11 |
12 | # wrapping content in CDATA tags
13 | # Checking if the content is valid XML with xml_parse() in PHP, if not I add a CDATA tag and try again.
14 | # Strip out bad characters that may have crept in from Word
15 | # Process the XSL and XML using xsl:value-of tags with disable-output-escaping="yes"
16 |
17 | Using CDATA tags around unpredictable HTML helps prevent problems with the XML parser. Without the final step, the resulting HTML contains the original HTML with HTML entities.
18 |
19 | In PHP, mb_convert_encoding($string, 'ASCII') has proven very useful for handling text users paste from applications like Word. PHP has to be compiled with --enable-mbstring for this function to work. It prevents strings with different encodings encodings to your XSL from confusing the XML parser (where the encoding is defined).
20 |
--------------------------------------------------------------------------------
/_posts/2009-10-09-gemcutter.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "Gemcutter"
4 | categories:
5 | - ruby
6 | - gems
7 | - gemcutter
8 | ---
9 |
10 | I've put all my gems on "gemcutter":http://gemcutter.org/. They were on "GitHub":http://github.com but seeing as "GitHub has dropped building gems":http://github.com/blog/515-gem-building-is-defunct I thought it'd be useful to move them.
11 |
12 | h3. Using gemcutter
13 |
14 | The site makes it look easy, because it is:
15 |
16 | {% highlight sh %}
17 | gem install gemcutter
18 | gem tumble
19 | {% endhighlight %}
20 |
21 | Now you'll be able to install gems from gemcutter.
22 |
23 | h3. Publishing your own gems
24 |
25 | This is easy too. Write a gemspec file and then build a gem, and push it to gemcutter:
26 |
27 | {% highlight sh %}
28 | gem build yourgem.gemspec
29 | gem push yourgem.gem
30 | {% endhighlight %}
31 |
32 | *Note*: It might take a few minutes before the gem is available from gemcutter.
33 |
34 | h3. Automation
35 |
36 | "Jeweler":http://github.com/technicalpickles/jeweler can be used to automate this process -- it can use your git and GitHub settings to automatically generate a new project (including GitHub hosting, test directories/helpers).
37 |
38 |
--------------------------------------------------------------------------------
/_posts/2010-04-27-boring.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "My Desktop is Boring"
4 | categories:
5 | - work
6 | - productivity
7 | ---
8 |
9 | !/images/desktop.png!
10 |
11 | I revealed desktop earlier and was surprised to find a utilitarian utopia:
12 |
13 | * There are no icons on the desktop
14 | * The background image is simply grey
15 | * There's no Dock
16 |
17 | Concerned that obsessive-compulsive minimalism had kicked in, I tried to figure out why my office computer had ended up like this.
18 |
19 | Certain projects of mine benefit from IM, but I can't work productively with Adium or Skype's icon blinking intermittently. Rather than quit and load all the time, I hid the Dock.
20 |
21 | I take a lot of screenshots of my products, and I also make videos to demo work to clients, which resulted in the grey desktop. Accidentally capturing the content of my desktop background got annoying.
22 |
23 | I don't really work with many documents, and scrappy bits that I need to share get dragged to "Dropbox":https://www.dropbox.com/ rather than the desktop.
24 |
25 | "DateLine":http://www.machinecodex.com/dateline/ sits at the bottom of the screen so I can quickly work out appointments without needing to open iCal.
26 |
27 |
--------------------------------------------------------------------------------
/_posts/2006-01-24-knowing-javascript.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "Knowing JavaScript"
4 | categories:
5 | - programming
6 | - javascript
7 | - lies
8 | ---
9 |
10 | At my company, we've been interviewing people for a web developer position, with particular emphasis on programming. Something I've noticed is a lot of developers say: "I know JavaScript." So a simple question I devised for testing this was, "how would you debug JavaScript?" You'd be surprised how many people don't know the answer to this.
11 |
12 | So, if you're a php/perl/python/ruby/asp/etc programmer who "knows" JavaScript, here's a few tools to help with debugging. These are Firefox extensions.
13 |
14 | * View Rendered Source Chart - I can't live without this, it allows you to view the html that gets generated by your JavaScript
15 | * Hypertext DOM Browser
16 | * Venkman - Usually used when all else fails
17 | * FireBug - This one is new, I haven't used it much yet
18 |
19 |
--------------------------------------------------------------------------------
/_posts/2007-03-07-rails-quality-control-tip-use-verify-in-controllers.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "Rails Quality Control Tip: Use Verify in Controllers"
4 | categories:
5 | - ruby
6 | - rails
7 | - tips
8 | - programming
9 | ---
10 |
11 |
12 |
13 | Have you found that any of your Rails projects get hits to controller methods that expect parameters? A neat way of handling this is the ActionController::Verification module.
14 |
15 | By adding calls to verify in your controller, you can elegantly catch all kinds of unexpected but reasonable uses of your system: from mistyped URLs and browser history auto-complete to web crawlers blindly following links. This way, you can redirect people somewhere logical instead of flashing them with an error message.
16 |
17 | You can even insert a message into the flash:
18 |
19 | {% highlight ruby %}
20 | verify :params => "user",
21 | :only => :update_password,
22 | :add_flash => { "alert" => "Updating your password was not possible without the required information" },
23 | :redirect_to => :config_url
24 | {% endhighlight %}
25 |
--------------------------------------------------------------------------------
/_posts/2009-11-12-iphone-tech-talks.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "iPhone Tech Talks: A Great Success"
4 | categories:
5 | - koolaid
6 | - programming
7 | - iphone
8 | ---
9 |
10 | !/images/iphone-tech.png!
11 |
12 | I was at the London iPhone Tech Talks yesterday. It was a free event put on by Apple with talks by Apple's engineers. More importantly, it was at a "great venue":http://www.congresscentre.co.uk/ with free food and drink all day, and free beer and wine afterwards. Also, the wifi worked!
13 |
14 | I have two of my own apps on the store right now, with a freelance project about to appear as well. One app in particular is giving me some grief -- I'm using Apple's push API to send out reminders, but it's not being 100% reliable. Fortunately there was a talk about push, and I was able to talk to the speaker afterwards about my issues -- by following his advice I've already fixed my app.
15 |
16 | There was also a good talk on iPhone fundamentals which included some coverage of NSOperation. I've been looking for a simple way of backgrounding API requests in my apps, so this talk helped a lot.
17 |
18 | Despite the talks being pretty basic I've been working with the iPhone API since the start, and Cocoa for longer, and I learned a lot. Getting advice on how to fix real apps from Apple engineers was hugely useful for me.
19 |
--------------------------------------------------------------------------------
/_posts/2006-11-30-serversent-events-in-opera.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "Server-Sent Events in Opera"
4 | categories:
5 | - browsers
6 | - standards
7 | - ajax
8 | - javascript
9 | ---
10 |
11 | Apparently, Opera 9 supports Server-Sent Events which you can read about in the WHATWG Web Applications 1.0 specification. Their demo application is a little chat program, which is a very obvious example of the technology.
12 |
13 | There's many times when I've wanted to add this to my applications: in Bugtagger I have to ask the service if a new message from a customer has been posted to a bug, every n seconds. It would be far more efficient for the serve to send a message using this technology.
14 |
15 | And, since Opera's so popular on embedded and mobile platforms, if this makes its way to mobile phones you're going to see some seriously interesting mobile web activity.
16 |
17 | Chat and messaging are one thing, but couple this with feeds from news sites, calendars and other web services and any mobile device suddenly becomes a persistent tether to the web. Receiving a message on a phone is very natural, but browsing to services can be very awkward for things that are naturally real-time.
18 |
--------------------------------------------------------------------------------
/_posts/2009-03-10-the-rosetta-stone-of-iphone-ui-development.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "The Rosetta Stone of iPhone UI Development"
4 | categories:
5 | - programming
6 | - iphone
7 | ---
8 |
9 | I've been working on "Deadline":http://deadlineapp.com iPhone, and I got stuck trying to figure out how to create grouped form-like UI elements. Apple's applications use them a lot, so I thought I'd be able to create them in Interface Builder.
10 |
11 | Here's what I wanted:
12 |
13 | !/images/deadline-iphone.gif!
14 |
15 | I figured out I needed to use a UITableView with UITableViewStyleGrouped, with a view controller set to be the delegate and dataSource for the table view. I seemed to do a lot of table view programming in Helipad iPhone, so I was familiar with the concepts but still struggled.
16 |
17 | After searching Apple's documentation I found the "UICatalog":http://developer.apple.com/iphone/samples/index.action#UICatalog example. This is the Rosetta Stone of iPhone development: it contains working code that explains how most of their apps interfaces work.
18 |
19 | !/images/ui_cat.gif! !/images/uicat2.gif! !/images/uicat3.gif!
20 |
21 | I seriously can't believe I've been doing iPhone development this long without this example. It's taken a lot of the drudgery out of non-IB interface work.
22 |
23 |
--------------------------------------------------------------------------------
/_posts/2007-03-06-rails-speed-tip-link-tag-caching.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "Rails Speed Tip: link_tag Caching"
4 | categories:
5 | - rails
6 | - programming
7 | - tips
8 | ---
9 |
10 | Have you ever tried concatenating your JavaScript and CSS files for performance improvements? The idea is that latency is a bigger issue than file size when loading web pages, so stuffing all your JavaScript into a monolithic file for deployment should improve performance.
11 |
12 | I wrote a rake task to do this for some of my applications (such as tiktrac). This is slightly more cumbersome than a feature I spied in the ActionPack changelog:
13 |
14 | 15 | Added caching option to AssetTagHelper#stylesheet_link_tag and 16 | AssetTagHelper#javascript_include_tag [DHH]. Examples: 17 | 18 | {% highlight ruby %} 19 | stylesheet_link_tag :all, :cache => true # when ActionController::Base.perform_caching is false => 20 | stylesheet_link_tag :all, :cache => true # when ActionController::Base.perform_caching is true => 21 | {% endhighlight %} 22 | 23 | ...when caching is on, all.css is the concatenation of style1.css, styleB.css, 24 | and styleX2.css. Same deal for JavaScripts. 25 |26 | 27 | Read more in the asset_tag_helper.rb source. 28 | -------------------------------------------------------------------------------- /javascripts/google-code-prettify/lang-n.js: -------------------------------------------------------------------------------- 1 | var a=null; 2 | PR.registerLangHandler(PR.createSimpleLexer([["str",/^(?:'(?:[^\n\r'\\]|\\.)*'|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,a,'"'],["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,a,"#"],["pln",/^\s+/,a," \r\n\t\xa0"]],[["str",/^@"(?:[^"]|"")*(?:"|$)/,a],["str",/^<#[^#>]*(?:#>|$)/,a],["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,a],["com",/^\/\/[^\n\r]*/,a],["com",/^\/\*[\S\s]*?(?:\*\/|$)/, 3 | a],["kwd",/^(?:abstract|and|as|base|catch|class|def|delegate|enum|event|extern|false|finally|fun|implements|interface|internal|is|macro|match|matches|module|mutable|namespace|new|null|out|override|params|partial|private|protected|public|ref|sealed|static|struct|syntax|this|throw|true|try|type|typeof|using|variant|virtual|volatile|when|where|with|assert|assert2|async|break|checked|continue|do|else|ensures|for|foreach|if|late|lock|new|nolate|otherwise|regexp|repeat|requires|return|surroundwith|unchecked|unless|using|while|yield)\b/, 4 | a],["typ",/^(?:array|bool|byte|char|decimal|double|float|int|list|long|object|sbyte|short|string|ulong|uint|ufloat|ulong|ushort|void)\b/,a],["lit",/^@[$_a-z][\w$@]*/i,a],["typ",/^@[A-Z]+[a-z][\w$@]*/,a],["pln",/^'?[$_a-z][\w$@]*/i,a],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,a,"0123456789"],["pun",/^.[^\s\w"-$'./@`]*/,a]]),["n","nemerle"]); 5 | -------------------------------------------------------------------------------- /_posts/2006-12-23-dashboard-widgets-are-great-with-prototype.textile: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Dashboard Widgets are Great with Prototype" 4 | categories: 5 | - prototype 6 | - javascript 7 | - programming 8 | --- 9 | 10 | One of my commercial projects this year was to build an online ticket sales system for a large bar and venue company in London. The run up to Christmas was the big live test of the system, so they needed statistics on ticket sales. 11 | 12 | Just for fun, I decided to make a Dashboard widget that used curl to fetch the current data from a script on their server. But you know what made this task 100% less painful? My old friend Prototype.js. 13 | 14 | Using Prototype allowed me to build the widget in literally minutes, since it was a simple case of displaying the result of a system call run with PeriodicalExecuter. Most of the time was spent looking up how to enable system commands in the documentation: AllowSystem must be added to your plist file, which takes a boolean value. I haven't yet noticed PeriodicalExecuter doing anything strange when the widget isn't visible, and it didn't have any CPU-draining side-effects. 15 | 16 | By the way, I've written 14163 lines of code in the last year, across 9 projects that I work on outside of my day job. I can't easily produce a count for my day job code. So, I hope no one will mind if I disappear for a week and sleep? 17 | 18 | 19 | -------------------------------------------------------------------------------- /_posts/2009-03-04-mini-app-tweetfu.textile: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Mini App: TweetFu" 4 | categories: 5 | - projects 6 | - miniapps 7 | --- 8 | 9 | Around Christmas I was watching TV with the family and messing around with my netbook. It's got Linux and Ruby on it, so I can actually work on that tiny thing. I came up with a script called
lovehate.rb: it downloads matches of love and hate on "search.twitter.com":http://search.twitter.com, then calculates the frequency for each term and presents a "winner".
10 |
11 | For some reason this script fascinated me: _love_ almost always won, and I really wanted to find out what trends affected this. I made the script more generic and used it to compare other terms; eventually "TweetFu.com":http://tweetfu.com was born.
12 |
13 | !/images/tweetfu.png!
14 |
15 | "TweetFu":http://tweetfu.com allows you to compare to terms to see which occurs the most often on Twitter. It then reruns the comparison every hour or so, producing an RSS feed and chart -- the amount it reruns tests is based on demand, to keep Twitter's API traffic low. It's a lot like Google Trends, but currently only allows two terms to be compared.
16 |
17 | I'm still using it to track "Love vs. Hate":http://tweetfu.com/fights/1-Love-Hate, but people have created some amusing fights with it. Also being English, I like to watch "Coffee vs. Tea":http://tweetfu.com/fights/47-Coffee-Tea, it's nice to see tea beating coffee now and then!
18 |
--------------------------------------------------------------------------------
/javascripts/google-code-prettify/lang-clj.js:
--------------------------------------------------------------------------------
1 | /*
2 | Copyright (C) 2011 Google Inc.
3 |
4 | Licensed under the Apache License, Version 2.0 (the "License");
5 | you may not use this file except in compliance with the License.
6 | You may obtain a copy of the License at
7 |
8 | http://www.apache.org/licenses/LICENSE-2.0
9 |
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | var a=null;
17 | PR.registerLangHandler(PR.createSimpleLexer([["opn",/^[([{]+/,a,"([{"],["clo",/^[)\]}]+/,a,")]}"],["com",/^;[^\n\r]*/,a,";"],["pln",/^[\t\n\r \xa0]+/,a,"\t\n\r \xa0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,a,'"']],[["kwd",/^(?:def|if|do|let|quote|var|fn|loop|recur|throw|try|monitor-enter|monitor-exit|defmacro|defn|defn-|macroexpand|macroexpand-1|for|doseq|dosync|dotimes|and|or|when|not|assert|doto|proxy|defstruct|first|rest|cons|defprotocol|deftype|defrecord|reify|defmulti|defmethod|meta|with-meta|ns|in-ns|create-ns|import|intern|refer|alias|namespace|resolve|ref|deref|refset|new|set!|memfn|to-array|into-array|aset|gen-class|reduce|map|filter|find|nil?|empty?|hash-map|hash-set|vec|vector|seq|flatten|reverse|assoc|dissoc|list|list?|disj|get|union|difference|intersection|extend|extend-type|extend-protocol|prn)\b/,a],
18 | ["typ",/^:[\dA-Za-z-]+/]]),["clj"]);
19 |
--------------------------------------------------------------------------------
/_posts/2012-01-13-using-powerline-with-mac-os.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: Using Powerline with Mac OS
4 | tags:
5 | - vim
6 | - programming
7 | ---
8 |
9 | 
10 |
11 | [vim-powerline](https://github.com/Lokaltog/vim-powerline) by Kim Silkebækken is a great plugin, but it's a little bit tricky to get it looking right in Mac OS. I've tested it in both Snow Leopard and Lion and figured out how to get it working nicely.
12 |
13 | Snow Leopard's Terminal application doesn't support 256 colours, so I started using [iTerm2](http://www.iterm2.com/) instead. With a little bit of configuration it's functionality equivalent to Terminal, and offers tonnes of extras. Lion's Terminal is fine. Both need to report `xterm-256color`, so ensure this is set up in the Preferences pane.
14 | To get the cool UTF-8 fonts you'll need patched fonts. Nick Quaranto posted some suitable fonts here: [vim-powerline patched fonts](https://gist.github.com/1595572). I like "Menlo" myself.
15 |
16 | Next, read the Powerline documentation. When the author says `set nocompatible` and `set laststatus=2` are required he means it, so add those to `~/.vimrc`. I also had to add `set t_Co=256` and `let g:Powerline_symbols = 'unicode'` (Kim notes that setting it to `fancy` will work as well, and make better use of the patched fonts).
17 |
18 | Changing `Powerline_symbols` requires the cache to be cleared, so `rm /tmp/Powerline.cache`.
19 |
20 | Now your vim should look like Kim's screenshots in the Powerline repository.
21 |
--------------------------------------------------------------------------------
/_posts/2005-12-21-javascript-function-to-help-with-accesskeys.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "JavaScript Function to Help with Accesskeys"
4 | categories:
5 | - javascript
6 | - code
7 | - snippets
8 | - programming
9 | ---
10 |
11 | There's a few little touches I like on sites I frequent: sensible tabindexes for forms, accesskeys and so on. Once I learn the accesskeys, I can fly around the main sections of a site. I apply these things to the sites I build, and the other day I realised adding accesskeys and supporting markup was no fun at all.
12 |
13 | I wrote this JavaScript function to search for all your accesskeys and add some friendly markup. It even detects if the user is running Windows or Mac OS, to tell them to use 'alt' or 'ctrl':
14 |
15 | {% highlight javascript %}
16 | function underline_accesskeys() {
17 | var links = document.getElementsByTagName('a');
18 | if (navigator.platform.match(/win/i)) {
19 | key = 'alt';
20 | }
21 | else if (navigator.platform.match(/mac/i)) {
22 | key = 'ctrl';
23 | }
24 | else {
25 | key = 'ctrl or alt';
26 | }
27 |
28 | for (var i=0; i< links.length; i++) {
29 | if (links[i].accessKey.length > 0) {
30 | re = new RegExp(links[i].accessKey, 'i');
31 | match = links[i].innerHTML.match(re);
32 | links[i].innerHTML = links[i].innerHTML.replace(re, '' + match + '');
33 | }
34 | }
35 | }
36 | {% endhighlight %}
37 |
--------------------------------------------------------------------------------
/_posts/2009-04-09-lets-make-a-game-snake.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "Let's Make a Game: Snake"
4 | categories:
5 | - shoes
6 | - ruby
7 | - programming
8 | ---
9 |
10 | I just finished wrapping up a 5 part tutorial on building Snake in Ruby and Shoes. It looks like this:
11 |
12 | !/images/snake.png!
13 |
14 | * "Part 1":http://quiteuseful.co.uk/post/92210521/lets-make-a-game - Covers installation of Shoes and explains how the snake moves and how to control it with the keyboard
15 | * "Part 2":http://quiteuseful.co.uk/post/92503237/lets-make-a-game-2-food - Basic collision detection, eating food to make the snake longer
16 | * "Part 3":http://quiteuseful.co.uk/post/93418725/lets-make-a-game-3-rules - Collision detection for bricks and the snake, stopping the main animation when the snake crashes
17 | * "Part 4":http://quiteuseful.co.uk/post/93775108/lets-make-a-game-4-scores-and-death - Handling scores, game over screen and restarting the game. This part also shows how to draw a border around the level, and explains how to use Git to get my code
18 | * "Part 5":http://quiteuseful.co.uk/post/94127465/lets-make-a-game-5-sounds - Sounds and ideas for better sound support
19 |
20 | Building games with Ruby and Shoes is a lot of fun because you can throw away the boring stuff and focus on the game's rules and algorithms. The cross-platform (Mac, Linux, Windows) nature of Shoes also keeps your work accessible.
21 |
22 | My Snake game is on GitHub: "snake-shoes":http://github.com/alexyoung/snake-shoes/tree/master -- please fork it and do something cool!
23 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | Currently employed by Apple. Author of Node.js in Practice and Node.js in Action, available from Manning Publications Co.
16 |
23 |
24 |
20 |
21 | This is a slick little app that allows you to configure micro breaks and longer breaks, a bit like Workrave, but simplified. There's no advice on exercises, just 'get out of the office for God's sake!'
22 |
23 | As I said, these applications have had a marked effect on any work-related wrist pains. I've got a lot of friends and colleagues to try them out, and they're were comfortable letting a piece of software be their master. Now, with that in mind, I think I'll slightly edit the messages they see in Workrave, you never know what a subversive piece of software might get them to do!
24 |
--------------------------------------------------------------------------------
/_posts/2012-01-15-vim-keyboard.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: A vim-friendly Mac Keyboard
4 | author: alex
5 | tags:
6 | - vim
7 | - mac
8 | ---
9 |
10 | I suspect the ultimate vim keyboard is the [Happy Hacking Professional 2](http://elitekeyboards.com/products.php?sub=pfu_keyboards,hhkbpro2&pid=pdkb400b). The `Control` key placement is good for vim, tmux, and screen, and the removal of uncessary arrow and function keys appeals to me. However, it's $300, so I wondered if it's possible to hack the keyboard I already own into being a little bit more vim-friendly.
11 |
12 | ### Swapping Modifier Keys
13 |
14 | On a standard Apple keyboard the position of `Control` sucks. Fortunately, Apple gives us the ability to swap modifier keys around with no hacking at all.
15 |
16 | Under System Preferences, Keyboard, Modifier Keys..., the `Control` and `Caps Lock` keys can be switched:
17 |
18 | 
19 |
20 | It only took me a few days to get used to this, and it works well for those of us who type `Control` a million times more often than `Caps Lock`.
21 |
22 | ### Use hjkl Instead of Arrows
23 |
24 | 
25 |
26 | [KeyRemap4Macbook](http://pqrs.org/macosx/keyremap4macbook/index.html) allows any key to be remapped, and key repeats to be accelerated. Of interest to us is the 'Vi mode' setting list, and 'Ubiquitous Vim Bindings'. I selected 'Fn+hjkl to Left/Down/Up/Right' so I can use `hjkl` to move the cursor in any application.
27 |
28 | KeyRemap4Macbook requires a reboot after installation, but once it's running the settings can be changed and experimented with at any time.
29 |
30 |
--------------------------------------------------------------------------------
/_posts/2009-02-04-googles-a-glutton-for-it.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "Google's a Glutton for It"
4 | categories:
5 | - google
6 | - privacy
7 | ---
8 |
9 | There was a time when journalists finally realised what cookies were, and Google got heavily covered in the press for using them to track what you were searching for. Google said they use the data anonymously, and so the argument moved on to the lifespan of the cookies.
10 |
11 | Recently Google stated inviting users to enter profile data. You can see this if you're logged in, "google.com/ig":http://google.com/ig users will have no doubt seen it by now. This can be as detailed as you want: full contact details, date of birth, place you were born, employment details and a photo.
12 |
13 | I'm not entirely sure what the point of filling this out is, Google don't make it 100% clear. They say, "the more information you provide, the easier it will be for friends to find you". Previously Google only stored your login details, now they've furnished these with a complete profile. That's enough to make privacy concerns greater than ever.
14 |
15 | They haven't stopped there though! Now they want you to let them know exactly where you are and what you're doing, with the "latitude":http://google.com/latitude service. It can work through your browser and mobile phone (in selected locations).
16 |
17 | I don't intend to criticise or tinfoil hat about Google's addiction to data. I just want to point out that it seems amusing that a company so publicly berated for creating potential privacy nightmares has rolled out a service to record *exactly where you are and what you're doing*. There's a delicious irony to it.
18 |
--------------------------------------------------------------------------------
/_posts/2009-07-31-dystopian-index.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "A Rails Plugin for Tokyo Dystopia"
4 | categories:
5 | - ruby
6 | - rails
7 | - plugins
8 | - tokyocabinet
9 | ---
10 |
11 | "Dystopian Index":https://github.com/alexyoung/dystopian_index is a Rails plugin for "Tokyo Dystopia":http://tokyocabinet.sourceforge.net/dystopiadoc/. I'm using it with small projects that don't really need a more sophisticated indexing solution like Sphinx or Solr. There's no daemon, so setup is less of a headache.
12 |
13 | It uses Dystopia to build disk-based indexes. At the moment it stores one index per ActiveRecord model, but I might change this to an index per field later.
14 |
15 | I've made it support sorting by date, just because clients always ask for it. To achieve this, dates are stored in the first 12 characters of each index record. The plugin uses these to sort in Ruby. I've been working on benchmarks to figure out the fastest way to handle this.
16 |
17 | h3. Critical Section
18 |
19 | Because this is on disk, Dystopia raises an error if you try to access it concurrently. "Tokyo Tyrant":http://tokyocabinet.sourceforge.net/tyrantdoc/ can be used as a remote storage service for Tokyo Cabinet, so a solution using this might make more sense. I've wrapped calls to the index database with a block like this:
20 |
21 | {% highlight ruby %}
22 | with_dystopian_db do |db|
23 | db.clear
24 | end
25 | {% endhighlight %}
26 |
27 | This means it will always close the database in an ensure. Since most Rails projects use multiple Ruby processes, this should delay and try again on failure, but it doesn't for now (patch it if you want it).
28 |
29 |
--------------------------------------------------------------------------------
/_posts/2012-09-12-sponsored-content.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "DailyJS: Sponsored Content"
3 | layout: post
4 | tags:
5 | - dailyjs
6 | - writing
7 | ---
8 |
9 | > "Money is only a tool. It will take you wherever you wish, but it will not replace you as the driver." -- Ayn Rand
10 |
11 | I'm trying out an experiment on DailyJS called [Sponsored Content](http://dailyjs.com/sponsored-content.html) where people offering commercial products can pay to get an article written and featured alongside the usual content we publish. That almost sounds like payola, so it's going to take care and tact to manage it.
12 |
13 | My goals are fairly straightforward:
14 |
15 | * Clearly distinguish between commercial products and services, and the usual (generally) open source things we cover
16 | * Use the money to pay people to write for the site
17 | * Generate money to free up my time so I can create more sites like DailyJS
18 |
19 | Let's say you make an API or service that's relevant to JavaScript developers -- perhaps an error notification service, or supercharged CDN. By paying me to write about your service, you'll get a tutorial _and_ prominent placement on the site. I see it more as a combination of genuinely useful content and advertising than simply yet more ads blasted into eyeballs.
20 |
21 | The author of the first commercial product that we featured was extremely happy with the results: [RoyalSlider: Tutorial and Code Review](http://dailyjs.com/2012/09/04/royal-slider/). It's partly a tutorial but also a code review, in which I pull the code apart to verify the quality. It turned out to hold muster, so I was more than happy to feature it on the site under the Sponsored Content Programme.
22 |
--------------------------------------------------------------------------------
/_posts/2005-12-15-google-home-module.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "Google Home Module"
4 | categories:
5 | - google
6 | - programming
7 | - api
8 | ---
9 |
10 | It didn't take me long, and I knew I wouldn't be able to go for a few hours without writing a basic plugin for Google Home.
11 |
12 | I always wanted to have a del.icio.us search box in a panel with my latest bookmarks, so I wrote this:
13 |
14 |
15 |
16 | Once you've added it to your homepage, you can enter your delicious username, and it displays your latest links using raw JSON:
17 |
18 | {% highlight javascript %}
19 | _IG_FetchContent('http://del.icio.us/feeds/json/' + prefs.getString('username') + '?raw', function (responseText) {
20 | posts = eval('(' + responseText + ')')
21 | for (var i=0, post; post = posts[i]; i++) {
22 | // ... display code here ...
23 | }
24 | }
25 | {% endhighlight %}
26 |
27 | All I'm doing is calling _IG_FetchContent(), which the API documents, and then building an unordered list of my links.
28 |
29 | A search box is displayed by just using a HTML form.
30 |
31 | The reason I did this is that I want to extend it in the future so I can do a live search of delicious from Google Home without leaving the page. I assume this will be quite complex, although I'm hoping I can recycle scriptaculous for the most part.
32 |
33 | Now I've whet my appetite, however, I'm sure I'll be able to integrate all manner of applications into Google Home.
34 |
35 | The delicious module
36 |
37 |
--------------------------------------------------------------------------------
/about.jade:
--------------------------------------------------------------------------------
1 | ---
2 | layout: default
3 | title: About
4 | ---
5 |
6 | a#home(href="/") alexyoung.org
7 |
8 | .free
9 | h1 About
10 |
11 | p I'm a software engineer based in London, England. I graduated in 2001 and have been working with web technology professionally since then.
12 | p I founded Helicoid as a limited company in 2006. I've built 5 commercial Ruby on Rails web applications for Helicoid. Each web app I build has a mobile interface, API, and some even have iPhone and Mac clients.
13 |
14 | h3 Writing
15 |
16 | p I've written for: Net Magazine, Linux.com, Think Vitamin, and Furthernoise.org.
17 |
18 | h3 Other Projects
19 |
20 | ul
21 | li JsChat is a real time chat protocol with both console and web clients
22 | li Ico is an open source JavaScript graph library
23 | li TweetFu tracks trends on Twitter
24 | li My GitHub page has more open source projects I've created
25 |
26 | h3 Freelance
27 |
28 | p If you'd like consultation on a strong Ruby on Rails project, please drop me a line using my contact form.
29 |
30 | h3 If You Know Me...
31 |
32 | p If you're an old friend and you're wondering why my site talks a lot about rails, ruby and git — don't worry, it's just technical stuff. You can get in touch with my contact form and things will become clearer once we've caught up.
33 |
34 |
--------------------------------------------------------------------------------
/_posts/2005-12-16-google-home-api-security.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "Google Home API Security"
4 | categories:
5 | - google
6 | - api
7 | - programming
8 | ---
9 |
10 | If you wanted to develop a Google Home module that accesses a service using a password, you might notice a few flaws:
11 |
12 | # There isn't a password type available, so any user preferences that require a password will display the password in plain text.
13 | # If you still want to store passwords in user preferences, be aware that every single time Google Home loads, it will fetch the module with the password in plain text in the GET request.
14 |
15 | It would be nice if Google introduced a 'password' type, to compliment the existing types for preferences. This would at least allow you to have a starred password field in the user preferences.
16 |
17 | Many services, such as xmlrpc used by weblogs like Wordpress, send passwords in the clear anyway. But as it stands, if a friend or colleague had a Google Home module that integrated with a third party service that required a password, I could use their browser and:
18 |
19 | * Click edit and view the password in the password field, or:
20 | * Use the browser to open the module in a new window or tab, and observe the password in the URL, since all user preferences are submitted by GET requests to the module's source XML file.
21 |
22 | Additionally, you're not going to be able to use XMLHttpRequest() with Google Home because... XMLHttpRequest() doesn't allow you to talk to different servers, for obvious security reasons. You can, however, use _IG_FetchContent(url, func) to perform GET requests, and get the content back (func takes a single parameter that contains the resulting content.)
23 |
--------------------------------------------------------------------------------
/_posts/2009-08-20-happiness.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "What Makes You Happy?"
4 | categories:
5 | - life
6 | - productivity
7 | ---
8 |
9 | "Track Your Happiness":https://www.trackyourhappiness.org/ is an entertaining experiment. It's a site that periodically sends out links to surveys. The surveys are designed to gather information on your general well-being and happiness. The surveys work fine on iPhones too, so I was able to fill them out wherever I was.
10 |
11 | !/images/happiness.png!
12 |
13 | It focuses on a few main areas:
14 |
15 | * Activity
16 | * Focus
17 | * Productivity
18 | * Social interactions
19 | * Sleep time and sleep quality
20 |
21 | Before taking the tests I had these preconceptions:
22 |
23 | * Sleep doesn't bother me
24 | * Productivity and focus are proportional to happiness
25 | * I like working alone
26 | * I prefer reading and playing to working or watching TV
27 |
28 | After taking two or three weeks of tests I finally completed the "course" of surveys. The results were contrary to my assumptions:
29 |
30 | * Sleep is strongly tied to my happiness
31 | * Productivity does not relate to my happiness
32 | * I prefer working with at least one person
33 | * Reading and watching TV make me more happy than any other activity
34 | * I'm happier outside
35 |
36 | All of these facts surprised me. When I was a child I'd play outside all the time, but I still had weekend hacking sessions on the ZX Spectrum. Also, as an entrepreneur and freelancer, I thought productivity made me happy. It turns out that my workaholic nature has been compromising my overall well-being.
37 |
38 | Try signing up and sticking with Track Your Happiness throughout the course of surveys. They can be annoying and repetitive, but you might be surprised by what you discover.
39 |
--------------------------------------------------------------------------------
/include/files/foaf.rdf:
--------------------------------------------------------------------------------
1 | /etc/jschat/config.json
18 | * The config file can be used to set up Twitter auth and Mongo
19 | * Logging in with Twitter will save the user's session (including tabs) until _Quit_ is pressed or /quit is entered
20 |
21 | Read more on "blog.jschat.org":http://blog.jschat.org: "Twitter Auth, Mongo Logging and Tabs":http://blog.jschat.org/post/486260335/twitter-auth-mongo-logging-and-tabs
22 |
23 | h3. Ico
24 |
25 | I've removed the Prototype dependency from Ico, so it only depends on the core "Raphael":http://raphaeljs.com/ library. I used jslint to help tidy up the code as well.
26 |
27 | I'm using "SVG paths":http://www.w3.org/TR/SVG/paths.html#PathData for drawing Ico's graphs. They're quite easy to build because they're simple strings:
28 |
29 | {% highlight javascript %}
30 | // Move to 0,0, draw a line to 10,10
31 | 'M0,0 L10,10'
32 | {% endhighlight %}
33 |
34 | Raphael's calls can be chained, so the resulting code is concise:
35 |
36 | {% highlight javascript %}
37 | // Move to 0,0, draw a line to 10,10, then apply a stroke
38 | paper.path('M0,0 L10,10').attr({ 'stroke': colour });
39 | {% endhighlight %}
40 |
41 | The old API is still available through a plugin called raphael.path.methods.js, but despite initially being put off by SVG paths I now prefer them.
42 |
43 |
--------------------------------------------------------------------------------
/_posts/2006-04-05-php-5s-anonymous-functions.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "PHP 5's Anonymous Functions"
4 | categories:
5 | - php
6 | - programming
7 | ---
8 |
9 | I don't see much use of anonymous functions in php, yet when I write python or ruby, I use constructs like this quite often. You can do it in php though, with create_function. It's nothing that fancy, it just lets you create a function whenever you feel like it. This can be placed wherever you need a callback in php.
10 |
11 | Callbacks in php must be a function name. You can't refer to methods in the current class, or hack it by making a function that returns an object: function()->probably_a_singleton->hello(). This is where create_function() comes in.
12 |
13 | Here's an example:
14 |
15 | {% highlight php %}
16 | $where_sql[] = " $field IN (" . implode(',', array_map(create_function('$str', 'return registry()->db->quoteSmart($str);'), $data['in'])) . ') ';
17 | {% endhighlight %}
18 |
19 | This is part of a query builder I'm writing for a project. It lets you pass arrays to build queries, and also something like this:
20 |
21 | {% highlight php %}
22 | array('in' => array('data' => array(1, 2, 3)))
23 | {% endhighlight %}
24 |
25 | This maps to the SQL fragment "IN (1, 2, 3)", and also escapes the operands to make sure the query is relatively secure. I had to call our singleton'd database object through create_function to do this:
26 |
27 | {% highlight php %}
28 | create_function('$str', 'return registry()->db->quoteSmart($str);'), $data['in'])
29 | {% endhighlight %}
30 |
31 | array_map calls this with each field you pass and escapes them.
32 |
33 | So all in all, remember create_function. It can save some legwork, and it might help you do things how you would in other languages if you're coming to php from somewhere else.
34 |
--------------------------------------------------------------------------------
/_posts/2009-06-23-iphone-30-development-glitches.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "iPhone 3.0 Development Glitches"
4 | categories:
5 | - programming
6 | - iphone
7 | ---
8 |
9 | I had a few glitches in the "Helipad":http://helipadapp.com/ iPhone app when 3.0 rolled around. I've put the solution here to help those of you searching for the error message.
10 |
11 | Helipad syncs to our web app and displays a syncing progress screen. I open this view in a new view controller like this:
12 |
13 | {% highlight objc %}
14 | SyncController *sync = [[SyncController alloc] initWithNibName:@"SyncController"
15 | bundle:nil];
16 | [self presentModalViewController:sync animated:YES];
17 | {% endhighlight %}
18 |
19 | The parent view displays a UIWebView, and the controller runs the sync process on another thread so the display can be updated with feedback. The problem was that updating UIWebView crashed the app:
20 |
21 | 22 | bool _WebTryThreadLock(bool): Tried to obtain the web lock from a thread 23 | other than the main thread or the web thread. This may be a result of calling 24 | to UIKit from a secondary thread. 25 |26 | 27 | I can only assume that this was caused as part of the improvements to
UIWebView's performance. The crash actually occurred when the sync process called dismissModalViewControllerAnimated:. To resolve this, I called it on the main thread like this:
28 |
29 | {% highlight objc %}
30 | [self performSelectorOnMainThread:@selector(dismissSyncView)
31 | withObject:nil
32 | waitUntilDone:YES];
33 | {% endhighlight %}
34 |
35 | My method, dismissSyncView, looks like this:
36 |
37 | {% highlight objc %}
38 | - (void)dismissSyncView {
39 | [self dismissModalViewControllerAnimated:YES];
40 | // Other custom code goes here
41 | }
42 | {% endhighlight %}
43 |
44 |
--------------------------------------------------------------------------------
/_posts/2005-12-10-scriptaculous-when-to-use-ajax-and-effects.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "script.aculo.us: When to Use Ajax and Effects"
4 | categories:
5 | - tips
6 | - programming
7 | - code
8 | - javascript
9 | ---
10 |
11 | A few applications I've been developing recently have either had things from script.aculo.us applied for fun, to add effects our client would like, or they've been designed with Ajax and visual effects from the start.
12 |
13 | A very beta application I'm working on is Multitap.net. Since it's my project, and I don't have clients to answer to, I've done whatever the hell I want with it. I had these things in mind when creating it:
14 |
15 | # I'd use Ajax to allow users to post comments on things, to cut down on page loads. The site features screenshots from videogames as the main content, so I didn't want to be loading a lot of images all the time.
16 | # I'd use some of the transitional effects from script.aculo.us to make it obvious when new things have been added, and when hidden things appear. Visual queues can be very helpful, especially when posting comments.
17 | # Being able to hide things such as settings and edit panes would keep the pages simple on the surface, and keep the focus on the content.
18 |
19 | I have a group of friends who have been testing it and making suggestions. I found they liked the visual effects, basically for the reasons I described just there, but also because it makes the site seem quite unique.
20 |
21 | One of them mentioned that it would be nice to have a login box on all pages, instead of having to leave a page if you forgot to login. Sticking with my idea of keeping pages simple, I used a popup login box like Odeo uses. They liked this, and said "more Web 2.0!" as a little joke on the side... :)
22 |
23 | 
24 |
--------------------------------------------------------------------------------
/_includes/sidebar.jade:
--------------------------------------------------------------------------------
1 | ul#sidebar
2 | li
3 | #carbonads-container
4 | .carbonad
5 | #carbon
6 | script(type="text/javascript")
7 | var z = document.createElement("script");
8 | z.type = "text/javascript";
9 | z.async = true;
10 | z.src = "http://engine.carbonads.com/z/12099/carbon_2_1_0_VERT";
11 | var s = document.getElementsByTagName("script")[0];
12 | s.parentNode.insertBefore(z, s);
13 | li
14 | a(href="http://feeds.feedburner.com/webdevelopernotes")
15 | img(src="http://feeds.feedburner.com/~fc/webdevelopernotes?bg=99CCFF&fg=444444&anim=0", height="26", width="88", style="border:0", alt="")
16 | li.link
17 | a(href="/about.html")
18 | img(src="https://s2.googleusercontent.com/s2/favicons?domain=alexyoung.org")
19 | span About
20 | li.link
21 | a(href="http://github.com/alexyoung/")
22 | img(src="https://s2.googleusercontent.com/s2/favicons?domain=github.com", alt="GitHub/alexyoung")
23 | span GitHub
24 | li.link
25 | a(href="http://www.linkedin.com/in/alexyoung")
26 | img(src="https://s2.googleusercontent.com/s2/favicons?domain=linkedin.com", alt="View Alex Young's profile on LinkedIn")
27 | span LinkedIn
28 | li.link
29 | a(href="http://twitter.com/alex_young")
30 | img(src="https://s2.googleusercontent.com/s2/favicons?domain=twitter.com", alt="Follow me on Twitter")
31 | span Twitter
32 | li.link
33 | a(href="http://dailyjs.com")
34 | img(src="https://s2.googleusercontent.com/s2/favicons?domain=dailyjs.com")
35 | span DailyJS
36 | li.link
37 | a(href="http://usevim.com")
38 | img(src="https://s2.googleusercontent.com/s2/favicons?domain=usevim.com")
39 | span usevim
40 | li
41 | form(action="http://www.google.com/search", method="get")
42 | p
43 | input(name="sitesearch", type="hidden", value="alexyoung.org")
44 | input(class="text", name="q", type="text", size="12")
45 | br
46 | input(class="button", type="submit", value="Google")
47 |
--------------------------------------------------------------------------------
/_posts/2009-02-02-crossbrowser-testing-followup.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "Cross-Browser Testing: Follow-up"
4 | categories:
5 | - browsers
6 | - design
7 | - testing
8 | ---
9 |
10 | This is a followup to my previous post, "What cross-browser testing could look like":http://alexyoung.org/articles/show/66/what_crossbrowser_testing_could_look_like. After talking to a few friends about the idea, we realised one way of running remote Windows instances would be through "Amazon EC2":http://aws.amazon.com/windows/.
11 |
12 | The weaknesses of this approach are:
13 |
14 | * Installing all the different browsers
15 | * Trying to get multiple versions of IE set up
16 | * Where's Mac OS?
17 |
18 | However, it is a definite possibility or at least a nod towards one. Ken from CrossBrowserTesting.com got in touch to show off his service. They've got videos of it so you can see it in action without signing up. It's basically a Java VNC client accessing a set of servers. It'd be interesting to know how they plan to control malicious use of the operating system instances. Also I don't think you can test local stuff, so you'd need to mirror your work.
19 |
20 | Here's what it looks like in use:
21 |
22 | !/images/crossbrowsertesting.png!
23 |
24 | As you can see there's some weird stuff with the mouse. This is because my latency to the server is quite high, this also makes keyboard and mouse input very slow. This will probably be resolved if their service takes off and they roll out international servers. There's a toolbar at the top that allows you to logout or take screenshots of the session, which works very well.
25 |
26 | CrossBrowserTesting.com is very reasonably priced and cuts out a lot of the hassles I've mentioned previously. The latency issues will put many people off initially, but I think these are solvable problems given cash. The only thing that really concerns me is security: you're able to run programs other than the specified browser, and knowing Windows someone could probably turn the whole thing into a botnet.
27 |
28 | People definitely are innovating in this space, and I hope CrossBrowserTesting.com takes off.
29 |
--------------------------------------------------------------------------------
/include/style.css:
--------------------------------------------------------------------------------
1 | body
2 | {
3 | font: 11px verdana, serif;
4 | background-color: black;
5 | color: #eee;
6 | background-image: url('/include/images/background.png');
7 | background-repeat: repeat-x;
8 | background-position: bottom;
9 | background-attachment: fixed;
10 | }
11 |
12 | a
13 | {
14 | color: #eee;
15 | text-decoration: underline;
16 | }
17 |
18 | a:hover
19 | {
20 | text-decoration: none;
21 | }
22 |
23 | h1, h2, h3, p
24 | {
25 | margin: 0;
26 | padding: 0;
27 | }
28 |
29 | h1, h2, p
30 | {
31 | margin-bottom: 10px;
32 | }
33 |
34 | h1
35 | {
36 | font-size: 14px;
37 | }
38 |
39 | h2
40 | {
41 | font-size: 12px;
42 | }
43 |
44 | div#Thumbnails, div#RHS
45 | {
46 | clear : right;
47 | float : left;
48 | }
49 |
50 | div#Thumbnails
51 | {
52 | width: 62%;
53 | }
54 |
55 | div#Content
56 | {
57 | }
58 |
59 | div#RHS
60 | {
61 | margin: 0;
62 | padding: 0;
63 | width: 37%;
64 | text-align: right;
65 | }
66 |
67 | div.Column
68 | {
69 | clear : right;
70 | float : left;
71 | width: 50%;
72 | }
73 |
74 | div.Row
75 | {
76 | clear: both;
77 | padding: 3px 10px;
78 | }
79 |
80 | .Panel
81 | {
82 | margin-bottom: 30px;
83 | }
84 |
85 | .Right
86 | {
87 | text-align: right;
88 | }
89 |
90 | #Logo
91 | {
92 | clear: both;
93 | margin-bottom: 10px;
94 | }
95 |
96 | #Logo .Left
97 | {
98 | clear : right;
99 | float : left;
100 | padding-top: 6px;
101 | width: 49%;
102 | }
103 |
104 | .Logo
105 | {
106 | margin-bottom: 20px;
107 | }
108 |
109 | .Border
110 | {
111 | border-bottom: black 2px solid;
112 | border-left: #cdd1d8 1px solid;
113 | border-right: black 2px solid;
114 | border-top: #cdd1d8 2px solid;
115 | }
116 |
117 | img.Border
118 | {
119 | border: black 1px solid;
120 | }
121 |
122 | .Small
123 | {
124 | width: 300px;
125 | }
126 |
127 | a img
128 | {
129 | border: none;
130 | margin: 0;
131 | padding: 0;
132 | }
133 |
134 | .aboutme
135 | {
136 | list-style-type: disc;
137 | margin: 0 0 10px 0;
138 | }
--------------------------------------------------------------------------------
/_posts/2009-10-26-riot-testing.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "Riot: Ruby Unit Testing"
4 | categories:
5 | - programming
6 | - testing
7 | - ruby
8 | - riot
9 | ---
10 |
11 | "Riot":http://github.com/thumblemonks/riot is a Ruby unit testing framework. It results in terse and expressive unit tests. It strikes the perfect balance between shoulda and rspec-like test frameworks. It's also very fast.
12 |
13 | Riot isn't based on Test::Unit (unlike Shoulda). It flattens your tests into contexts with sets of assertions. It has a setup block that runs before the assertions in a context.
14 |
15 | There's a movement within the Ruby community to write tests with one assertion per test block. Riot fundamentally works this way because assertions are the test block, so cheating isn't possible. This makes for incredibly focused unit tests.
16 |
17 | Riot is still under active development by its author, "Justin Knowlden":http://github.com/thumblemonks/riot/blob/master/README.markdown, but it's completely usable right now. I was so impressed by it that I've created a JavaScript port called "riotjs":http://github.com/alexyoung/riotjs -- I'll cover this in another post soon.
18 |
19 | h3. Redundancy
20 |
21 | Used as the author intended, Riot removes redundancy even when compared to Shoulda.
22 |
23 | Test::Unit:
24 |
25 | {% highlight ruby %}
26 | class UserTest < Test::Unit::TestCase
27 | def setup
28 | @user = User.new
29 | end
30 |
31 | def test_email_address_is_nil
32 | assert_nil @user.email
33 | end
34 | end
35 | {% endhighlight %}
36 |
37 | Shoulda:
38 |
39 | {% highlight ruby %}
40 | class UserTest < Test::Unit::TestCase
41 | def setup
42 | @user = User.new
43 | end
44 |
45 | should "have nil email" { assert_nil @user.email }
46 | end
47 | {% endhighlight %}
48 |
49 | Riot:
50 |
51 | {% highlight ruby %}
52 | context "a new user" do
53 | setup { User.new }
54 | asserts("email address") { topic.email }.nil
55 | end
56 | {% endhighlight %}
57 |
58 | h3. FAQ and More
59 |
60 | Riot's author has anticipated the typical set of Ruby test tool questions in the "README":http://github.com/thumblemonks/riot/blob/master/README.markdown.
61 |
62 |
--------------------------------------------------------------------------------
/_posts/2008-11-08-deadline.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "Deadline"
4 | categories:
5 | - projects
6 | - apps
7 | ---
8 |
9 | Here's a personal project I've been working on for a while: "Deadline":http://deadlineapp.com/
10 |
11 | !http://deadlineapp.com/images/home/screenshots/interface.png!
12 |
13 | I find calendars hard to use but I like writing, so I wanted to create a calendar that uses natural language parsing to make sense of text. You can search for words or dates, so typing "next week" shows you all your events for next week.
14 |
15 | When I designed the interface I threw away all the typical web app stuff. There's barely any navigation, no footer, no extra links for "account", etc. When you hover the logo minimal navigation appears, and editing is all inline. I really wanted to make something that looked graphical, almost like an album cover: big helvetica fonts, bold colours, with an emphasis on your data over application chrome.
16 |
17 | It works with Jabber/Gtalk: it sends reminders and also allows you to delete, delay and hide events through your IM client.
18 |
19 | It also accepts and sends email. That means if your mobile phone supports email or MMS you can get and set reminders anywhere. There's also a mobile interface too just like the rest of Helicoid's projects.
20 |
21 | If it can't understand the date and time you've typed in, it'll prompt you to enter one with a form like this:
22 |
23 | !http://deadlineapp.com/images/home/screenshots/manual.png!
24 |
25 | It's the second app to use "Helicoid":http://helicoid.net's auth server, which means if you have a "Helipad":http://pad.helicoid.net it's single sign-on!
26 |
27 | Since it uses natural language parsing it can only cope with English. I could technically support more languages, but I'm going to wait and see if the idea makes sense to other people first. I love using it and I've come to rely on it, especially through the IM interface.
28 |
29 | Anyway, check it out! Accounts are free and sign up is quick. If you'd like to know about the technical stuff, or upcoming API details, post a comment and I'll get back to you.
30 |
31 | There's also more details here: "Deadline beta":http://pad.helicoid.net/document/public/93f5a1ce
32 |
--------------------------------------------------------------------------------
/_posts/2005-11-18-javascript-mini-bibliography.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "Javascript Mini Bibliography"
4 | categories:
5 | - javascript
6 | - snippets
7 | - code
8 | - programming
9 | ---
10 |
11 | I often annoys me when people don't make it clear what they're referencing in an article. Sometimes people don't give any references at all, and when they do they use links on words that shouldn't be links (the click here syndrome).
12 |
13 | So I wrote this JavaScript to help out. It adds a section at the bottom of each of your Wordpress posts containing all the links you referred to in a post:
14 |
15 | {% highlight javascript %}
16 | /* From Prototype */
17 | document.getElementsByClassName = function(className) {
18 | var children = document.getElementsByTagName('*') || document.all;
19 | var elements = new Array();
20 |
21 | for (var i = 0; i < children.length; i++) {
22 | var child = children[i];
23 | var classNames = child.className.split(' ');
24 | for (var j = 0; j < classNames.length; j++) {
25 | if (classNames[j] == className) {
26 | elements.push(child);
27 | break;
28 | }
29 | }
30 | }
31 |
32 | return elements;
33 | }
34 |
35 | function post_links() {
36 | var posts = document.getElementsByClassName('storycontent');
37 | for (i = 0; i < posts.length; i++) {
38 | found_links = false;
39 | for (n = 0; n < posts[i].childNodes.length; n++) {
40 | for (p = 0; p < posts[i].childNodes[n].childNodes.length; p++) {
41 | if (posts[i].childNodes[n].childNodes[p].nodeName == 'A') {
42 | if (!found_links) {
43 | header = document.createElement('H4');
44 | header.innerHTML = 'Links in this post:';
45 | posts[i].appendChild(header);
46 | found_links = true;
47 | }
48 | link = document.createElement("A");
49 | link.href = posts[i].childNodes[n].childNodes[p].href;
50 | link.innerHTML = posts[i].childNodes[n].childNodes[p].innerHTML;
51 | posts[i].appendChild(link);
52 | posts[i].appendChild(document.createElement('BR'));
53 | }
54 | }
55 | }
56 | }
57 | }
58 |
59 | post_links();
60 | {% endhighlight %}
61 |
--------------------------------------------------------------------------------
/_posts/2012-03-20-the-key-to-android-domination.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "The Key to Android Domination"
4 | tags:
5 | - android
6 | - programming
7 | ---
8 |
9 | Where's Google's Android IDE? They have good Eclipse support which goes some way to competing with Apple's Xcode, but the experience of developing with Xcode is far more focused and arguably better.
10 |
11 | I don't actually think developing a native Windows, Linux, and Mac OS IDE really fits with Google's approach -- they'd rather give developers the platform then get out of the way by allowing us to use our own tools. However, there's one huge pain point in iOS development that Google could attack to win over developers: the difficulty of getting _your_ code running on _your_ device.
12 |
13 | ### The Developer's Experience
14 |
15 | After downloading several gigabytes, then setting up the necessary certificates, a developer can finally run their first _Hello World_ application on an iOS device. This represents a weakness in Apple's approach that could be exploited.
16 |
17 | How? Well, given that it's unlikely that Google will release a cross-platform IDE themselves, how about creating a web-based IDE? That might sound like a nightmare to Vim hackers like me, but hear me out. Imagine if Google had a developer site that ran something as high quality as [Cloud9 IDE](http://c9.io/) (which has Vim shortcuts), with a _built-in Android simulator_.
18 |
19 | Within minutes developers could run a simple application in the simulator, without even owning a device. No gigabyte downloads, no confusing certificates. Google's web-based market can trigger downloads on Android devices, so how about linking devices with the IDE so apps can be sent directly to a device to run it? A new Android developer with little experience could have a real app that they've made running on a device in minutes.
20 |
21 | This also makes a huge amount of sense given ChromeOS and Chromebooks.
22 |
23 | ### Remove the Barriers
24 |
25 | That's what Apple and Google's goal for developers should be: to let people run code with as few barriers as possible. I think a robust web-based IDE would play a huge part in this, and the first to deploy it will get a huge win in terms of developer support.
26 |
--------------------------------------------------------------------------------
/_posts/2006-05-31-using-apis-dont-forget-about-rss-and-atom-feeds.textile:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "Using APIs: Don't Forget About RSS and Atom Feeds"
4 | categories:
5 | - programming
6 | - api
7 | - rss
8 | - atom
9 | ---
10 |
11 |
12 |
13 | Sometimes you need to display collated data on a page. For example, Basecamp has a useful dashboard which displays all the latest activity across all your projects. I've been working on an application that provides Basecamp access to mobile devices, and I realised that reproducing this dashboard would be far too API-intensive to be usable.
14 |
15 | It can take anything from 20-1000ms to complete a request using the API, depending on the number of hops the request goes through over the network and how fast the application at the other end responds. So if you want to gather the data Basecamp displays on its dashboard, you'd need to:
16 |
17 | # Collect all the projects
18 | # For each project, collect all the message summaries
19 | # For each project, collect all the late milestones
20 |
21 | Let's say you've got 10 projects in your Basecamp account. This could easily result in 21 requests to the API. On a good day this is going to take 5 seconds to complete. These numbers aren't made up, they're rounded off from what I experienced when using the API. Someone who's helping me test Basecamp Mobile has 40 projects, and my application was just giving up before it could even load his data.
22 |
23 | So how did I overcome this? Well, Basecamp produces another summary of the data I required, in an even more friendly way: an RSS feed. I used the existing methods for accessing the API to make a request using the user's authentication details and fetch the RSS feed for their projects. This is far faster than any strategy I could think of when using the API, and turning XML into data my application could use was as simple as using the API.
24 |
25 | I learnt an important lesson here. When writing applications that use web-based APIs, make best use of their existing data feeds. They can be fast and less resource intensive than lots of API calls!
26 |
--------------------------------------------------------------------------------
/_layouts/default.jade:
--------------------------------------------------------------------------------
1 | !!! 5
2 | html(lang="en")
3 | head
4 | title #{site.config.title}
5 | meta(charset="utf-8")
6 | link(href="/stylesheets/screen.css", media="screen", rel="stylesheet", type="text/css")
7 | link(href="/stylesheets/home.css", media="screen", rel="stylesheet", type="text/css")
8 | link(href="/stylesheets/small.css", media="only screen and (max-device-width: 480px)", rel="stylesheet", type="text/css")
9 | link(href="/javascripts/google-code-prettify/prettify.css", media="screen", rel="stylesheet", type="text/css")
10 | link(rel="alternate", type="application/rss+xml", title="RSS 2.0", href="/feed.rss")
11 | link(rel="alternate", type="application/atom+xml", title="Atom Feed", href="/feed.xml")
12 | script(type="text/javascript", src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js")
13 | script(type="text/javascript", src="/javascripts/site.js")
14 | script(type="text/javascript", src="/javascripts/google-code-prettify/prettify.js")
15 | script(type="text/javascript")
16 | var _sf_startpt=(new Date()).getTime()
17 | body
18 | #container
19 | nav.panel
20 | !{include('sidebar')}
21 | section#content
22 | !{content}
23 | footer
24 | p.copyright © Alex R. Young | Contact | Generated with Pop | Cookies and Privacy
25 | script(type="text/javascript")
26 | var _sf_async_config = { uid: 39178, domain: 'alexyoung.org' };
27 | (function() {
28 | function loadChartbeat() {
29 | window._sf_endpt = (new Date()).getTime();
30 | var e = document.createElement('script');
31 | e.setAttribute('language', 'javascript');
32 | e.setAttribute('type', 'text/javascript');
33 | e.setAttribute('src',
34 | (("https:" == document.location.protocol) ? "https://a248.e.akamai.net/chartbeat.download.akamai.com/102508/" : "http://static.chartbeat.com/") +
35 | "js/chartbeat.js");
36 | document.body.appendChild(e);
37 | };
38 | var oldonload = window.onload;
39 | window.onload = (typeof window.onload != 'function') ?
40 | loadChartbeat : function() { oldonload(); loadChartbeat(); };
41 | })();
42 |
--------------------------------------------------------------------------------
/_layouts/post.jade:
--------------------------------------------------------------------------------
1 | !!! 5
2 | html(lang="en")
3 | head
4 | title #{post.title}
5 | meta(charset="utf-8")
6 | link(href="/stylesheets/screen.css", media="screen", rel="stylesheet", type="text/css")
7 | link(href="/javascripts/google-code-prettify/prettify.css", media="screen", rel="stylesheet", type="text/css")
8 | link(href="/stylesheets/small.css", media="only screen and (max-device-width: 480px)", rel="stylesheet", type="text/css")
9 | link(rel="alternate", type="application/rss+xml", title="RSS 2.0", href="/feed.rss")
10 | link(rel="alternate", type="application/atom+xml", title="Atom Feed", href="/feed.xml")
11 | script(type="text/javascript", src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js")
12 | script(type="text/javascript", src="/javascripts/google-code-prettify/prettify.js")
13 | script(type="text/javascript", src="/javascripts/site.js")
14 | script(type="text/javascript")
15 | var _sf_startpt=(new Date()).getTime()
16 | body
17 | #container
18 | nav.panel
19 | !{include('sidebar')}
20 | section#content
21 | header#header
22 | hgroup
23 | a#home(href="/") ← Home
24 | !{hNews(post)}
25 | !{disqus(post, 'alexyoung')}
26 | footer
27 | p.copyright © Alex R. Young | Contact | Generated with Pop | Cookies and Privacy
28 | script(type="text/javascript")
29 | var _sf_async_config = { uid: 39178, domain: 'alexyoung.org' };
30 | (function() {
31 | function loadChartbeat() {
32 | window._sf_endpt = (new Date()).getTime();
33 | var e = document.createElement('script');
34 | e.setAttribute('language', 'javascript');
35 | e.setAttribute('type', 'text/javascript');
36 | e.setAttribute('src',
37 | (("https:" == document.location.protocol) ? "https://a248.e.akamai.net/chartbeat.download.akamai.com/102508/" : "http://static.chartbeat.com/") +
38 | "js/chartbeat.js");
39 | document.body.appendChild(e);
40 | };
41 | var oldonload = window.onload;
42 | window.onload = (typeof window.onload != 'function') ?
43 | loadChartbeat : function() { oldonload(); loadChartbeat(); };
44 | })();
45 |
--------------------------------------------------------------------------------