Tag: apis
Blog
The People's Search Service
Jason Fried asks “Would you pay $5/month for Google if it wasn’t free”?
Dave Winer says “Clone the Google API”.
I’d like to join those together and ask “Would you pay $80/month to own a part of the infrastructure that powered a free implementation of the Google API”? In other words, rent a dedicated (low-end) server from the likes of Layered Technologies, or EV1Servers, and use it to run a distributed part of the crawling, indexing, or querying part of a full-on search engine.
Tag: apple-watch
Blog
This time it’s personal
The Apple Watch is such a personal device that it’s very enticing to create little, personal, information dashboards for it.
Tag: biography
About
Coofdy Labs Coofdy Labs is the father-and-son development team of Martin Kenny (Marty), and Michael Kenny. We spend most of our time building software for iOS and macOS.
Marty Marty has been playing around with electronics for nearly 50 years, and programming computers since 1977. When he’s not working with Michael, he can be found keeping up with RSS on his iPhone, pondering the future of computers as tools to assist with thinking, or coding on his Mac.
Tag: books
Blog
Optical Illusions
Norman Walsh recently posted a link to Akiyoshi’s illusion pages. I’ve got to say these are really fantastic. They are excellent illustrations of the physiological factors that make our vision work the way it does.
I recently read Margaret Livingstone’s Vision and Art: The Biology of Seeing, and although it’s not the sort of book I would have bought for myself (my mother gave it to me as a birthday present), it’s excellent.
Blog
Zeldman presents: Designing With Web Standards
Recently, a bright orange book, with a beanied man on the front cover, arrived on my front verandah. I'm referring, of course, to Jeffrey Zeldman's new book, Designing With Web Standards, and the beanied man is none other than Zeldman himself. Forthwith, my mini-review of his book:
I wasn't quite sure what to expect from this book – all I knew was that it had sold out it's first printing, before I could get my hands on a copy.
Blog
O'Reilly's Safari Rocks
OK, there, I've said it. O'Reilly's Safari Bookshelf is great.
I'd been thinking about giving Safari a go for a while, but it wasn't until Slashdot ran a review of it that I gave in and signed up for a 14-day trial.
I had some intial misgivings. I'm an avid technical book reader; I have a large library that dates back to the days of 8-bit microprocessors. I read myself to sleep every night with a book, often an O'Reilly one.
Tag: css
Blog
Refactoring CSS - the need for a testing tool
Several times over the last couple of weeks, I've found myself refactoring CSS – making changes to simplify and group rules, but with the aim of not changing the appearance at all. To test my work, I've been taking screen shots and swapping backwards and forwards to look for differences.
It suddenly struck me that what I really need is a CSS/HTML-specific diff tool. One that can take some CSS and some specific HTML, work out all the borders, margins, placements, etc.
Tag: family
Blog
KneeHIGH Puppets
Last weekend we went to the Adelaide Zoo for the closing event of the children’s festival known as “Come Out”. We watched a number of musical events with an environmental or animal theme, put on by primary school children, but the highlight of the visit was an appearance by the “KneeHIGH Puppets”.
From their name we imagined these would be puppets that were, well, knee-high. We couldn’t have been more wrong.
Tag: golang
Blog
Fixing 'could not find symbol value for runtime.buildVersion' Delve debugger error
Upgrade your Go installation to get the Delve and IntelliJ debuggers to work.
Tag: ios
Blog
SceneKit: first steps — Part 1: Just a box
In the spirit of #showyourwork, and learning in the open, I’ve decided to document my journey as I teach myself about SceneKit on iOS and OS X, and modern 3D APIs.
Tag: learning
Blog
SceneKit: first steps — Part 1: Just a box
In the spirit of #showyourwork, and learning in the open, I’ve decided to document my journey as I teach myself about SceneKit on iOS and OS X, and modern 3D APIs.
Tag: life
Blog
Don't do stuff while you're sick or tired
I was reminded, yesterday, of an old rule of mine; “don't do important things when you're feeling sick or tired”.
My rule dates back to some time in my mid-teens when I spent an evening soldering up a kit for what was then known as a VDU (in this case a single board that acted as the display part of a dumb terminal). Unfortunately I was already tired and excited (I'd been waiting for this thing for a couple of months).
Tag: linux
Blog
Network Not Starting on Migrated Virtual Machines
If you’ve recently migrated a Ubuntu virtual machine file from one computer to another, or from one virtualization product to another, you might have discovered that networking inside the VM was no longer working.
As described in this Parallels KB article, what’s probably happened is that the random MAC address generated by the virtualization host has changed. The file: /etc/udev/rules.d/70-persistent-net.rules contains a record of the matching MAC address from the previous host.
Blog
Explicit Congestion Notification (ECN) - Firewall Problems
I’ve just spent the afternoon trying to get a simple TCP connection established.
The story is that I was configuring Nagios to check some HTTP services that are behind a Cisco PIX firewall. Nagios kept on getting timeout errors – when I tried by hand with telnet, I was getting the same problem, but only from the machine running Nagios. After setting up some logging on the firewall, I could see lines like:
Tag: music
Blog
Magnatune are not vandals
Tim Bray recently likened MP3 encoding of music to Vandalism, and again made the point in more detail when discussing a New York Times article about online music purchasing.
While I agree that 128Kbps MP3s are not really up to scratch, it's worth noting that at least one online music vendor, Magnatune, lets you download your music in a number of different formats, including two lossless formats, and a couple of higher-than-usual-quality lossy formats.
Tag: networking
Blog
Network Not Starting on Migrated Virtual Machines
If you’ve recently migrated a Ubuntu virtual machine file from one computer to another, or from one virtualization product to another, you might have discovered that networking inside the VM was no longer working.
As described in this Parallels KB article, what’s probably happened is that the random MAC address generated by the virtualization host has changed. The file: /etc/udev/rules.d/70-persistent-net.rules contains a record of the matching MAC address from the previous host.
Blog
Explicit Congestion Notification (ECN) - Firewall Problems
I’ve just spent the afternoon trying to get a simple TCP connection established.
The story is that I was configuring Nagios to check some HTTP services that are behind a Cisco PIX firewall. Nagios kept on getting timeout errors – when I tried by hand with telnet, I was getting the same problem, but only from the machine running Nagios. After setting up some logging on the firewall, I could see lines like:
Tag: patents
Blog
Patent Madness
It seems nearly every day brings news of some new software patent that is pretty damn obvious and for which there should be easily locatable prior art. Today it's browser cookies, a few days ago it was web advertising. It's so common that Slashdot has a whole category for it !
As someone who, as a youth, applied for a patent with a friend (for a non-software idea), I can sort of relate to patents, but as a software developer I'm just plain scared and annoyed by most (all) software patents.
Tag: photography
Blog
Snowflakes on a Razer Blade
The magnificent set of snowflake photos by Russian photographer Alexey Kljatov (recently featured by kottke.org) make for some wonderful desktop images. Michael and I have both just recently updated our desktop images to these snowflake macros.
Michael’s Razer Blade features an 800x640 display as the trackpad. A resized snowflake makes an ideal trackpad background.
Pro Tip: If you’re trying to turn one of these images into a 16:9 or 16:10 wallpaper, Photoshop’s Content-aware Fill (Shift+F5) is your best friend.
Tag: photos
Blog
Gratuitous Iris Photo
Now that I have a camera I carry everywhere, I'm more likely to catch a photo of something incidental. Here's a photo of raindrops on a small iris outside the front door. Click it for the original high-resolution image (my current desktop image).
Blog
Beechwood Autumn Colours
On Easter Monday, we went for a picnic in the Beechwood Heritage Garden.
Beechwood was a private garden that is now managed by the Mount Lofty Botanic Gardens, and is only open to the public for six weeks in spring and again in autumn. It's well worth a trip in both seasons, and is definitely an excuse for a few photos.
Tag: photoshop
Blog
Snowflakes on a Razer Blade
The magnificent set of snowflake photos by Russian photographer Alexey Kljatov (recently featured by kottke.org) make for some wonderful desktop images. Michael and I have both just recently updated our desktop images to these snowflake macros.
Michael’s Razer Blade features an 800x640 display as the trackpad. A resized snowflake makes an ideal trackpad background.
Pro Tip: If you’re trying to turn one of these images into a 16:9 or 16:10 wallpaper, Photoshop’s Content-aware Fill (Shift+F5) is your best friend.
Tag: politics
Blog
The Federation
I’m probably the last person to see all these new North American political maps floating around the Web. But, just in case, here are three from: Richard Friedman, Mena Trott, and Tim Bray.
If Australia’s going to be aligning itself closely with the U.S. (it is, and it does), then perhaps we should be joining the Federation – I’m sure they’d accept representation on the western rim of the Pacific :-).
Blog
A Political Weekend
It turned into more of a political weekend than I’m accustomed to.
First, my friend and former colleague, Bill Malkin, wrote asking if he could borrow my site design for a website he was setting up in support of Brian Deegan. Brian is contesting the Adelaide Hills seat of Mayo, against the incumbent member, federal minister Alexander Downer, in the upcoming federal election.
Then, on Sunday evening, Theen had organized for us to see Michael Moore’s “Farenheit 9/11”.
Tag: programming
Blog
SwiftUI errors with any View vs some View
Make sure that your SwiftUI View-returning methods return some View, not any View.
Tag: rsync
Tag: scenekit
Blog
SceneKit: first steps — Part 1: Just a box
In the spirit of #showyourwork, and learning in the open, I’ve decided to document my journey as I teach myself about SceneKit on iOS and OS X, and modern 3D APIs.
Tag: search
Blog
The People's Search Service
Jason Fried asks “Would you pay $5/month for Google if it wasn’t free”?
Dave Winer says “Clone the Google API”.
I’d like to join those together and ask “Would you pay $80/month to own a part of the infrastructure that powered a free implementation of the Google API”? In other words, rent a dedicated (low-end) server from the likes of Layered Technologies, or EV1Servers, and use it to run a distributed part of the crawling, indexing, or querying part of a full-on search engine.
Tag: showyourwork
Blog
SceneKit: first steps — Part 1: Just a box
In the spirit of #showyourwork, and learning in the open, I’ve decided to document my journey as I teach myself about SceneKit on iOS and OS X, and modern 3D APIs.
Tag: spam
Blog
Spammers Start Using Wildcard DNS
In his now-famous, A Plan for Spam, Paul Graham wrote:
… the spam of the future will probably look something like this:
Hey there. Thought you should check out the following:
http://www.27meg.com/foo because that is about as much sales pitch as content-based filtering will leave the spammer room to make. (Indeed, it will be hard even to get this past filters, because if everything else in the email is neutral, the spam probability will hinge on the url, and it will take some effort to make that look neutral.
Tag: swift
Blog
SwiftUI errors with any View vs some View
Make sure that your SwiftUI View-returning methods return some View, not any View.
Tag: swiftui
Blog
SwiftUI errors with any View vs some View
Make sure that your SwiftUI View-returning methods return some View, not any View.
Tag: sysadmin
Blog
Network Not Starting on Migrated Virtual Machines
If you’ve recently migrated a Ubuntu virtual machine file from one computer to another, or from one virtualization product to another, you might have discovered that networking inside the VM was no longer working.
As described in this Parallels KB article, what’s probably happened is that the random MAC address generated by the virtualization host has changed. The file: /etc/udev/rules.d/70-persistent-net.rules contains a record of the matching MAC address from the previous host.
Blog
Explicit Congestion Notification (ECN) - Firewall Problems
I’ve just spent the afternoon trying to get a simple TCP connection established.
The story is that I was configuring Nagios to check some HTTP services that are behind a Cisco PIX firewall. Nagios kept on getting timeout errors – when I tried by hand with telnet, I was getting the same problem, but only from the machine running Nagios. After setting up some logging on the firewall, I could see lines like:
Tag: technology
Blog
Magnatune are not vandals
Tim Bray recently likened MP3 encoding of music to Vandalism, and again made the point in more detail when discussing a New York Times article about online music purchasing.
While I agree that 128Kbps MP3s are not really up to scratch, it's worth noting that at least one online music vendor, Magnatune, lets you download your music in a number of different formats, including two lossless formats, and a couple of higher-than-usual-quality lossy formats.
Blog
Pervasive OFDM
Reading this article on Wireless USB, prompted me to think about just how pervasive the RF modulation known as OFDM is becoming.
I'm someone who pretty much has to know how something works, once it enters my consciousness. So, in mid-2000, while researching Australia's chosen form of digital TV, Digital Video Broadcasting - Terrestrial (DVB-T), I discovered a fascinating form of RF modulation, known as Orthogonal Frequency Division Multiplexing (OFDM).
Tag: text
Blog
Implementing Structured Text
I’ve started to implement my structured text ideas as PHP code.
Currently it handles levels of indenting Python-style, and uses them to determine nesting of lists and heading levels.
This allows me to do things like:
Have individual list items.
Some of which can contain
sub-paragraphs like this one.
As well as nested lists,
like this.
This section includes some gratuitous code:
for (int i = 0; i < 10; i++)
{
sprintf("i: %d", i);
} Some final closing remarks would go just about here.
Blog
Thoughts on Structured Text
What do I really want from structured text for a CMS?
My wish list, in a rough order of importance:
The ability to just type normal text and get paragraphs and probably line breaks (not that I use them often).
Lists–I tend to organize my thoughts in lists – often nested. So ideally lists should be nestable. It would be great if list items could contain whole multiple paragraphs too.
Tag: tvapp
Blog
Interlacing and double-buffering
Having discovered that while everything was working quite well for MPEG content in ‘film mode’, like the feature film on a DVD, I hadn’t really tried things with stuff in interlaced mode. Things like the ‘making of’ programmes on DVDs tend to have been made for television, and contain frames made up of two fields that may have movement between them.
The end result was a horrible juddering, where the fields were sometimes being played in reverse order.
Blog
Thermal Problems
For a while now, the power supply has been heating up quite a bit. It seemed as though insufficient air was being pulled through the power supply by its fan.
It turns out the the problem was the positioning of the PSU and its fan relative to the heatsink of the CPU. The fan was positioned exactly level with the heatsink at a distance of about 12mm. Instead of air being sucked into the PSU and out its vents at the other end, I believe this was causing air to circulate between the middle of the fan and the outside of the fan; needless to say, it was getting fairly hot inside there.
Blog
Infra-red Remote
Having built a simple serial infra-red receiver compatible with the LIRC project, some time ago, I finally got around to configuring it and testing it in the TVapp. It’s all working nicely with an old Sony remote that was lying around.
Blog
Comparing mplayer and VideoLAN
In trying to get mplayer to play pause-free, I decided to have a look at VideoLAN. Having perused the main loop in mplayer, while trying to figure out my timing problems, I’d seen that it’s code’s not pretty :-). Looking through the VideoLAN code, and looking at the development documentation shows me that the VideoLAN code is more approachable.
I’ve now got the VideoLAN client (vlc) running on the TVapp, but not without some hassles.
Blog
Interlace Problems
A lot of the problems getting smooth, quality, TV output from the Trident have revolved around the fact that television timing is interlaced. It looks as though no-one has really tried to use the Trident Xv driver in an interlaced mode.
The problems I’ve had are:
Initially all video was stretched out vertically to twice the correct height. After some digging I found a register bit named MC Interlace Display, that fixed that.
Blog
Vertical Retrace Revisited
Well it turns out there was another solution to eliminating tearing, while using no extra CPU time.
It turns out that the Trident display controller has built-in anti-tear support. Basically, this amounts to double-buffering where the controller lets you update the pointers to the next page to display, while not actually changing pages until the vertical retrace is in progress. It took quite a bit of messing around to actually get it to work, because the data-sheet was short on details, and somewhat misleading, but I’ve finally got a version of the Trident Xv driver that works tear-free with mplayer.
Blog
The Vertical Retrace Problem
The essential problem of trying to play a video stream correctly on TV in a tear-free and jump-free way is to synchronize the delivery of new frames with the vertical retrace period; the time around the vertical sync pulse when the monitor is moving the beam from the bottom back to the top of the screen.
So far my attempt at achieving this has been to hack my video card’s X11 XVideo driver to sit in a polling loop until the bit in the video controller registers indicates that retrace is in progress.
Blog
TVapp Project Status
As at 20-Nov-2002:
The first milestone for me, is to be able to sit down and watch through a whole DVD without having any noticable problems. I don’t necessarily need a remote control, or anything fancy, but I need to be able to forget about my creation enough to enjoy the film.
To that end, the current remaining obstacles are:
the Pioneer DVD is really quite noisy. The DVD-116 seems not to slow down in response to using the hdparm utility with the -E parameter.
Blog
Weblog
In order to keep a track of the progress of the TVapp PVR project, and other stuff, I need a weblog that can help me keep track of, and organize, my thoughts.
I’ve been sitting paralyzed on this one for a couple of months now, trying to work out just the right database model that fits my plans for how I believe it should work. I want some of it to be organized hierarchically, outline style, and other parts to be more like a traditional weblog with small, quick posts.
Blog
TVapp Software
The software components of the TVapp currently consist of:
Linux Terminal Server Project for network booting and NFS mounting of all persistent volumes (the TVapp has no hard-disk),
mplayer for playing the MPEG-2 streams from the server and DVD,
XFree86 and the Trident CyberBlade driver for video output. I’m currently in the process of patching the Trident driver to correctly handle XVideo overlays in interlaced modes.
Currently planned are:
Linux Infra-Red Controller for IR control,
Blog
TVapp Hardware
The TVapp hardware currently consists of:
Celeron II 1.1GHz with 64MB RAM,
MSI MS-6368 motherboard with on-board Trident video and 10/100 LAN,
Pioneer DVD-116/2 DVD-ROM drive,
custom VGA-composite PAL converter board,
19" rack-mount 2U case,
AOpen Micro-ATX power supply.
Also planned are:
Infra-Red receiver for LIRC use,
Noritake 128x32 graphics vacuum fluorescent display (VFD) for menus and status display,
several push-buttons to go with the display.
Tag: ubuntu
Blog
Network Not Starting on Migrated Virtual Machines
If you’ve recently migrated a Ubuntu virtual machine file from one computer to another, or from one virtualization product to another, you might have discovered that networking inside the VM was no longer working.
As described in this Parallels KB article, what’s probably happened is that the random MAC address generated by the virtualization host has changed. The file: /etc/udev/rules.d/70-persistent-net.rules contains a record of the matching MAC address from the previous host.
Tag: wallpapers
Blog
Snowflakes on a Razer Blade
The magnificent set of snowflake photos by Russian photographer Alexey Kljatov (recently featured by kottke.org) make for some wonderful desktop images. Michael and I have both just recently updated our desktop images to these snowflake macros.
Michael’s Razer Blade features an 800x640 display as the trackpad. A resized snowflake makes an ideal trackpad background.
Pro Tip: If you’re trying to turn one of these images into a 16:9 or 16:10 wallpaper, Photoshop’s Content-aware Fill (Shift+F5) is your best friend.
Tag: web
Blog
The People's Search Service
Jason Fried asks “Would you pay $5/month for Google if it wasn’t free”?
Dave Winer says “Clone the Google API”.
I’d like to join those together and ask “Would you pay $80/month to own a part of the infrastructure that powered a free implementation of the Google API”? In other words, rent a dedicated (low-end) server from the likes of Layered Technologies, or EV1Servers, and use it to run a distributed part of the crawling, indexing, or querying part of a full-on search engine.
Blog
Spammers Start Using Wildcard DNS
In his now-famous, A Plan for Spam, Paul Graham wrote:
… the spam of the future will probably look something like this:
Hey there. Thought you should check out the following:
http://www.27meg.com/foo because that is about as much sales pitch as content-based filtering will leave the spammer room to make. (Indeed, it will be hard even to get this past filters, because if everything else in the email is neutral, the spam probability will hinge on the url, and it will take some effort to make that look neutral.
Blog
The ongoing Effect
I've been ongoing'ed, or is that Tim'ed – the ongoing version of being Slashdotted. The main difference is the smaller number of visitors, and the fact they're an even more geeky bunch (so far they all use Firefox or Safari).
Anyway, the link in question came from Tim Bray's Genx page. If you're looking for a way to generate well-formed XML from C/C++, and don't want to sprinkle your code with printfs, or equivalent, then check out Genx.
Blog
Refactoring CSS - the need for a testing tool
Several times over the last couple of weeks, I've found myself refactoring CSS – making changes to simplify and group rules, but with the aim of not changing the appearance at all. To test my work, I've been taking screen shots and swapping backwards and forwards to look for differences.
It suddenly struck me that what I really need is a CSS/HTML-specific diff tool. One that can take some CSS and some specific HTML, work out all the borders, margins, placements, etc.
Blog
Google and Page Titles
A couple of recent weblog posts, at Microdoc News and Virtuelvis, have echoed something I've been meaning to write about for a while – that Google makes such heavy use of a page's contents when indexing a site.
For a long time this site had a PageRank of zero, although for a few days now, it's been four. What I noticed was that, despite have a PR of zero, and being linked from a vanishingly small number of other places, my articles were often turning up in the first page of Google results for two-word queries containing words from my article titles.
Blog
Zeldman presents: Designing With Web Standards
Recently, a bright orange book, with a beanied man on the front cover, arrived on my front verandah. I'm referring, of course, to Jeffrey Zeldman's new book, Designing With Web Standards, and the beanied man is none other than Zeldman himself. Forthwith, my mini-review of his book:
I wasn't quite sure what to expect from this book – all I knew was that it had sold out it's first printing, before I could get my hands on a copy.
Blog
Echo - an emergent syndication format
I've recently been playing around with RSS – first by trying a few readers, then by setting up my own feed. I wasn't entirely happy with any of the readers I tried, so I've been building my own to more closely match my own needs, and to learn about RSS issues along the way.
It's pretty clear that everybody has a different idea about the semantics of any given version of RSS.
Tag: web2.0
Blog
The People's Search Service
Jason Fried asks “Would you pay $5/month for Google if it wasn’t free”?
Dave Winer says “Clone the Google API”.
I’d like to join those together and ask “Would you pay $80/month to own a part of the infrastructure that powered a free implementation of the Google API”? In other words, rent a dedicated (low-end) server from the likes of Layered Technologies, or EV1Servers, and use it to run a distributed part of the crawling, indexing, or querying part of a full-on search engine.
Tag: windows
Tag: wireless
Blog
Pervasive OFDM
Reading this article on Wireless USB, prompted me to think about just how pervasive the RF modulation known as OFDM is becoming.
I'm someone who pretty much has to know how something works, once it enters my consciousness. So, in mid-2000, while researching Australia's chosen form of digital TV, Digital Video Broadcasting - Terrestrial (DVB-T), I discovered a fascinating form of RF modulation, known as Orthogonal Frequency Division Multiplexing (OFDM).
Tag: xcode
Blog
SwiftUI errors with any View vs some View
Make sure that your SwiftUI View-returning methods return some View, not any View.