In this age of tiny computer speakers, or worse - laptop speakers, it's easy to forget just how good music can sound in a decent set of headphones.
I must be a bit of an addict as over the years the headphone collection has grown to more than ten pairs. While you generally get what you pay for, it's not always the case.
There's a bit of a balance to be struck between comfort and quality. When walking (where I listen to podcasts) I use either a little Bose on-ear pair or the Apple in-ear headphones - although I don't like the noise I hear as the cord moves around.
At my computer I've ended up using a Sennheiser HD 212Pro which I find very comfortable and pleasant despite a pronounced bass boom.
On the podcast front, I was a dedicated listener to Leo Laporte's TWIT network but the ads have grown to be so long as to sometimes go for five minutes or more. I'm also finding the density of useful information and unique insight has dropped. They do a great job and it must be hard to keep up the pace.
This year, 2011, I've discovered Dan Benjamin's 5by5 podcasts. I'm addicted to Hypercritical with John Siracusa and Talk Show with John Gruber. Host Dan Benjamin is a great host and sensitive interviewer, further he clearly cares about audio quality. Dan sounds great and chastises guests when their audio breaks up (I'm looking at you Gruber).
Dan has kindly published details of the equipment he uses and when he raved about the Sony MDR-7506 for just US$85 I thought I'd track down a pair. Foolishly, my first thought is I'd visit the local Sony Centre, imagining it would be like an Apple Store with every thing they make. The Sony store looks like an Apple store without any customers. They told me that the 7506 is obsolete and sold me the nearest thing: MDR-ZX500. While comfortable, they are disappointing lacking sparkle and I was soon back to the 212Pros.
In a Twitter exchange, Dan urged me to get the originals and today they arrived.
I really like the MDR-7506 headphones, wide response, smooth low end, sparkling high end response. They are comfortable and the curly cord is convenient (I often run over the long Sennheiser cord with my chair).
Here in Australia I ended up paying AU$167 (including fast shipping) via eBay seller onlyonline.
Thursday, December 29, 2011
Tuesday, December 27, 2011
Shed visit from VK3ASE
Dave came to check out the shed. Unfortunately during coffee he was struck by a car...
Seems OK now.
Incidentally, WSPR on 20m is the busiest I've seen it:
Incidentally, WSPR on 20m is the busiest I've seen it:
Monday, December 26, 2011
Apple Lion Internet recovery a good thing
It used to be that I was in a tiny minority who used a Mac. I've always regarded this as a competitive advantage - I got on with my work while others fought with viruses, weird behaviour and a generally hostile environment.
Something's changed and a few years ago fellow programmers all switched to Macs, now this has broadened to the extended family too.
One potential drawback is that I'm the tech support "go to" guy.
A sister-in-law, who's never used a Mac, recently went wild and purchased a second hand 17 inch Macbook Pro. She used it for a day and then dropped it which killed the hard drive. Very upsetting.
She left it with me on Xmas day and I've just had the pleasant experience of using Apple's Lion Internet recovery feature.
Lion has a recovery partition on the boot drive which lets a tech person do a disk utility Repair or even a clean install. In this case the drive was damaged and so by booting holding down Command-R and choosing a Wifi network, the machine downloads this software from Apple.
In the future, when most machines out in daily use have this feature, it will be fantastic for front line support people - in the past we've had to build up a collection of software CDs for every different model.
I replaced the damaged drive with an old drive I had lying around. Turned out it contained Ubuntu which booted up and looked great. After re-formatting the drive, the install takes about half an hour.
Something's changed and a few years ago fellow programmers all switched to Macs, now this has broadened to the extended family too.
One potential drawback is that I'm the tech support "go to" guy.
A sister-in-law, who's never used a Mac, recently went wild and purchased a second hand 17 inch Macbook Pro. She used it for a day and then dropped it which killed the hard drive. Very upsetting.
She left it with me on Xmas day and I've just had the pleasant experience of using Apple's Lion Internet recovery feature.
Lion has a recovery partition on the boot drive which lets a tech person do a disk utility Repair or even a clean install. In this case the drive was damaged and so by booting holding down Command-R and choosing a Wifi network, the machine downloads this software from Apple.
In the future, when most machines out in daily use have this feature, it will be fantastic for front line support people - in the past we've had to build up a collection of software CDs for every different model.
I replaced the damaged drive with an old drive I had lying around. Turned out it contained Ubuntu which booted up and looked great. After re-formatting the drive, the install takes about half an hour.
Friday, December 23, 2011
Elecraft KX3 is coming
A new ham radio is about to become available and like too many others, I'm waiting to find out the price and place my order. The Elecraft KX3 looks like a worthy successor to the popular Yaesu FT-817 for portable low power operation.
This radio covers 160-6 meters, power 10W, weighs 0.7kg, and can draw as little as 150mA on receive.
Elecraft have said that they plan to start taking orders in December with delivery in February. As I write, December is running out rapidly.
There is an active Google group with over a thousand members who are currently all asking if there's any updates yet. Actually, the conversation turned amusing yesterday with people joking that they'd received theirs yesterday and others offering second hand units for sale. Elecraft's Wayne Burdick N6KR is chipping in every now and then to politely answer every question but the big one.
I can't remember seeing so much excitement before the release of a ham radio product before. Merry Xmas Elecraft, now finish it off and we can all take a break.
Elecraft are so quaint. I love how they've configured their Apache web server so we can view directories.
Update
Just placed my order on 28-December.
This radio covers 160-6 meters, power 10W, weighs 0.7kg, and can draw as little as 150mA on receive.
Elecraft have said that they plan to start taking orders in December with delivery in February. As I write, December is running out rapidly.
There is an active Google group with over a thousand members who are currently all asking if there's any updates yet. Actually, the conversation turned amusing yesterday with people joking that they'd received theirs yesterday and others offering second hand units for sale. Elecraft's Wayne Burdick N6KR is chipping in every now and then to politely answer every question but the big one.
I can't remember seeing so much excitement before the release of a ham radio product before. Merry Xmas Elecraft, now finish it off and we can all take a break.
Elecraft are so quaint. I love how they've configured their Apache web server so we can view directories.
Update
Just placed my order on 28-December.
Huge archive of scanned 73 Magazine
Stephen, VK2BLQ, sent around an email pointing to a great archive of scanned issues of a popular ham radio magazine from my childhood, "73 Amateur Radio".
They come up in a rather strange order, like all the Decembers together, but they are high resolution scans saved as PDFs so perfect for reading on an iPad for inspiration.
It's a great way to see the march of technology from 1961 through to 2003.
Early editions are valve technology, later there are hybrid rigs with solid state drive to a valve final. Gradually digital frequency displays creep in and there's a marvellous time when having an LED is a feature worth advertising.
There's lots of ads featuring girls with big hair caressing equipment.
This collection, for me, represents what may be a golden age, before everything in electronics just turns into computer chips surrounded by surface mount components.
A few of the home brew group seemed interested in grabbing the set for later viewing so I wrote a little python script to download them from archive.org to share around. (I think I'm being throttled but it's going pretty well).
#!/usr/bin/python
"""
Download pdfs of 73 magazine.
Items at: http://www.archive.org/download/73-magazine-1968-09/09_September_1968.pdf
"""
import os
import urllib2
MONTHS = ('January', 'February', 'March', 'April', 'May', 'June',
'July', 'August', 'September', 'October', 'November', 'December')
START_YEAR = 1961
END_YEAR = 2003
OUTPUT_DIR = "73 Magazine"
MISSING = ('73 Magazine/73-Magazine-1975_11.pdf',
'73 Magazine/73-Magazine-1975_12.pdf',)
def main():
if not os.path.exists(OUTPUT_DIR):
os.mkdir(OUTPUT_DIR)
for year in range(START_YEAR, END_YEAR + 1):
for month in range(1,13):
monthName = MONTHS[month - 1]
fileName = "%s/73-Magazine-%d_%d.pdf" % (OUTPUT_DIR, year, month)
if not os.path.exists(fileName) and fileName not in MISSING:
editionString = "%d-%02d/%02d_%s_%d" % (year, month, month, monthName, year)
url = "http://www.archive.org/download/73-magazine-%s.pdf" % editionString
print("Downloading: %s..." % url)
print("To: %s" % fileName)
pdfData = urllib2.urlopen(url).read()
outFile = open(fileName, "wb")
outFile.write(pdfData)
outFile.close()
else:
print("Skipping: %s" % fileName)
if __name__ == "__main__":
main()
If you stop the script and re-start it, it will not re-download any that it has. Otherwise it's pretty basic stuff.
Thanks archive.org! Look out for the ladies with tech:
They come up in a rather strange order, like all the Decembers together, but they are high resolution scans saved as PDFs so perfect for reading on an iPad for inspiration.
It's a great way to see the march of technology from 1961 through to 2003.
Early editions are valve technology, later there are hybrid rigs with solid state drive to a valve final. Gradually digital frequency displays creep in and there's a marvellous time when having an LED is a feature worth advertising.
There's lots of ads featuring girls with big hair caressing equipment.
This collection, for me, represents what may be a golden age, before everything in electronics just turns into computer chips surrounded by surface mount components.
A few of the home brew group seemed interested in grabbing the set for later viewing so I wrote a little python script to download them from archive.org to share around. (I think I'm being throttled but it's going pretty well).
#!/usr/bin/python
"""
Download pdfs of 73 magazine.
Items at: http://www.archive.org/download/73-magazine-1968-09/09_September_1968.pdf
"""
import os
import urllib2
MONTHS = ('January', 'February', 'March', 'April', 'May', 'June',
'July', 'August', 'September', 'October', 'November', 'December')
START_YEAR = 1961
END_YEAR = 2003
OUTPUT_DIR = "73 Magazine"
MISSING = ('73 Magazine/73-Magazine-1975_11.pdf',
'73 Magazine/73-Magazine-1975_12.pdf',)
def main():
if not os.path.exists(OUTPUT_DIR):
os.mkdir(OUTPUT_DIR)
for year in range(START_YEAR, END_YEAR + 1):
for month in range(1,13):
monthName = MONTHS[month - 1]
fileName = "%s/73-Magazine-%d_%d.pdf" % (OUTPUT_DIR, year, month)
if not os.path.exists(fileName) and fileName not in MISSING:
editionString = "%d-%02d/%02d_%s_%d" % (year, month, month, monthName, year)
url = "http://www.archive.org/download/73-magazine-%s.pdf" % editionString
print("Downloading: %s..." % url)
print("To: %s" % fileName)
pdfData = urllib2.urlopen(url).read()
outFile = open(fileName, "wb")
outFile.write(pdfData)
outFile.close()
else:
print("Skipping: %s" % fileName)
if __name__ == "__main__":
main()
If you stop the script and re-start it, it will not re-download any that it has. Otherwise it's pretty basic stuff.
Thanks archive.org! Look out for the ladies with tech:
iMac mysteriously shutting down
My wife's 24 inch iMac recently started exhibiting an annoying fault - it would, seemingly at random, just switch off.
Not a crash, not a shutdown, it just powered off.
My first thought was some sort of thermal problem tripping the power supply but oddly it did not seem related to the machine being busy or having been on for a long time.
I ran the Apple Hardware Test software which on very recent machines is built right in (you boot while holding the D key). On this machine it was on the second install CD, you insert the CD, reboot and hold the D key to get it.
Hardware test is a blast from past and uses the old System 7 GUI. I ran all the tests in the most thorough version, which takes hours, and everything came up clean.
The most reliable way to trigger a power off was rapidly launching a bunch of apps so that lots of icons were bouncing together. Very mysterious.
In the end the quickest way to trigger an instant power off was to run the iTunes visualizer. There's the clue - the graphics card.
The local Apple store took a few days and $600 to replace the graphics card and now we're good to go. I've never bought AppleCare, my Apple equipment has been fantastically reliable and the most likely problem - hard drive failure, I can fix myself. AppleCare on this machine would have been $268 per year so it would have broken even on this fault.
Not a crash, not a shutdown, it just powered off.
My first thought was some sort of thermal problem tripping the power supply but oddly it did not seem related to the machine being busy or having been on for a long time.
I ran the Apple Hardware Test software which on very recent machines is built right in (you boot while holding the D key). On this machine it was on the second install CD, you insert the CD, reboot and hold the D key to get it.
Hardware test is a blast from past and uses the old System 7 GUI. I ran all the tests in the most thorough version, which takes hours, and everything came up clean.
The most reliable way to trigger a power off was rapidly launching a bunch of apps so that lots of icons were bouncing together. Very mysterious.
In the end the quickest way to trigger an instant power off was to run the iTunes visualizer. There's the clue - the graphics card.
The local Apple store took a few days and $600 to replace the graphics card and now we're good to go. I've never bought AppleCare, my Apple equipment has been fantastically reliable and the most likely problem - hard drive failure, I can fix myself. AppleCare on this machine would have been $268 per year so it would have broken even on this fault.
Wednesday, November 30, 2011
Australian PV Solar Energy Exhibition
Today I visited the Australian PV Solar Energy Exhibition at Darling Harbour in Sydney.
There were a lot of Chinese PV Solar cell manufacturers on hand and it seems like wholesale prices are diving to an incredible 77 cents per watt (we pay around $5 per watt retail so there's a good margin somewhere).
Interestingly, polycrystalline panels seem to be almost as efficient as monocrystalline and the extra area due to them being rectangular may be the reason.
The gentlemen at Alco Battery Sales were very kind and patiently answered a bunch of questions I had.
Something seems to have gone wrong with the show's timeline and apparently about two-thirds of the Chinese exhibitors didn't get time to clear customs to allow them to attend so it was much smaller than planned.
Several of the manufacturers commented that the withdrawal of the NSW solar rebate scheme had impacted them in a very negative way along with the instability in Europe. Happily, Germany, which has the largest solar program remains strong.
The standout in the show for me was the LED lighting, which I believe will take off in the next twelve months.
Above is a demo showing an incandescent 40W bulb producing the same output as an LED replacement using less than a tenth of the power. LED lights last much longer and in summer there are also savings in the need for air-conditioning.
Awaiting approval are 240V bulb drop-in replacements, 12V AC halogen replacements and 240V fluorescent tube replacements (you remove and bypass the starter).
There were a lot of Chinese PV Solar cell manufacturers on hand and it seems like wholesale prices are diving to an incredible 77 cents per watt (we pay around $5 per watt retail so there's a good margin somewhere).
Interestingly, polycrystalline panels seem to be almost as efficient as monocrystalline and the extra area due to them being rectangular may be the reason.
The gentlemen at Alco Battery Sales were very kind and patiently answered a bunch of questions I had.
Something seems to have gone wrong with the show's timeline and apparently about two-thirds of the Chinese exhibitors didn't get time to clear customs to allow them to attend so it was much smaller than planned.
Several of the manufacturers commented that the withdrawal of the NSW solar rebate scheme had impacted them in a very negative way along with the instability in Europe. Happily, Germany, which has the largest solar program remains strong.
The standout in the show for me was the LED lighting, which I believe will take off in the next twelve months.
Above is a demo showing an incandescent 40W bulb producing the same output as an LED replacement using less than a tenth of the power. LED lights last much longer and in summer there are also savings in the need for air-conditioning.
Awaiting approval are 240V bulb drop-in replacements, 12V AC halogen replacements and 240V fluorescent tube replacements (you remove and bypass the starter).
Monday, November 28, 2011
A talk about setting up a small solar power system
At Sunday's Amateur Radio NSW Home Brew Group meeting I gave a talk about what I've learned about low voltage solar electricity systems.
My thanks to Peter, VK2EMU, for the opportunity to speak and to John, VK2ASU, for shooting the video.
If you find this interesting and want to know more there is a book "Small Solar" available for less than $3 from Amazon for the Kindle and in the Apple iBookstore for iPad.
My thanks to Peter, VK2EMU, for the opportunity to speak and to John, VK2ASU, for shooting the video.
If you find this interesting and want to know more there is a book "Small Solar" available for less than $3 from Amazon for the Kindle and in the Apple iBookstore for iPad.
Sunday, November 27, 2011
Back on WSPR on 20m but not on Windows
I have an MSI U-200 netbook that dual-boots Windows XP and Linux. For a long time I used Ubuntu but when I upgraded to 11.04 wireless networking wouldn't work and being unable to figure out the magic incantation decided to try Fedora.
There's no built WSPR for Fedora that I could find so I've been running it under Windows XP. Lots of people were spotting me (running under 5W from an ft-817) but I got no decodes of other stations at all. This morning I checked out the WSPR source and built it. All of a sudden I'm receiving lots of stations.
Ubuntu has been good to me but I found the switch to Unity a little premature and, quite frankly, Gnome 3 has all the good bits as far as I can tell and seems a lot more complete. It's weird that a desktop could ship without a simple way for a user to add a launcher to the dock (or whatever it's called).
Can't explain why I get no decodes on Windows. Perhaps the sound card is not right?
There's no built WSPR for Fedora that I could find so I've been running it under Windows XP. Lots of people were spotting me (running under 5W from an ft-817) but I got no decodes of other stations at all. This morning I checked out the WSPR source and built it. All of a sudden I'm receiving lots of stations.
Ubuntu has been good to me but I found the switch to Unity a little premature and, quite frankly, Gnome 3 has all the good bits as far as I can tell and seems a lot more complete. It's weird that a desktop could ship without a simple way for a user to add a launcher to the dock (or whatever it's called).
Can't explain why I get no decodes on Windows. Perhaps the sound card is not right?
Thursday, November 24, 2011
Learning iOS 5 programming with Paul Hegarty
When I need to do a bit of Cocoa programming I normally turn to the excellent books from Big Nerd Ranch. iOS 5 and Xcode 4.2 has changed normal practice quite substantially and I was struggling along trying to re-interpret the old code in the new environment.
A couple of days ago the latest videos of the Stanford computer science class covering iPad and iPhone App development turned up in iTunesU.
This course presented by Paul Hegarty is fantastic. It's a best case example of good teaching by a master of what he is presenting. Even the questions from the class are spot on.
I've just got to lecture 4 which took place the day after Steve Jobs died. Paul gives a nice tribute and talks about the years when he worked at NeXT and how Jobs valued the aesthetics of things so much that FMRI scans of iPhone users match up with them feeling love (rather than the expected addiction).
He ends each lecture with "if you have any questions... I'm here."
Update
I'm still ploughing through these lectures and continue to be super-impressed with Paul Hegarty's teaching style and overall knowledge. It's wonderful that Stanford feels comfortable to release lectures of such quality for free to the public - great stuff, a credit to everyone involved!
Humbly, I'd like to propose some constructive feedback:
Update
Eight months after this post, I have two apps in the store by me and am now a full time iOS developer for a major media company which publishes a large number of apps. I'm loving my work and continue to learn more each day about iOS programming.
A couple of days ago the latest videos of the Stanford computer science class covering iPad and iPhone App development turned up in iTunesU.
This course presented by Paul Hegarty is fantastic. It's a best case example of good teaching by a master of what he is presenting. Even the questions from the class are spot on.
I've just got to lecture 4 which took place the day after Steve Jobs died. Paul gives a nice tribute and talks about the years when he worked at NeXT and how Jobs valued the aesthetics of things so much that FMRI scans of iPhone users match up with them feeling love (rather than the expected addiction).
He ends each lecture with "if you have any questions... I'm here."
Update
I'm still ploughing through these lectures and continue to be super-impressed with Paul Hegarty's teaching style and overall knowledge. It's wonderful that Stanford feels comfortable to release lectures of such quality for free to the public - great stuff, a credit to everyone involved!
Humbly, I'd like to propose some constructive feedback:
- The slides are sometimes very wordy - fine when it's code, but often just descriptions that could be shortened.
- Sometimes it's hard to read the code shown in Xcode, it ends up being rather soft, perhaps there is a more video friendly font?
And, an Apple TV complaint. The damn thing over-scans and I can't find a way to turn it off. So I lose the menu bar on my TV. I know it's there in the movie if I look in iTunes but you can't see it on the TV. The overscan is not in my TV.
Thanks Paul Hegarty, you are doing great work - thanks for sharing.
To be specific, here's a wordy slide example:
Update
Eight months after this post, I have two apps in the store by me and am now a full time iOS developer for a major media company which publishes a large number of apps. I'm loving my work and continue to learn more each day about iOS programming.
Tuesday, November 22, 2011
HP Laserjet 1022n prints every second page
A note to myself really. We have an old but reliable HP Laserjet 1022n laser printer but ever since Snow Leopard it has been printing every second page, with a blank page in between. I used a generic CUPS driver but the quality is very poor.
I've found a solution for me, that might work for others. If you set the printer's resolution to 600dpi it seems to print all pages and the quality is good. Here's how the setting looks in the print dialog box:
I've saved this as a preset so it comes up by default every time and has worked for me for several months now. This problem has many threads in Apple's support forums and HP's boards so I'm not alone. Hope it helps someone else.
I've found a solution for me, that might work for others. If you set the printer's resolution to 600dpi it seems to print all pages and the quality is good. Here's how the setting looks in the print dialog box:
I've saved this as a preset so it comes up by default every time and has worked for me for several months now. This problem has many threads in Apple's support forums and HP's boards so I'm not alone. Hope it helps someone else.
Sunday, November 20, 2011
QRP Portable at Fisherman's Paradise
Just returned from a weekend away, four hours south of Sydney at Fisherman's Paradise. Here's my QRP portable station:
My antenna was a random wire, about 6m long, thrown to a tree from the balcony.
The ZM-2ATU antenna tuner does a fine job with a random wire and a counterpoise and never fails to tune up easily.
Fine copy on the WIA Sunday broadcast on 80m, 40m but best on 30m. I called back on 30m and while the VK2WI station couldn't make me out a few other stations relayed my presence. VK2BGU, VK2BGL, VK2JE and VK2HL were all very strong to me.
Local birdlife came to listen in and stayed for some snacks:
Back in Sydney and a big week ahead.
My antenna was a random wire, about 6m long, thrown to a tree from the balcony.
The ZM-2ATU antenna tuner does a fine job with a random wire and a counterpoise and never fails to tune up easily.
Fine copy on the WIA Sunday broadcast on 80m, 40m but best on 30m. I called back on 30m and while the VK2WI station couldn't make me out a few other stations relayed my presence. VK2BGU, VK2BGL, VK2JE and VK2HL were all very strong to me.
Local birdlife came to listen in and stayed for some snacks:
After lunch we went for a walk among the mosquitoes and looked at the local boats.
Thursday, November 10, 2011
Insulated the metal shed roof for summer
The shed has been marvellous so far, but as foretold by mates Gerald and Ralph, the weak spot will be heat from the sun beating on the corrugated metal roof.
Indeed, when the sun is on the roof, it's like a radiator inside. I purchased R3 poly bats, which I had to split in half so they're around R1.5. Backed and held in place with masonite board. It now looks like this inside:
It's a pretty rough job but the effect is a huge improvement in comfort when the sun is beating down. Foolishly I went along with the offered skylight and of course this isn't desirable in full sun so I've placed the 65W solar panel over it and it covers it pretty well.
I could go on and insulate the walls but wood is a pretty good insulator already so I think the most important job has been done.
Indeed, when the sun is on the roof, it's like a radiator inside. I purchased R3 poly bats, which I had to split in half so they're around R1.5. Backed and held in place with masonite board. It now looks like this inside:
It's a pretty rough job but the effect is a huge improvement in comfort when the sun is beating down. Foolishly I went along with the offered skylight and of course this isn't desirable in full sun so I've placed the 65W solar panel over it and it covers it pretty well.
Friday, October 21, 2011
Published an ebook called "Small Solar"
Meeting my objective of having the new ham shack powered totally from solar energy proved to be a little less straight forward than I had imagined.
Along the way, I did a lot of research, talked to some very knowledgable people, visited some shops, attended an expo, and did some experimentation of my own.
An outcome of all this is that I've collected all my notes on solar panels, charge controllers, batteries and the sun; and published them as a low cost (under $3) electronic book.
This post is about how I made the book and got it out there.
I wanted to make the book available in the Apple iBookstore and Amazon Kindle. If you are not American it's difficult to publish through Apple's book store, basically you have to get an IRS (tax) number and that seems to involve sending your passport to Texas. They strongly suggest you go through an aggregator, as I already have a paper book on Lulu that was the obvious choice.
If you upload an ePub book, Lulu can distribute to Barnes & Noble Nook as well as Apple.
The book was created from the ePub template in Apple Pages. Pages can use the first page as the cover art but everywhere I've published they basically get you to make a cover design anyhow and ignore that embedded cover.
While Lulu can allocate you one of their ISBNs, your book is then listed as being published by Lulu, so I paid the $55 + $40 to get my own Australian ISBN (the $55 is a one time fee).
Uploading to Lulu is very smooth but I'd make your cover locally as a Jpeg rather than using their simple web-based tool. Lulu has yet to get the book into the iBookstore or B&N even though weeks have gone by. No idea what the hold up is but I'm not alone. Looks like there's a blockage somewhere at the moment.
My book was rejected the first time because I neglected to title the book in the form "Title: subtitle text here exactly as on the isbn". 24 hours later that was sorted.
Customers could buy the book on Lulu, download the ePub, and drag it to iTunes but that's hardly ideal and I look forward to seeing it in the actual store.
To publish to the Kindle store on Amazon you go to Kindle Direct Publishing (KDP). KDP will accept books in Word, ePub, Text, Mobipocket (.mobi), HTML, PDF, and RTF. I uploaded my ePub but Amazon's converter lost the table of contents and either lost or mangled images.
You can download some useful tools from amazon: Kindle Previewer App and KindleGen.
I found that the unspeakably ugly Calibre did a better job of converting ePub to .MOBI and I particularly like the ebook-convert command line tool which makes it as easy as this:
The output looks pretty good on a small greyscale Kindle although there are things to learn about writing for a small screen, tables aren't supported and titles need to be short to avoid unsightly wrapping.
I'd be charmed if someone would buy a copy. It's available now on Amazon and Lulu. Hopefully it will end up on iBookstore eventually.
Update
I'm happy to report that the book is now available in the iBookstore.
I found it on the iPad and it looks good. (Pardon my excitement). Nook is still pending at this point.
Along the way, I did a lot of research, talked to some very knowledgable people, visited some shops, attended an expo, and did some experimentation of my own.
An outcome of all this is that I've collected all my notes on solar panels, charge controllers, batteries and the sun; and published them as a low cost (under $3) electronic book.
This post is about how I made the book and got it out there.
I wanted to make the book available in the Apple iBookstore and Amazon Kindle. If you are not American it's difficult to publish through Apple's book store, basically you have to get an IRS (tax) number and that seems to involve sending your passport to Texas. They strongly suggest you go through an aggregator, as I already have a paper book on Lulu that was the obvious choice.
If you upload an ePub book, Lulu can distribute to Barnes & Noble Nook as well as Apple.
The book was created from the ePub template in Apple Pages. Pages can use the first page as the cover art but everywhere I've published they basically get you to make a cover design anyhow and ignore that embedded cover.
While Lulu can allocate you one of their ISBNs, your book is then listed as being published by Lulu, so I paid the $55 + $40 to get my own Australian ISBN (the $55 is a one time fee).
Uploading to Lulu is very smooth but I'd make your cover locally as a Jpeg rather than using their simple web-based tool. Lulu has yet to get the book into the iBookstore or B&N even though weeks have gone by. No idea what the hold up is but I'm not alone. Looks like there's a blockage somewhere at the moment.
My book was rejected the first time because I neglected to title the book in the form "Title: subtitle text here exactly as on the isbn". 24 hours later that was sorted.
Customers could buy the book on Lulu, download the ePub, and drag it to iTunes but that's hardly ideal and I look forward to seeing it in the actual store.
To publish to the Kindle store on Amazon you go to Kindle Direct Publishing (KDP). KDP will accept books in Word, ePub, Text, Mobipocket (.mobi), HTML, PDF, and RTF. I uploaded my ePub but Amazon's converter lost the table of contents and either lost or mangled images.
You can download some useful tools from amazon: Kindle Previewer App and KindleGen.
I found that the unspeakably ugly Calibre did a better job of converting ePub to .MOBI and I particularly like the ebook-convert command line tool which makes it as easy as this:
$ ebook-convert Small\ Solar.epub Small\ Solar.mobi 1% Converting input to HTML... InputFormatPlugin: EPUB Input running on Small Solar.epub Parsing all content... 34% Running transforms on ebook... Merging user specified metadata... Detecting structure... Flattening CSS and remapping font sizes... Source base font size is 9.00000pt Removing fake margins... Cleaning up manifest... Trimming unused files from manifest... Trimming 'OPS/images/cover-image.png' from manifest Creating MOBI Output... 67% Creating MOBI Output Generating in-line TOC... Applying case-transforming CSS... Rasterizing SVG images... Converting XHTML to Mobipocket markup... Serializing images... Serializing markup content... Compressing markup content... Generating MOBI index for a book MOBI output written to Small Solar.mobi Output saved to Small Solar.mobi
The output looks pretty good on a small greyscale Kindle although there are things to learn about writing for a small screen, tables aren't supported and titles need to be short to avoid unsightly wrapping.
I'd be charmed if someone would buy a copy. It's available now on Amazon and Lulu. Hopefully it will end up on iBookstore eventually.
Update
I'm happy to report that the book is now available in the iBookstore.
Thursday, October 06, 2011
Arduino SD data logger with time stamp
I've been learning about powering my ham shack with solar power and have been working on logging battery voltage to get information about how my power budget is going. At first I used an Arduino's A/D to read the voltage and periodically send it out the USB serial port, but as the shed has no mains power the laptop was a major drain on the battery itself. Yes, measuring was really altering the experiment.
An SD Shield Plus, purchased via eBay, has all the things you need for stand alone data logging. An SD slot, a battery backed clock, and even a bit of non-volatile utility ram.
My Arduino is a slightly older model, the Diecimila and I found that as soon as I called SD.begin() the device would reset. It turns out that the SD library code uses more ram than is available in the older models.
The new Arduino Uno looks like a good improvement. Aside from a more spacious Atmel chip, the USB interface is a processor itself and can be set as a HID device which could be handy. I ordered a couple of Uno's from Little Bird Electronics, and they shipped within minutes, but I still couldn't wait and went to Jaycar to pick up an interesting Uno clone called "Eleven" made by Freetronics.
I hacked together the sample code to write a log file to the SD card with a date time stamp from the clock chip in a format that a spreadsheet will parse. It reads three of the analog inputs and writes a line to the file every ten seconds. Here's the code for future reference:
/*
SD card datalogger
by Tom Igoe
hacked by Peter Marks to write time stamps
This example code is in the public domain.
*/
#include <SD.h>
// For the SD Shield Plus
const int chipSelect = 10;
// This is to talk to the real time clock
#include "Wire.h"
#define DS1307_I2C_ADDRESS 0x68 // This is the I2C address
// Global Variables
int i;
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
void setup()
{
Wire.begin();
Serial.begin(9600);
Serial.print("Initializing SD card...\n");
// make sure that the default chip select pin is set to
// output, even if you don't use it:
pinMode(chipSelect, OUTPUT);
Serial.print("chipSelect set to output\n");
// see if the card is present and can be initialized:
if (!SD.begin(chipSelect))
{
Serial.println("Card failed, or not present\n");
// don't do anything more:
return;
}
Serial.println("card initialized.\n");
}
void loop()
{
// make a string for assembling the data to log:
String dataString = getDateDs1307();
dataString += String(",");
// read three sensors and append to the string:
for (int analogPin = 0; analogPin < 3; analogPin++)
{
int sensor = analogRead(analogPin);
dataString += String(sensor);
if (analogPin < 2)
{
dataString += ",";
}
}
// open the file. note that only one file can be open at a time,
// so you have to close this one before opening another.
File dataFile = SD.open("datalog.csv", FILE_WRITE);
// if the file is available, write to it:
if (dataFile)
{
dataFile.println(dataString);
dataFile.close();
// print to the serial port too:
Serial.println(dataString);
}
// if the file isn't open, pop up an error:
else
{
Serial.println("error opening datalog.csv");
}
delay(1000 * 10);
}
// Gets the date and time from the ds1307 and return
// result in a format a spreadsheet can parse: 06/10/11 15:10:00
String getDateDs1307()
{
// Reset the register pointer
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.send(0x00);
Wire.endTransmission();
Wire.requestFrom(DS1307_I2C_ADDRESS, 7);
// A few of these need masks because certain bits are control bits
second = bcdToDec(Wire.receive() & 0x7F);
minute = bcdToDec(Wire.receive());
hour = bcdToDec(Wire.receive() & 0x3F);
dayOfWeek = bcdToDec(Wire.receive());
dayOfMonth = bcdToDec(Wire.receive());
month = bcdToDec(Wire.receive());
year = bcdToDec(Wire.receive());
String dataString = "";
dataString += Print2Digit(dayOfMonth);
dataString += String("/");
dataString += Print2Digit(bcdToDec(month));
dataString += String("/"); // Y2k1 bug!
dataString += Print2Digit(bcdToDec(year));
dataString += String(" ");
dataString += Print2Digit(hour);
dataString += String(":");
dataString += Print2Digit(minute);
dataString += String(":");
dataString += Print2Digit(second);
return dataString;
}
// Convert binary coded decimal to normal decimal numbers
byte bcdToDec(byte val)
{
return ( (val/16*10) + (val%16) );
}
String Print2Digit(byte Val)
{
String dataString = "";
if (Val < 10)
{
dataString = "0";
}
dataString += String(Val, DEC);
return dataString;
}
The output file looks like this:
06/10/11 15:36:16,555,489,479
06/10/11 15:36:18,461,427,438
06/10/11 15:36:19,419,401,414
06/10/11 15:36:21,397,387,404
06/10/11 15:36:22,394,389,403
06/10/11 15:36:23,380,375,393
06/10/11 15:36:25,386,383,399
06/10/11 15:36:26,382,380,396
06/10/11 15:36:28,380,378,395
06/10/11 15:36:29,387,385,400
Here's a few days of data. Today was partially cloudy but the battery was re-charged in the end.
Plotted with python and matplotlib with this:
#!/usr/local/bin/python
import datetime
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import csv
INFILENAME = 'datalog.csv'
VOLTSCALE = 665.0 / 13.7
def main():
datareader = csv.reader(open(INFILENAME,'r'), delimiter=',')
dates = []
points = []
for row in datareader:
if len(row) > 1:
#Converts str into a datetime object. 08/10/11 12:23:12
dates.append(datetime.datetime.strptime(row[0],'%d/%m/%y %H:%M:%S'))
volts = float(row[1]) / VOLTSCALE
points.append(volts)
fig = plt.figure()
plt.plot(dates, points)
plt.title("Battery Voltage over several days")
plt.ylabel('Battery Volts')
fig.autofmt_xdate()
plt.ylim(ymin=8)
plt.show()
plt.savefig('voltgraph')
if __name__ == "__main__":
main()
An SD Shield Plus, purchased via eBay, has all the things you need for stand alone data logging. An SD slot, a battery backed clock, and even a bit of non-volatile utility ram.
My Arduino is a slightly older model, the Diecimila and I found that as soon as I called SD.begin() the device would reset. It turns out that the SD library code uses more ram than is available in the older models.
The new Arduino Uno looks like a good improvement. Aside from a more spacious Atmel chip, the USB interface is a processor itself and can be set as a HID device which could be handy. I ordered a couple of Uno's from Little Bird Electronics, and they shipped within minutes, but I still couldn't wait and went to Jaycar to pick up an interesting Uno clone called "Eleven" made by Freetronics.
I hacked together the sample code to write a log file to the SD card with a date time stamp from the clock chip in a format that a spreadsheet will parse. It reads three of the analog inputs and writes a line to the file every ten seconds. Here's the code for future reference:
/*
SD card datalogger
by Tom Igoe
hacked by Peter Marks to write time stamps
This example code is in the public domain.
*/
#include <SD.h>
// For the SD Shield Plus
const int chipSelect = 10;
// This is to talk to the real time clock
#include "Wire.h"
#define DS1307_I2C_ADDRESS 0x68 // This is the I2C address
// Global Variables
int i;
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
void setup()
{
Wire.begin();
Serial.begin(9600);
Serial.print("Initializing SD card...\n");
// make sure that the default chip select pin is set to
// output, even if you don't use it:
pinMode(chipSelect, OUTPUT);
Serial.print("chipSelect set to output\n");
// see if the card is present and can be initialized:
if (!SD.begin(chipSelect))
{
Serial.println("Card failed, or not present\n");
// don't do anything more:
return;
}
Serial.println("card initialized.\n");
}
void loop()
{
// make a string for assembling the data to log:
String dataString = getDateDs1307();
dataString += String(",");
// read three sensors and append to the string:
for (int analogPin = 0; analogPin < 3; analogPin++)
{
int sensor = analogRead(analogPin);
dataString += String(sensor);
if (analogPin < 2)
{
dataString += ",";
}
}
// open the file. note that only one file can be open at a time,
// so you have to close this one before opening another.
File dataFile = SD.open("datalog.csv", FILE_WRITE);
// if the file is available, write to it:
if (dataFile)
{
dataFile.println(dataString);
dataFile.close();
// print to the serial port too:
Serial.println(dataString);
}
// if the file isn't open, pop up an error:
else
{
Serial.println("error opening datalog.csv");
}
delay(1000 * 10);
}
// Gets the date and time from the ds1307 and return
// result in a format a spreadsheet can parse: 06/10/11 15:10:00
String getDateDs1307()
{
// Reset the register pointer
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.send(0x00);
Wire.endTransmission();
Wire.requestFrom(DS1307_I2C_ADDRESS, 7);
// A few of these need masks because certain bits are control bits
second = bcdToDec(Wire.receive() & 0x7F);
minute = bcdToDec(Wire.receive());
hour = bcdToDec(Wire.receive() & 0x3F);
dayOfWeek = bcdToDec(Wire.receive());
dayOfMonth = bcdToDec(Wire.receive());
month = bcdToDec(Wire.receive());
year = bcdToDec(Wire.receive());
String dataString = "";
dataString += Print2Digit(dayOfMonth);
dataString += String("/");
dataString += Print2Digit(bcdToDec(month));
dataString += String("/"); // Y2k1 bug!
dataString += Print2Digit(bcdToDec(year));
dataString += String(" ");
dataString += Print2Digit(hour);
dataString += String(":");
dataString += Print2Digit(minute);
dataString += String(":");
dataString += Print2Digit(second);
return dataString;
}
// Convert binary coded decimal to normal decimal numbers
byte bcdToDec(byte val)
{
return ( (val/16*10) + (val%16) );
}
String Print2Digit(byte Val)
{
String dataString = "";
if (Val < 10)
{
dataString = "0";
}
dataString += String(Val, DEC);
return dataString;
}
The output file looks like this:
06/10/11 15:36:16,555,489,479
06/10/11 15:36:18,461,427,438
06/10/11 15:36:19,419,401,414
06/10/11 15:36:21,397,387,404
06/10/11 15:36:22,394,389,403
06/10/11 15:36:23,380,375,393
06/10/11 15:36:25,386,383,399
06/10/11 15:36:26,382,380,396
06/10/11 15:36:28,380,378,395
06/10/11 15:36:29,387,385,400
Here's a few days of data. Today was partially cloudy but the battery was re-charged in the end.
#!/usr/local/bin/python
import datetime
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import csv
INFILENAME = 'datalog.csv'
VOLTSCALE = 665.0 / 13.7
def main():
datareader = csv.reader(open(INFILENAME,'r'), delimiter=',')
dates = []
points = []
for row in datareader:
if len(row) > 1:
#Converts str into a datetime object. 08/10/11 12:23:12
dates.append(datetime.datetime.strptime(row[0],'%d/%m/%y %H:%M:%S'))
volts = float(row[1]) / VOLTSCALE
points.append(volts)
fig = plt.figure()
plt.plot(dates, points)
plt.title("Battery Voltage over several days")
plt.ylabel('Battery Volts')
fig.autofmt_xdate()
plt.ylim(ymin=8)
plt.show()
plt.savefig('voltgraph')
if __name__ == "__main__":
main()
OMG Steve Jobs
"OMG Steve Jobs" was the SMS from my daughter. I'd been watching Google Reader only minutes before and it was clear this was set to be the biggest, and fastest spreading, story to date.
I feel like I felt in 1980 on hearing that John Lennon was killed.
News has evolved to be super-efficient in the last few years. A few friends and a few family sent SMSs, I chatted with others via instant messenger. Apple's home page was elegant.
I notice the image is called t_hero.png, but maybe that's normal.
The story is the lead everywhere.
Ironically, our prime minister, at today's "Jobs summit" made a statement and the US president quickly had something to say.
Nice of them to pass a "Jobs act" too.
There's some wonderful commentary starting to appear. I like Walt Mossberg's piece in particular.
I watched the iPhone 4S keynote yesterday, (thank goodness he held on until after that was over), Tim Cook did a fine job backed by a solid team. There was a downbeat feeling about the presentations, I wonder if they knew how close the end was, or perhaps they knew the wishful rumours of an iPhone 5 would mean they'd be unveiling something a little disappointing.
Even today, thirty years after Lennon's death, I wonder what he'd say about Occupy Wall Street. I, for one, will be thinking "What would Steve do" for a long time to come.
I feel like I felt in 1980 on hearing that John Lennon was killed.
News has evolved to be super-efficient in the last few years. A few friends and a few family sent SMSs, I chatted with others via instant messenger. Apple's home page was elegant.
I notice the image is called t_hero.png, but maybe that's normal.
The story is the lead everywhere.
Ironically, our prime minister, at today's "Jobs summit" made a statement and the US president quickly had something to say.
Nice of them to pass a "Jobs act" too.
There's some wonderful commentary starting to appear. I like Walt Mossberg's piece in particular.
I watched the iPhone 4S keynote yesterday, (thank goodness he held on until after that was over), Tim Cook did a fine job backed by a solid team. There was a downbeat feeling about the presentations, I wonder if they knew how close the end was, or perhaps they knew the wishful rumours of an iPhone 5 would mean they'd be unveiling something a little disappointing.
Even today, thirty years after Lennon's death, I wonder what he'd say about Occupy Wall Street. I, for one, will be thinking "What would Steve do" for a long time to come.
Wednesday, October 05, 2011
Open wire fed doublet antenna
Since moving the ham radio station to the new shed, which is located in the back corner of our block, it has become practical to use an open wire line feeder to my dipole.
I've often heard that the most versatile and efficient antenna is an open wire feeder to a doublet on the lowest band desired. This antenna can be then tuned to any band. I ordered some nice copper wire and spacers from TTS Systems. I'm using dipole centre pieces from Emtron which I like very much.
The open line runs from the shed out to the back yard. It's not quite as wonky as it looks below.
The wires pass through the wooden wall of the shed and straight in to a 4:1 balun and then to an antenna tuner.
I plan to re-jig things a bit and try to go direct into a balanced line antenna tuner to avoid the co-ax run in the shed.
TTS Systems were good to deal with and they dispatched quickly but I was disappointed to find that three of the spacers were faulty (missing centre hooks on one end) which seems like poor quality control given such a small order.
I've often heard that the most versatile and efficient antenna is an open wire feeder to a doublet on the lowest band desired. This antenna can be then tuned to any band. I ordered some nice copper wire and spacers from TTS Systems. I'm using dipole centre pieces from Emtron which I like very much.
TTS Systems were good to deal with and they dispatched quickly but I was disappointed to find that three of the spacers were faulty (missing centre hooks on one end) which seems like poor quality control given such a small order.
The dipole doesn't have enough space for 80m so it has substantial drooping ends in order to work on 80m. My plan is to replace these drooping ends with loading coils.
Update
I've cut the dipole for 40m and dispensed with the half size G5RV that's been my main antenna in recent months. I'll have to make other arrangements for 80m, perhaps some sort of end fed system.
It's hard to compare antennas on HF due to the incredible changes in conditions but it sounds good and very low noise to me.
Sunday, September 25, 2011
Audio for radio communication
Today at the ARNSW Home Brew meeting at dural, Mathew Magee, VK2YAP gave a talk about audio for radio communication. He spoke for about an hour and I've roughly edited it down to 17 minutes.
The noise in the background is heavy rain on the metal roof. Thanks so much to Mathew for giving permission for me to record the talk.
Friday, September 23, 2011
Lazy days at Port Stephens with dolphins
This week we took a couple of days out, during off season, north of Sydney at Port Stephens. The water must be very clean here as dolphins swim right up to the jetty:
We went on a "wave watching" boat trip and the dolphins like riding the "pressure wave" at the bow of the boat apparently for the fun of it:
While wandering around, I had a play with the new Instagram for iPhone.
During our time away, I did have to work but was able to do it via a 3G modem without any trouble.
The place we stayed was virtually empty. I took the UV-3R and listened in to the marine VHF channel 16 on 156.800 which was kind of fun.
We went on a "wave watching" boat trip and the dolphins like riding the "pressure wave" at the bow of the boat apparently for the fun of it:
While wandering around, I had a play with the new Instagram for iPhone.
It emulates bad analog film to good effect.
I spend a lot to get a lens that doesn't vignette and yet it is kind of nice.
This narrow focus effect doesn't work so well for me. It seems artificially abrupt.
During our time away, I did have to work but was able to do it via a 3G modem without any trouble.
The place we stayed was virtually empty. I took the UV-3R and listened in to the marine VHF channel 16 on 156.800 which was kind of fun.
Monday, September 19, 2011
UV-3R Torch with bonus VHF/UHF/FM SDR Radio
A new toy just arrived...
I bought via eBay out of Hong Kong and it turned up 9 days after I ordered, which seems excellent. Despite the box getting a bit of a bash, all was well inside.
This one came with a USB programming cable, Windows software, separate antennas for VHF and UHF, a soft case, charger and charging dock. It seems to work fine.
These units set an amazing low price point and while the quality of the plastic is not as good as a "name brand" rig, given the advanced technology inside, the UV-3R is leading to a lot of discussion and even modifications.
Check out:
While not quite a "gift", for AU$40 (+$15 postage), it's pretty cheap for a tiny transceiver with a state of the art software defined radio inside. The feature that gets most prominence on the box is the "high illumination flashlight" feature.
This one came with a USB programming cable, Windows software, separate antennas for VHF and UHF, a soft case, charger and charging dock. It seems to work fine.
These units set an amazing low price point and while the quality of the plastic is not as good as a "name brand" rig, given the advanced technology inside, the UV-3R is leading to a lot of discussion and even modifications.
Check out:
- Yahoo Group
- Reviews
- Data for the RDA1846 chip.
- Improved LPF mod.
- Volume reduction mod or here.
From the data sheet: "The RDA1846 is a highly integrated single-chip transceiver for Walkie Talkie applications. It totally realizes the translation from RF carrier to voice in the RX path and from voice to RF carrier in the TX path, requiring only one micro controller.
The RDA1846 has a powerful digital signal processor, which makes it have optimum voice quality, flexible function options, and robust performance under varying reception conditions.".
I wish we would see this technology in low cost HF equipment.