Articles and Books iPhone

Learning iOS Security Now Shipping

The latest book, Learning iOS Security is now available on Amazon, Packt, etc. One of my better writing experiences, so thanks to all for making it so! Buy it here, if you’re into iOS Security and all that kind of fun stuff.

Screen Shot 2015-03-03 at 9.34.27 AM


Yet Another Awesome Kickstarter

$8,782,571 funded from a $10,000 goal. Sweet.

Windows Server Windows XP

Package Manager Like apt-get For Windows 10

In Windows 10, Microsoft has finally baked a package manager called OneGet into Windows. It works similarly to apt-get and other package managers that have been around for decades in the Linux world; just works in PowerShell, rather than bash. So let’s take a quick peak. First, import it as a module from a PowerShell prompt:

Import-Module -Name OneGet

Next, use Get-Command to see the options for the OneGet Module:

Get-Command -Module OneGet

This will show you the following options:


Next, look at the repositories of package sources you have:


You can then add a repo to look at, using Register-PackageSource. Or, we’ll just fire away at locating our first package, Acrobat:

Find-Package -Name AdobeReader

Or you could pipe that output to the Install-Package option:

Find-Package -Name AdobeReader | Install-Package

Or Firefox, verbosely:

Install-Package -Name Firefox -Verbose

Or ASP.NET MVC silently (using -Force):

Install-Package Microsoft.AspNet.Mvc -Force

In some cases, you can also use the -Version option to define a specific version, which is why I ended up writing this in the first place – swapping between versions of asp has been a bit of a pain since the introduction of its first update, it seems…
PowerShell logo

Bushel iPhone Mac OS X Mac OS X Server

Learning iOS Security Now Available for Pre-Orders

Boom. 3 books in about 6 months. The next, and likely last for a few months at least, book is finally ready. Written with Allister Banks, Learning iOS Security is a look into iOS Security for those coming to the Apple platform. It’s meant for business, enterprise, infosec.



The first chapter, as I’ve done in a few previous books, was written as a quick and dirty “oh, this is all you’re gonna’ read, cool” type of thing. In security, 90 percent (or more) of the work is done in the first 10 percent of the time. I have this theory (unproven) that each percent represents a j curve in cost increase and when you hit 99, each .1 continues, then each.01, etc. No one can be truly secure.

Also, as I’ve done in the past, the final chapter looks at a few forensics options and tools. Allister was the best coauthor I’ve had to date. This was his book that I was brought in on. I didn’t have to do any of his work, and he held the chapters to a higher standard than the publisher. Truly, this is his book, I just contributed. Either way, Packt was great again and I hope you enjoy what we’ve done!


It Makes Myself More Bearable

Funny how I’m so prominently featured in the bloopers of the first ever Mac Myriad Podcast!

Mac OS X Mac OS X Server Mac Security Mass Deployment

Take Control Of OS X Server (Yosemite) Now Available

I’ve been light on posting here, mostly because I’ve been swamped with work, selling my old house, buying a new house, doing some crazy taxes, wrapping production on a new book and updating the Take Control of OS X Server book to Yosemite Server. Well, earlier this week I sold my house, got the next version of Bushel ready to rock and filed my taxes. Aaaaannnnnndddddd, the Yosemite version of Take Control Of OS X Server is now available at

Screen Shot 2015-02-05 at 2.24.54 PM

Boom. Will get back to my normally scheduled postings shortly!

Mac OS X Mac OS X Server Mac Security Mass Deployment Ubuntu Unix WordPress

Install Pow for Rails Testing On OS X

Pow is a Rack server for OS X. It’s quick and easy to use and lets you skip that whole update an Apache file, then edit /etc/hosts, ethane move a file, then run an app type of process. To get started with Pow, curl it down and pipe it to a shell, then provide the password when prompted to do so:

odr:~ charlesedge$ curl | sh
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 9039 100 9039 0 0 10995 0 --:--:-- --:--:-- --:--:-- 10996
*** Installing Pow 0.5.0...
*** Installing local configuration files...
*** Installing system configuration files as root...
*** Starting the Pow server...
*** Performing self-test...
*** Installed

For troubleshooting instructions, please see the Pow wiki:

To uninstall Pow, `curl | sh`

To install an app into Pow, create a symlink to it using ln (assuming ~/.pow is your current working directory):

ln -s /path/to/myapp

Then just open the url, assuming my app is


