Blog on

Blog on Full Posts

What I Read in 2019 πŸ“š

At the beginning of last year, I decided to listen to fewer podcasts and to use that time for audiobooks instead. I ended up β€œreading” 37 books in 2019:

These were my highlights:

I wasn’t sure if I would stick to this plan so I posted what I had read each month to keep myself honest and maintain momentum. However, I liked the sense of accomplishment and did not miss the repetitive tech podcasts at all. In fact, I unsubscribed from a few more podcasts throughout the year.

Going forward I don’t plan on doing the monthly posts and instead will just write an end of the year wrap up. If you want to see what I’m reading throughout the year then you can follow me on Goodreads.

Chris Pederick

What I Read in December 2019 πŸ“š

I read two books in December:

You can also follow what I’m reading on Goodreads.

Chris Pederick

What I Read in November 2019 πŸ“š

I read just one book in November:

You can also follow what I’m reading on Goodreads.

Chris Pederick

What I Read in October 2019 πŸ“š

Having not finished any audiobooks in September I am trying to get back on track and read three books in October:

You can also follow what I’m reading on Goodreads.

Chris Pederick

What I Read in August 2019 πŸ“š

I read two books in August:

You can also follow what I’m reading on Goodreads.

Chris Pederick

What I Read in June 2019 πŸ“š

I read seven books in June:

You can also follow what I’m reading on Goodreads.

Chris Pederick

What I Read in May 2019 πŸ“š

I read four books in May:

You can also follow what I’m reading on Goodreads.

Chris Pederick

What I Read in April 2019 πŸ“š

I read two books in April:

You can also follow what I’m reading on Goodreads.

Chris Pederick

What I Read in March 2019 πŸ“š

I read three books in March:

You can also follow what I’m reading on Goodreads.

Chris Pederick

What I Read in February 2019 πŸ“š

A little late on posting this as I was on vacation, but I read four books in February:

You can also follow what I’m reading on Goodreads.

Chris Pederick

What I Read in January 2019 πŸ“š

Earlier this month I decided to listen to fewer podcasts and to use that time for audiobooks instead. One month in and I couldn’t be happier with my decision. I’m not missing the repetitive tech podcasts at all. I’m “reading” more books again and it’s giving me a genuine sense of accomplishment.

This month I read three books:

You can also follow what I’m reading on Goodreads.

Chris Pederick


Parcha and I

Yesterday Abby and I had to say goodbye to our 16 year old cat, Parcha. We are both pretty devastated and will have a cat shaped hole in our lives for some time. However, making this sad time a little easier has been seeing the comments from friends and family, and just how many lives were touched by one sweet, little cat.

Here are just a small selection of those comments:

Parcha was a special kitty.

Oh, Parchaβ€”you were the baddest thug cat ever.

I haven’t seen her in forever and am missing knowing she’s still here.

That was one tough kitty and she deserved every ounce of love she got.

Oh Parcha. You were so very loved, sweet kitty.

Parcha was a non-cat person’s cat.

Best cat. (Although I’m not convinced she was actually a cat. Hardened criminal? More likely. But the best, for sure.)

Parcha was the first cat I’ve ever met that enjoyed eating tortilla chips – she had such good taste in snacks.

I feel so lucky to have been able to spend some kitty time with Miss Parcha. She was easily one of the most affectionate cats I have ever met.

I’m so sorry, but glad I knew that sassy lady with the smokey lips. She helped me transition into the crazy cat lady that I am today.

I was always in awe of how sweet she was, ever since she was a little kitty. I will miss seeing her in my visits home.

One of my favorite cats of alllll time.

My abiding memory of Parcha will be when I visited 10 years ago and she β€˜greeped’ me and I freaked! She was such a canine feline.

I’ll never forget her licking the Thanksgiving turkey.

Parcha was such a fun kitty. I was always impressed with how deftly and quickly she wrapped Chris around her little paw.

I believe she’s in cat heaven in some bar, ordering a double shot, strategizing how to lift a pork chop off some angel’s plate. He’s a fucking angel, he doesn’t need that damn pork chop.

My favorite memory of Parchy was the time I was taking a bite of a cheeseburger and she came over and took a bite out of it at the same time. Also – the time she hid behind my garbage can and would reach her paw over and take trash out thinking I wouldn’t see her. She was the best and you gave her a wonderful life.

The best cat I ever knew.

Chris Pederick

Web Developer for Chrome Compromised

