1
0
Fork 0
forked from wezm/wezm.net

Compare commits

..

No commits in common. "master" and "deploy" have entirely different histories.

1047 changed files with 831 additions and 26879 deletions

6
.gitignore vendored Normal file
View file

@ -0,0 +1,6 @@
output/*/*/*/*/*.html
output/fonts/*
tmp/*
.*.swp
output/weather.json
.sass-cache

1
.rvmrc Normal file
View file

@ -0,0 +1 @@
rvm use default

14
Gemfile Normal file
View file

@ -0,0 +1,14 @@
source :rubygems
gem 'rake'
gem 'mime-types'
gem 'nanoc'
gem 'bitly'
gem 'haml'
gem 'sass'
gem 'rdiscount'
gem 'rubypants'
gem 'nokogiri'
gem 'builder'
gem 'fssm'
gem 'systemu'

59
Gemfile.lock Normal file
View file

@ -0,0 +1,59 @@
GEM
remote: http://rubygems.org/
specs:
bitly (0.9.0)
httparty (>= 0.7.6)
multi_json (~> 1.3)
oauth2 (>= 0.5.0, < 0.9)
builder (3.2.0)
colored (1.2)
cri (2.3.0)
colored (>= 1.2)
faraday (0.8.7)
multipart-post (~> 1.1)
fssm (0.2.10)
haml (4.0.2)
tilt
httparty (0.11.0)
multi_json (~> 1.0)
multi_xml (>= 0.5.2)
httpauth (0.2.0)
jwt (0.1.8)
multi_json (>= 1.5)
mime-types (1.23)
multi_json (1.7.3)
multi_xml (0.5.3)
multipart-post (1.2.0)
nanoc (3.6.3)
cri (~> 2.3)
nokogiri (1.5.9)
oauth2 (0.8.1)
faraday (~> 0.8)
httpauth (~> 0.1)
jwt (~> 0.1.4)
multi_json (~> 1.0)
rack (~> 1.2)
rack (1.5.2)
rake (10.0.4)
rdiscount (2.0.7.3)
rubypants (0.2.0)
sass (3.2.8)
systemu (2.5.2)
tilt (1.4.1)
PLATFORMS
ruby
DEPENDENCIES
bitly
builder
fssm
haml
mime-types
nanoc
nokogiri
rake
rdiscount
rubypants
sass
systemu

View file

@ -1,23 +0,0 @@
wezm.net
========
My website. Corrections for typos and other minor errors welcome via issue or
pull request.
v2
--
This is the current version of the website, built with [Zola].
v1
--
This is the original version of the website containing posts from 20082019. It
is built with [Nanoc].
---
Copyright © 2003 2022 Wesley Moore. All rights reserved
[Nanoc]: https://nanoc.ws/
[Zola]: https://www.getzola.org/

12
README.mkdn Normal file
View file

@ -0,0 +1,12 @@
WezM.net
========
Site Structure
--------------
/articles
/technical
/category
/personal
/category
/about

1
Rakefile Normal file
View file

@ -0,0 +1 @@
require 'nanoc3/tasks'

View file

@ -21,13 +21,6 @@ compile %r(/\d{4}/.*) do
layout 'article'
layout 'default'
filter :rubypants
filter :colorize_syntax, default_colorizer: :rouge
end
compile %r(/about/.*) do
filter :rdiscount
layout 'topphoto'
filter :rubypants
end
compile %r{.*/feed/} do
@ -42,13 +35,8 @@ compile %r{^/(?:screen|mobile)/$} do
filter :sass
end
compile %r{/rouge/$} do
filter :erb
end
compile '*' do
filter :rdiscount
layout 'page'
layout 'default'
filter :rubypants
end
@ -70,7 +58,7 @@ end
# (path.dirname + 'articles.json').to_s
# end
route %r{^/(?:screen|mobile|rouge)/$} do
route %r{^/(?:screen|mobile)/$} do
File.join("", "css", File.basename(item.identifier) + ".css")
end

28
TODO Normal file
View file

@ -0,0 +1,28 @@
Now
---
* Setup monothumb on server
* Exclude photo and photos.xml from deploy:rsync
Deployment
----------
* Move Wordpress to old. and add robots.txt
Later
-----
* Add monothumb to GitHub
* Add google tracking to Something to add box
* Revise About page content
* Get proper lens specs for About page
* Fully convert to HTML5
* Microdata on About/Contact pages
* Add favicon
* Add weights to sitemap
Future
------
* Make it possible to purchase the HTML
* Make a Wordpress theme out of the site

View file

@ -24,13 +24,11 @@ enable_output_diff: false
# hashes; each array element represents a single data source. By default,
# there is only a single data source that reads data from the “content/” and
# “layout/” directories in the site directory.
string_pattern_type: legacy
data_sources:
-
# The type is the identifier of the data source. By default, this will be
# `filesystem_unified`.
type: filesystem_unified
identifier_type: legacy
# The path where items should be mounted (comparable to mount points in
# Unix-like systems). This is “/” by default, meaning that items will have
@ -43,11 +41,12 @@ data_sources:
# same as the items root, but applies to layouts rather than items.
layouts_root: /
base_url: 'https://www.wezm.net'
base_url: 'http://www.wezm.net'
deploy:
default:
kind: rsync
dst: "hardforze.binarytrance.com:infrastructure/volumes/www/wezm.net"
dst: "mini.wezm.net:www/www.wezm.net"
#dst: "wezm@crucial.wezm.net:www"
#dst: "lightwave.wezm.net:www/www.wezm.net"
#options: [ '-rlpgoDvz', '--delete', '--exclude=".svn"' ]
options: [ '-avz' ]
options: [ '-avz', '--delete', '--exclude=".svn"' ]

