This space is currently unused, and I'm not quite sure what to do with it. If you have any ideas, I would love to hear them.

Unapologetic 2.0


January 10, 2014

I launched Unapologetic in early October, 2013, forking my old site, The Axx, so that long form articles would now reside on Unapologetic, while the URL actions I was best known for would take up a more prominent position as the main focus of The Axx. At the time, I justified this by saying that both types of content deserved their own specialized locations, but to be completely honest, I was in such a rush to ship Unapologetic that I chose to leave the actions at The Axx in order to avoid having to transfer each and every action article to the new site. (▼)(▲)This process could have been extremely easy if Squarespace supported a way to export all of my posts in Markdown. Since it does not provide such an option, manually pulling the text from each article was proving much more time consuming than I would have hoped.

Soon after launching Unapologetic, I realized that my decision to fork The Axx had been a mistake. Caught between two CMSs, having to leave my simple custom workflows for posting to Unapologetic from my Mac to return to the old Squarespace UI every time I wished to post to The Axx annoyed me to no end. I have nothing but respect for the service Squarespace provides, but interacting with the backend UI is often frustrating and prone to bugs. Furthermore, I found myself constantly faced with the conflict of whether articles which were mostly long form, but also automation themed, belonged on The Axx or on Unapologetic. Finally, I greatly prefer my custom, colorful design at Unapologetic to my old monotone design at The Axx, so posting new content to The Axx felt like I was displaying arguably my most important work in an inferior environment.

Beyond the annoyance of having two CMSs, I was even having second thoughts about my choice for the second one. I was using Cloud Cannon, a Dropbox based CMS which advertises itself as "steroids for web developers." Unfortunately, I was not fully confident of its stability, as it has no uptime guarantees, nor any evidence that it can handle large traffic spikes. (▼)(▲)At this time, my humble little blog doesn't garner nearly enough hits on the average day for traffic to pose an issue to any hosting provider, but I'm not worried about the average day. Back in April when my post on The Axx was linked to by Daring Fireball, my traffic that day spiked to over 10,000 unique visitors. In the days afterward it rapidly declined, but the traffic and attention I received on that single day from that single link was almost as much as The Axx has received overall on every day before and since then. If another one of my posts ever gets linked to again, I need to be completely confident that my hosting provider will not crumble under a traffic spike on one of the most important days for my blog.

Perhaps a bigger issue than my lack of trust for Cloud Cannon's stability was my discovery that the "optomizations" it was making automatically on my site were actually changing certain aspects of my code. Sometimes pictures which I uploaded would be loaded onto the website horizontally, with no explanation and no way to change this except to not include the pictures in the post. Another example, Cloud Cannon took the link to my RSS feed, which should have been "feed://unapologetic.io/rss.xml", and changed it into a feed://cloudvent.net URL, followed by a seemingly arbitrary stream of alphanumeric characters. I was helpless to stop this behavior from happening. I would include the link as it was, but at some point since I noticed, it has been reverted to its original form just as quietly as it was changed. As a result of these weird behaviors I'm now uncertain of how much I can trust Cloud Cannon not to mess with my carefully written code.

The main reason I chose Cloud Cannon was for its simplicity. All I had to do was drop my files into a folder in Dropbox and moments later they would be pushed to my website. I still think Cloud Cannon is a great tool, but it needs to learn not to go quite so far with its "optimizations". Furthermore, I left Squarespace to be freed from restraint on what my website could do and how it appeared, and Cloud Cannon, while significantly more free than Squarespace, was still limited. With no support for MySQL, I could not implement Mint site tracking as I wanted to. With only limited support for includes, I could not create a template system quite as powerful as I wanted mine to be. These issues, and those stated above, are the main reasons for My choice to leave Cloud Cannon, and convieniently timed podcast sponsorships lead me to Host Gator next. Since I was already going through the trouble of changing hosts, I decided to put some finishing touches on Unapologetic which I had been rushing too much to implement back in October.

Since making these decisions at the end of October, I've been working hard to learn JavaScript, Sass, and the ins and outs of an Apache server. Lynda.com proved an amazing tool to quickly get up to speed on these topics. (▼)(▲)While I was at it, I also took some time to learned the basics of Objective-C and programming in Xcode, but the fruits of those labors won't be revealed for some time... I rewrote my CSS in Sass, threw in some Jquery tricks to finally satisfy the full vision for my custom footnotes, and built a JavaScript view controller so those who are uninterested in iOS automation can filter out those articles, while anyone who is only interested in iOS automation can see just my articles related to that subject. (▼)(▲)This is my answer to the dilemma I originally attempted to tackle by forking The Axx. If you come to my site in search of workflows to automate your iOS devices, now you can press a single button and scroll through only articles on this subject. If you are not currently interested in automation articles, but wish to read the "normal" blog posts that I write on technology in general, you can filter out the automation articles just as easily. I was also finally able to implement the Mint site tracking that I wanted, and rid myself of the ugly and confusing UI of Google Analytics. Finally, I built some custom share sheets to make sharing my posts on social networks or adding them to a read-it-later service possible directly from the site with just two taps.

Beyond the aforementioned changes, I also spent a significant amount of time writing my longest and most complex python script yet. This script, written entirely in Pythonista, fully automates the process of posting to Unapologetic. I can now write up a post in markdown from any text editor I want to use, then use the open in menu to send the text to Pythonista. Pythonista recieves the text and automatically (via the awesome new ability to script the open in functionality in Pythonista 1.4) runs the script to post to Unapologetic. This script applies the code for my custom footnotes and images, converts the rest of the markdown to html, appends and prepends the necessary code that wraps each of my posts, then uses the Pythonista ftplib module to upload the permalink file and the partial file (to be included in the home page) to their proper places on my server. Finally, it inserts the proper code to include the partial file in my index.shtml file, and inserts the proper code to my rss.xml file to finish everything off. This process literally could not be done manually from my iPad without this script, and to do it manually on my Mac is incredibly time consuming and prone to error. Now the entire workflow is done in less than five seconds, with absolutely no manual input from me after sending the post via an open in menu. I will write about the script in more detail in the coming weeks, and probably give access to most of the code for anyone interested in using something similar for their own website. For now, suffice it to say that my love and respect for Pythonista has no bounds, as this app has finally allowed me to return to doing all of my work solely from my iPad, an ability which I lost when starting Unapologetic, and am now very pleased to regain.

The Future

While there are still a few tweaks I may make to Unapologetic in the coming months (▼)(▲)Chiefly, I plan to make changes to the mobile version of the new share sheets to give options to run actions on the data they send via Drafts, Editorial, or Launch Center Pro. If you have any ideas on cool automation-related options I could implement in the share sheets that would be useful to you if you wanted to share my posts, please contact me. I want to make my share sheets as powerful as possible., mostly the site is solidly in the condition that I plan to keep it in for the foreseeable future. This means that I can stop coding and get back to writing posts, something I've been looking forward to for the last few weeks as I've watched quite a few subjects float by which I would have loved to join in the conversations on. I love writing for this website, and I can't wait to be back in the game. I hope you'll enjoy reading my posts as much as I'm going to enjoy writing them.