Installing 802.11 A B G N AC + Bluetooth 4.0 Airport Card in Mac Pro 2008 (& 2006)

    I recently purchased a BROADCOM BCM94360CD from OSXwifi.com, a site carrying Airport replacements for a variety of Macs with the latest and greatest in wifi. For 2008 Mac Pros, this means adding not only 802.11 AC, but Bluetooth 4.x for features like Airdrop and handoff/continuity support.

    However, the instructions included were a bit thin so I decided I’d post a walk through for sanity’s sake. You’ll need a set of precision Phillips screwdrivers, I picked up a set years and years ago from Fred Meyer.

    image

    Step 1) Remove your 3rd Drive Bay

    Open on the case and remove the 3rd drive bay, you may need to remove PCIe cards depending on if they’re impeding you.

    Step 2) Remove your Wifi Card (if it is present)

    image

    The Wifi card should be located need to the interior of the PCIe chamber. You’ll need to pop off the antenna cables, it doesn’t take much force. Unscrew the single screw.

    Step 3) Remove the Bluetooth card

    image

    To unseat the factory bluetooth card, you’ll need to unscrew two screws, and the antenna. I managed to strip on of the screws and gave up and removed it by brute force.

    Step 4) Wiring it up

    The instructions that came with my card are scant at best, and mislabeled for the antenna cables. There’s an additional 12 pin DIN cable (with only two wires) that connects to the two pin DIN on the card, similar to a USB internal connector. I assume this is needed for other Mac models, but the Mac Pro 2008 doesn’t have any matching pin outs and I didn’t use it. You can safely ignore the cable.

    After unsucessfully wiring it up, I found the reviews posted on OSXwifi card helpful. Special thanks to J3$T3R, whoever you are, you magnificent semi-anonymous bastard.

    image
    It took a little trial and error to get my wifi card working.


    So here’s the corrected version so you can avoid my trial and error.

    image

    Fair warning, it can be a bit of a pain to pop on the antenna cables, and the label flags can be jammed down. Its MUCH easier if you plug in the cables before you seat the card into the slot. You’ll have potentially two hands to work with instead of one. I learned this the hard way the first time I install a wiifi card in a Mac Pro.

    The card will require the screw to seat properly so try not to lose it (the card will function even if not buckled down).

    image

    Finish up shop and boot on up!

     OS X 10.11 recognized my card out of the box. I tested Airdrop, bluetooth and the 5 GHz ac band on my wifi. Everything works like it should. Note: If handoff/continuity isn’t working after installation, sign out of iCloud and sign back in.

    image
    OS X reports Bluetooth 4.4.2f1 16391, same as my MacBook Pro Retina
    image
    The software versions match later version MacBooks.

    Happy Mac Pro-ing!

    imageHolding both the 802.11 b/g/n + bluetooth cards for a Mac Pro.

    App is damaged and cannot be opened error fix

    In your OS X adventuring you may come across this message: 

    “Application Name” is damaged and can’t be opened. You should move it to the Trash.

    Fortunately, there’s a giveaway. The icon shown is the Security & Privacy icon. Go to your prefs, to Security and Privacy and in the “Allow apps downloaded from:” set to Anywhere.

    Now try relaunching the application. It should launch now.

    Then go back to your security and privacy and set it back to “Mac App Store and identified Developers” (if it wasn’t set there before, you really should. Some of the best apps aren’t in the Mac App Store)


    And why its hard to find front end developers…

    Medium.com posted “Why is it so hard to find a front end developer?”  Its a short read and on the money:

    “Not only that, a good front end developer also needs to have an understanding of marketing. That means knowing the psychology of the consumer, prioritizing the accessibility and usability of the product, and maintaining strong SEO. It also means having a basic understanding of design theory, and occasionally, working with graphic designs that are nearly impossible to implement.”

    Medium almost puts their finger on the pulse that makes front end development flow: tacit skills.

    I’m a bit curious how we will ramp up Front End Developers in the future. A room full of Front End Developers tends to be a group of 30 to 40 somethings: mostly from various walks of life that fell into it. There’s the once-musicians, designers who dabbled in code, the former “webmasters”, the-lady-who-was-the-only-one-who-knew-how-to-update-her-once-employers-website and even the lone ex-flash developer.  The unifying trait between all these people is experience. Experience from mistakes. Experience from edge cases. Experience from simply engaging.

    Most of us had the benefit of learning when the internet was young and simple. We grew as the internet did. A lot of us went from frames, to tables, to css, to css grids, to responsive, and to HTML5/CSS3. We remember the curse of IE6, and know without looking at a chart that SVGs won’t render in IE8. We all remember the days before stackoverflow, and codepen, the days before angular, ember, backbone and react…. and that’s the problem.  You can’t replicate a decade of experience and we haven’t figured out a way to teach it either.

    The only answer I see is a fracturing of front end development into multiple trades based on specialization as a front end developer that is a master of all is becoming as much of a unicorn as a full stack developer.


    Resolving Internal Server Error for vhosts in Apache on OS X 10.11 El Capitan

    There are two fantastic posts already on upgrading to OS X 10.11 El Capitan from 10.10 Yosemite regarding Apache. 

    I followed the instructions and found that Apache still was giving me Internal Server errors and Internal Server error 500s. It turned out for whatever reason; the mystery was my vhosts needed error logs.

    Previously my vhost entries looked like this:

    <VirtualHost *:80>
           DocumentRoot "/Users/emerge/Development/site/"
           ServerName site.lvh.me
            <Directory  "/Users/emerge/Development/site">
                    AllowOverride All
                    Require all granted
            </Directory>

    </VirtualHost>

    Once I added both the error log and custom log, I stopped getting the errors.

    <VirtualHost *:80>
          DocumentRoot "/Users/emerge/Development/site/"
          ServerName site.lvh.me
          ErrorLog "/private/var/log/apache2/site-error_log"
          CustomLog "/private/var/log/apache2/site-access_log" common
           <Directory  "/Users/emerge/Development/klarquist/_html-cuts">
                   AllowOverride All
                   Require all granted
           </Directory>

    </VirtualHost>


    New Mac Pro speculation- Still a trashcan

    Considering that highest end iMac best all but the highest end Mac Pros, its a safe bet that the Mac Pro is due for an upgrade. Pike’s Universum found evidence of a likely new Mac Pro model with 10 USB 3.0 ports

    Call me a cynic, but if the hypothetical Mac Pro returned to one with 4 PCIe slots, one could add as many USB 3.0 ports as one so desire.


    OS X Update Needed Login El Capitan - How to Fix

    11/3/2017 update: It's happened again, this time it wasn't encryption on my boot drive but rather my Time Machine Hard drive. After PRAM reset it showed up. Fortunately I was able to login using my Time Machine's password, not my admin password. I did this after trying (unsuccessfully) to boot Time Machine. When I typed in my Time Machine password, and booted off the Time Machine drive. Once done booting, I set my boot drive to my normal drive in my recovery menu. I was able to boot again, problem free. The problem went away this time without all the steps below.

    I recently updated to OS X 10.11 El Capitan and received an “Update Needed” login screen, that looked like the following, but without a guest user.

    image

    Photo Credit: StackExchange

    After a bit of digging, it was apparent that FileVault was the culprit (encryption).  I booted up my copy of Mountain Lion and was able to access my drive with my encrypted password. However, it was apparent I needed a newer OS to decrypt it as the option was greyed out.

    I pulled my drive and stuck it in an external enclosure and fired up my MacBook Pro. 

    1) Access the drive from another copy of OS X

    Boot your problematic Mac in Target disk mode or plug the drive into an external enclosure or simply boot another copy of your OS or recovery partition, the requirement is Yosemite or El Capitan (and perhaps Mavericks) to decrypt Yosemite/El Capitan drives, 

    2) Launch Disk Utility

    If you’ve booted from your recovery partition, disk utility is available on the menu> Otherwise, Disk Utility can be found in its normal location: /Applications/Utilities

    3) Find the drive in question, and select Turn off Encryption under the File menu.

    Turn off encryption, maybe elsewhere depending on your OS version. See the previous link for more details.

    image

    4) Check status

    You can check the status using from the terminal:

    diskutil cs list

    Look for the"Conversion Progress," note if you run this right after enabling the task you may see that your conversion progress is -none-, wait for a few as the drive is still unlocking.

    +-> Logical Volume 35162DEF-999D-2153-A425-BB51F6C4D75F
    --------------------------------------------------->br? Disk:                  disk3
    Status:                Online
    Size (Total):          
    Conversion Progress:   16%
    Revertible:            Yes (unlock and decryption required)
    LV Name:                SuperDrive
    Volume Name:            SuperDrive

    It took me several hours to decrypt a 750 GB SSD through USB 2.0. Now my drive is bootable. No need to reinstall. You can re-encrypt the drive using FileVault in the background.

    If this happens to a decrypted drive, try option booting. If that doesn’t work, run disk utility on the offending drive then option boot.


    A break from web development

    A break from web development thanks to Roxanne, Christa’s English bulldog. Video from Monday at my office, Emerge Interactive.  Roxanne understands the game “Keep the balloon from touching the floor.”


    Defeating CSS injection from local to a remote server with BrowserSync with large blunt stick

    Today I was faced with a taxing problem; I’ve been left without any way to use the database credentials for my local copy of a drupal website I’m working on. The only person who knew the server info is out of town, so I was left to get creative.

    After several battles trying everything from rewrite rules to middleware; I arrived at the stupidest and best solution. Without needing to modify a single line in my grunt task, I included a link in my footer to my local version of my CSS file, a simple <link href=“local.lvh.me/path/to/app.css”> 

    BrowserSync refreshes the local CSS file for CSS injection, meanwhile staging server still works. So much for the “correct” solution.

    Anyone googling some variety browsersync remote server injection or something to that effect may save some time by just using the stop-gap measure until a better workflow can be established. It’s not a proud moment, but at least I’ll be able to work more smoothly for the remainder of the week.


    Fix Access Allow-Control-Allow-Origin Errors in BrowserSync

    You’re probably here because you’re seeing the following your browser’s console.log:

    has been blocked from loading by Cross-Origin Resource Sharing policy: No 'Access-Control-Allow-Origin' header is present on the requested resource

    And perhaps you’ve found posts like “How-To: Enable CORS in BrowserSync” and it didn’t work. 

    The problem isn’t BrowserSync but Apache. You’ll need to configure your local server. Following the guide, “Getting CORS to work with Apache” here’s what you need to do. Users using MAMP will have to translate these instructions, to use the MAMP files associated instead of the /etc files in the system.

    Step 1) Make sure you have httpd.conf mod_headers.so enabled.

    Go to /etc/apache2/ and use your favorite text editor to open httpd.conf, you’ll need to use admin access to edit the file. For non-terminal users, Its easiest done through the terminal. 

    cd /etc/apache2

    sudo nano httpd.conf

    Locate 

    #LoadModule headers_module modules/mod_headers.so 

    (for me it was roughly about line 120) and uncomment it if it hasn’t been already. (Delete the #). 

    Save and exit (control x)

    Step 2) 

    from the /etc/apache2/ go to the extra director

    cd extra

    Step 3) Modify your Vhosts

    use your favorite text editor to open httpd.conf, you’ll need to use admin access to edit the file. For non-terminal users, Its easiest done through the terminal. 

    sudo nano httpd-vhosts.conf

    Locate your vhosts entry of the local domain.

    It should look something like following:

    <VirtualHost *:80>

           DocumentRoot "/Users/emerge/Development/ohsu-campaign/"

           ServerName ohsu-campaign.lvh.me

       <Directory  "/Users/emerge/Development/ohsu-campaign/">

                   AllowOverride All

                   Require all granted

           </Directory>

    </VirtualHost>

    Add the following within the directory tags if they exist.

    Header set Access-Control-Allow-Origin "*"


    Header always set Access-Control-Max-Age "1000"


    Header always set Access-Control-Allow-Headers "X-Requested-With, Content-Type, Origin, Authorization, Accept, Client-Security-Token, Accept-Encoding"

    Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"

    Save and exit.

    Step 4) Restart Apache

    In the terminal use the following command:

    sudo apachectl -k restart

    You may need to restart grunt or gulp. 


    Share a Coke with Explorer

    What a web developer does when asked to share a coke with Explorer


    question-about-installing-geforce

    Hello, I read your post about installing GeForce GTX760 in MacPro. I want to do the same thing and I have some problems. I do not understand why you say that "I needed a grand total of three six-pin cables". The motherboard of mac has two six-pin connectors, the graphic card has one six-pin and one 8-pin connectors. So you (I) need one six-to-six and one eight-to-six cables. Is this not right ? Thank you for you answer. Best,
    Anonymous

     The Mac Pros have the funky micro 6 pin adapters (same as the Mac G5s from yesteryear), the trick is utilizing both the 6 pin adapters. So one port will connect to the 6 pin, and the other port will need a Y adapter for 6 to 8 pin, and then back to the graphics card. My graphics card came with a Y adapter for 6 to 8 pin adapter so I only had to get another micro 6 pin to regular 6 PCIe adapter.

    The nVidia model is the exact one I used since it has a built-in Y adapter, which is required for any 8 pin to 6 adapters are all are Y too.

    I hope this makes sense.

    http://www.amazon.com/PCI-e-Power-Cable-nVidia-Video/dp/B0051PWFCU/ref=sr_1_9?ie=UTF8&qid=1441138308&sr=8-9&keywords=Mac%20Pro%20pcie%20power


    Creating HTML5 Friendly web ogg theora on OS X

    Typically a video tag still looks like the following:

    <video autoplay loop  poster="movie.jpg">
           <source src="movie.webm" type="video/webm">
           <source src="movie.mp4" type="video/mp4">
           <source src="movie.ogv" type="video/ogg">
    </video>

    A Brief History

    HTML5 video had a bit of a rough start a few years back, mostly due to inconsistent support and lack of agreement on codecs. Each of the major browsers threw in support for preferred codecs: Apple/MS wanted H264, partly due to the massive support and hardware support. Google wanted WebM (VP8 & VP9), its lovechild and FireFox wanted to use Ogg Theora, the most open and problematic of the three warring codecs. After the dust settled, developers had a few options: continue to use flash with h264 for mobile, use HTML5 video and support all video files, and lastly use HTML5 + a flash wrapped for h264, so all browsers were supported.

    As of writing this, FireFox was the last major holdout until Cisco bought and licensed H264). That said, in the interest of an open web, most designers should opt to provide more than mpeg4 for legacy support, at least for the next year or two. For now, simply providing H264 is enough to support all modern browsers but the video tag wars aren’t finished, with H265 (MPEG5) vs VP9 (webm) looming.

    Providing support for all three legacy video formats is a royal pain, mostly due to the lack of easy to use tools. For example: The popular video encoder Handbrake will encode to VP8 and Theora in a MKV wrapper but this won’t work for HTTP access. FFmpeg has support for both webm and ogv, but is geekier than my needs and Sorenson Squeeze, while a fantastic product hasn’t been budgeted for the project I’m working on.


    What you’ll need:

    Source video file (preferably high bit rate MPEG4)

    OS X


    The tools you’ll need:

    VLC - Powerful and easy to use open source video player, can playback WebM and Theora

    ffmpeg2theora - Command line utility for creating Theora

    Hybrid for OS X - GUI wrapper for many open source tools, supports WebM 

    Note if Hybrid doesn’t work, I’ve found that Hewbo Video Convertor works. It’ll crash after finishing an encode, but the video files it produces are good.


    Creating a Theora (ogv) video

    ffmpeg2theora is a command line utility but fear not. It’s actually easier than creating WebM videos. After you’ve installed ffmpeg2theora fire up your terminal.  

    ffmpeg2theora only requires specifying the audio and video quality and source file to process a video file. It may take a few trials and errors to produce the lowest yet still watchable WebM video. I found that using a video quality of 6 worked fine for my video needs for a background video.

    In the terminal type the following with a trailing space:

    ffmpeg2theora -v 6 -a 7

    Now drag the video from your desktop to the terminal window, and the terminal will automatically create a file path that looks similar to this:

    ffmpeg2theora -v 6 -a 7 /Users/emerge/Desktop/video.mov

    Soon as you hit return, your movie will start converting; it may take awhile depending on size/length.

    If you’re creating a background video, simply ignore the audio setting:

    ffmpeg2theora -v 6 /Users/emerge/Desktop/video.mov

    The terminal window will continually update with estimated size and time to finish. I found my videos were significantly smaller than the estimated size.


    Creating a WebM VP8 video

    WebM is a container format much like other containers are: AVI, MOV, MKV. WebM containers can have VP8 and VP9 video. Since our goal is maximum legacy support, we’ll want to use VP8 when we create a video.

    WebM is more of a pain to create, and so far Hybrid is the easiest freebie utility I’ve found, and it’s a mess. Fire up Hybrid.

    Step 1:

    Specify your source file, your codec, and your output.

    image

    Step 2:

    Click on the VP8/9 tab and set your bit rate. This is a bit of trial and error so try something like 2000 VBR for starters; I was able to get away with 1500.

    image

    Step 3:

    Go back to main and click add to queue

    image

    Step 4:

    Click on jobs and click the arrow on the left to start your queue to encode. 

    image

    Step 5:

    Be sure to check your results in VLC. Now you’re good to go.


    Alt Method for WebM: Encoding on the cheap

    If Hybrid proves too problematic, the $1 Hewbo Video Converter works too, and its GUI isn’t nearly as confusing. After every encode, Hewbo crashes, but the video files are good. At worst, you have to relaunch the app after every encode. 


    Windows now has Windows 10 nagware/adware (and how to remove it)

    So both my Windows installs (media PC running 8.1 and bootcamp running 7) started display Windows 10 adware, glad to see MS is taking cues from Freemium and malware, including a toolbar icon dedicated just to annoy users.

    image

    With a little googling, I discovered that the KB3035583 update is the culprit.

    The solution

    image

    Step 1:

    Go to Control Panels -> Programs and Features -> Installed Updates and search for KB3035583,  and remove it. It may take a few moments to find.

    Step 2:

     When prompted, Reboot.

    You’re now Windows 10 spam free. Be aware of the windows update you must first go to installed updates before searching. Otherwise, the search will not find KB3035583.


    This winter I’m retiring my HTPC for a Hackintosh. I’d rather venture into the realm of unsupported hardware than continually be fighting MS’s data mining.


    Prepros 5 Review, 2500 more words on precompilers

    image

    Forward:

    Nearly a year ago, I wrote what I’d consider the definitive review of CodeKit 2, which spanned nine months of usage, several versions, and at least two major projects. It was filled with the ups and downs of CodeKit 2 vs. Grunt/Gulp vs. Prepros, and even my inevitable transition away from GUI task managers.

    Long before that, I wrote a cursory and problematic review of Prepros 4.  I’ve meant to follow up my CodeKit 2 review with an equally ambitious Prepros 5 and just never found the time until now. I’m sure the developers of CodeKit and Prepros would likely prefer being considered separate properties but its impossible to review one without mentioning the other.

    Reviewing an application like Prepros comes with some difficulty, unlike most applications, Prepros is meant to run in the background. In fact, you’ll probably spend little directly time interacting with it. The most useful feedback Prepros provides is an error log that reports back when you write improper code. Task managers are complicated beasts as they are a swiss army knife of various utilities smashed together.

    For those new to the world of preprocessors and task managers there’s quite a learning curve, and to review this product the reader needs a basic understanding of a few core terms.

    Seasoned devs can safely scroll past my quick glossary of terms. 

    Quick Glossary:

    Compiling - The process of converting programming into useable executable code. There are many types of compilers, such as ones that create executable applications for computers/phones. In this review, I’ll be referring to the simple act of converting a programming language to a browser readable language such as Sass to CSS or Markup to HTML.

    Preprocessor language - A programming language the compiles to another language. In order to run this code in a browser, it first must be processed before a web browser can consume the code properly. 

    Task Manager - Programs that are configured to perform preconfigured tasks when trigger automatically. Task managers “listen” and automatically run a series of instructions based on a trigger event.

    For front-end web development, this usually means when a file or directory has been modified. Tasks can be chained together such as to convert LESS to CSS and reload the web page on save. The most common task managers are (in no particular order):

    • Prepros - A cross-platform utility with a graphical user interface
    • Codekit - A Mac-only utility with a graphical user interface
    • Grunt - A command line utility built on node.js
    • Gulp - a command line utility

    Minification - Every keystroke takes up minuscule amounts of data, measured in bytes. Minification takes out unnecessary keystrokes from HTML/CSS/JS and creates a “minified” version of your code, With Javascript, even variable names are replaced with short names to save data. This additional step is called uglification. Since HTML/CSS/JS are the instructions that your browser needs to render the page, this will help aid page load speeds considerably.

    Concatenation - Concatenation (concat for short ) when programming means combining to two variables’ stored values. When applied to file management, concatting means combining multiple files into one file. This allows, for example, many javascript files to be combined into one JS file for distribution. This reduces the number of requests a web browser must make, and thus (usually) speeds up the data transaction from the web server.

    Uglification - In order to say bytes of information, javascript can be not only minified but have variable and function names changed to smaller names. For example, a variable named “LeftMarginSpace” will be automatically changed the “a” and all such instances when compiled. Using tricks like this, javascript can shave even more space, and the reductions can be significant on larger scripts.

    Sourcemaps - Modern browsers support additional CSS files called source maps, files that list where CSS rules are written, and only applicable when using inspect element. In Sass/Less projects, typically developers divide their CSS code into many files and compile one big minified file. To make development easier, the web browser will list where the appropriate CSS rules are written relative to the Sass and Less files, including a line number. For more information on source maps, visit Treehouse’s post, “An Introduction to Sourcemaps”.

    Why do we need Sass and Less and Stylus?

    CSS isn’t a difficult language to write, but as the web has grown, the scalability of CSS can be difficult to manage. Preprocessor languages such as Sass and LESS  enable developers to manage larger projects more easily and write code more efficiently and cleanly, by using programming techniques like variables, statements, nesting and so forth. With a simple For Loop, a developer can generate an entire CSS grid. Other developers have attempted to do this same thing with Javascript for what Sass/LESS/Stylus/PostCSS has done for CSS, using CoffeeScript and Typescript, and even HTML with languages like HAML.

    Many other developers have explained the necessity of Sass and LESS far better than I could ever hope to, and I suggest reading articles such as A List Apart’s argument for Sass.

    What is Prepros?

    image

    Prepros is an application that allows you to automate the compiling of popular preprocessor languages like Sass/Less/TypeKit/haml/jade into browser readable code and refresh your browser, much like Grunt.js and Gulp.js.

    Instead of using esoteric config files and the command line, Prepros lets users enjoy the benefits of preprocessing without much pre-setup. Many users are much more familiar with GUIs and thus will feel comfortable using Prepros.

    Setup is easy and only requires dragging and dropping, and a few mouse clicks.

    About my workflow

    With web development, workflows vary considerably so when I’m writing this review; it's almost impossible to pull myself from my workflow as it predicates my needs. My official title is UX developer, and I work professionally as a front-end developer, I live Sass every day, so task managers are my life.

    I’ll quote myself from my CodeKit 2 review:

    At my current job, our tech stacks vary a lot. In the last year, I’ve worked on projects that use Django, Drupal, Wordpress, Expression Engine, internal PHP, Python, Angular, Jekyll and even an ASP.net project and a few old Coldfusion legacy sites. 95% of our sites are Sass, although there a few LESS projects and even one plain ol’ CSS site.

    Internally, we have staging servers managed by Jenkins. Most of the time work off of a localhost using Apache (or Python’s server).

    On an average day I’m bouncing between Sublime Text, Tower (Git), Photoshop, ImageAlpha + ImageOptim, Sketch, VMware/simulators and a host of small utilities (Colorsnapper, Rulers, GhostLab)  along with whatever tech stack I’m working with that day.

    Nearly a year later, my workflow hasn’t changed much except my total immersion into Grunt. 

    The review portion

    Very little of one’s time using a task manager is spent in the actual application. When you use Prepros, you won’t be staring at the window. Instead, you’ll have it tucked quietly into the background and only occasionally glance at the error log. This isn’t bad, in fact, it's a very good thing.

    Prepros is built on Node.js and Ruby in an OS X wrapper, meaning its built on the exact same tech that you’d use in other task managers such as: imagineoptim, chunky_png, compass, execjs, sass, slim, susy, temple, using GitHub’s Atom Electron Framework as the cross platform engine.

    IIf you don’t understand what this means, that’s okay; it’s built around industry standard technology stacks so the behavior is akin to using command line utilities.

    Setup 

    The initial setup of a project starts by dragging the folder you wish Prepros to monitor (or watch) and detect changes. Once the folder has been added, there are project options that allow you to specify where you’d like code to compile to, check boxes for options such as using Compass with Sass, generate CSS sourcemaps, uglify Javascript and so forth.

    Also, you’re able to create an intermediate server, which will perform live reload, refresh upon saves and (more on that in a bit).

    Image Optimization

    image

    Prepros uses ImageOptim, a popular image optimization library to squeeze extra bytes off images, losslessly. Images generated with popular applications often include erroneous metadata and do not use the latest, high-efficiency encoding. ImageOptim is a hassle-free way to reduce the overall sizes of PNG and JPEGs without affecting the image quality. Google recommends this by default.

    There are utilities like ImageAlpha that allows you to scale down PNGs further by reducing the color palette, then applying the ImageOptim tweaks for maximum efficiency. 

    Prepros offering image optimization is nice to have, but like CodeKit, I rarely made use of it as almost every asset I hand prune using utilities like ImageAlpha.

    Using Prepros’s image optimization should be considered one’s minimum for image optimization. 

    Code Compiling

    image

    Prepros’s ability to compile popular preprocessor languages is where Prepros gets its namesake. For most users, this will be the main function of the application. The list of languages that Prepros supports are:

    CSS: less, sass, stylus, scss,

    HTML: jade, haml, slim, markdown,kit

    Javascript: CoffeeScript, livescript

    Each of the CSS languages has a set of options, including concatenation, sourcemaps and so forth.

    There are some nice options such as auto switching compiling engines in the case of Sass. Compass, for instance, remains incompatible with LibSass (the Sass compiler written in C/C++). Enabling compass in Prepros automatically switches to the Sass JS compiler which is notably slower but allows projects using compass to compile. 

    For the other language compilers, the options are notably slim, the Javascript compiler has mostly is limited to uglification options, and there are almost no options for configuration of HTML precompiler languages.

    Error logs are presented in a straight forward manner and easy to read.

    image

    Internal Servers

    Task managers are pretty snazzy these days, whatever your weapon is, you can expect to be able to run a synchronized web server wrapper, regardless of the tech stack. This simply takes your development/staging URL, and routes it first through your task manager then to your development or staging URL.

    The mini server injects a simple Javascript that lets your task manager refresh the pages when the task manager compiles new code and follows what links you click on. 

    What this ultimately allows is a developer to have a plethora of browsers and devices connected to a single server URL, and always on the page or view, one is working on.

    image

    Previously, Prepros 4 had a huge advantage on Codekit’s internal server management. CodeKit 2 narrowed the gap by offering better internal/external management and page syncing. 

    Little has changed for Prepros 5 and it still has the edge over Codekit 2 since it bundles Weinre, a remote web inspector, that allows you to inspect element from a single console on any (modernish) browser that is viewing your website through Prepros.  Old Internet Explorers don’t play nice with Weinre.

    image

    Prepros however doesn’t do CSS injection still, so any CSS changes require a full page reload which can be painful if working on a slower tech stack.  

    Prepros 4 vs Prepros 5

    Functionality wise, Prepros 4 and Prepros 5 differ very little from each other. The feature sets are next to identical.  Prepros did get a spiffy UI update, and it's not just skin deep, as Prepros switched its main engine from GitHub’s Atom to GitHub’s Atom Electron. Mostly all the changes lie within the internal compilers and bugfixes, using much more recent versions. This ensures better compatibility with the current precompiler languages. 

    Lastly, Prepros 5 switched its Sass compiler engine from the Ruby version to Libsass, a C/C++ port. This translates to much much much faster Sass compiling, and results in real-world speed gains that usually between 300% to 800% faster from my personal experience.

    The upgrade was free from Prepros 4 to 5 so there’s little reason for existing users not to upgrade.

    Prepros 5 vs CodeKit 2

    Easily the #1 advantage Prepros has over Codekit 2 is its availability for Windows. CodeKit is OS X only so that Windows users can skip ahead but my Mac brethren, read on…

    Rather than mince words: CodeKit 2 is the better product. 

    CodeKit offers geekier features such as the ability to use different compiling engines. Was there a new version of LibSass released? Don’t have time to wait for CodeKit 2 to be updated? You can fix that. Need a particular old version of  the Coffescript compiler? You can set that up. These seem esoteric but they were life savers when using CodeKit full time. Prepros is fairly regular with updates but you’re also at the mercy of the developer.

    CodeKit 2 also has baked in support for Typescript, which Prepros still has yet to offer, although Prepros offers Livescript support. 

    A short list of features that Prepros lacks and Codekit offers:

    • Ability to hotkey pause internal server updates
    • log order management preferences
    • Syntax Checking
    • ability to control how CodeKit uses alters for compiles
    • Optionally bring app to the for front on bad compiles, 
    • Optional menu bar widget,
    • Git integration
    • Easier external config files that can be committed into a git branch so other users can stay in sync with the latest Codekit configuration
    • Package management
    • Built support for Bourbon, Zurb Foundation, Nib, Jeet, Web Starter Kit
    • Apple Script hooks

    CodeKit gives budding front end developers much more room to grow, and much more needed flexibility and compatibility. 

    Prepros vs Grunt

     I’ve moved on from using products like CodeKit 2 and Prepros for my daily work. They’re simply not as agile or powerful as using Grunt. Grunt can be chained to do absolutely amazing things, such as SVG minfiication, Visual Regression Testing, and many many many other things.  If Prepros or CodeKit can do it, so can tools like Grunt and Gulp, and plenty more.

    Both Grunt and Gulp can use BrowserSync. BrowserSync has matured into the best synchronized browser testing utility, beating out CodeKit, GhostLabs,  and Prepros, most of which are variants of the same underlying Socket.io tech stack. It can be a beast to configure but offers all the features that CodeKit and Prepros offer, and plenty more.

    Windows users have a much higher entry point to using tools like Gulp and Grunt as it requires installing NodeJS and using the NodeJS terminal. There are more hoops to jump through, thus making the bar for entry higher. It’s a bit of mystery how anyone survives using Windows for Front End Development but that’s a subject for another blog post. 

    Grunt offers a level of power and flexibility that just cannot be found through GUI task managers.  GUI task managers have their place, any developer who isn’t writing Sass or Less or Stylus should stop whatever they are doing and buy either Prepros or CodeKit.  The benefits are real and tangible. 

    Setting up projects in Codekit and Prepros require much less work and even as a seasoned grunt user, I miss the simplicity of using such tools.  If you’re already using a command line task manager and feel comfortable, there’s no reason to switch to a GUI. 

    Final Thoughts:

    Pros:

    • Cross Platform
    • Fast. Uses LibSass by default, faster than Prepros 4 for compiling.
    • Quick project configuration.
    • Easy to use, painless.
    • Internal server includes Weinre.
    • Built in FTP support.
    • Live Script support

    Cons:

    • CodeKit 2 is the better product. 
    • Lack of ability to specify the compiler’s version
    • No TypeScript Support
    • No Package management
    • No CSS injection
    • No Syntax checking

    GUI task managers make the entry to front end development easier. Junior developers already have years of tacit skills to catch up on, and probably will make the best use of time learning how to position objects vertically and write manageable large projects as opposed to trying to learn the ins and outs of task managing software like Grunt.

    Prepros is a good product. There’s no way not to say that, but it's going against one of the finest pieces of web development software out there. For a time Prepros 4 was the better product, but CodeKit 2 was a massive upgrade that leap frogged past not only Prepros 4 but even Prepros 5. 

    Mac users should skip Prepros 5 and go for CodeKit 2. Windows users shouldn’t feel burned either. Its quite capable and has a few features that CodeKit 2 doesn’t have… yet.

    My wishlist for Prepros 5 is as follows:

    External Compiler support, Syntax checking, CSS injection, Bower Package Management, SVG minification, more control for javascript compiling. 

    I’ve used Prepros 4 professionally and have used Prepros 5 for one client’s project as incidentally its the singular LESS project in our current roster of sites.  Prepros is capable but unless something unforeseeable happens, neither CodeKit or Prepros will pry me from Grunt or Gulp.

    Prepros 5

    Versions Reviewed: 5.0 -  5.9

    Price $29

    https://prepros.io/


    BendGhazi is real

    image
    image

    My iPhone 6 finally stress fractured from a mild bend. I wondered how many days I had before it happened. After rolling 2 years without any case on my iPhone 5, it's a bit clear the iPhone 6 isn’t as durable, and short of an extreme case that the iPhone 6 its plenty more malleable.

    What I wouldn’t give for an iPhone 5 form factor with wonders of the guts of the current gen iPhone instead of the nerfed “c” series. I’d consider unretiring my iPhone 5 if I wasn’t spoiled by the massively better camera and the 128 GB storage vs. the 64 GB. I’m certainly in the minority these days, but all I want out of my phone is the smallest form factor, massive storage, and best camera.