104
content/about.html Normal file
View file

@ -0,0 +1,104 @@
Me
--
<div class="vcard">
<img src="/images/Photo%20of%20Wesley%20Moore.jpg" width="256" height="256" alt="Photo of Wesley Moore" class="photo" />
<p>WezM.net is <span class="fn">Wesley Moore</span>s personal
home page, a <span class="title">programmer</span> from <span
class="adr"><span class="locality">Melbourne</span> <span
class="country-name">Australia</span></span>. Here you will find posts
about various projects I'm working on, useful tips I've discovered as
well as some random posts about other things going on in my life.</p>
</div>
### Contact
Find me on the Internet in one of these places:
<ul>
<li>Email
<script type="text/javascript">
//<![CDATA[
function hiveware_enkoder(){var i,j,x,y,x=
"x=\"783d2238383538353535393537353838363538353735383837353935243f7a5c223d78" +
"3534353a35343534353538353538357a3f245e393a35663434353835363538383836353835" +
"363534383735393539353935343538353b353935363538353735323538353a353935343538" +
"35373538353835353836353738353534353435363538383835353833353935393538353735" +
"3935353536353235393533353435383537353935363537383535343534353538333538353b" +
"35383835353935383836353438373538383935383537353938333538383635343837353838" +
"37353735393539353835373539353535363532353935393538353735393833353635353835" +
"353438383538353335353837353435343534353b3535383435353564383838683934343a38" +
"3b356635323564383b35653937353835373539353b3964393b346435663937386738323535" +
"383434343564393b3566343934393934343a383a346738653837386738393936383a356438" +
"3b3464356635343435383339323837343a3439343734393464393a34673935393738343935" +
"39363b245e3d7b3f29293d6871742a6b3f323d6b3e7a306e677069766a373935387a307577" +
"647576742a6b2e342b2b3d217b3b34653534343b343b3564396639683d29293f7b3d243d6b" +
"2d3f342b7d7b2d3f77706775656372672a2927292d3f6c2a7471687d2b32363f2d6b3d6a76" +
"6970676e307a3e6b3d323f6b2a74713d6b3f406c2f2f3d2b32362d6b2e6a766970676e307a" +
"2a706b6f306a76634f753d783b27273d793b5c223d7b21213d2b6c2a764374636a65307a3f" +
"2d7b7d2b693b6874676e656c2e783c693b303d6928726f663b2978286570616373656e3233" +
"3c6a2866693b322d296928744165646f43726168632e783d6a7b292b2b6a2865646f437261" +
"68436d6f72662e676e697274533d2b793b34393d2b6a29797d29223b793d27273b666f7228" +
"693d303b693c782e6c656e6774683b692b3d3331297b666f72286a3d4d6174682e6d696e28" +
"782e6c656e6774682c692b3331293b2d2d6a3e3d693b297b792b3d782e636861724174286a" +
"293b7d7d793b\";y='';for(i=0;i<x.length;i+=2){y+=unescape('%'+x.substr(i,2)" +
");}y";
while(x=eval(x));}hiveware_enkoder();
//]]>
</script>
</li>
<li>App.net <a href="https://alpha.app.net/wezm">https://alpha.app.net/wezm</a></li>
<li>Twitter <a href="http://twitter.com/wezm">http://twitter.com/wezm</a></li>
<li>Facebook <a href="http://www.facebook.com/wjmoore">http://www.facebook.com/wjmoore</a></li>
<li>GitHub <a href="https://github.com/wezm">https://github.com/wezm</a></li>
<li>StackOverflow <a href="http://stackoverflow.com/users/38820/wes">http://stackoverflow.com/users/38820/wes</a></li>
</ul>
This Site
---------
This site is written in [Markdown][markdown] and [SASS][sass], generated using
[nanoc][nanoc], enhanced with [jQuery][jquery] and hosted on VPS running
[Debian GNU/Linux][debian] and [nginx][nginx]. It makes use of the following
resources made available freely by their authors:
* [Reset CSS][cssreset] by Eric Meyer
* [Mono icons][monoicons] by tutorial9
* [Feed icon][feedicon] by FeedIcons.com and the Mozilla Foundation
The content is split into two sections:
[Technical](/technical/articles/) and [Personal](/personal/articles/). There is
a [combined feed](/feed/) containing all posts as
well as separate ones for
[technical](/technical/feed/) and
[personal](/personal/feed/) posts.
Projects
--------
Visit the [projects page](/projects/) for details of some of my software and
hardware projects.
Photography
-----------
I'm an amateur photographer. See my [Flickr photostream][flickr] for some of my
photos. My primary camera is a Canon 400D SLR, with the following lenses:
* Canon EF 28mm &fnof;/1.8 USM
* Canon EFS 18-55mm &fnof;/3.5&ndash;5.6
* Canon EF 75-300mm &fnof;/4&ndash;5.6
[nanoc]: http://nanoc.stoneship.org/
[markdown]: http://daringfireball.net/projects/markdown/
[nginx]: http://nginx.org/
[twitter]: http://twitter.com/wezm
[flickr]: http://www.flickr.com/photos/wezm/
[debian]: http://www.debian.org/
[jquery]: http://jquery.com/
[sass]: http://sass-lang.com/
[cssreset]: http://meyerweb.com/eric/tools/css/reset/
[monoicons]: http://www.tutorial9.net/resources/108-mono-icons-huge-set-of-minimal-icons/
[feedicon]: http://feedicons.com/

2
content/about.yaml Normal file
View file

@ -0,0 +1,2 @@
---
title: About

