Showing all entries for: October 2014

iPads: The Bad, The Good And The Takeaway. Very insightful analysis by John Kirk. This line in particular was an eye-opener:

If the iPad were its own company it would be larger than Facebook, Twitter, Yahoo, Groupon, and Tesla combined.

Back to BBEdit

It doesn’t suck.®

BBEdit originally debuted on Macintosh System Software 6, and while it may have been surpassed—feature-wise—by other text editors in recent years, it’s actually one of the only OS X text editors that can meet the following criteria (and meet it well):

  1. Truly native Mac software; feels “at home” visually and works as you would expect a Mac app to work. In other words, it’s very “Mac-like”.
  2. Has a history that can provide assurance that it’ll most likely be sticking around and actively developed for many more years to come.
  3. It is fast.

We’re getting to a time where text editor speed is almost taken for granted, but point 1 is often difficult to meet because of cross-platform requirements, and unless your vim or Emacs, there’s really no competing with BBEdit’s history. Bare Bones as a company is up there with The Omni Group and Panic as far as the respect it has among Mac software enthusiasts.

Sublime Text is blazing fast, but it has a somewhat spotty development history and correct me if I’m wrong, it looks like it’s created and maintained by a sole developer (Jon Skinner). Out of the box, as a Mac app, it’s ugly as sin. You can customize it to look better, but that doesn’t make everything else about it any more “Mac-like”. Really the one true thing I love about Sublime Text is the way it does multi-word selection via CMD+D, and that’s by no means a deal-breaker.

Chocolat definitely hits points 1 and 3. Visually, it looks very nice, and while I’ve seen some users complain of its speed with some text files, it’s fast enough on my machine and for my particular usage (I’m not editing any megabyte-or-larger sized text files). It doesn’t currently have anything that makes me want to use it over BBEdit, however.

Why I’m switching at all

I’m a developer, so I’m obviously switching “back” to BBEdit from something. Well in my case, it’s two somethings. I’m a web developer by day (Backbone + Marionette) and my company’s workflow is heavily dependent on IntelliJ IDEA (lots of servlets and such). On my “own” time, I still do lot of contracting work developing Corona apps, and for that I’ve been using Sublime Text (version 3 beta).

I want to change things for the following reasons:

  1. IntelliJ can be dog slow on my machine. I use it for web development with a late-2012 Mac mini. It has a 2.3 GHz Intel Core i7 with 16 GB of DDR3 RAM and a 250 GB solid-state drive, so there’s no reason why my development environment should ever feel like it’s crawling. It does. Often. I even limit my number of open editor tabs to 10, and I followed all the optimization tips I could find. I want to use something faster than IntelliJ, period.

  2. As previously mentioned, Sublime Text is fast. Really fast. But it’s only used for some of my work. It’s also jarring to have to switch between using two different editors. I want one programming environment to rule them all (even if I’m still bound to IntelliJ in some ways, more on that later).

  3. I love BBEdit, and I miss it. I’ve been dying for a reason to dust off my license and make it my full-time text editor again. I used TextWrangler for a while back in 2010 to do all of my work at Ansca and then I purchased a BBEdit license when version 10 launched. I continued to use BBEdit for a while until I started working at Lanica, where we used Titanium Studio (Eclipse rebranded—yuck) and I eventually jumped onto the Sublime Text bandwagon based on recommendations from some colleagues. I began using it and got very used to it, but I never loved it.

So dust off my BBEdit 10 license I did, and I’m now using it as my full-time editor for all things programming (and writing for that matter, this blog post was happily written in BBEdit). How did I do it?

Replacing IntelliJ with BBEdit

I have to use IntelliJ because of there are servlets combined with a Tomcat Run/Debug configuration we use at my company that are required for me to do my work. Once those are running, however, 100% of what I’m doing in IntelliJ is editing text. Why can’t I use an external text editor of my choice and just have IntelliJ do it’s thing separately without me needing to be in it to do my actual work?

There’s a big problem I ran into with this approach, however. If a file is modified outside of IntelliJ, it being a Java app (not a native Mac app), you have to click “Synchronize” on the toolbar (or CMD+OPT+Y) for it to pick up the changes (which it needs in order for the servlets to serve the proper stuff). I refuse to do that.

Every time I have a change I need to test in the browser, the last thing I want to do is click the IntelliJ window and “synchronize” before clicking away again into the web browser. It’s bad enough I already have to do that whenever I pull in changes from SourceTree (my Mercurial client of choice). My goal is to make my development environment more pleasant, not less.

