Geektool weather icon unix shell script for September 2013

Well, Yahoo! is going through a (frankly) much needed UI/UX update on all their sites, and that has stranded a few Geek Tool users who rely on Yahoo for awesome .png image weather icons.  Fret not, France to the rescue! (SAY WHAT?)

Yes, Yahoo! France still has our beloved weather icons that we can steal from (but for how long??).  Use the following unix command to grab the weather icon, and save to the /tmp folder.  Modify as you see fit of course:

curl –silent “” | grep “obs-current-weather” | sed “s/.*background\:url(\’\(.*\)\’) .*/\1/” | xargs curl –silent -o /tmp/weather.png


And in the meantime, if anybody has a new source for great weather icons for the future (for when the French finally surrender to the new Yahoo! UI), drop a comment!  Thanks.


A few HTML 5 and CSS 3 tips I wish I knew 72 hours ago.

I’ve been wanting to get back to developing websites, and hence wanted to start getting some design and modern front-end development experience under the belt.  I haven’t done serious front-end work for a while, so I took on a small project for a friend – a place-holder website to have up for his future clients (

I decided to go with a somewhat responsive design, with CSS-driven blur effects, font scaling, etc.  But as I started really testing the site with various devices, browsers, etc., I very quickly came across some weaknesses in my skill set.  Here are some tips and tricks that I learned while making this very small and simple page a little more compatible with the real world:

  • Firefox still can’t do CSS blur, etc. – I had to create an SVG file and point the css to the file in order to get the blur working in Firefox.  And Firefox still renders blur pretty ugly… not much you can do about that.  Here is the code I used to get the blur going in Firefox:Create a file called ‘filter.svg’, place in same directory as your .css stylesheet file (or wherever you keep your css that you want to render the blur with).  Contents of filter.svg:
    <?xml version="1.0" standalone="no"?>
    <svg width="1" height="1" version="1.1"
     <filter id="blur">
     <feGaussianBlur in="SourceGraphic" stdDeviation="2 3" />

    Here is the CSS to reference the above SVG:

    filter: url(filter.svg#blur);

    Don’t forget to make sure your web server/web host is configured to serve up the SVG file to browser clients.  Apache users probably won’t need this, but you’ll need a MIME type enabled for IIS (for example):

    Extension: .SVG
    MIME Type: image/svg+xml

  • IE10 (Internet Explorer 10) no longer supports any kind of filtering (at least until CSS3 is officially ratified).  BUT, if you force IE10 into ‘compatibility mode’ for IE9, you can do filtering via the old DirectX CSS tags.  To have your website force IE10 to support blur, add this tag RIGHT AFTER your <head> tag in your HTML file where you will be using the blur (if it isn’t the first META tag after <head>, it won’t work):
    <meta http-equiv="X-UA-Compatible" content="IE=9" />

    And here is the CSS for getting IE10 (IE9) to render the blur:

  • For Chrome and Safari (both webkit-based browsers) it couldn’t be easier:
    -webkit-filter: blur(5px);
  • As a final tip, I’d like to point out that Media Queries are your friend.  They act as giant IF-statements that help activate (or deactivate) portions of code that meet or don’t meet the criteria specified in the media query.  For example, if you want a specfic section of CSS to be active when the browser window (or mobile/tablet device) is in a landscape orientation (width > height):
    @media all and (orientation:landscape){
    css here

    The media query ensures that the encompassed section of CSS (the CSS code between the {}) is only active if it meets the criteria you specify.  This is very helpful for switching between different sections of a single CSS sheet, without having to resort to Javascript dom hacking, linking to multiple stylesheets, etc.  It is especially helpful in responsive design, because you can often switch the sizing and layout of your text depending on the width of the client window, orientation, etc.  For example, adding some extra criteria for screen height:

    @media all and (orientation:landscape) and (min-height:875px){

    This will trigger the encompassed CSS to only be active when the window/device is in a landscape orientation, with the height of the window being a minimum of 875 pixels high.  When using media queries to direct your active div positioning, sizes, orientation, and even font sizes (for example, switching between vh and vw viewport units), they really become the ultimate responsive design tool.

That about does it for this post.  I hope this helps you out in your CSS3/HTML5 quest for glory.

Tagged , , ,

Restore from a Drobo FS to your mac, over the network, using OS X Lion

I recently had my iMac Hard Drive completely fail. It would boot to the white/grey screen with the Apple logo, put a progress bar underneath, and then just spin that spinning spinner forever, never actually booting. Very scary! Although I am concerned that I might have to replace my HD before my Apple Care runs out, what I wasn’t concerned about was whether I lost any data.  I knew I had a backup, and that it would be easy to restore from this backup!  Or so I thought…

I had been backing up my iMac via Time Machine, over the network, to my Drobo FS Time Machine partition/share that I had previously set up.  So thus, I knew I had my data backed up, but what I didn’t know is what a nightmare it would be to actually do a restore from this network backup.

As it tuns out, it’s actually a pain in the ass, unless you know the secrets to unlocking the mysteries of Time Machine, and the Drobo FS.  Here is what I had to do, I hope this helps somebody someday:


Launch into Lion’s (in my case, OS X 10.7.4) Recovery partition (hold down the option key after turning on your Mac via the power button, then select the Recovery Partition), or alternatively, boot from the OS X Lion USB Stick or DVD, whatever you have access to (for Snow Leopard 10.6.x, this will probably have the same instructions, so this should work for SL as well).

Next, ignore the main menu options that pop up, and instead run Terminal, via the Utilities menu at the top menu bar (very top of screen, near the middle).  In Terminal, you have to do a few steps (use the following Terminal commands as templates, substituting your own data as necessary):

  1. We have to create a volume on the disk drive that OS X’s Recovery/Restore software can ‘see’ (otherwise known as a ‘mount point’):
    mkdir /Volumes/TimeMachine
  2. Then, we have to mount the network share to this newly created volume, so that it appears as a ‘local’ disk to OS X:
    mount -t afp afp://YourDroboFSAdminUserName:YourDroboFSAdminPassword@IPAddressOfDrobo/YourDroboTimeMachineShareName /Volumes/TimeMachine

    Using the above template, my command wound up looking something like this:

    mount -t afp afp://admin:password@ /Volumes/TimeMachine
  3. Finally (and this may be Lion only, so try with and without), we have to mount the actual image of your Time Machine backup to make its contents readable by OS X’s Restore process:
    hdid /Volumes/TimeMachine/yourMacsTimeMachineFile.sparsebundle

    Using the above template, my hdid command looked like:

    hdid /Volumes/TimeMachine/mainImacTimeMachineBackup.sparsebundle

If you don’t know the name of your sparsebundle file (required for Step 3 above), from the same Terminal window, you can just switch into the /Volumes/TimeMachine directory you created (“cd /Volumes/TimeMachine”), and after completing Step 2 above, you can type “ls” to list all the files in that newly mounted directory.  Your sparsbundle file should be there, so make a note of its name for Step 3.

After you complete the above steps, you can quit the Terminal application, and then launch the ‘Restore From Time Machine Backup’ option from the main menu that Lion originally presented to you.  Click ‘continue’, and choose your Time Machine backup (which may take a second or two to show up, but not much longer than that).

From there, you are on the long road to recovery, and you can enjoy watching that ‘Restoring’ progress bar for the next few hours.


eBay’s greatest scam – duping sellers out of fees caused by fake eBay buyers

Let’s say you want to sell an item on eBay… such as that old iPhone 3G that you just replaced by another phone.  You list it on eBay, maybe pick a reserve price (just to be sure it doesn’t sell for pennies on the dollar), and a few days later, viola!  The phone sells.  Great!

But then you realize that the buyer who just bought your item has zero feedback, and created the account less than a month ago.  Red flag.  But let’s be optimistic… surely they created an account because they wanted your old iPhone so badly…  Surely they will pay!

Nope.  They don’t pay.  So you want to re-list your item as quickly as possible to get past all this, yet eBay makes you wait about 4 days before they consider the item ‘unpaid’.  Fine, we wait.

A week rolls around, and finally the item falls into an ‘unpaid’ status, where you can use the ‘unpaid item assistant’ to file a claim on your behalf.  Why do you need to file a claim?  You need to because you now owe eBay the commission on your item that ‘sold’, even though it is now unpaid.

Makes sense?  No, it doesn’t make sense to me either.  This is eBay’s scam #1.  Now, on to scam #2:  This claim won’t be filed until the next month, so you are stuck ‘owing’ eBay money until the next billing cycle.  I can live with that part, but guess what?  They will only refund you the commission and the listing fee… They WILL NOT refund you the reserve auction fee!

That’s right, eBay’s scam #2 is that they do not issue a full refund on unpaid items, because they consider certain options (such as reserve price) a ‘service’ to be used at the time of auction, to help your item get sold in a manner that you want.

The only problem with this logic is that your item never actually sells because the auction was rigged by a fake and scummy buyer who never had the intention of paying in the first place.  However, eBay doesn’t care what the end result is… they just want their fees.  So in the end, the breakdown is something like this:

Insertion fee: $2.40 (this will be refunded, in a month)
Reserve auction fee: $2.40 (fuck you, pay me)
Final Value Fee: $30.00  (this will be refunded, in a month)

The best part?  I get to pay another $2.40 to re-list my item as I wait for this claim to go through.

What a fucking scam.  And just in case you were wondering, I’ve been an eBay seller for over a decade, with many sold items under my belt.  I’m a veteran eBayer, and as such, I have every single seller protection tool enabled that I can possibly enable, including blocking all buyers that:

  • Don’t have a PayPal account
  • Have received 2 Unpaid Item strike(s) within 1 Month(s)
  • Have a primary shipping address in a location I don’t ship to
  • Have 4 Policy Violation report(s) within 1 Month(s)
  • Have a feedback score of -1 or lower
  • Are currently winning or have bought 1 of my items in the last 10 days and have a feedback score of 1 or lower

These are the most aggressive settings that eBay allows, yet they are missing one critical setting:  The ability to block bids from ‘new’ or zero feedback accounts.  You can only block bids from shoppers with a known sketchy history.

I understand why they don’t allow this setting… after all, how could any new eBay shopper be able to shop if all sellers enabled this setting?  Fair enough.  Maybe it wouldn’t be a good idea to have this kind of restriction available to sellers.  But as it stands now, sellers on eBay can be effectively bled dry of money simply by being scammed over and over by these fake eBay shoppers, all while eBay collects the juice.

Fuck that.  If this happens to you, call eBay and scream bloody murder until they give you a FULL REFUND on your original auction, including all ‘service’ fees.  That’s what I did, and I’ll do it every single time this happens to me until eBay addresses this issue properly.

How should they address it?  Howabout automatic refunds on unpaid items for ALL FEES, and a discount on re-listing your auction (as a nice gesture for your lost time and hassle)?

That would be a great start.

Tagged , ,

iTunes Match does not work with DRM’ed files (obviously).

In case you were wondering, iTunes Match (the music cloud service provided by Apple, which matches and catalogs your entire music collection into the cloud for playing on all your Apple devices) does not work with files that have DRM.  This is pretty obvious, but I tried to match my Zune collection just to see if it would work, and iTunes threw a ‘content protected’ error.  I assume this includes all forms of DRM files, for example, Zune WMA protected files, etc. – These cannot be matched and uploaded (or otherwise) to the cloud.

So if you were hoping of porting your entire Zune subscription over to iTunes Match, you are out of luck, but all of your mp3 files (as well as the mp3 files you get from Zune’s keep 10 a month program) will upload and/or match just fine, as these are DRM free by default.

There you have it…  Time to start converting everything to MP3!

Steve Jobs

He made the Apple I/II.

He made Pixar.

He changed the music industry and popularized the portable music player.

He revolutionized the cell phone industry.

He created the tablet industry.

He managed a company that went from near bankruptcy to the largest corporation in the history of mankind.

Even if you adjust for inflation, Jobs created bigger industries and capital larger than any industrialist before him, save for potentially the Rockefellers, but that is more due to land value, not industry.

People can hate all they want, but facts are facts.  There is no such thing as the solo inventor anymore (arguably, there never was) – only incremental evolution that eventually is done right and combined into a product that changes or creates an industry.  Automobiles existed in various forms before Ford came along.  Had Edison not usurped Tesla, the history books would be crediting the latter with the birth of the modern electrical age.   The Wright brothers emerged from obscurity just ahead of their competition…. if they had waited a bit longer, history would have never heard of them.

Jobs had a better track record than all of these guys combined, save for possibly Benjamin Franklin.  He had vision, and he knew how to assemble the right team to execute it.  It isn’t just marketing.  Something must eventually be behind the marketing, and Jobs always backed it up.

If you think the smartphone that is sitting next to you isn’t as significant as flight, you really need to re-evaluate your critical thinking.  Try using the internet that is in your pocket for inspiration.


No early upgrade pricing from AT&T for the iPhone 4S*

*unless you are within 6 months of the end of your current contract.  Read on:

Looks like I won’t be qualifying for early upgrade pricing from AT&T until at least a month after the new iPhone 4S launches.  This is due to AT&T’s policy of not allowing special (and by ‘special’ I mean slightly less ass-rape-free-money-for-at&t-fee) pricing until you are within 6 months of the end of your contract.

Even though the iPhone 4S took a little longer to bake in the oven (putting us closer to end-of-term for the iPhone 4′s 2 year contract), all of us original iPhone 4 adopters still aren’t eligible for the cheaper upgrade price until November 25th (and that’s if you bought the iPhone 4 on launch day):

$250 extra if you want the iPhone 4S on launch day.  Well, that sucks.  And, it’s a total bonehead move from AT&T.  You can never capitalize on launch day fever if you make people wait an extra month to buy a product.  Why make us wait AT&T?  All you are going to do is make people salivate over other carriers, or worse, your customers cool off so much they decide they don’t need to upgrade at all… and then in 6 months they are free from your artificial shackles.

If AT&T were smart, they’d move that early upgrade date to October 7… the day the iPhone 4S is up for pre-order.  There is only upside in doing that, and you don’t need an MBA to know why.  You lock in your customers for another 2 years, you kill any chance of buyers remorse, and you don’t give customers the opportunity to think about early termination.

But as it stands right now, all AT&T can do is lose customers.  And with Sprint and Verizon waiting for AT&T refugees (especially now that the iPhone 4S is a world phone), it really makes you wonder what genius is guiding AT&T’s decisions.

Beginning of the end for the beloved Zune Pass?

Say what you will about the Microsoft Zune and Microsoft’s apparent abandonment of the Zune hardware platform, but the one thing that Microsoft got right was the Zune software, interface, and subscription model.  For subscribers of the latter (known as the ‘Zune Pass’), a change has been recently announced:

The good news: the price has been reduced from $14.99 to $9.99.  The bad news: instead of syncing to 6 devices (3 portable, 3 computers) and keeping 10 tracks a month, you now get 4 devices (any combination) and don’t get to keep anything.  If you are already on the $14.99 plan, you get to keep it, but it’s not an option for new subscribers moving forward… only the $9.99 plan is.

For most, the reduced pricing will be a welcome change, but for long-timers like me, I see it as the potential beginning of the end.  Microsoft is effectively taking away a couple of nice features that really set the Zune Pass apart from competing subscription models.  I have always seen the Zune Pass as being generous, so I’ve been waiting for something like this to happen, but that generosity is exactly why I’ve been a subscriber for so long, and one of the main reasons why I love the Zune so much.  As it stands with the new plan, there isn’t much (by way of raw subscription features) to differentiate it from others such as Rhapsody or Napster, and it clearly gives Spotify (or other free-ish streaming services) a leg up.

Consider how my family uses the pass now:  We have two Zune players, and 3 PCs that we synchronize from.  That’s a total of 5 devices all coexisting happily under one Zune Pass account, each with their own libraries of music, and I can independently sync what I want, when I want, without having to blow out any libraries, etc. (try that with iTunes, et al).  AND, I get to keep 10 tracks permanently as MP3 copies, every single month.  If you count an MP3 download as costing roughly $1 (in iTunes, it would be $1.29 or so), then I’m really just paying about $5 for the streaming service – an incredible bargain.

Under the new plan, I’d have to get rid of one of the devices (most likely a PC), and I no longer get to keep any tracks as MP3.  Really kind of a bummer.  I wish Microsoft would just keep both plans, and continue to offer the old one to new subscribers.  In the context of music, taking away choice is never a good thing.

For those of you who just don’t understand what makes the Zune so good, download the desktop software and give it a go.  Explore the Marketplace, the Smart DJ, the ‘Picks for you’, and the Mix Views, etc.  Anything else will seem positively ancient (looking at you, Spotify and iTunes), and I guarantee you’ll never look back.

Lookout Groupon, Google Offers just might eat your lunch.

Looks like Google is positioning itself to offer deals straight to Gmail user inboxes, or to anybody else who signs up for the new Google Offers service.  Cities are limited right now, but the service is expanding rapidly.  Considering Groupon’s inability to turn a profit in the shadow of their enormous burn rate, coupled with their absolutely inflexible management and board, Google Offers could be the iceberg that finally sinks the titanic Groupon.

If the rumors were true, Groupon should have just sold to Google in the first place.  Hindsight 20/20 for Groupon’s board.

Tagged , ,

Stop eulogizing Steve Jobs.

I’m going to miss CEO Steve as much as the next guy, but what’s been happening in the news recently is a bit out of control.  If this were ANY other CEO, it would not get this much attention.

Of course, we all know Steve Jobs isn’t just any other CEO.  He is the CEO.  He took a company that Michael Dell would have shut down and turned it into the largest corporation ever known to mankind.  So yeah, Steve deserves a little attention… but the attention he is getting disturbs me.

Ask yourself, if Steve Jobs’s health was never in question, would he still be getting the kind of press he is getting today?  Definitely not.  And to be honest, this makes me sad.  I’ve been reading article after article about Jobs’s decision to step down, and I have to re-read most of them to make sure they don’t include funeral plans at the end.  The world’s greatest CEO deserves some attention for stepping down, but let’s stop eulogizing him.

Steve isn’t dead.


Get every new post delivered to your Inbox.

Join 81 other followers