On Wednesday, August 2nd at 6:30 am PDT I discovered that Web Developer for Chrome had been compromised and a new version 0.4.9 had been uploaded to the Chrome store that contained malicious code. I immediately disabled the extension in the Chrome store and regained control of the developer account associated with the extension. At 8:40 am PDT I uploaded a new version 0.5 that removed the malicious code.

Please make sure that you update to version 0.5 of the extension as soon as possible. I am still looking into exactly what the malicious code was doing, but it is strongly advised that if you had Web Developer for Chrome installed that you change your password to any site that you logged into on Wednesday, August 2nd as a precaution, particularly Cloudflare which looks as though it may have been explicitly targeted. It has also been suggested that Cloudflare users revoke their API key if they visited the Cloudflare dashboard yesterday as this may have been compromised as well.

Note: The Firefox and Opera versions of the extension were entirely unaffected.

I sincerely apologize for this incident and the pain and frustration it has caused.

Timeline Of What Happened

Tuesday, August 1st

9:25 am PDT: I receive an email saying that Web Developer does not comply with Chrome store policies and needs to be updated. I could make excuses about how I am extremely busy at work or I seem to constantly be logged out of my Google account so having to log in is not unusual, but the reality is that I am a bloody idiot and blindly logged into my developer account after clicking on a link in the email. To add to my stupidity, the developer account did not have two-factor authentication turned on. At the time, I do not realize what I have just done and simply save the email to look into in more detail when I have more time.

Wednesday, August 2nd

6:30 am PDT: I wake up to a number of tweets and emails from users reporting unusual logging and adware coming from Web Developer. I realize that this is tied to the email from the day before and immediately change my developer account password. I log in to the developer dashboard and see that a version 0.4.9 has been uploaded by someone other than myself and immediately unpublish the extension from the Chrome store.

8:40 am PDT: I create a new version 0.5 from a code branch that I had been actively working on to fix bugs in the extension and upload that to the Chrome store.

9:15 am PDT: The new version 0.5 goes live in the Chrome store.


With the compromised version of the extension now replaced in the store, I have been working on replying to everyone who tweeted or emailed me advising them to upgrade to version 0.5 ASAP. I have also informed Google of what happened, although there is not an obvious right way to report this and thus far I have not heard from them.

I changed the password for the developer account immediately upon discovering the issue, but I have also now enabled two-factor authentication on that account so that an attack of this nature is far harder in the future.

I am also continuing to look into the impact of the malicious code as are others with far more security knowledge than myself, which is incredibly appreciated.

Someone has created a Gist that shows the malicious code that was added to the extension and is decoding and discussing exactly what the code is trying to do.

I also received an email from a security officer of an ISP in the Netherlands who says that the malicious code looks to use a date-based domain to request URLs and they have graciously registered the domains for the next week of dates in an attempt to block the requests from happening.

My extension does not seem to be the only one that was targeted in this way and the developers of the Copyfish extension have written their own blog post detailing what happened to them which appears to be very similar to my experience.

I will continue to update this post with more information as I have it and once again I sincerely apologize for the disruption and distress that this has caused.

Update: Proofpoint has posted an incredibly detailed breakdown of the compromise.

Chris Pederick

Using Blur To Create A Wallpaper For iOS 7

iOS 7 looks completely different from previous versions of iOS so after installing it on my iPhone I decided to change my wallpaper to better fit with its design.

The iOS 7 lockscreen is now much cleaner and lends itself to highlighting a photo, but I found using the same photo as my homescreen wallpaper too distracting. iOS 7 β€œuses translucency to provide a sense of context and place” so I wondered if using a blurred version of the same photo would look good on the homescreen.

Blur is a $0.99 universal iOS app that allows you to blur any picture and set it as your wallpaper. The interface is simple, but beautifully designed and allows you to quickly import a picture, adjust the blur effect and export the blurred picture back to your camera roll.

Blur screenshot

Using this blurred version of my lockscreen photo on my homescreen leaves it clean, but keeps a visual connection back to the lockscreen and I plan on using this technique whenever I change the photo on the lockscreen.

Phone screenshot

Chris Pederick

Web Developer 0.4 for Chrome

Web Developer 0.4 for Chrome is now available. The extension can be downloaded on the Google Chrome extension gallery.

Web Developer for Chrome

The release notes contain the full list of changes in this version, but some highlights are:

  • A new disable menu
  • Syntax highlighting and line numbers when viewing code
  • A new feature to view the responsive layouts of a page
  • Unlimited resize dimensions and tools configurable in the options

Web Developer options

Under the hood this is also essentially a complete rewrite of the extension that merges the code base with the Firefox version. This should allow improved features, fewer bugs and more frequent releases going forward.