Then, I remembered BBEdit’s excellent AppleScript support. There’s even an AppleScript menu, and you can assign hotkeys to individual scripts. Perfect. The only problem is, I don’t know AppleScript. Fortunately, a lot of folks on the internet do, so after some Googling, I was able to shamble together a script that does the following:

  • Activate IntelliJ and invoke the keyboard shortcut to “synchronize” files.
  • Put BBEdit back in front of IntelliJ, for easier access when I need to go back to programming.
  • Launch and/or activate Google Chrome

So now I can do my programming in BBEdit, and when I’m ready to test my changes, I can simply invoke a keyboard shortcut that will synchronize the files in IntelliJ, and Google Chrome is activated (thus updating assets and resources due to “frame deactivation”). I’m all set.

Here’s the AppleScript (bound to CMD+OPTION+Y, same as IntelliJ synchronize):

-- Store reference to BBEdit in a variable, for later activation
set currentApp to path to frontmost application

activate application "IntelliJ"
tell application "System Events"
    delay 0.1

    -- Invoke IntelliJ's keyboard shortcut for "synchronize"
    keystroke "y" using {option down, command down}
end tell

-- Give IntelliJ a couple of seconds to refresh files
delay 2

-- Put BBEdit back in front of IntelliJ
activate currentApp
delay 0.5

-- Launch and/or activate Google Chrome
tell application "Google Chrome"
    if it is running then
        activate
    else
        open application "Google Chrome"
    end if
end tell

So with minimal fuss (an added keyboard shortcut to my workflow), I get to use a (much faster) text editor I’m very comfortable with. Reasonable trade-off.

Replacing Sublime Text with BBEdit

So that takes care of my IntelliJ workflow. What about my work that I use Sublime for? That one’s an even easier AppleScript. I just need it to launch/activate the Corona Simulator (also bound to a keyboard shortcut):

activate application "Corona Simulator"
tell application "System Events"
    -- Relaunch the Corona Simulator
    keystroke "r" using command down
end tell

And that’s it. Just two AppleScripts and my workflow completely lends itself to BBEdit.

Favorite Features

Here are some of my favorite things about BBEdit (and yes, I’m well aware Sublime either has all of the following, or has a package that can do it, but I much prefer the BBEdit approach in overlapping features):

  • This is one of the few text editors that has a default syntax color scheme I actually like (good thing too, because BBEdit’s online color scheme selection is admittedly pretty weak).
  • Awesome searching capabilities.
  • Cmd + R symbol search, just like Sublime (meaning I don’t have to get used to a different keyboard shortcut). I think this must have been added fairly recently (I’m using version 10.5.13 currently), because I don’t remember this being available last time I used BBEdit around the time version 10.0 was released.
  • Projects are easy to create and re-open.
  • The AppleScript menu + custom key bindings to individual scripts.
  • Very well-presented Preferences pane. No more editing a JSON file (Sublime), and no more dealing with IntelliJ’s horrendous implementation.
  • Scratchpad. I used to have to open a TextEdit window when I needed this functionality. Now it’s built-in.
  • Clippings.

Wishlist

I’m pretty happy with BBEdit, but of course it doesn’t have everything I could possibly hope for. I plan on submitting the following items as feature requests to Bare Bones, and if I’m lucky, maybe one (or more?) will be included in a future update:

  • Per-project AppleScripts with their own keyboard shortcuts. Remember the AppleScripts I mentioned earlier? It would be nice to assign them both to the same keyboard shortcut, and have the correct script run depending on the project I’m currently working in.
  • Multiple selection/cursors implemented exactly as Sublime Text does it.
  • Git and Mercurial as first-class citizens, on par with BBEdit’s Subversion features (which I currently have no use for).

And that’s really it. BBEdit is almost perfect for my needs, and I plan on sticking with it for the long haul. If you’re in the same boat as me and want to switch to BBEdit but are tied to other tools, see if an AppleScript can’t do most of the heavy lifting for you.

Things 2.5 released. My favorite task management app for Mac (and iOS) just got updated to support OS X 10.10 Yosemite. The visual changes mirror that of Yosemite’s: refreshing but still familiar.

I haven’t got used to using Notification Center Widgets regularly yet, but the new “Today” widget in Things may be just what I need to get started.

Siracusa Reviews OS X 10.10 Yosemite. For some, John Siracusa’s OS X reviews are almost as anticipated as the OS release itself. Myself included.

His conclusion sums up all twenty-five pages well:

