• #ios

    Add Mac OS Classic sounds to your iPhone (iTunes 12.x / iOS 8, 9, 10) or any text tones

    In the past I've written how to add text-tones/ring tones via iFile and I've actually received a few e-mails how to add text-tones other ways. Apparently, there's a lot of really bad posts on how to add text tones, but adding text tones is pretty easy for via iTunes for the iPhone. For this demo I'm going to Mac OS 9 Classic Alert sounds. They're fun, they're retro-ciché and best of all, very short sounds which is important in an alert.

    Step 1: Download the sounds

    These are easy to get from stevenjaycohen.com MacOS Classic Sound Pack v1.4's, the direct link is macossounds.zip(1.77MB). Thank him for currating them. Download unzip and navigate to the M4R folder.

    Step 2: Add to iTunes

    iTunes

    You can either drag or double click the files to add them to iTunes. Once added, to see them you'll have to switch to "Tones" to preview.

    Step 3: Attach your iPhone

    phones

    You may not even need to attach your iPhone if you sync wireless, and click on the phone icon.

    Step 4: Sync

    phones

    Go to Tones and Click sync...

    Step 5: Select your new text tones

    Go to Settings -> Sounds & Haptics -> and scroll down to the Sounds and Vibrations Patterns on your phone, select one of the alerts.

    phones

    • #os x

    MacUpdate.com switches to dark UX and forces Shovelware in place of expected files

    Back in the day, there was a company called TechTracker that tracked OS X update apps, and other platforms. It eventually was purchased by CNET and folded into the abysmal mess, downloads.com. Fortunately, we always had MacUpdate, and while its evolved over time to a place that sells software bundles and its own service, MacUpdate was generally a safe place to go software searching.

    One of my most read articles (accessed around 20,000 times) is a tutorial that walks through how to add text-tones to the iPhone using ifile. In it I recommend using a package of Mac OS Classic sounds, and linked to none other than Mac Update.

    Here's what happens today when you try to link download it today:

    Download Screen

    So far so good...

    dmg

    The download URL is to a zip file, but DMG?

    its an installer

    So much for a good thing, instead of the expected content, in this case a zip containing classic OS 9 sound files, I got a mislabeled, which struck me as nefarious. It's misleading and wrong. Not to be detoured so easily, I tried grabbing the url to the file directly https://www.macupdate.com/download/19079/macossounds.zip. Still, I was given the same damned DMG. It appears that the ID number in the URL now just redirects to an ID number to the mislabeled dmg as https://www.macupdate.com/download/19079 grabs the same file. I suspect for all hosted files now just use a reference ID to the old expected file, and returns a DMG with a like name to the same installer DMG. I'm sure the update manager is nice and wonderful but I do not want it. Instead your web site is directly trying to deceive me into installing it. So MacUpdate, I'm calling out out.

    • #front end development

    Thoughts on Front End Development in late 2016

    Despite my blog supposably being tangential related to the fact I do develop stuff sometimes, lately most of my blog posts have been about not-front-end-development, likely an outgrowth of the fact I spend 40 some hours any given week talking or thinking about front end development.

    To keep me on course, I'm going to try to do a quarterly update on what's been bouncing around in my head, what I've been up to, what excites me and what disappointments me.

    • Preload seems like the next no-brainer step in optimization for campaign and CMS driven sites.

    • CSS's Object-Fit isn't much better than using Background-cover. You need JS to calculate the actual image size> as the DOM reports the image as the space occupied by the area that the image could occupy as opposed to what it actually occupies.

    • I'm learning React... slowly.

    • I finally built a simple useful coding tool, CSSFilterGenerator.com in early August.

    • Principle App & Flinto are the best ways to date to mock up UX interactions since they rely on Sketch. Previously attempts to introduce Pixate was a bust.

    • I still love Grunt but I'm thinking its time to switch to Gulp.

    • Apple's re-commitment to Safari with Safari Technology Preview makes my heart swoon.

    • The IoT revolution has yet to impact my job, either it still hasn't hit or we've learned that Twitter on refrigerators is silly.

    • You can rename IE to Edge, but it still is a laggard.

    • Flex and floats were meant to live in harmony, not in isolation.

    • The PS4 4.0 release supposably updated the browser, I should do more browser tests.
    • #ios

    Initial Reactions to the iPhone 7

    Despite the amount of frustration I've had over the iPhone 7's headphone jack, I ended up ordering one, a 256 GB matte black. Since so many people have written far better reviews than I could hope do on my own, I recommend reading Ars Technica's amazingly good review. Instead I'm presenting my collected thoughts in a semi-organized (or semi-disorganized) list.

    • The iPhone 7 is the worst Apple experience I've had out of the box, I say this as a iPhone 3g, 4, 5, 6 owner, numerous iPods, PowerMac G3 / G4, PowerBook G3 / MacBook Pro Retina 2013/2015, Mac Pro owner and Apple TV 1 and 2 owner.

      Why you may ask? Software. As a 128 GB iPhone 6 owner, I backed up my phone locally as my paltry $1 a month iCloud 50 GB account is only big enough for my photos. Normally upgrades are simple: back up old phone, restore with new phone. This go around, the OS X 10.11.6 security update that was piled in with iTunes bricked my Mac Pro which meant a 10 hour recovery while Time Machine restored my Mac Pro, first time I can remember since 2009 that I've needed to use Time Machine. When I finally got my Mac Pro up and running, I discovered iTunes doesn't have a simple way to download missing IPA files. I ignored the Mobile Applications folders in Time Machine to save space, thus I was left to search other drives for the IPA files and manually redownload the rest. Once restored my iPhone 7 proceeded to mangle all the iMessage profiles with the contacts. For example: My dad's messages appeared to be coming from a former roommate of an ex-girlfriend whom I didn't even realize was a contact in my phone. Fortunately this appeared to be only related to my iPhone 7 and not my MacBook/Mac Pro/iPhone 6. I contacted Apple Support which ultimately had me restore, I guess there's no soft-fix. After a second restore, all way finally normal but I burned hours and hours on setting up my phone. I'd rank it more of a burden than fixing my dish washer.

    • The iPhone 7 is bright and loud. I never had much problem with the iPhone 6's brightness but the iPhone 7 is bright... and the second speaker makes it noticeably louder.

    • It's really zippy, it's hard to tell how much is just iOS 10's quicker interface but the iPhone 7 certainly launches apps faster. I found the iPhone 5 the first iPhone that didn't feel painfully slow. The iPhone 7 is the first iPhone that web surfing feels natural. I imagine the iPhone 6S truly was the first thanks in no small part to the 2 GB of RAM never having used one, I'm speculating.

    • The iPhone 7 gets hot. Downloading apps or music seems to cause it get really warm.

    • I hate not having a headphone jack. I'm not going to bother writing more, you can read my thoughts Headphone jacks are NOT the new floppy drive and The Courage of living in a gated community. As much as I like Gruber, he's wrong about corded headphones (for now). There may be a wireless future for headphones but its not bluetooth.

    • I haven't done much shooting with the Camera but it seems like a nice improvement. RAW is going to make my life wonderful.

    • The iPhone 7 can drain its battery faster than you can charge it. Cue up around 10 albums you'd like to store locally and watch the battery drop.

    • The new home button is a gimmick.

    • Force touch mostly feels like a shorter version of the long press. It's the touch equivalent of a right click. It's nice feels under utilized and a bit unpredictable. I suppose right click may have felt that way to Mac Users at one point but even OS 9 had right click support so I can't really recall the two button mouse transition.

    • The variable bright LED flashlight is nice, although 3-steps seems a bit overkill. I'm used to my maglight and bike lights, that either have low or high beams.

    • Apple's aesthetics leads to me wonder if the end game is a wireless charging iPhone? I can only imagine a ludicrous inconvenience of packing around bulky pad chargers, and strapping our phones to them to charge on the go. Perhaps one port is the plutonic ideal in Ive's universe? Are dongles really less unsightly than unused ports? This doesn't bode well for an Apple car... a sealed box that can only be serviced by Apple, using a non-standard charger that requires carting a giant dongle, without any physical buttons in the car.

    • 256 GB is finally getting to the storage levels the iPhone needs. A device that shoots/edits 4k video, RAW photos, can store music / movies, games, documents, and surfs the web is a mobile workstation. It's time it has RAM and storage to reflect that. 3GB of RAM should have been standard for all iPhone 7 models. We're almost there in performance, RAM and storage and I/O.

    • Speaking of I/O: Where is USB 3.1 or at least USB 3.0? It'd make transfers so much nicer and give quick charge options. Lightning Cables are silly in the era of USB 3.1, and only points to Apple's desire to gouge the consumer. At least FireWire was an open standard used on Windows PCs as well as Apple products. Lightning cables are dated.

    • Perhaps one of the better features of the headphone jack was the ability to discern jacks without mics and headphones with mics. This meant my line level was always max on my iPhone and my earbuds were at listening level. The dongle doesn't seem to have this ability. So much for the ease-of-use in my car.

    • The lightning port earbuds are unreliable as a microphone. Using a dongle set works better, file this under "headphone jacks are better". Edit: Apparently I'm not the only one and there's a fix on the way, not that I care really, they need to fix the ergonomics first.

    • The iPhone 7 is the least exciting iPhone generation update. The iPhone 7 very well could be the iPhone 6.5s, or the iPhone 6$ or the iPhone 6$E or simply the middle finger emoji.

    • I have no plans to buy a bluetooth headphone set. I have enough devices that require charging. I'm also tragically unhip and use a wired keyboard and mouse at home.

    • Edit: Only hours after completing the post, I saw daptr announced a case with a headphone jack. I told the Apple sales guy I was banking on cases with headphone jacks. He gave me a "Yeah right buddy", and I mentioned a thread on the CoreAudio mailing list. I don't think he knew what CoreAudio was but hey, we can't all be me right? Looks like I was correct. Now to survive to December for something that should have been part of the original phone...

    iOS 10 reactions

    Some of the transition of the iPhone 7 is also locked into iOS 10. iOS 10 seems to be the same exact experience for iPhone 6S users as 7. For 2 year releases that's usually not the case, the iPhone 5s vs iPhone 6, and iPhone 4s vs iPhone 5 both had real estate changes. It looks like we're committed for the next 2 years to the same resolution. The biggest changes between the 6 and 7 mostly lie in RAM and force touch, much akin to the iPhone 5 vs 6 with 64 bit and Touch ID. With the SE, we can probably reasonably expect iOS 11 and possible 12 to continue to support the iPhone 5 or at least the 5s.

    • Messages revamp was necessary. While the stickers and emojis will wear thin, the live link preview feels expected in the age of Slack, FaceBook messenger etc. OS X's messenger needs the same revamp. Messages send very fast too.

    • The dock change is neither good nor bad.

    • TI feel a bit of Stockholm syndrome with Apple. I use their products for iOS and OS X. They make damn fine hardware but given the choice I probably wouldn't use it. I didn't feel this way towards iOS until the iPhone 7.

    • Organizing Applications is painful as it was in iOS 6. It's time for a change.

    • Hey Siri spooks me when both Venmo or Square support it to transfer money. Seems a little too easy to transfer $1000.

    • Security with Touch ID needs a second layer for the paranoid like myself. Touch ID + 6 pin validates the phone for X amount of time for Touch ID only. If touch ID doesn't work, it defaults to your choice of pin or text password.

    • iOS is starting to need a minor file system. Having a common /documents for inter-app exchange would help with guess work, and allow for easy storage management (Delete, or share or edit with options). It sounds un-iOS but this is starting to become problematic and iCloud Drive already provides the interface. Loot it. Allow users to mount their phones as a disk drive. Not everything needs to be on iCloud nor should it.

    • iOS 9's ability to install content blockers hasn't changed and we're all better for it.

    • I didn't even notice raise to wake until I read about it, I'm so programed to pressing power.

    • iOS 9's app switcher still lives on much to my ire. I prefer seeing more apps opposed to more of the app.

    • As one of the few stalwart non-emoji users of the world, I'd like to auto suggest to disable emojis. I like my smilies to be text, :) and :( have effectively served me for nearly two decades. I like the retro-ness.

    • I'd really like Apple's color sweetening/processing profiles to extend to RAW captures. The best thing about the iPhone camera is the absolutely gorgeous smart processing. I'd like the RAW files have the embedded recommendations. In fact, I dream that Lightroom on my desktop had Apple's auto adjust feature for lazy corrections.

    • iOS 9 to iOS 10 has absolutely no downsides that I've encounter besides the suggesting of emojis. It hasn't lead us to the promised land of power user features but the new APIs really do open up better avenues for developers. At the same time it's a nice forward upgrade that takes little time to adjust to.

    Update: 9/19/16 - Case update

    Update: 9/20/16 - Lightning port headphones note

    • #ios

    The Courage of living in a gated community

    John Gruber's defense of courage actually takes a remarkable amount of "courage" to write with a straight-face. For anyone who gives a damn about audio quality, wired is the way to go. Ever wonder why bluetooth headsets tend to sound worse? It requires transcoding to A2DP. It's removing the most successful port of all time, dating back to 1878 in its 1/4 inch iteration, and the billions of devices the iPhone can connect to: headphones, speakers, cars, home audio systems, to the more esoteric like audio inputs for recording, square readers, turn tables and so forth.

    In the Steve Jobs era, when the technologies were killed we were offered superior successor. When Apple killed the floppy, I hadn't used a floppy for ages and USB was infinitely better. When Apple killed its own FireWire port, USB 2.0 was far more widely used and USB 3.0 was trickling in. When the MacBook Air was introduced without optical media, streaming media was the new normal and USB thumb drives offered larger, faster, rewritable storage that could be attached to a keychain.

    The difference is in the Tim Cook era, the practicality is gone. The Mac Pro slashed its PCIe slots for no discernible reason other than the planned obsolescence. The 20 inch iMac dropped its ability to upgrade its RAM. The MacBook sports a single port for no apparent reason. And the iPhone 7 has dropped its headphone jack with no-benefit to the consumer. Gruber making the analogy is of Apple dropping Flash support isn't correct. HTML5 is superior. This is arguing the MacBook's singular port is better than having 2, as users love expensive easily lost dongles.

    This isn't a "What would Steve do?" article but more Apple's slow realization that once we're locked into it's eco-system, we'll tolerate most of its attempts to gouge us in the wallet along the way. If Apple has courage, it's courage lies in its willingness to fuck every consumer in the wallet.

    • #front end development
    • #os x
    • #sketch

    Gifbrewery 3 - Mini Review

    Gif Brewery 3 icon

    Years ago, I reviewed Gifbrewery, a gif creation software, that converted video to a gif, and in my usual style lamented over the death of, GifBuilder. GifBuilder still remains the gold standard of gif creation, even acing out Macromedia Fireworks for its simple and insanely effective ability to create gifs frame-by-frame. It wasn't perfect but it did offer the most control.

    When I reviewed back in 2013, it was revelatory, as it made creation of video-to-gif easier than any solution. Creating a GIF's workflow was simplistic:

    • Open Video file
    • Crop / Add text overlays
    • Assign gif properties (frame rate or frame count, looping mode, colors, color dithering)
    • Create

    GifBrewery mostly focused on quick and dirty video to gif conversion with the only editing allowing users to fade in and out text overlays (with blending modes), image crop and in and out points for the video edits. While it wasn't GifBuilder, it was something novel and certainly worth its small price.

    Gifbrewery to Gif Brewery 3

    One of the more unusual changes is a product name change from Gifbrewery to Gif Brewery, along a flat icon. Outwardly Gif Brewery 3 sports a more polished UI. Out the gate, the icon bar is right clickable allowing the user to display icons, or icons + text or simply text, along with customize toolbar. It's a nice and welcome improvement, and keeps in line with with OS X centric applications like Sketch.

    Gif Brewery interface with frames displayed
    Gif Brewery 3 splash screen

    The splash page greets you with a few new features: screen capture, camera capture and video import, the first two being entirely new. Screen captures / camera captures allow the user to record to a movie file, that is automatically imported to Gif Brewery. It's essentially the same as importing a video except removing the step of using a 3rd party program to capture. It's surprisingly useful.

    Gif Brewery screen capture
    Screen Capture only captures full screen, cropping happens in post.

    The gif properties operate almost exactly as GifBrewery, except with a much more useful color count that's no longer limited to factors of 2. Overlays now get a bit more TLC with the ability to add image overlays. It's a welcome addition, likely useful for anyone looking watermark images. Once it comes time to creating the gif, Gif Brewery 3's seems a little zippier and has a more meaningful status bar.

    View frames but to what end?

    Gif Brewery interface

    Gif Brewery now has the ability to view each frame inside a gif in a frame view function which appears to be purely aesthetic. It's like peering into the potential of what GifBuilder offered in almost 20 years ago: the ability to set time delays on individual frames and add/delete individual frames. Since I'm not privy to the minds of the developers, I can only hope it allows a per-frame editing mode, so gifs can hang on individual frames and unnecessary ones removed (one of the most sorely missed features in Gif Brewery).

    The other tall ask I have is the ability to create transparent gifs. At this point in time, I use gifsicle to create a transparent gif from the command line which looks something like:

    gifsicle -U --disposal=previous --transparent="#ffffff" -O3 opaque.gif > transparent.gif

    It adds another step and the optimization seems to go out the window once I've run my compiled gif through the gifscle.

    Final Thoughts

    Is Gif Brewery 3 worth it? That depends, if you own GifBrewery 2.x, the differences are mostly locked up in the UX. GifBrewery 2.x had a habit of mild instability. Every now and again it'd crash, but infrequently. It's nice that Gif Brewery 3 hasn't exhibited any of this and the screen-capture-to-gif and video-capture-to-gif could be a killer feature for some users. That said, there's not a huge incentive to upgrade other than to stay current. At $10, its really hard to come up with any good reason not to upgrade.

    That said, if you don't already own Gif Brewery 3, it's best game in town. You won't find a piece of software better suited to converting video to gifs. Even my beloved GifBuilder never had that functionality.

    Developers, if you're out there reading. If Gif Brewery 3 adds my much pined for individual frame editing, it'd be worth every penny and then some. Gif Brewery 3 is now only inches from becoming one of the stars of the indie Mac scene. Even as I write this, its already a piece of software I use professionally in my front end web development and love.

    Version Reviewed: 3.0.1

    Official Website: Gif Brewery

    Mac App Store: Gif Brewery 3

    • #os x
    • #front end development

    Three months of BackBlaze - A Review

    Review in progress

    I finally bit the bullet and plucked down $50 for a year subscription. I'm a bit data paranoid, years and years ago I lost an IBM 75 GXP Deskstar (a 45 GB HD) in early 2001. It's a funny detail that I can remember something so esoteric as a hard drive model, especially considering how many I've owned over the years but it speaks to the gravity of it.

    I had a PowerMac G4 at the time, with a set of two 18 GB Western Digital HDs, a 40 GB Maxtor, and had moved to my new (fast for the time) 45 GB IBM Deskstar. Back then, I was near the absolute fringe with so much storage. All it took was self encoding a sizable collection of a few hundred CDs to 320 Kbps MP3s to fill nearly my entire 40 GB. It all came down to a realization that I had: Data storage would become so abundant that there was no reason to store my music other than at the highest bitrate. Thus, I decided I'd eat the cost upfront to save myself regret in the future.

    I wasn't the only person to be burned by IBM, soon a class action lawsuit followed but the damage was done. My 45 GB Deskstar, (affectionately dubbed the "deathstar" by legions of scorned customers) was my boot drive, storing all my most important documents. While I didn't lose my music collection, the data I did lose was irreplaceable: art projects, websites, school work, among other things. My lesson was learned and data backup became part of my life. My first attempts were CD-Roms, followed later DVDs. Eventually using I started other HDs as manual backups, even Carbon Copy cloner and a RAID1 + 0, setup.

    While it might sound like paranoia I had good reason to fear, my income throughout college and after was always tethered to my web projects. Even my art major, digital arts depended on a working computer. When Apple debuted Time Machine 2007, all of my previous habits were abandoned and it changed the way I fundamentally approached my computer for the better.

    Backblaze

    So as I write this, I've been using Time Machine for 9 years. Time Machine ranks as absolutely one of the best features Apple has ever added OS X. If you're not using it, you should be. Time Machine provides backup repository of your entire HD, including revision histories.

    Time Machine is damn near magic but it has major flaw: Its a local only backup solution. Unless you have a friend with a beefy internet connection, a VPN, and who's willing to leave a NAS (Network attached storage) drive on 24/7 and a little OS X know-how, you're limited to backing up Time Machine only when you're physically at your Time Machine Drive's location. It doesn't take much imagination to see how this could be problematic: a catastrophic power surge could ruin all your electronic devices, frying your computer and time machine drives, or perhaps your house is burglarized, computer, hard drives and all. For these and many more reasons is why offsite backup is the holy grail.

    So what is Backblaze? It'd be easy to simply call BackBlaze a "cloud" time machine, but that'd be inaccurate. Backblaze doesn't do version history, and it isn't particularly designed for single file downloads (although it can be done).

    Pros

    • Inexpensive!
    • Offsite backups
    • Time Machine level of simplicity
    • Backups can be downloaded or shipped to you at no cost on a USB drive (long as drive is return within grace period)
    • BackBlaze has a "find my computer" feature for stolen computers (assuming your drive isn't wiped or replaced)

    Cons

    • Not full backup: OS and applications aren't backed up
    • Backups are entirely dependent on internet speed, expect weeks of backing for drives larger than 500 GB
    • No back up prioritization
    • No file versioning
    • Files stored for 30 days

    The 30 day backup for BackBlaze is a bit tricky but basically if a file has been deleted, BackBlaze will stop storing it after 30 days, unlike say, Time Machine which will keep the file until Time Machine is forced to delete old backups for storage. Clearly, for Backblaze this is an overhead check. Storing every file indefinitely for each user is likely a very tall order. However, it's also important to understand the implications. If you use Backblaze to backup external drives, they will need to be connected to the computer in question at least once a month while Backblaze is running to reauthorize the index of the files. I wouldn't count on Backblaze to backup data from infreuqent external sources, and if you're going to be away from your data for more than 30 days without connecting to the internet, Backblaze may not be for you. 30 Days isn't bad, but I'd much prefer if they were a bit more generous.

    The Setup

    Setting up BackBlaze requires two things: Signing up for a trial or paid account, and downloading and installing it's application. The initial takes a fair amount of time, it probably took longer for me than the average user with 6 HDs to sift through, which took about a half hour.

    The installer, nearly complete

    Once installed, Backblaze lives as a control panel in your system preferences. For those familiar with Time Machine, the options are similar: you can pick the drives/folders you'd like to exclude, but unlike Time Machine you can specify backup frequency, max file sizes to upload, and what speed to upload.

    Get used to this moving at a snail's pace

    Updating over time

    Currently I'm only two days in on BackBlaze, and uploading around 10 GBs a day by leaving my Mac Pro roughly 16 hours a day on a medium data capping, over the weekends I intend to untether the data cap. BackBlaze is a passive experience. My intent is to update this review as my impressions.

    Currently it appears that the service shoots for small files first, the first 1.1 million files appears to have constituted roughly 20 GBs of space. My best guess is that roughly 10,000 files constitute 90% of the space. I have a feeling I'm on the extreme end of who this service is geared towards. Most users are on laptops, and most laptops are on SSD, very few users probably have larger than 1 TB drives. I'm an outlier, my Mac Pro's bootdrive is a 750 GB SSD, and the backup boot drive is a 2 TB Hard Drive. BackBlaze auto-ignored my two time machine drives, and my bootcamp HD. I picked to ignore my 3 TB external drive, and my other external 2 TB HD. So in short, I'm backing up two drives since those both store what I'd consider my valuable data. Between more than a decade of shooting photos (RAW and between several iPhones) and digital music as my hobby, I probably have more irreplaceable data than most users, (sans the hardcore videographers). Will I manage to get my first back up within three months? I'm unsure.

    A week later (8/22/16)

    After a week of roughly 16 hour runs on my 50 Mbps/20Mbps connection, I've uploaded 200 GB of 1.9 TB for my initial backup with roughly 300,000 of the 1,500,000 files being uploaded. I noticed by default the Downloads folder isn't excluded by default, added it which reduced my uploads by about 60 GB, a drop but in all likelihood 3 less days of uploading. So far the biggest miff I've had is there isn't any prioritization to what data is targeted first. Smallest files to largest seems like a logical strategy but I'd also like to assert some data as more valuable that supersedes the base priority, especially after the initial upload. I still have some questions about how daily backups are handled, and what happens if a file changes before a backup is complete. I'm guessing if its been uploaded, it will not be backed up until the next batch update.

    Two weeks later (9/3/16)

    I was gone for two nights and left my Mac Pro operating 24 hours instead of the rough 14-16 hours a day. Backblaze this morning e-mailed me to let me know I've backed up 646,284 MB of 1,906,920 MB, a hair over 1/3rd done. It's a slog but I'll get there.

    One month later (9/18/16)

    Only 734,542 MB left of 1,832,009 MB. I got a little smarter and added to the exclusion list: ipa (iOS apps), irdata (Lightroom preview cache file), and mkv (video containers as its a distribution format that I do not use, any video work is in other formats). Looks like in less than a month, I'll have completed my first back up. Much better than its initial scare of 100+ days.

    One and half months (9/27/16)

    I've added a simple graphic that shows remaining files and remaining data, the data is listed in MB. For the most part, I've run my computer about 14-16 hours a day with only a two 48 hour bursts. Slow and steady, and it appears roughly 500 files constitute for 1/4 of my data. I was slightly off roughly 10,000 files counted for half my space on my HDD.

    See the Pen D3plus visualization of Backblaze by Greg Gant (@fuzzywalrus) on CodePen.

    Is Backblaze worth it?

    Considering that Backblaze is cheaper than Amazon's Glacier, Backblaze already makes a bit more sane. However there are competitors, like iDrive which is cheaper but is limited to $35 a year for 1 TB and offers multi-computer backup/accounts. There's also SpiderOak, Tresorit, CrashPlan, Carbonite, and SugarSync.

    • #front end development

    Manual Install Invision Craft for Bohemiancoding Sketch

    This installation failed...

    Manual installation

    Craft's help page is woefully unhelpful about installing the plugin manually for sketch, and it only reads "We don't recommend manually installing the Craft plugins for Sketch." without any additional steps, fortunately the good people behind Invision made the plugin URL available to reverse engineering :)

    1. Download craft-sketch.zip and unzip it (doubleclick)
    2. Go to ~/Library/Application Support/com.bohemiancoding.sketch3/Plugins and drag in the Panels.sketchplugin
    3. Go to ~/Library/Application Support/com.bohemiancoding.sketch3/Panels and drag in the Data.sketchpanel, Duplicate.sketchpanel, Library.sketchpanel, and Sync.sketchpanel
    4. Launch Sketch and verify it has been installed under Sketch plugins.

    Enjoy your new plugin?

    • #front end development

    Introducing CSSFilterGenerator.com

    After noticing none of the CSS filter generators offered layer reordering, I wrote my own from scratch. It's still a beta but it works and generates usable code! Check out CSSFilterGenerator.com. Hopefully you find it useful too!

    • #ios
    • #iphone

    Headphone jacks are NOT the new floppy drive

    Rumors aren't part of my blogging but occasionally I've been prone to rant about Apple. The iPhone 7 rumormill sparked an unusual amount of interest on my part, not for what it included but what it didn't include: the 3.5 mm headphone jack. I've always regarded the Lightning port as a senseless money grab despite mostly preferring form factor. Yesterday that rumor has shifted to slightly more sane position, the headphone jack stays! Rejoice...!?

    The silliness of it all is the lightning port creates the insanity that users either must buy bluetooth headphones or worse, a dongle for their existing headphones and forgo the ability to charge and listen to the phone simultaneously. The only advantage lightning ports offer is bus powering for noise canceling headphones which can already be attained without sacrificing the 3.5mm headphone jack, and a thinner phone that's even more prone to bending. It's the same asinine behavior that lead to the new MacBook featuring only 1 USB port, requiring pretty much all users to purchase a $79 dongle for charging/video out and the same insanity that lead to the Mac Pro being mostly panned as a flop by actual Pro users * yours truly and many pundits.

    Hostile design...

    Apple's opinion is ports is clear, and its disdain for modularity is frightening. While I normally agree with famed Apple pundit, John Gruber, Headphone jacks are the new floppy drive. His reasoning is flawed, very flawed.

    Why would Apple care about headphone compatibility with Android? If Apple gave two shits about port compatibility with Android, iPhones would have Micro-USB ports. In 1998 people used floppy drives extensively for sneaker-netting files between Macs and PCs. That didn’t stop Apple from dropping it.

    I remember 1998 too and perhaps more vividly, and everyone had Zip Drives and applications came on CD-Rom in big funky boxes. The floppy was already on its death bead, as 1.4mb was simply too small, the only things that came on floppies in 1998 for Mac users were drivers which could easily be printed on optical media. Everyone was asking for something better by then, hence why my PowerMac G3 450 that I bought in 1999 had one internally. While the iMacs did kill the floppy, they had USB, ethernet, a built in modem, a CD drive and it wasn't long before they had CD-RW/DVD drives.

    By the time the MacBook Air eschewed the optical drive, anyone looking to transfer files had the internet, USB drives and networks for file transfer, all faster and offering exponential storage over optical media. Much like the iMac, the MacBook Airs even added Lightning ports, a much welcomed addition. Even by the mid 2000s, the internet had become the preferred way for most software distribution.

    If anything, the 3.5mm headphone jack has hit a renaissance. My computers all have them (My media PC and Mac Pro have several). My Lightning port dock has two. My old iPod has one. My 2013 car has one. My PS4 controllers each have one. My iPad has one. My USB connected speakers, Vanatoo Transparent Ones still have one. My old Klipsch Promedias have both input and a nice front facing jack. My Numark NS7s have one (along side its 1/4 inch) and I'm not even counting the test bed of devices I have at work for development. If we went back in time, 10 years ago, my car did not have a 3.5mm jack, nor did my game consoles have them built in, and my Motorola Razr didn't either, and that's not counting the items listed above that simply didn't exist in 2006.

    Outside a few fanboys, No one is asking for a replacement for the 3.5mm.

    Apple switching to lightning port makes headphones incompatible even with their own Macs. I have a 2015 MacBook Retina on my desk as I type these very words and I can most surely assert that it does not have a lightning port but does have a 3.5mm jack. Same goes for my 2008 Mac Pro. On my desk I have two pairs of $200+ headphones at work that at best are going require a dongle and at worse will not be usable with iOS.

    The craziest part is we're in a world where we can have our cake and eat it too. Lightning port headphones, bluetooth headphones and 3.5mm all can continue to coexist. The Verge's Nilay Patel is 100% correct, Taking the headphone jack off phones is user-hostile and stupid and I will not be buying an iPhone 7 if it doesn't have a 3.5mm jack.

    * Edit

    Gruber followed up with the following quote:

    Removing the analog headphone jack is inevitable, and the transition is inevitably irritating. This is what makes Apple different. They will initiate a painful transition for a long-term gain. Other companies will avoid inducing pain at all costs — and you wind up using VGA until the mid-2010s.

    This analogy is clever if you do not understand the inherent physics of the problem. Video ≠ Audio. Unlike say HDMI vs VGA which offers inherently better picture, lightning cables do not.

    Video signal transfer isn't powering a transducer. No matter the signal chain of audio, if you want to hear it you're inevitably going to convert audio to analog waveform by DAC to an amplifier then to a transducer. All a lightning port cable does is delay the conversion. If you've ever wondered why the staying power of analog has been so strong, its simply due to the physics. Using a lightning cable solves nothing, and places the amp/DAC outside something the phone already provides, which in turn equates to expensive dongles or expensive headphones. For home theaters, we use a centralized receiver that takes digital inputs like HDMI, S/PDIF (Toslink or coax), Bluetooth/wifi and USB, decodes/converts the signals to analog to be amplified and transmitted rather than sticking a DAC/amplifier in each individual speaker.

    Taking this stance isn't standing in the way of progress, it's actually arguing for progress, it's an open standard that's virtually future proof, almost universal until we do away with transducers as we know them. If it was truly about thinness, we'd have a simple plug adapter from 3.5mm to a thinner variant as we do from 1/4 inch to 3.5 mm. This isn't progress, this is shackling us to a closed standard that Apple can tax.

    • #audio
    • #review

    A week with the Focusrite Scarlett 6i6 - a review

    Pictured: Scarlett features a stylish brushed red aluminum finish.

    I have a bit of a history reviewing audio hardware, specifically audio I/O. Over time, the audio interface has moved away from PCIe to USB, which it now currently rests at as the defacto state for nearly 15 years after USB 2.0 became widespread. I've owned a few external boxes over the course of a decade, briefly M-Audio's precursor unit that mimics today's Fast Track (Which I returned), Yamaha GO46 FireWire, and Native Instruments Audio Kontrol, and recorded two albums using the the later two. I consider myself a bit of an audio geek, but without the audiophile trappings.

    Recently I hit a breaking point, NI Audio Kontrol was able to accept 1/4 inch unbalanced cables. Mystified, I decided it was time to retire the AudioKontrol and check out the offerings in 2016. Unsurprisingly, audio interfaces offer far more bang for the buck than did even 5 years ago, at $180 I was able to score the Focusrite Scarlett 6i6, offering more high quality inputs and outputs than any of my previous devices at a lower price point. Even more impressive for $240, the 18i8 offers a whopping 18 potential inputs and 8 output buses.

    The weak point of every USB capture device in my experience has and probably always will be, drivers (and USB itself). As an OS X (excuse me, macOS) user, CoreAudio has been mostly positive. Most USB devices if they're ASIO/CoreAudio compliant, drivers are barely needed for basic I/O. However, if the interfaces have custom buttons / internal routing or other features, then drivers are required. In the case of my AudioKontrol, the drivers actually were mostly negative causing glitchy behavior, and same went for my week with the M-Audio Fast Track. After dealing with years of prosumerish solutions I decided to ante-up to Focusrite, renowned for their preamps, skipping budget players like Presonus and M-Audio.

    Fair warning, this as much an overview of digital audio as review. Now onto the review.

    FocusRite Scarlett 6i6

    focusrite Scarlett 6i6

    Pictured: The 6i6 makes for a good speaker rest

    The Scarlett 6i6 is 6 in and 6 out but that doesn't quite accurately sum up the ports. A break down includes the following:

    Inputs
    • 2 front facing Microphone XLR/ 1/4inch Line Inputs with hardware knobs for gain control and level monitoring (Supports 48v)
    • 2 1/4inch Line Inputs
    • 1 stereo S/PDIF input
    • Midi in
    Outputs
    • 2 1/4inch Headphone outputs with hardware volume knobs
    • 2 1/4inch Line (monitor) headphone outputs with volume knob
    • 2 additional line outputs
    • 1 stereo S/PDIF output
    • Midi out

    If you notice, this doesn't add up to the 6 outputs in the device name but instead a total of 6 inputs and 10 outputs. The reasoning is headphones/monitors are all on the same audio bus bring it back down to 6 outputs buses: one for the monitors (speakers/amp + two headphones), an additional set of 1/4 inch outputs and an SPIDF cable. Each of the headphones jacks and monitors have independent volume controls but any audio routed to the monitor outputs will be outputted to those three outputs. Also notable, the Scarlett only accepts 4 analog channels in. Most users probably won't use the S/PDIF I/O (more on that later). The full tech specs can be found here.

    Setting up

    Focusrite surprisingly ships the Scarletts with a host of wall adapters for your country of choice but being firmly rooted in North America, I had to swap to North American standard prongs. Other than that, the Scarlett is pretty straight forward: USB cable to the computer, AC adapter to the wall, audio inputs into the device. For me, this meant plugging in my Numark NS7s into the back ports and single mic.

    Pictured: The mess of cabling...

    Performance: latency

    With digital audio, there's always (as of writing this) buffering which requires interjecting latency. No matter the device, there will be latency depending on the buffer size. The math to calculating minimum latency is quite simple: Buffer size/sample rate (in KHz) = latency in milliseconds.

    Example:

    512 samples/44.1 kHz = 11.7 ms

    384 samples/44.1 kHz = 8.7 ms

    512 samples/96 kHz = 5.3 ms

    384 samples/96 kHz = 4 ms

    However, this is only the absolute minimum for ONE direction, and lowering the buffer puts more stress on CPU to be sure that the buffer never is fully depleted. This becomes tougher to accomplish as the CPU is tasked with processing more information such as more fx and more tracks. Total travel times for buffering would like like the following:

    Example:

    (in) 512 samples/44.1 kHz = 11.7 ms + (out) 512 samples/44.1 kHz = 23.4 ms minimum roundtrip travel time

    (in) 384 samples/44.1 kHz = 8.7 ms + (out) 384 samples/44.1 kHz = 17.4 ms minimum roundtrip travel time

    (in) 512 samples/96 kHz = 5.3 ms + (out) 512 samples/96 kHz = 5.3 ms = 10.6ms minimum roundtrip travel time

    (in) 384 samples/96 kHz = 4 ms + (out) 384 samples/96 kHz = 4 ms = 8ms minimum roundtrip travel time

    The math above also represents the absolute minimum for travel time for external audio to travel from an input and routed to an audio output. As stated this is the absolute minimum time, the audio travels through USB for the USB clock timer, which fires at 1 ms intervals, thus there's an latency buffer that has nothing to do with audio samples but rather continuous data flow imposed by USB. Lesser devices simply use a buffer size of roughly 6 ms for each direction (I/O) which adds more travel time, whereas higher end devices will finally tune the USB timing to minimize the delay. Someone using a low end USB device with 384 sample buffering can expect roughly a 29ms delay. Higher end boxes such as the Scarlett have fine tuned drivers to shave off crucial milliseconds for the USB buffering, and also include onboard DSP to allow onboard mixing to lower travel time delay. If this all sounds a bit confusing, it isn't as bad as it sounds.

    Example:

    I would like to route my Mic Input directly into my output so I can monitor my inputs without having to route my audio to my computer, to the DAW then back out USB, all of which introduces a time delay, hence latency. Doing this skips the travel time through the ASIO buffer and USB Clock. The benefit is that I effectively has zero-latency for my input monitoring and my downside is that I cannot make use of any effects in realtime from my DAW.

    Higher end audio interface include DSP effects that can be controlled via the software mixers so basic compression/EQing/reverbs/delays can be applied to live monitoring and/or use other interfaces (Firewire has a slightly better clock timing, but Thunderbolt provides even lower latency due to the PCIe bus clock).

    All in all, the big step of buying the Scarlett line over a prosumer audio interface boils down to slightly better drivers and internal mixing.

    Performance: The bits of it all

    24 bit is really an unrealistic thing, it's nearly a meaningless stat when it comes to audio gear, however there are measures that more appropriately reflect the dynamic range, but to fully understand this, we have to talk analog and math.

    While I may get flack for saying this, despite issues like latency, digital has had a massive leg up over its analog predecessors, not simply from an archiving/storage perspective but also quality. The much loved vinyl format, hits roughly -80db between signal to noise, meaning the signal is signal power is roughly 80 times stronger to the noise power, which isn't bad. Digital however doesn't have an analog noise floor, and sound pressures are expressed in bit depth, which is the amount of steps to current in the digital-to-analog convert (DAC).

    To use an analogy I developed that works reasonably well when writing for an audio publication, Bit depth is akin to bit depth in digital imagery, instead of reflecting how many colors an image can have, it reflects how many steps in volume. Sample rate is the resolution, at which the sound is captured. What becomes interesting is that there's even a formula that explicitly tells you how the maximum dynamic range in decibels for any given bit depth. Using the signal-to-quantization-noise ratio formula: 20*log10(2^BITDEPTH-1), we can calculate the signal to noise ratio. 16 bit audio has a theoretical range of 96.33 dB, which is considerably better than Vinyl, and on par with the best of studio to reel to reel systems. Also, it's important to understand these values represent a theoretical maximum as the Analog-to-digital convertors (ADC) and digital-analog converters (DAC) rarely achieve their maximums. 24 bit audio has a theoretical range of 144.49 dB, far beyond even currently the best hardware on the market. Below I made a simple calculator to play with.

    The Focusrite features 109 dB dynamic range on its inputs and outputs which is a little more than 18 bit depth. For the computer savvy 18 bit = 218 which is effectively 262144 sound level pressures vs 16 bit's 65536, or 4x times more detail. Focusrite isn't being deceitful listing 24 bit, but rather dealing with the limitations of audio production. Also notably for a reference point, the theoretical maximum for volume reproduction of 24 bit would be from silence to a NASA rocket launch (140 dB), arena rock concerts are known to be in excessive of 120 dB. It's not realistic to use the entire dynamic range of 24 bit and your neighbors would not approve if you could.

    Resolution

    If I haven't talked sampling rates yet, there's a reason, by most accounts, bit depth matters more than sampling rates after a certain point. 44.1 Khz can reproduce 0Hz-22KHz. Capturing at 96 KHz, may actually reduce sound quality if your target format is 44.1 KHz through alias noise. The best way to imagine this is a photo. If you scale proportionally by half, the image will remain clear whereas, scaling to say, 45.9% of the image size would cause some of the image clarity to be sacrificed. The reason why in applications like Photoshop this isn't that big of a problem is through resampling (scaling) algorithms. This sample principal applies to audio, as the wave form must be recomputed and resampled, creating what is known as aliasing. Bit Depth downconversion uses dithering which is a lot more predictable as its a numeric reduction in values, where a range is compressed. Depending on your target format (movies = 48 KHz) or music (usually 44.1 KHz) capturing at 2x the sampling rate is of the target format is preferred. The Scarlett can capture 88.2 KHz but the advantages of higher sampling rate less obvious since DACs have become quite good over the years at filling in the gaps so-to-speak. What high resolution can do is capture above human hearing sounds, and more accurate articulation of the effects of things phasing. It's not night and day, and honestly, I'm mostly hard pressed to tell the difference, as are a lot of people, however, audio processing does better with denser data and the real advantage almost exists entirely in the DAW.

    Since I touched on analog vs digital I figure I'll put in a quip in the long standing debate. Most of analog's love has less to with superior quality, but characteristics left due to various mediums limitations. It should be also pointed out that analog effects like harmonic distortions from tube amplification and over-saturation from tape, can and are captured by digital when recording from analog sources. For audiophiles, much of the desire is to recreate how music "used to sound", hence the love of vintage hardware. There's nothing inherently wrong with this except that it often shapes audio debate in non-quantifiable terms and often leads to absurd claims about analog vs digital. Also to add to the debate mess, has been the shift in recording techniques, mixing and mastering over time which also drastically alters the sound of a recording.

    Lastly, digital for recording/listening intents and purposes exists in tandem with analog. In any audio digital path, the signal must be converted into analog electrical modulations to be fed into a transducer (speaker) or start as analog from a transducer (microphone) and have the analog signal into digital, so the devices that perform this are very important. In short, as it relates to this review, the Focusrite Scarlett quality that's professional at an absurdly low price point and it's a wonderful time for a hobbiest as digital solutions are cheap and extremely high quality. Focusrite isn't the only player making low-cost/high-quality computer audio interfaces this but it has one of the more attractive packages.

    The Real world

    At the price point, the Focusrite is well speced, the 2nd generation due out this month gives a modest bump, mostly more headroom on the analog ports, 192 KHz capture/playback and analog protection circuitry for unexpected power surges, all welcome features but not game changing. The 1st gen can be had for $180, a nice $70 price reduction making it a lot of bang for the buck.

    Scarlett Mixing Software

    Pictured: Scarlett Mixing Software

    The Scarlett drivers are straight forward although the device can be used without them but you'll miss out on the analog mixing. After installing the drivers, I rebooted and launched the mixer which immediately updated the firmware of the 6i6, which took mere seconds. No word of what the firmware update did but googling revealed that it improved sample rate switching for OS X (MacOS) users and enables standalone mode so the device can continue routing audio even if the computer isn't turned on, very cool.

    The software mixer straight forward, with handy routing presets and input gain control which is useful for the inputs that do not have hardware controls. Any configuration preset can be saved as a snapshot and instantly reloaded, likely more useful for the Scarlett featuring more inputs and outputs but still welcome. Sevearl of the mixer elements also control hardware switches on the device like Input Gain control or line level vs instrument for the front facing. There's a gift and a curse, the hardware is small and compact but it means its entirely driver and support dependent to set the device settings, whereas with previous devices I've owned, line vs instrument gain control was hardware facing. Even with bad drivers, the AudioKontrol functioned as a simple USB input/output device regardless. With any luck though, support will be long in tooth.

    My setup

    Everyone's home studio will look a little different so to give users a chance to contrast and compare, my current setup is as follows:

    Computer: Mac Pro 2008 with oodles of upgrades

    Monitoring: Vanatoo Transparent Ones with a MartinLogan Dynamo 300 subwoofer, Beyerdynamic DT-990 headphones

    Inputs: Numark NS7 Numark Performance Controller (motorized turn table controller with audio output), various Microphones

    Midi:Native Instruments Maschine, Korg Padkontrol, Korg Microkey 37, Korg NanoPad, Korg nanoKontrol (all USB)

    DAW: Cubase, Logic, Maschine

    My mini studio is very hip hop centric, mostly focusing around beat composition. It's not space intensive and uses only a modest amount of hardware and I don't have any real plans of expanding much beyond it. The only real upgrades is probably replacing my Shure SM7b with something a little more forgiving for a wider range of vocals.

    Out the gate, I was already happy to simply be able to listen to my headphones or speakers without having to change my audio settings in OS X, even if only an option click away. Swapping between the two was as simple as turning the volume up, this may not seem like a big deal but for all the love Vanatoo get, their speakers annoyingly do not have a front facing volume knob. Also the headphone amp, while some audiophiles scoff at it, is without a doubt reasonably better than my Mac's internal headphone jack that I was reduced to using. At least the Mac Pro headphone jacks aren't pummeled with white noise like the MacBooks. Out the gate, if nothing else more accessible volume knobs and better sound via headphones. I was previously debating a headphone amp for my power hungry DT-990s but they sound better than before and as good as I recall them when I used a Denon mid range receiver as my main headphone amp.

    The big hiccup came when trying to get audio to work in Cubase, part of it was user error as I could not get audio to output for the life of me in Cubase and only Cubase. In a moment of inspiration I realized that my ports may not be labeled correctly in the VST panel and noticed that it carried over disabling two outputs. Cubase started showing volume meters for sound but refused to actually output audio. At this point I resorted to a classic audio hack for OS X, create an aggregate device of one in the audio midi setup. For whatever reason, it worked. Annoying? Yes. All other applications functioned normally without this, meaning the issue lies somewhere between Cubase's VST engine and the drivers for the Scarlett.

    Recording was easy as ever, there isn't much to say, identifying buses was a charm and recording worked great, noiseless and sounded as rich as it should have for the instrument inputs on the back. The Mic Preamps are notably a little nicer than my Audio Kontrol, simply for the fact it'll accept unbalanced cables. The quality when tested with a Sennheiser e935 without any other preamp was clean and defined, and only required roughly half gain. Comparing it to the Audio Kontrol which wasn't terrible, it seemed just a hair "richer" to use a vague imprecise term. Audio quality is certainly up to professional standards, at least in my book.

    The next plus was for the first time, I was able to use live monitoring. With my AudioKontrol, it never worked if it was supposed to. I've always done monitoring via software which has meant delay. Not ideal but it worked. A quick trip to the mixer control panel and the Scarlett worked as expected. I could play my NS7s irregardless if I had a track set to monitor. It's a real benefit over the lower end devices I was using.

    After a week in Cubase, there's no noticeable glitches, which Cubase on OS X... macOS... is more prone to than many other audio apps. I'm pleasantly happy with the device.

    A slightly different take - S/PDIF

    The 6i6 is almost ideal but the S/PDIF coax ports are almost useless for most people. So for anyone asking what S/PDIF (Sony/Phillips Digital Interface Format) is, its the common format developed for transmitting PCM audio or compressed formats such as AC3 (Dolby Digital) or DTS via 75 Ohm Coax (RCA) cables or Toslink (Optical). Toslink over time became the much preferred format, likely for the "cool" factor, and optical cables require no shielding as RF noise does not affect light, thus cables are lightweight and small. S/PDIF can be found on many home theater receivers, some standalone CD players, most DVD players, some Blu-Ray players and in the professional world, DAT systems.

    S/PDIF is so ubiquitous that my Mac Pro has I/O via S/PDIF optical and most Macs (MacBook Pros, iMacs) can output S/PDIF optical with a specialized mini-toslink cable. Digital Coax is a fading format, limited to DAT and some CD/DVD players. Outside of DAT, most formats that use S/PDIF can be transferred directly like optical media (CD/DVDs) from an optical drive bay and thus, its mostly used as a way to transmit out from a computer to a receiver or speaker system. I'm not sure about user stats but coax S/PDIF really strikes me as not very useful. I'd much prefer another set of instrument inputs for S/PDIF, a 6i4 (6 analog inputs) would be more useful, I'm guessing most studio musicians would be in the same boat. At the very least, Toslink would be much preferred as there's a much greater chance someone has a speaker system or receiver that uses it.

    The other negative is I still don't know why Cubase has a problem with the Scarlett. I've used 3 other boxes over-the-years and never required any workarounds. It works but it strikes as a precarious position as I'm not sure if I'm a DAW update or OS update away from it not working with Cubase but as of writing this it does under OS X 10.11.5. As Mac Cubase user, I'm in the minority and Logic X works fine with it.

    Pros

    • Value!
    • Build quality
    • Easy to use device mixer software
    • 6 outputs linked to the "Monitor" audio bus alone, meaning two separate headphone amps and external speakers with all independent volume controls
    • low latency for USB

    Cons

    • Mild driver issues with Cubase, works fine with workaround.
    • Coax S/PDIF really could be swapped for more useful ports. It's best to think of this as a 4 input device

    • #audio

    Setting Up Focusrite Scarlet on OS X Cubase fix


    Focusrite Scarlet functions as my headphone amp, alt route to speakers and speaker stand.

    I recently purchased a Focusrite Scarlet 6i6 but quickly ran into problems with Cubase 8 and OS X 10.11.5, the device worked with all other audio apps which made Cubase's VST system the culprit. For whatever reason, getting my Scarlet 6i6 to work required creating an aggregate device which still mystifies me. Aggregate devices in OS X allow you to combine multiple audio I/O sources into one virtual device for use in applications, regardless if the application in question has support for things like multiple audio I/Os or even something mundane like audio input from device A and playback on device.

    Step 1: In Audio Midi Setup, create an aggregated device

    Step 2: Select the Focusrite, no other inputs/outputs are needed

    Step 3: In Cubase, under devices, select Device Setup and set your device to the newly created aggregate device

    Confirm all the ports are enabled and labeled in a sensible fashion

    Under devices, select VST Connections and set the output to the monitor output

    Under inputs in the VST connections, create any necessary buses needed for input and/or assign the ports as needed.

    • #front end development
    • #accessibility

    A fix for UI elements that do not respond to return or enter key presses

    While I usually don't write much about client specific work about my job, I recently was hit with a minor problem: Slide shows are terrible for accessibility. After scratching my head for a few minutes I was hit with a dead simple solution, simulate mouse clicks with JS. Check out the codepen below.

    See the Pen Tabindex return fix

    • #front end development

    Resolving Grunt Error - libsass bindings not found in...

      Running "watch" task
      Waiting...
      >> File "../scss/theme/_color-mixins.scss" changed. <br>
      Loading "sass.js" tasks...ERROR
      >> Error: `libsass` bindings not found in /Users/~path/_build/node_modules/grunt-sass/node_modules/node-sass/vendor/darwin-x64-47/binding.node.
       Try reinstalling `node-sass`?
      Warning: Task "sass" not found. Use --force to continue.
      
    • Step 1: run npm update from the grunt directory with your package.json. This should fetch the latest dependencies that are specified in your package.json file.
    • Step 2: Likely if you try to run grunt, you'll experience a binding error that reads as follows:
      Node Sass could not find a binding for your current environment: OS X 64-bit with Node.js 4.x. Usually this error is followed by the suggestion to of using rebuild node sass.
      Run npm rebuild node-sass
    • Step 3: If you're still receiving sass build issues: try updating grunt
      npm install -g grunt-cli and re-running the above. Also you may need to update Node itself and check your package.json versioning.
    • #front end development

    Sitefinity updated logo for 2016

    Sitefinity is a mess

    Trying to track down what's causing JQuery Validate to glitch out and cause a "Uncaught TypeError: Cannot read property 'addMethod' of undefined" error in SiteFinity on a client's website. When signed into the CMS there's one hundred and five instances of javascript tags. Coincidentally, I also redesigned the Sitefinity logo.

    Sitefinity Updated Logo for 2016

    Now for an official press release:

    For Immediate Release: 05/09/16
    Telerik Sitefinity
    http://www.telerik.com/

    Sitefinity Logo updated for 2016 under direction of disgruntled front end developer with no connection to Telerik

    Portland, Oregon: Today unbeknownst to Telerik corp or anyone affiliated with Telerik or Sitfinity, Greg, an front end web developer with a surely disposition and contempt for french roast coffee released an updated logo for Sitefinity.

    The logo shows a daring new approach in design, with virtually no treatment on the logo but instead an abstraction of the word "javascript" repeated 105 times in various states of legibility, using Operator Mono in book weight from esteemed and respected font foundry, Hoefler&Co. The design is a literal abstraction of the way Telerik has almost no regard for the way javascript is treated, and appears to randomly "shit out" javascript tags according to Greg. The alternate design was arrived after initial sketches that included a large singular pixelated middle finger, and a dead musk rat.

    "This is the stuff that haunts my dreams. Who deemed this an acceptable or maintainable design pattern? Is there ever going to be a CMS that isn't some shade of terrible?" Greg ranted on his company's slack channel which elicited zero responses.

    The new logo should be used in any instance of the old logo and is free for use for all.

    About: This press release is 100% serious and real.

    • #audio

    Maschine hangs or crashes on Loading GUI fix

    It's one thing to post a fix, and its another to explain how I arrived at the fix. As a web developer (and very very long time Mac user), my life is debugging so I have a few more tools to pull from. Hopefully advanced users will be able to follow my logic to arrive at this fix. You can skip past the following to get to the fix but this explanation may help you to troubleshoot not just Mashcine but other apps. I'm not a magician and I do not pretend to be one, and you too with some practice and time can start learning to troubleshoot computer programs.

    maschine loading

    So recently Maschine stopped working randomly. Having a fair amount of technical prowess I wasn't too worried. I went to my Activity Monitor. For those not familiar, OS X comes with an application bundled in every install called "Activity Monitor", in your applications/utilities folder. Activity Monitor is a GUI (Graphical User Interface) to several UNIX applications that can be accessed in the OS X's terminal. These applications allow you monitor memory / CPU / network usage. As a debugging tool, it's a must as you can see if an activity is slowing your computer down by overly utilizing CPU cycles, ram or bandwidth and force quit tasks that can't be accessed by the normal force quick menu.

    I fired up activity monitor and located Maschine in the list and double clicked it to get more info about the precess and to see which files it recently accessed. Even to me, most of what appear in the log files are a garbled mess of esoteric computer speak but I also know that there's important info in these logs. Fortunately files accessed logs are straight forward. In the log, the last files accessed were plist files pertaining to it's freeze state.

    maschine open files

    As an OS X veteran, I knew offhand a few things: plist files are preference files that sometimes get corrupted, and usually can be deleted without any repercussions as the application in question will simply regenerate these (worst is some settings may be lost) and more importantly that the .saved has to do with OS X's ability to relaunch applications to their last known state. As a rule, Freeze states are pretty much always ok to delete, infact occasionally you need to dump a bad freeze state. This is common practice in iOS when users double tap the home button and swipe up to close a frozen app as iOS doesn't by default "quit" apps, but simply places them into freeze states. Deleting a freeze staet simply forces the application in question to fully relaunch.

    I started by dumping the Saved Application state, always an import first step in modern OS X debugging but it didn't work. After talking to my buddy Justin, he mentioned that the time Maschine stopped working when he changed plugins. So I had a hunch and decided to take a memory sample in the activity monitor. Memory samples allow you to peek inside to what your application is doing and what information is being accessed at that moment in time. Remember how I said even I don't understand much of what's in a log file? This is one of those times. We know that the application is hanging so something is causing it to hang, and we can bet that the problem can be "seen" as the program will likely try to repeatedly access something or we may see the last item the application tried to read before stalling out.
    (the screen caps are clickable for legibility)

    maschine open files

    Note that during the hang, the memory sample is calling PSP echo, which is a popular audio plugin. Maschine like many audio applications runs an initial plugin scan to make sure all the plugins installed are compatible and if they aren't they're blacklisted so they will not crash the host application. This scan usually is run only if the application detects a change such as a new plugin install. This sometimes fails, and causes an application to crash. Apple's Logic, has the ability to detect failed launches and thus rescans it's pliugins on a failed launch (a somewhat recent innovation with Logic 8 or 9). Maschine being a little more limited, doesn't have this ability so its up to the user to manually reset the approved plugin cache. While I couldn't find the Maschine 2 location for plugins list, I found the following article MASCHINE Crashes at Startup (OS X) which pointed me in the right direction.

    How to fix

    Step 1: Go to the following location on your computer:

    Users/[your user name]/Library/Application Support/Maschine 2/

    Note: You may need to enable your user library folder visibility if you have not done so already.

    Step 2: Drag all the files into your trash.

    Step 3: Relaunch application.

    maschine could not load plugin

    With any luck you should see something like the message above. Happy Beat Making and troubleshooting! Remember, the activity monitor is one of the most important tools in a power user's bag of tricks. OS X is big and complex but almost nothing is done behind closed doors, this means there's almost always a way to get to the root of a problem.

    • #front end development

    Setting up Operator Mono in Coda

    I'm a big Operator Mono fan. A few months ago I wrote how to Set up Operator Mono for Atom. It involves a bit of style sheet hacking. Coda is pretty straight forward but I realized after roughly 8 years of owning Coda, I've never messed with the font formatting.

    Step 1: Set the font in preference under Editor

    Coda preferences

    Click the Editor Font and locate Operator, select the weight you're most comfortable with.

    Step 2: Setting up the italics character set

    One of the best features of Operator Mono is that all its italics are an alternate character set, useful for programming. Coda doesn't pack in a style sheet akin to Atom or Sublime, which is a mixed blessing. It's pretty easy to set up but requires a little more handy work.

    • Click Colors in Preferences
    • Within the colors panel scroll area click on the various code examples and click the bold/italics to check boxes to change your code styles

    Coda  color preferences

    To mimic Atom's settings and the examples on the Operator Mono website, I recommend italicizing the following: all comments, tags, variables, attribute names, and leave CSS unitalicized. That's it!

    • #front end development

    PostCSS is really slow - PostCSS vs minification and autoprefixer

    A few months ago one of the back end developers ribbed me, "Front End Developers can't decide if they want to pre-process or post-process their CSS" after PostCSS and CSSnext.

    The worst part, is he's right but we've been doing both for some time unbeknownst to him. Unlike the hazier CSSNext ambition of bring future CSS code today (based on PostCSS), PostCSS itself simply a library of tools for programmatically manipulating CSS with Javascript which is a zealous under-sale of the potential. Like any good front end developer, I wanted to see if PostCSS actually made sense to use since I don't have the interest (yet) to use CSSnext.

    While admittedly this isn't the most scientific test, I ran this using the current versions of gulp and grunt with their respective plugins using a rather large project build on a heavily modified version of Bootstrap 3. The end result is roughly 9700 lines without minification, and a 160k CSS file minified. It's big but it isn't massive either.

    Grunt Results

    Without PostCSS

    • Total 586ms

    With PostCSS

    • Total 5.3s

    Gulp Results

    Without PostCSS

    • Total 388ms

    With PostCSS

    • Total 4.75s

    The configuration looks as follows:
    Libsass -> autoprefixer -> minification.

    In the grunt task, I have a watch task that triggers libass to grunt-autoprefixer to grunt-contrib-cssmin. I replaced the prefixing/cssmin with grunt-postcss.

    For Gulp the task was nearly identical, libass to gulp-autoprefixer to gulp-autoprefixer. I replaced the prefixing/cssmin with grunt-postcss. The end result is pretty much the same.

    What does this mean?

    The takeaway is that previously modules that PostCSS replicates are considerably slower but (and I'll use bold to stress this) this does not mean you should not use PostCSS. PostCSS still has some seriously potential if you're into eschewing the pre-processor for CSSNext or looking to use CSS Modules. However, unless you need PostCSS, you shouldn't feel obligated to replace current working tasks with the CSSnext version.

    • #off topic

    Kite - an Indie game

    Long time friend, James Treneman is a one man studio making his own game and its in the process of being Green lit on Steam. Check it out.

    • #front end development
    • #browsers

    Exploring and Developing for the PS4 browser

    The Playstation 4 is quite the capable device, unsurprisingly able to run linux. I recently bought a PS4 and in true developer spirit immediately began poking around the browser. To my knowledge, there's next to zero developer documentation. The best I could find was a single PDF from Sony which appears to be dated. My goal is to document what's known about the PS4's Browser.

    My PS4 test setup

    Version: CUH-1200

    OS: 3.50

    Gecko? Mozilla? Netfront?

    whatbrowser.org ps4 screenshot

    Google's whatbrowser gives an error.

    whatbrowseramiusing.co ps4 screenshot

    whatbrowseramiusing.co reads the Gecko-Like User-Agent string.

    whatismybrowser.com ps4 screenshot

    whatismybrowser.com likely matches UA string by closest match, and returns Mozilla.

    whatsmybrowserorg.org ps4 screenshot

    whatsmybrowser.org correctly identifies the PS4 as NetFront.

    Netfront is a proprietary web browser used for the Playstation 3, Playstation Vita,PSP, Nintendo 3DS, Wii U and Kindle E-reader. The original Netfront Browser has since been replaced by a webkit powered NetFront NX which appears to power the PS4.

    Support

    Specs:

    • HTML 4.01, XHTML 1.1, XHTML Basic 1.1, CE-HTML, XML 1.1, RSS feed (RSS 0.9/0.91/0.92/1.0/2.0, Atom 1.0)
    • HTML 5 Support: Canvas, Canvas Text, localStorage, sessionStorage, Web Workers, applicationCache, HTML5 Input types (partial) - Notable missing: Geolocation API, HTML5 Input input attributes, picture element, srcset, service workers, web components
    • CSS3 (Flexbox, full CSS3 selector support Media Queries, Animations, 2D/3D Transforms, Transitions, etc.) - Notable missing: Multiple background support
    • CSS1, CSS2.1
    • Javascript V 1.7+
    • DOM LEVEL 2

    PS4 passes all the CSS3.info's select test

    The PS4 scores relatively well on the CSS3 test (Chrome v 49.0.2623.112 scores 52%, Safari 9.1 54% and FireFox 45 63%)

    Security:

    • TLS1.2 *no compression
    • NSS
    • Configurable digital certificates
    • Extended Validation
    • Elliptic Curve Cryptography
    • No SSL support (2/3)

    Viewport: unsupported

    WebGL: unsupported

    PS4's webGL error

    • Image Formats: JPG / GIF / PNG / BMP (32 bit + compress supported)
    • Note: TIFF image format is unsupported (commonly supported in webkit).
    • Video:

      • Container: Mp4/HLS
      • Codec H.264
      • Profile: Baseline/Main/High
      • Level: 4.1 or lower
      • Resolution: 1920 x 1080 or lower
      • Framerate: 60 fps or lower
      • Bitrate: 20 Mbps or lower
      • Autoplay: supported
    • Audio:

      • Formats: AAC (LC or HE-AAC v1)
      • Channels: 1 channel, 2 channels, 6 channels (AAC-LC only), or 7.1 channels (AAC-LC only)
      • Sampling rate: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, or 48000 Hz
      • Bitrate: 48 to 3456kbps
      • MP3/WAV/AIFF/AU/MIDI unsupported
      • Audio playback using the audio element is not supported.
      • Direct links to audio is not supportered
    • PDF: unsupported
    • Downloads: unsupported

    Browsers Tests

    Successful:

    Acid3 test

    Sunspider 1.0.2 test: Overall score: 3203 ms using remote login (and a game left open)

    unsuccessful:

    PS4's fails to load html5test.com...

    Notably some previous users have completed the HTML5 tests, you can see the scores: here.

    PS4's fails during Octane test...

    Not pictured: Jetstream

    The PS4's weakest link appears to be modern JS support. Unsurprisingly the PS4 isn't a strong performer. In a very uncontrolled environment with 3 concurrent browsers open, and roughly 25 tabs, and several apps, my MacBook Pro in chrome scored a 157.8ms vs the PS4's 2929ms (Lower is better). An iPhone 6 scores roughly 326.6 ms. The big differences here are that both Chrome, Safari and FireFox use highly optimized JS engines, V8, NitroJS and SpiderMonkey respectively. However, other users report much better SunSpider benchmarks clocking around 1027ms which places roughly at the performance of an iPhone 5 when it comes to JS. While the PS4 certainly has room for improvement but is unlikely to see massive gains as I highly doubt most people spend much time in the browser outside of gaming.

    More to come...

    Stay tuned, I plan to update this over time. Testing the PS4 is tedious as the remote support doesn't allow text input via keyboard.

    Planned tests: weinre remote debugging, FireBug Lite, BrowserSync

    Anyone with better documentation or more information please feel free to e-mail at: blog@greggant.com. Thanks!

subscribe via RSS