70
content/mobile.sass Normal file
View file

@ -0,0 +1,70 @@
body.home
min-width: 0
body > header span
float: right
display: inline
cursor: pointer
#menu
display: none
float: none
padding: 0.5em 0 0 0
line-height: 2
li
margin: 0 1em 0 0
#technical div, #personal div
padding: 0 1em
.column
float: none
width: auto
min-width: 0
#content
min-width: 0
margin-right: 0
padding: 0 10px
h1
font-size: 30px
ul.articles li
margin: 0
padding-top: 0
height: auto
nav.search
li
display: list-item
margin: 1em 0 0 0
font-size: large
#search
float: none
#flickr
header
margin-left: 1em
ul
height: auto
li, li:first-child
margin: 0 0 1em 1em
#respond
li.short
margin: 0.5em 0 0 0
float: none
display: block

3
content/mobile.yaml Normal file
View file

@ -0,0 +1,3 @@
---
title: Stylesheet for mobile devices
is_hidden: true

View file

@ -6,26 +6,26 @@ A friend asked the following today, the reply was big enough I decided to post i
>
> Has it changed your life? Has the battery life been crappy for you? Talk time OK?
Its definitely the best phone I've had. Part of that is due to the tight integration with Mac OS X, which obviously very few companies were going to pull off. As a device it's brilliant to use and full of functionality. I'm loving the apps and decent browser. The WiFi is really nice at home. The iPod part obviously works as well and better than any prior iPod.
Its definitely the best phone I've had. Part of that is due to the tight integration with Mac OS X, which obviously very few companies were going to pull off. As a device its brilliant to use and full of functionality. I'm loving the apps and decent browser. The WiFi is really nice at home. The iPod part obviously works as well and better than any prior iPod.
The on screen keyboard is pretty much as described. You have to give it time to get the hang of it and you have to trust it. If you're typing a word that would be in the English dictionary you're best to keep on typing even if the word is way off. By the time you get to pressing space it's usually selected the right word, which is selected automatically upon space. Two irritations with typing though. Its less likely to get shorter word right, particularly when there's multiple valid options. There's no way that I'm aware of to get a list of possibilities and choose the one you want. Of course being a small word means it's not hard to fix and if you type it correctly in the first place then it isn't a problem at all. The other minor annoyance is when you get to the last word in a sentence that is mis-typed with a correct suggestion it appears the only way to accept it is to press space (and then delete the space) or grab a full stop.
The on screen keyboard is pretty much as described. You have to give it time to get the hang of it and you have to trust it. If you're typing a word that would be in the English dictionary you're best to keep on typing even if the word is way off. By the time you get to pressing space its usually selected the right word, which is selected automatically upon space. Two irritations with typing though. Its less likely to get shorter word right, particularly when there's multiple valid options. There's no way that I'm aware of to get a list of possibilities and choose the one you want. Of course being a small word means its not hard to fix and if you type it correctly in the first place then it isn't a problem at all. The other minor annoyance is when you get to the last word in a sentence that is mis-typed with a correct suggestion it appears the only way to accept it is to press space (and then delete the space) or grab a full stop.
<!--more-->
<a href="/images/2008/07/img_0012.png" class="alignright"><img src="/images/2008/07/img_0012-200x300.png" alt="Byline" title="img_0012" width="200" height="300" class="alignnone size-medium wp-image-48" /></a>I haven't missed MMS at all, especially with a decent email client built in that can talk to Gmail via IMAP and send photos to Flickr that way.
<a href="/images/2008/07/img_0012.png" class="alignright"><img src="/images/2008/07/img_0012-200x300.png" alt="Byline" title="img_0012" width="200" height="300" class="alignnone size-medium wp-image-48" /></a>I haven't missed MMS at all, especially with a decent email client built in that can talk to Gmail via IMAP and send photos to flickr that way.
I have missed Todo functionality. I have no idea why Apple have not got this syncing. The support is there in iSync and todos sync with my old phone (Nokia 6280) just fine. I'm hoping that it's one of these things that will make it eventually. There's two reasons I miss todo, one to track things to be done, the other is for reminders for things that don't have a duration (which can be put in as calendar entries). There is no way to do reminders without a duration at the moment. Having said that the calendar functionality is comprehensive. It supports multiple calendars, full editing, meeting acceptance and basically anything you can do on the desktop.
I have missed Todo functionality. I have no idea why Apple have not got this syncing. The support is there in iSync and todos sync with my old phone (Nokia 6280) just fine. I'm hoping that its one of these things that will make it eventually. There's two reasons I miss todo, one to track things to be done, the other is for reminders for things that don't have a duration (which can be put in as calendar entries). There is no way to do reminders without a duration at the moment. Having said that the calendar functionality is comprehensive. It supports multiple calendars, full editing, meeting acceptance and basically anything you can do on the desktop.
<a href="/images/2008/07/img_0019.png" class="alignleft clear"><img src="/images/2008/07/img_0019-200x300.png" alt="Twinkle" title="img_0019" width="200" height="300" class="alignnone size-medium wp-image-55" /></a>Another annoyance surrounds SMS. When on silent you only get a single vibration on new message, which is easily missed. My old phone did three, which was better. Also when you get an SMS my old phone would show an envelope on the black and white standby screen. With the iPhone you have to wake it up to see if you've got a message after the display goes back off.
The AppStore is great, some of the apps are very well done. I'm really liking <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=284946773&mt=8">Byline</a>, <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=284967867&mt=8">Twinkle</a>, <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=284919489&mt=8">Exposure</a> and <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=284825922&mt=8">MoPhoTo</a>. I'm not much of a Facebook user but the <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=284882215&mt=8">Facebook app</a> is very well done. It's just the core parts of Facebook without all the crap. Of those five, three are free, one is free by ad-supported (with a pay for version available) and the other AU$12.99. I think that's a pretty good spread for some top quality apps. Some screenshots of these apps are scattered below.
The AppStore is great, some of the apps are very well done. I'm really liking <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=284946773&mt=8">Byline</a>, <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=284967867&mt=8">Twinkle</a>, <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=284919489&mt=8">Exposure</a> and <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=284825922&mt=8">MoPhoTo</a>. I'm not much of a Facebook user but the <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=284882215&mt=8">Facebook app</a> is very well done. It just the core parts of Facebook without all the crap. Of those five, three are free, one is free by ad-supported (with a pay for version available) and the other AU$12.99. I think that's a pretty good spread for some top quality apps. Some screenshots of these apps are scattered below.
<a href="/images/2008/07/img_0016.png" class="alignright clear"><img src="/images/2008/07/img_0016-200x300.png" alt="Exposure" title="img_0016" width="200" height="300" class="alignnone size-medium wp-image-52" /></a>Battery life is nothing brilliant as has been reported elsewhere. You'd probably want to change it every day. Today I watched a video podcast on the way to work, send a couple of SMSs during the day, added a calendar event, got a call from Steve, called the dentist, listened to music, read in Google Reader via the Byline app, read and updated Twitter via the Twinkle app and used the timer to cook dinner and it's showing half battery. It was off the changer all last night too.
<a href="/images/2008/07/img_0016.png" class="alignright clear"><img src="/images/2008/07/img_0016-200x300.png" alt="Exposure" title="img_0016" width="200" height="300" class="alignnone size-medium wp-image-52" /></a>Battery life is nothing brilliant as has been reported elsewhere. You'd probably want to change it every day. Today I watched a video podcast on the way to work, send a couple of SMSs during the day, added a calendar event, got a call from Steve, called the dentist, listened to music, read in Google Reader via the Byline app, read and updated Twitter via the Twinkle app and used the timer to cook dinner and its showing half battery. It was off the changer all last night too.
A complaint of the old one was that the ringer and message volume was very low and easily missed. I've it plenty loud enough and it's only on about three quarters. Speaking on the phone the volume is good, although I haven't tried extreme environments like a club.
A complaint of the old one was that the ringer and message volume was very low and easily missed. I've it plenty loud enough and its only on about three quarters. Speaking on the phone the volume is good, although I haven't tried extreme environments like a club.
One of the best built-in apps on the whole phone is maps. Whenever you want to find something, or get the details for a business, get directions, just bring up Maps and it will sort it out. Its as good as, if not better than Google Maps on the desktop. It has the same three views too: Maps, Satellite and Hybrid. The location awareness is great and there's some basic uses of it in the apps so far, hopefully more creative uses come out. One interesting one is an app called Exposure that is a Flickr client with a 'near me' function. It shows photos near your current location. Doing so at home brings ups photos of St Kilda Rd, the fountain in the gardens out the front (Pictured above).
One of the best built-in apps on the whole phone is maps. Whenever you want to find something, or get the details for a business, get directions, just bring up Maps and it will sort it out. Its as good as, if not better than Google Maps on the desktop. It has the same three views too: Maps, Satellite and Hybrid. The location awareness is great and there's some basic uses of it in the apps so far, hopefully more creative uses come out. One interesting one is an app called Exposure that is a flickr client with a 'near me' function. It shows photos near your current location. Doing so at home brings ups photos of St Kilda Rd, the fountain in the gardens out the front (Pictured above).
Maybe I'm easily sold on such things but the UI is truly beautiful and being solely finger driven is revolutionary (on a phone). I'm a happy customer.
Maybe I'm easily sold on such things but the UI is truly beautiful and being solely finger driven is revolutionarily (on a phone). I'm a happy customer.
<a href="/images/2008/07/img_0017.png" class="alignleft clear"><img src="/images/2008/07/img_0017-200x300.png" alt="Facebook" title="img_0017" width="200" height="300" class="alignnone size-medium wp-image-53" /></a><a href="/images/2008/07/img_0018.png" class="alignright"><img src="/images/2008/07/img_0018-200x300.png" alt="MoPhoTo" title="img_0018" width="200" height="300" class="alignnone size-medium wp-image-54" /></a>
<div style="clear: both;">&nbsp;</div>
<div style="clear: both;">&nbsp;</div>