The Mac today is just one part of a conceptually, organizationally, and (increasingly) technologically unified platform that spans from wrist to workstation. The hardware-based platforms of the past remain relevant to developers, but Apple seems determined to make them much less important to its customers. With Yosemite, the Mac has taken its first step into a larger world.

Josh Ginter Reviews the iPhone 6 Plus. Posted yesterday on the newly redesigned Tools and Toys website:

Apple’s newest iPhones are a story of tradeoffs for the first time in their history. Gone are the days of true corner-to-corner one handed use. Say goodbye to not noticing your iPhone in your front pocket, or even carrying your iPhone in your front pocket.

I just received my iPhone 6 Plus yesterday (finally!), so my review will be posted once I’ve had enough time with it.

Mac App Store: The Subtle Exodus. Milen Dzhumerov:

The Mac App Store can be so much better, it can sustain businesses and foster an ecosystem that values and rewards innovation and high quality software. But if you talk to developers behind the scenes or explore the Mac App Store, you’ll find something completely different.

Windows X

I’m not a Windows user myself, and haven’t been for almost six years now, but I was forced to use it for the first part of my computer-using life so I still enjoy following new releases. This next one brings Windows and OS X closer together than every before, and I’m not talking about just the version number.

Top New Feature

On September 30, Microsoft unveiled the next installment of their operating system, Windows 10, and consistently at-or-near the top of every related news article is this revolutionary new thing called the Start Menu. Suddenly I’m having a really strong case of déjà vu.

Sarcasm aside, Windows 95—the OS where the Start Menu really was a new feature—is the first operating system I really got to know, and one of the things I actually liked about the Start Menu was how concise it was. Does anyone else out there think the Windows 10 Start Menu is a little… bloated? I know I would if I was still a Windows user, but then again, maybe I wouldn’t if the previous major version’s replacement for the Start Menu (the Start Screen) actually took up the entire screen.

Putting the X in 10

Operating systems have an (understandable) history of “borrowing” features from one another. Over the years OS X borrowed features from Windows and vice-versa, but as I read about new Windows 10 features, as an OS X user I couldn’t help but notice quite a bit of familiarity:

  • Start Menu tiles. These are actually taken from the Windows 8 Start Screen, not a “borrowed” feature from OS X, but I’m reminded of Notification Center widgets in the soon to be released OS X Yosemite.

  • Task View looks hands-down like a Windows port of Mission Control, a feature I’ve become pretty fond of on my Mac.

  • Virtual desktops. I first experienced these while dabbling with Linux, and was glad they were available OS X when I first made the switch from Windows six years ago. Not everyone uses these, but if you do, you can’t live without it.

  • Command prompt improvements seem to be inspired by the Unix Terminal.

  • Continuum seems to be the Windows version of Continuity for OS X (Yosemite), and even have a similar name. Both are a little different in that the former is for hybrid devices and the latter for sharing an experience across multiple devices (since there are no “hybrid” Macs), but both are about adapting the user experience to match the form factor you are using right now.

Of course, Yosemite and Windows 10 were—for the most part—developed in parallel, so any shared features across these releases are likely coincidence, not inspiration.

Floating Apps

One major Windows 10 feature that has no OS X equivalent is the ability to float Metro… I mean Modern, no, Universal (!) apps over the desktop (as opposed to requiring them to run full-screen as in Windows 8).

This is definitely an improvement over having mandatory full-screen apps, but it seems like a bandaid for a much deeper design flaw. If these Modern apps are floating on the desktop, what’s the difference—from a user perspective—between these apps and any other apps. Why is there a distinction at all?

Of course, modern apps look different and are optimized for touch, but now you have touch-optimized apps all over the desktop. It’s not as awkward as having full-screen apps on a 27” monitor, but it still feels like two worlds colliding, even if the impact has been blunted. Native apps on the desktop shouldn’t feel like virtual machine instances.

Imagine how strange it would be to have iOS apps, as-is, running on OS X. As cool as that may seem to some, it introduces a lot of inconsistency into the UI and makes things more complicated for both users and developers. I’ve dabbled with Linux here and there over the years, and one of the things that made me cringe were all the UI inconsistencies between apps that used different UI frameworks, even more-so than running an iOS 6 (or lower) app in iOS 7/8.

Perhaps this is a case where Microsoft really should have taken a page from Apple’s playbook and require desktop apps to use desktop APIs (and thus have the desktop-mode look and feel), and add a “fullscreen” button to the title bar that maximizes the app into the full-screen Modern version. I’ve seen OS X apps that update the UI into a more iOS-style interface upon going into full-screen, and returning to the Mac paradigm when exiting full-screen mode. It seems to work well.