The Web Developer extension has always needed access to your browsing history as that is how it is able to add custom scripts to any web site for its features to work. However, some of the new features now require extra permissions such as access to cookies. As explained in the FAQ none of this data is accessed beyond the needs of the features of the extension and no personal data is sent from the extension to a third-party apart from for the third-party features such as validators.

Chris Pederick

Web Developer for Firefox 1.2 Beta 1

Web Developer for Firefox 1.2 Beta 1β€”a preview release of the next version of the Web Developer extension for Firefoxβ€”is now publicly available. This release is for testing purposes onlyβ€”for a fully supported version of the extension or localized builds please see the latest official release.

Web Developer OS X theme

A few notable changes in this release are:

  • A new theme on OS X
  • A number of new features including β€˜Reload Linked Style Sheets’ and β€˜View Responsive Layouts’
  • Keyboard shortcuts can now be assigned to any feature
  • Syntax highlighting and line numbers when viewing and editing code

And of course there are many fixed issues. For the full list of changes in this version please read the release notes.


As a beta release this build is not guaranteed to be stable. The idea behind this beta release is to give people the opportunity to provide feedback about this next version as well as report any bugs. Please report any feedback or issues in the beta forum or via the contact form.

Note that the forums on have been upgraded as my self-hosted version of FluxBB was having more and more problems recently. Therefore I have upgraded to a hosted Vanilla Forums setup.

Unfortunately as part of this upgrade the existing forums data including user accounts and posts could not be easily migrated so you will need to re-register if you had registered previously.

Let me know if you see any problems with the new forums by posting in the forums or via the contact form.

Chris Pederick

Improved Web Developer ‘View JavaScript’ Output

The updated β€˜View JavaScript’ output in the next version of the Web Developer extension including syntax highlighting and line numbers.

Web Developer View JavaScript output

Chris Pederick

Redesigned Web Developer Options Dialog

A preview of the redesigned and streamlined options dialog for the next release of Web Developer.

Web Developer options dialog

Chris Pederick

Rdio Add Album To Playlist Bookmarklet

A month ago I posted that I wanted to try Rdio, but could not because even their native OS X application requires Flash which I don’t have installed on my laptop. Howeverβ€”although I have not seen a formal announcementβ€”it now appears that they are bundling a version of Flash in with the application.

So I re-activated my Rdio subscriptionβ€”I had tried the service out a year or so agoβ€”and used the application to match my iTunes music and add it to my Rdio collection.

Setting Up A Scores Playlist

At work I like to listen to movie scores as they typically contain no lyrics which I find distracting when I am writing code. So I set up a β€˜Scores’ playlist in Rdio and went to start adding movie score albums to it.

The problem? Rdio only lets you add songs to playlists one at a timeβ€”you cannot add an entire album. Adding an album to a playlist one song at a time becomes very tedious very quickly and despite numerous requests to allow adding an album to a playlist, Rdio has yet to add this feature.

Therefore I created a bookmarklet that when clicked on an album page on Rdio adds the entire albumβ€”all the tracks that are available for streaming at leastβ€”to the chosen playlist.

Using The Bookmarklet

  1. Drag the link above to the bookmarks bar in your browser.
  2. Go to an album page on Rdio in your browser. For example: The Dark Knight.
  3. Click the β€˜Add Album To Playlist’ bookmarklet in your bookmarks bar.
  4. For the first track you will be asked which playlist to add the track to and all subsequent tracks will then be added to that same playlist.
  5. Wait for the bookmarklet to add the remaining tracks to the playlistβ€”you will see some flickering of Rdio dialogs appearing and being automatically clickedβ€”and once it has finished a JavaScript dialog will appear telling you how many tracks were added to the playlist.

Rdio bookmarklet dialog


As you can tell by the flickering of Rdio dialogs when you use the bookmarklet, this works by basically automating the task of adding each individual track to the playlist. This means that any HTML or CSS changes to the Rdio site will likely break the bookmarklet.

I will be trying to keep the bookmarklet up to date and working if this happens, but I cannot guarantee the timeliness of my support. I have only really tested the bookmarklet in Chrome so let me know if you encounter any issues in other browsers. Also, note that I am not responsible for any problems caused by using this bookmarklet. Hopefully Rdio will add this feature soon and we will not need this hack for much longer.

For those that are interested, here is my scores playlist.

Update: Rdio added support for adding entire albums to playlists in the new Rdio so this bookmarklet is no longer required or supported.

Chris Pederick