View file

@ -9,6 +9,11 @@ Laden with a backpack containing a laptop, lunch and a change of clothes amongst
I did make it to work though, albeit somewhat hot and sweaty. The trip took about 40mins. Since that first day I've done the ride another 10 or so times, refined the route and have begun working on shortening the travel time. First I got it down to 30 mins and my best so far is 28 mins something. I track each ride using a brilliant little (free) iPhone app called <a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=289333140&mt=8">Trailguru</a> (app store link). It records my ride logging the route with GPS, the duration and distance. When I arrive at my destination I stop it recording and can then upload the ride to the <a href="http://www.trailguru.com/">companion site</a>. Each trail gets a page where there is plot of the route on Google Maps, graphs of altitude, pace and speed as well as other stats.
Below is a sample ride to work that Trailguru recorded:
<iframe src="http://www.trailguru.com/ui/embed/embedTrack.php?thid=205513" height="475px" width="100%" frameborder="0">
<a href="http://www.trailguru.com/wiki/index.php/Track:4EKP">8 to (Road Biking) | Flemington VIC 3031, Australia</a>
</iframe>
Trailguru also lets you search for trails and will show others near your own. You can also take and upload photos with the iPhone app. I haven't used that feature yet as my phone is in my bag during the ride but I'd like to get an iPhone bike mount so I can use it as a speedometer as well. You can see all my trails on my <a href="http://www.trailguru.com/ui/user/tracks/Wmoore">Trailguru user page</a>.
<h3>Road Rage</h3>
@ -20,4 +25,4 @@ I have mostly avoided any incidents with cars so far but I did have a small bout
I'm trying to do three rides a week, Monday, Wednesday and Friday. That gives me a break in between while I'm getting used to it and should also still be <a href="http://notahat.com/posts/30">beneficial fitness wise</a>. However I've only managed that once so far due to after work engagements and bad weather. Time will tell how it goes but I'm enjoying it so far.
_______________
<sup>1</sup> Several year old GT avalanche 2.0 for those that are into such things.
<sup>1</sup> Several year old GT avalanche 2.0 for those that are into such things.