At the very least, Microsoft could do a Yosemite-scale UI overhaul of the desktop interface to at least make it match the modern look and feel, similar to the mockups Joseph Machalani posted in December 2013, which would be the more practical solution since they are already committed to the floating apps feature. At least every app, whether Modern or Oldie, would still feel like a “Windows” app.

Anyway, with all that out of my system, let’s see what history has to say about this next release of Windows…

The Star Trek Theory

I remember reading an article before Windows 8 launched that pointed out a trend where every other version of Windows since Windows 3.1x was good, while the in-between releases “sucked” (much like Star Trek movies).

I tracked down said article, titled “Why it’s likely Windows 8 Will Suck” posted on March 1, 2012 by Chris Keener, and I’m glad I did:

What I have seen is that, starting from about Windows 3.1x, every other Windows release has sucked (I’m also discounting the server and business releases). So, lets review:

  • Windows 3.1x (1992) - Good
  • Windows 95 (1995) - Mixed bag, at the beginning it sucked
  • Windows 98 (1998) - Good
  • Windows ME (2000) - Sucked (hard)
  • Windows XP (2001) - Good
  • Windows Vista (2006) - Sucked although not as hard as ME
  • Windows 7 (2009) - Good
  • Windows 8 (2012?) - ???

So, it seems fairly obvious that every other release of Windows has in fact sucked, but why has it sucked?

Keener goes into all a lot of explanation, positing that the every other release is intentionally crippled by Microsoft (more on that in a moment) before making his predictions:

So, based on the history we’ve seen, I’m making two predictions:

  • Windows 8 is going to suck.
  • We’ll see Windows 9 (or whatever they’re going to call it) released sometime in the next 3 years and it will fix nearly every problem in Windows 8.

Windows 8 would definitely meet the author’s “sucked” criteria, so… he pretty much nailed it. Windows 10 hasn’t been officially released yet, but based on what we know about the developer preview, it’s obvious that one of its primary goals is to “fix nearly every problem in Windows 8”.

I don’t buy into the conspiracy theory of Microsoft purposefully crippling every other release, however. As a developer, I know that the likely scenario is that it’s much easier to fix, or rather fine-tune something that’s flawed than it is to get it right the first time. It’s not a whole lot different than OS X Snow Leopard’s ZERO new features… feature, except Windows 10 actually does have a lot of new things in addition to dealing with gripes people had with Windows 8.

All in all, Windows 10 looks like it’s going to be a solid update. If you ask me though, I think what Windows users really need is a new Recycle Bin icon.

The Empire Reboots. Speaking of rebooting, I came across this long article from Vanity Fair that details a lot of interesting Microsoft history, specifically events surrounding Bill Gates, Steve Ballmer, and the drama that occurred before Balmer stepped down as CEO last year before delving into Satya Nadella’s new era in Redmond.

Starting an Open Source Project that People Use. Great advice from Barry Clark for anyone developing an open source project. As he puts it:

Starting an open source project is a great way to build your web developer portfolio while creating something for everyone’s benefit.

Reboot

For the past year, maybe more, I’ve pretty much neglected all of my web properties. I had a Tumblr blog a few years back where I used to post reviews, the occasional opinion, and Corona SDK-related code snippets, tutorials, news, etc.

The Tumblr blog was actually gaining quite a bit of traction before I was hired by Ansca (now known as Corona Labs), in which my work there took priority and the type of content I would post to my blog was being published on the company blog anyway[1], so there was little time or motivation for me to continue. Over the years I registered a couple of domain names and tried to start writing again but it never quite caught on for me.

Things are different now, however. I’m in a professionally stable position (I’ve long since left Corona Labs). My personal life is great. And I really, really miss writing and sharing stuff on the web. Therefore, I decided to make a clean break with the past and delete my previous website hosted at this domain, redirect my other domain to this blog, and set the stage for a writing environment that motivates me to turn this web property into a place that is informative, somewhat educational, and at the very least, entertaining for those interested in the same topics as myself.

A long time ago I learned that maintaining a blog, while at times fun and rewarding, is very difficult to do consistently over time, especially with personal and professional responsibilities taking up much of my time. Therefore, in order to “set the stage” properly and position myself to continue writing over the long-term, I came up with five major things need to be in place before I can begin:

  1. Choose the right publishing platform
  2. Implement a design I’m pleased with
  3. Reduce costs as much as possible
  4. Have a frictionless publishing workflow
  5. Redefine success