Pow can also use ~/Library/LaunchAgents/cx.pow.powd.plist to port proxy. This allows you to redirect different apps to different ports. When pow boots, it runs .powconfig, so there’s a lot you can do there, like export, etc. Once you’re done testing out pow, if you don’t decide it’s awesome, remove it with the following command:

curl | sh

Articles and Books public speaking

Dead Tech Books

As an author of technical books, I’ve been very interested in the comings and goings of technical books for a long time. This new Instagram feed is an expedition into what once was and how quickly the times change. Feed is embedded into a page on krypted to make it easier to see. Curious how many of my books are now “Dead Tech Books”…

Screen Shot 2015-01-31 at 7.11.24 PM

Kerio Mac OS X Mac OS X Server Mac Security Mass Deployment

Modern Mac Synchronization with ChronoSync

ChronoSync is one of those tools that’s been in the Mac community for a long time (rightfully so). It’s been a little while since I got the chance to really tinker around with ChronoSync so I thought I’d do a little article on what I got to find during my tinkerations. To get started with ChronoSync, go to their website at Next, we’re going to walk through the most basic of setups (and you can get all kinds of complicated from there if you’d like!).

Once you’ve downloaded, ChronoSync, run the installer from the disk image that was downloaded.

Screen Shot 2015-01-31 at 11.50.13 AM

Then walk through the installer, basically following the defaults (unless you’d like to install to a volume other than your boot volume).

Screen Shot 2015-01-31 at 11.50.15 AM

Once the installer is finished, open the app and register the product.

Screen Shot 2015-01-31 at 11.53.16 AM

Once registered, you’ll see a nice screen giving you a few options. We’re going to create a single plan (synchronizer document) to backup a single source to a single target. To do so, click on the option to “Create a new synchronizer document”.

Screen Shot 2015-01-31 at 11.53.55 AM

At the Setup screen, you have a right and left column. When I used to do a lot of manual migrations, I would always always  always line up my source on the left and my target on the right (or invariably you risk data loss by copying in the wrong direction), so the workflow in ChronoSync has always made sense to me. Because a lot of the data I use needs root access, I’m going to select “Local Volumes (Admin access)” in the “Connect to” field and then use the Choose button to select my actual source. Repeat that process in the Right Target section of the screen.

Screen Shot 2015-01-31 at 11.54.10 AM

The default action that will be performed is to backup from the left to the right targets (the term target referring to the folder, not that it’s a source or target in the backup operation). Click into the Operation field to bring up a list of the options that can be performed between your left and right targets.

Screen Shot 2015-01-31 at 12.10.07 PM

The option I’m selecting is “Synchronize Bidirectional” as this is an article about syncing data. The other options are pretty well defined in the manual, but it’s worth mentioning that the Bootable Mirror options are especially useful. Once you’ve set the type of sync, you can also use the Options menu to define some pretty granular settings for your sync. For the purposes of this sync, which brings over server shares, I’m going to leave Conflict resolution set to Ask User and use the custom option under the Special File/Folder Handling section to enable the “Verify copied data” option and “Preserve Comments” option. Note that if you’re doing this on servers and would like to stop a service (such as postgres) before a sync and start it after, you can use the scripts section of this screen. You can also configure notifications, sending emails when syncs have errors, or every time there’s a sync.

Screen Shot 2015-01-31 at 12.17.43 PM

Click Rules to build inclusion/exclusion rules (for example, I don’t often sync things like operating system and software installers since I can just go download them again, pretty easily). Click Archive in the sidebar if you’d like to remove files based on a trigger (e.g. if it’s been removed from the source, archive it, etc).

Next, you can simply click Synchronize to run an immediate sync of the files and folders you’ve defined in your Sync Document. Or, you can click Add to Schedule to define when you’d like to run your Synchronization Documents.

There, less than 5 minutes and we’ve got a pretty advanced sync going. Use the Log button to see how everything went. And remember, always verify that the archives and backups are running on a good schedule. For example, I like to have at least a weekly cadence to make sure that media one each side of a sync can still open. It helps me sleep better.

Bushel Product Management

Interview with Chuck Joiner of MacVoices re: Bushel

My third podcast in the last couple of months, this time with Chuck Joiner again, of MacVoices. And we talked a pretty good bit about Bushel and Mobile Device Management. Thanks to Chuck formatting this whole thing pretty awesome and helping bring my explanations to a point where they actually make sense!