View file

@ -4,11 +4,11 @@ permalink: http://www.wezm.net/2009/05/rafael-bonachelas-360-degrees/
kind: article
section: personal
created_at: 2009-05-30 15:46:04.000000000 +10:00
title: Rafael Bonachela's 360°
title: Rafael Bonachela's 360°
post_id: 141
tags: []
categories:
- Entertainment
status: publish
extra: Rafael Bonachela's 360° turned out to be an underwhelming birthday present.
extra: Rafael Bonachela's 360° turned out to be an underwhelming birthday present.
short_url: http://bit.ly/9puIKd

View file

@ -56,10 +56,10 @@ what I'm most interested in.
<figcaption>The Finished Installation</figcaption>
</figure>
To log and upload the [weather readings][weather] I'm using the [wview][wview]
weather station software. wview is running on the Mac mini connected to our TV.
The site layout is pretty basic so I hope to come up with a cleaner design in
the coming weeks.
To log and upload the weather readings to [http://weather.wezm.net/][weather]
I'm using the [wview][wview] weather station software. wview is running on the
Mac mini connected to our TV. The site layout is pretty basic so I hope to come
up with a cleaner design in the coming weeks.
**Update:** I built a custom logging and charting solution. See the post,
[Weather Station Software][software].
@ -67,4 +67,4 @@ the coming weeks.
[software]: /technical/2010/09/weather-station-software/
[WS2355]: http://www.lacrossetechnology.com.au/shop2/product_info.php?cPath=21&products_id=93
[wview]: http://www.wviewweather.com/
[weather]: /weather/
[weather]: http://weather.wezm.net/

View file

@ -16,16 +16,16 @@ Below are some of my favourite photos from the trip.
[flickr]: http://www.flickr.com/photos/wezm/sets/72157632405621933/
<figure><a href="http://www.flickr.com/photos/wezm/8335447321/" title="The Gang by wezm, on Flickr"><img src="http://farm9.staticflickr.com/8351/8335447321_f54cab5ac7_b.jpg" alt="The Gang"></a></figure>
<figure><a href="http://www.flickr.com/photos/wezm/8335447321/" title="The Gang by wezm, on Flickr"><img src="http://farm9.staticflickr.com/8351/8335447321_f54cab5ac7.jpg" width="500" height="333" alt="The Gang"></a></figure>
<figure><a href="http://www.flickr.com/photos/wezm/8335449191/" title="_MG_2560 by wezm, on Flickr"><img src="http://farm9.staticflickr.com/8219/8335449191_1864e2015b_b.jpg" alt="_MG_2560"></a></figure>
<figure><a href="http://www.flickr.com/photos/wezm/8335449191/" title="_MG_2560 by wezm, on Flickr"><img src="http://farm9.staticflickr.com/8219/8335449191_1864e2015b.jpg" width="333" height="500" alt="_MG_2560"></a></figure>
<figure><a href="http://www.flickr.com/photos/wezm/8335468571/" title="Wet Leaf by wezm, on Flickr"><img src="http://farm9.staticflickr.com/8493/8335468571_65d445b2f0_b.jpg" alt="Wet Leaf"></a></figure>
<figure><a href="http://www.flickr.com/photos/wezm/8335468571/" title="Wet Leaf by wezm, on Flickr"><img src="http://farm9.staticflickr.com/8493/8335468571_65d445b2f0.jpg" width="500" height="333" alt="Wet Leaf"></a></figure>
<figure><a href="http://www.flickr.com/photos/wezm/8336509904/" title="Corrigan Suspension Bridge by wezm, on Flickr"><img src="http://farm9.staticflickr.com/8221/8336509904_f91110bd7e_b.jpg" alt="Corrigan Suspension Bridge"></a></figure>
<figure><a href="http://www.flickr.com/photos/wezm/8336509904/" title="Corrigan Suspension Bridge by wezm, on Flickr"><img src="http://farm9.staticflickr.com/8221/8336509904_f91110bd7e.jpg" width="500" height="333" alt="Corrigan Suspension Bridge"></a></figure>
<figure><a href="http://www.flickr.com/photos/wezm/8336530324/" title="_MG_2736 by wezm, on Flickr"><img src="http://farm9.staticflickr.com/8352/8336530324_9ea598a818_b.jpg" alt="_MG_2736"></a></figure>
<figure><a href="http://www.flickr.com/photos/wezm/8336530324/" title="_MG_2736 by wezm, on Flickr"><img src="http://farm9.staticflickr.com/8352/8336530324_9ea598a818.jpg" width="333" height="500" alt="_MG_2736"></a></figure>
<figure><a href="http://www.flickr.com/photos/wezm/8335479675/" title="Tidal River by wezm, on Flickr"><img src="http://farm9.staticflickr.com/8211/8335479675_4f3fb4a105_b.jpg" alt="Tidal River"></a></figure>
<figure><a href="http://www.flickr.com/photos/wezm/8335479675/" title="Tidal River by wezm, on Flickr"><img src="http://farm9.staticflickr.com/8211/8335479675_4f3fb4a105.jpg" width="500" height="375" alt="Tidal River"></a></figure>
<figure><a href="http://www.flickr.com/photos/wezm/8335482115/" title="Squeaky Beach by wezm, on Flickr"><img src="http://farm9.staticflickr.com/8078/8335482115_04fbf1c43b_b.jpg" alt="Squeaky Beach"></a></figure>
<figure><a href="http://www.flickr.com/photos/wezm/8335482115/" title="Squeaky Beach by wezm, on Flickr"><img src="http://farm9.staticflickr.com/8078/8335482115_04fbf1c43b.jpg" width="500" height="158" alt="Squeaky Beach"></a></figure>

87
content/projects.html Normal file
View file

@ -0,0 +1,87 @@
I have a collection of open-source software on [GitHub][github]. Some of the
more noteworthy projects are listed below.
[github]: http://github.com/wezm
Monothumb
---------
[monothumb] is the tool that generates the thumbnails on the [home page](/). It
retrieves thumbnails of my [recent uploads to Flickr][flickr], converts them to
greyscale and then generates a single output image with both the colour and
monochrome versions of the thumbnail. There are two version of the tool. The
original one, written in Objective-C that uses CoreImage and a second version
written in Lua. The Lua one uses my [lua-imlib](#lua-imlib) fork.
[flickr]: http://www.flickr.com/photos/wezm/
[monothumb]: https://github.com/wezm/monothumb
<a name="lua-imlib"></a>
lua-imlib2
----------
[lua-imlib2] is a fork of the published lua-imlib library with additional
functionality. This library allows image processing in Lua. Specifically I
added:
* Support for filters
* Image blending
[lua-imlib2]: https://github.com/wezm/lua-imlib2
node-genx
---------
[node-genx] is a [node.js][node] binding to the [Genx][genx] XML generation
library. It allows fast and correct XML generation from the Javascript based
node.js environment. Available for easy install via [npm].
[node-genx]: https://github.com/wezm/node-genx
[node]: http://nodejs.org/
[genx]: http://www.tbray.org/ongoing/When/200x/2004/02/20/GenxStatus
[npm]: http://npmjs.org/
OCMustache
----------
[OCMustache][ocmustache] brings the [Mustache templating language][mustache] to
Objective-C. The parser is built using the [Ragel State Machine
Compiler][ragel] in the hope that it will help ensure fast and correct parsing.
[ocmustache]: https://github.com/wezm/OCMustache
[mustache]: http://mustache.github.com/
[ragel]: http://www.complang.org/ragel/
Kyoto Client
------------
[kyoto-client][kyoto-client] is a [node.js][node] client library for the
[Kyoto Tycoon][kyoto-tycoon] server. Kyoto Tycoon is the server component of
the [Kyoto Cabinet][kyoto-cabinet] key-value store. kyoto-client is available
for installation via [npm].
[kyoto-client]: http://kyoto-client.org
[kyoto-tycoon]: http://fallabs.com/kyototycoon/
[kyoto-cabinet]: http://1978th.net/kyotocabinet/
Weather Station
---------------
I have a weather station at my home for keeping track of the local conditions.
I added support for [SQLite][sqlite] logging to [my fork][open2300fork] of the
[Open2300][open2300] project. The weather station is connected to my Mac.
Every 5 minutes it logs the current conditions, uploads them to my server and
invokes a [lua program][weather-tools] to generate a [JSON][json] file,
which is used to produce the [Weather page][weather].
[sqlite]: http://www.sqlite.org/
[open2300]: http://www.lavrsen.dk/foswiki/bin/view/Open2300/WebHome
[open2300fork]: http://github.com/wezm/open2300
[weather]: http://weather.wezm.net/
[json]: http://www.json.org/
[weather-tools]: http://github.com/wezm/weather-tools
See the following posts for more information on the weather station:
* [Weather Station Install](/personal/2010/09/weather-station/)
* [Weather Station Software Update](/technical/2010/09/weather-station-software/)

3
content/robots.txt Normal file
View file

@ -0,0 +1,3 @@
User-Agent: *
Disallow:
Sitemap: <%= @site.config[:base_url] %>/sitemap.xml

View file

@ -1,13 +1,14 @@
$ans-serif: Carlito, Calibri, sans-serif
$header-colour: #242424
$link-color: #36454F
$ans-serif: "Helvetica Neue", Helvetica, "Liberation Sans", "Bitstream Vera Sans", Tahoma, Geneva, Arial, sans-serif
body
font-family: $ans-serif
font-family: Constantia, Georgia, "Bitstream Vera Serif", "Liberation Serif", serif
font-size: 16px
background: #fff
color: #464646
color: #223
&.home
min-width: 960px
// HTML5 expectations - should go in reset perhaps
header, footer, nav, article, figure, figcaption
@ -15,7 +16,7 @@ header, footer, nav, article, figure, figcaption
p, li, blockquote
line-height: 1.3
line-height: 1.2
p, pre
@ -47,7 +48,7 @@ h1, h2, h3, h4, h5, h6
font-family: $ans-serif
margin: 0.6em 0 0.5em 0
color: #111
font-weight: 500
font-weight: 200
h1
@ -78,7 +79,7 @@ a
text-decoration: underline
&:link, &:visited
color: $link-color
color: #36454F
h1 a
text-decoration: none
@ -87,20 +88,26 @@ h1 a
color: #111
body.home h1 > a
-webkit-transition: border-bottom-color 500ms ease-out
border-bottom: 2px solid rgba(17, 17, 17, 0.0)
&:hover
border-bottom-color: rgba(17, 17, 17, 1.0)
sup
vertical-align: super
font-size: 0.8em
pre, code, tt
font-family: Consolas, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "Bitstream Vera Sans Mono", "Menlo", "Liberation Mono", "Nimbus Mono L", Monaco, "Courier New", Courier, monospace
font-family: Consolas, "Andale Mono", "Liberation Mono", Menlo, Monaco, "Bitstream Vera Sans Mono", monospace
code, tt
font-size: smaller
pre
font-size: 13px
overflow-x: auto
padding-bottom: 0.25em
blockquote
@ -112,39 +119,25 @@ figure
margin: 1em auto
text-align: center
&.screenshot
img
max-width: 50%
figcaption
font-size: smaller
font-size: small
text-align: center
font-style: italic
img
max-width: 100%
.label
font-weight: bold
img.cover-photo
display: block
margin: 0 auto
img.lobsters
position: relative
top: 2px
video
max-width: 100%
body > header
font-family: $ans-serif
font-size: 18px
color: white
padding: 0.5em
background-color: $header-colour
background: #1C1C1C
a
-webkit-transition: border-bottom-color 500ms ease-out
transition: border-bottom-color 500ms ease-out
border-bottom: 2px solid rgba(255, 255, 255, 0.0)
&:link, &:visited
text-decoration: none
@ -153,128 +146,58 @@ body > header
&:hover
border-bottom-color: rgba(255, 255, 255, 1.0)
span
display: none
#menu
float: right
padding-right: 0.25em
li
font-size: 14px
font-weight: bold
text-transform: uppercase
letter-spacing: 0.5px
font-size: inherit
#content
margin: 0 auto
padding: 0 20px
clear: both
max-width: 728px
font-size: 18px
min-width: 600px
margin-right: 40%
body.articles #content, body.weather #content
min-width: 0
margin-right: 0
footer
color: #999
border-top: 1px solid #999
margin: 3em 20px 2em
margin: 1em
clear: both
.copyright
font-family: $ans-serif
font-size: 14px
margin-top: 1em
padding-top: 1em
display: block
font-weight: 200
.align-top
vertical-align: top
.with-border
border: 1px solid #D8D8D8
.no-border
border: none
text-decoration: none
.socials
margin-top: 1em
float: right
.social-icon
margin: 0 0.5em
.social-icon-wide
margin: 0 0.6em
.action-button
background-color: $link-color
border-radius: 0.25em
border: 2px solid $link-color
color: white
display: inline-block
font-size: 12px
font-weight: bold
margin: 0.75em 0
padding: 0.5em 1em
text-decoration: none
text-transform: uppercase
.action-button-ghost
background-color: initial
color: $link-color
.action-button-ghost:hover
background-color: $link-color
color: white
.archive-banner
padding: 0.5em 0.5em
background-color: #fffff1
font-weight: 400
border-bottom: 1px solid #eae4b9
font-size: smaller
.home
h1 > a:first-child
-webkit-transition: border-bottom-color 500ms ease-out
transition: border-bottom-color 500ms ease-out
border-bottom: 2px solid rgba(17, 17, 17, 0.0)
&:hover
border-bottom-color: rgba(17, 17, 17, 1.0)
main
display: flex
margin: 0 20px
margin: 0 auto
padding: 0 20px
max-width: 1200px
min-height: 85vh
.cli-tools
h3
margin-top: 4em
#posts
width: 100%
#projects
width: 300px
flex-shrink: 0
margin-left: 2em
ul.projects
list-style: none
.column
float: left
width: 50%
margin: 0
padding-top: 1em
min-width: 480px
li
margin: 1em 0
img, svg
width: 32px
vertical-align: middle
margin-right: 0.5em
#personal div
padding-right: 2em
.column div
padding: 0 0 0 2em
p
margin-left: calc(32px + 0.5em)
ul.articles
list-style: none
@ -284,6 +207,7 @@ ul.articles
li
margin: 0
padding-top: 1em
height: 70px
body.articles ul.articles li
@ -304,9 +228,10 @@ ul.articles
strong
font-family: $ans-serif
margin: 0
font-weight: normal
font-weight: 200
display: block
font-size: 21px
font-size: 18px
a
&.more
@ -332,6 +257,48 @@ a
margin-left: 0
#flickr
clear: both
header
margin-left: 2em
h1
margin: 0
padding: 0.6em 0 0 0
ul
display: block
height: 75px
overflow: hidden
margin-top: 1em
li
float: left
overflow: hidden
margin: 0 0 0 1em
display: block
position: relative
height: 75px
width: 75px
border: 1px solid #ccc
background: url(/images/photos.jpg?20120121) no-repeat 0 -75px
&:first-child
margin-left: 2em
img
-webkit-transition: opacity 500ms ease-out
position: absolute
&:hover
opacity: 0
a.more
float: right
margin: 1em 2em 1em 0
body.articles #content nav
padding-bottom: 1em
@ -357,12 +324,20 @@ body.articles #content nav
#respond
margin: 3em 0
margin-top: 10px
padding: 10px
background-color: #ddd
clear: both
h2
padding-left: 42px
line-height: 32px
background: url(/images/comment32.png) no-repeat top left
margin-top: 0
li.short
float: right
#content
.published
font-family: $ans-serif
@ -374,28 +349,18 @@ body.articles #content nav
float: left
margin: 5px 10px 5px 0
.keyboard-shortcut
font-family: "Helvetica Neue", Helvetica, "Liberation Sans", "Bitstream Vera Sans", Tahoma, Geneva, Arial, sans-serif
font-size: 1.5ex
img.alignleft
float: left
margin: 5px 10px 5px 0
.feed-icon
img.feed-icon
-webkit-transition: opacity 500ms ease-out
transition: opacity 500ms ease-out
opacity: 1.0
opacity: 0.5
&:hover
opacity: 0.75
.feed-icon-sup
vertical-align: super
img.comment
padding-top: 1px
opacity: 1.0
#content .alignright, img.alignright
float: right
@ -485,25 +450,18 @@ table
.vcard .photo
margin: 0 1em 1em 0
.text-right
text-align: right
.heading-icon
height: 20px
margin-right: 0.25em
// Weather
body.weather
#content
max-width: 100%
margin: 0 20px
#current > .temperature
.temperature
font-family: $ans-serif
font-weight: 200
.current
font-size: 36px
@ -541,85 +499,3 @@ body.weather
font-size: smaller
margin-top: 1em
color: #999
@media screen and (max-width: 768px)
#content
margin: 0 20px
font-size: 20px
@media screen and (max-width: 680px)
nav.search
li
display: list-item
margin: 1em 0 0 0
font-size: large
#search
float: none
.home main
flex-direction: column
#projects
width: auto
margin-left: 0
margin-top: 2em
ul.projects
padding-top: 0
@media screen and (max-width: 515px)
body
font-size: 20px
body > header
text-align: center
#menu
float: none
padding: 0.5em 0 0 0
line-height: 2
li
margin: 0 1em 0 0
#content
min-width: 0
margin: 0 10px
h1
font-size: 30px
body.weather #content
margin: 0 10px
ul.articles li
margin: 0
padding-top: 0
height: auto
#flickr
header
margin-left: 1em
ul
height: auto
li, li:first-child
margin: 0 0 1em 1em
#respond
.short
margin: 0.5em 0 0 0
display: block
footer
margin: 20px 10px
figure.screenshot
img
max-width: 100%

View file

@ -1,5 +1,5 @@
Ever since the now very quiet drunkenbatman hosted the <a href="http://web.archive.org/web/20090531184506/http://www.drunkenblog.com/evening_at_adler/">Evening at Adler</a> and Gus Mueller posted, "<a href="http://www.gusmueller.com/blog/archives/2005/12/25.html">How to become an independent programmer in just 1068 days</a>", its has been a goal of mine to one day live the indie Mac developer dream.
Ever since the now very quiet drunkenbatman hosted the <a href="http://www.drunkenblog.com/evening_at_adler/">Evening at Adler</a> and Gus Mueller posted, "<a href="http://www.gusmueller.com/blog/archives/2005/12/25.html">How to become an independent programmer in just 1068 days</a>", its has been a goal of mine to one day live the indie Mac developer dream.
Over the years I've dabbled in Mac OS X development but have struggled to find the time in between a full time job and also having a life to be able to see something through from start to finish. I'm convinced the ideas are sound because frequently others eventually release similar products. My last endeavour was for a better archiver than that provided by the Finder. It was to be dead simple, taking interface cues from things like <a href="http://appzapper.com/">AppZapper</a>. I discovered a little while ago that the fine folks at Apimac had created <a href="http://www.apimac.com/compress_files/">Compress Files</a>, which implemented my ideas and more.
Frustrated by this lack of time I decided to do something about it (after a small helping of procrastination). Last week I successfully negotiated a reduction to 4 days per week at my day job, with the fifth day allocated to Mac development. The first day of my new job is Mon Feb 11, 2008. However I find myself with a bit of a problem, I don't have any current projects to actually work on. Heeding the advice in Gus' post for <abbr title="Think small and make sure you really like what you are doing">Lesson #1</abbr> I'm seeking ideas from the Mac using community for a small application that I can use to get started. So if you got an idea for a small application that you don't mind sharing feel free to post a comment and let me know, it might be just what I'm looking for.
Frustrated by this lack of time I decided to do something about it (after a small helping of procrastination). Last week I successfully negotiated a reduction to 4 days per week at my day job, with the fifth day allocated to Mac development. The first day of my new job is Mon Feb 11, 2008. However I find myself with a bit of a problem, I don't have any current projects to actually work on. Heeding the advice in Gus' post for <abbr title="Think small and make sure you really like what you are doing">Lesson #1</abbr> I'm seeking ideas from the Mac using community for a small application that I can use to get started. So if you got an idea for a small application that you don't mind sharing feel free to post a comment and let me know, it might be just what I'm looking for.

View file

@ -0,0 +1,12 @@
Strangely enough I had the need to determine if it was possible to create a valid but empty tar file. Turns out it is. The method varies slightly depending on your flavour of tar program, here's how to do it on three of the big ones:
<strong>BSD</strong>
<code>tar cvf empty.tar --from-file /dev/null</code>
<strong>GNU (Linux)</strong>
<code>tar cvf empty.tar --files-from /dev/null</code>
<strong>Solaris</strong>
<code>tar cvf empty.tar -I /dev/null</code>
Now if you wondering why I would want this, here's the explanation. I work on a batch processing system that processes files delivered from other systems. In some cases its necessary to wait for a file to arrive but give up after some time. In order to give up we copy an empty file (automatically) so that the processing proceeds normally. Ordinarily this is an empty plain text file but for the system I'm working on I'm expecting a tar file, hence the need for an empty one.

Some files were not shown because too many files have changed in this diff Show more