Publishing platform

No more Tumblr. No more Svbtle. No more WordPress. Don’t get me wrong, there’s nothing wrong with any of them, but I don’t want to be put in the position of one day having to take the time to “migrate” my website if any of the services shut down, or impose some kind of limitation that I don’t agree with. And while that doesn’t really apply to a self-hosted WordPress setup, even that’s just too “heavy” for what I want: a very simple website—fully mine—where I can routinely publish my writings and links.

After some research, I found a solution that meets my needs perfectly: Jekyll. It’s painless to set up, easy to customize, has all the features I need, and best of all, publishing a new post is as simple as creating a new text file, putting my words in it, and pushing in the changes via git.

As a huge plus, the entire thing ends up being just a folder of static files so if I ever decide to switch hosting providers in the future, it’ll just be a matter of uploading all the files to a different web host (and making the required domain changes of course). No databases, no PHP, and no web interface to fight with—the perfect solution for me.

Website design

The way my website looks is important very to me. So much in fact, I have a tendency to spend too much time tweaking things until everything’s “just right”[2]—time I should be spending writing new content. Therefore, I decided to get that all out of my system right off the bat and make the website look, feel, and work just the way I want it to before writing anything. I ended up going with a very minimal design that’s likely to appeal to me for a long time (fingers crossed)[3].

Reducing costs

Feelings of guilt, even if minor, can be a major de-motivator and that’s the last thing I need when it comes to maintaining a website. If I’m spending money every month—money that could be spent on my wife and kids—to keep something going, something’s that’s not brining in any income initially, then it’ll help me personally to stay motivated if I know I went with the most affordable option I could (without sacrificing quality, of course).

A nice benefit to using Jekyll is that I can host this website using Github Pages, which is completely free (as in free beer). In fact, they encourage users to use Jekyll with their service. So at the moment, it’s costing me a whopping $10 a year to keep this website live, and that’s for the domain name (which I recently just renewed). It’s amazing that we live in a time where words can be published instantly and read by countless numbers of people around the world at hardly no cost.

So far I’m happy with the quality, but as I mentioned before, if Github Pages doesn’t end up working out in the long run for whatever reason, I can easily switch to another hosting solution within minutes since Jekyll-generated websites are simply a collection of static files.

Publishing workflow

The amount of friction between drafting a post, editing, and finally publishing needs to be as little as possible for me to keep the motivation to continue writing. Fortunately, my setup hits the sweet spot here. I write and edit my posts in Byword and do a quick commit/push into my site’s Github repo. Within seconds, the post is live.

When I used Tumblr or Wordpress in the past, I would end up writing my posts in a text editor, and when it’s ready, copy/paste into the web interface. That’s too much friction in my opinion, so being able to cut out the “middle man” is a big win for me[4].

Redefining success

Since it’s costing me practically nothing to run this site, and I’m making a decent living from my job and other contracting gigs, I’m under no pressure to turn this blog into something that’s going to generate my primary source of income so I can work from home.

I already work from home, which is a goal I had for a long time before it happened, so that need is already met. My purpose for this website is to simply serve as a source of joy for myself as an outlet for my thoughts, and to provide value to readers by being informative, educational, and—at the very least—entertaining. I want this site’s feed to be one you look forward to seeing new updates from, much like a few of the blogs I subscribe to and read every day.

If down the line, this website gains enough readership that it can actually contribute to my bottom line, great—it’ll be an added bonus, not a goal I’ll have needed to meet to consider this project a success. Rather, my definition of success for this website is if I meet my goal of posting to this site reguarly, and if a handful of readers get some value out of it.

So now with all five points met, the stage is set. Let the reboot commence.

  1. In addition to being frameworks engineer, I wrote weekly tutorials for Ansca. The work I posted to my blog was one of the contributing factors to my getting hired, so it wasn’t all for nothing.

  2. Another reason I didn’t go with WordPress this time: it’s way too easy for me to get lost browsing and trying out new plugins. Jekyll supports plugins too, but I’m not familiar with the process so it’s easy to stay away from it. That’s not the case with WordPress, however, where new plugins are just a click away.

  3. The Jekyll theme I’m using is a highly modified version of Gereksiz by Berk Özbalcı, with colors being from the Solarized palette.

  4. I know I could have went with sofware like MarsEdit, but I’m most comfortable writing in a plain text editor, particularly one made for writing (such as Byword), not necessarily blogging.