Make a business app without writing a single line of code

Writing a business app for iOS, Android and Windows Phone without writing a line of code. This is the challenge that a company seems to have set out to address. I took it for a quick spin, it looks impressive for a first start.

If you’ve been here before, you know that I always express skepticism when I encounter this kind of claim. But when someone like Scott Hanselman tweets it, then I pay attention and will give it a shot. That’s what I did and here is how it went.

I visited the site, followed the link to create an app, picked a template/example and simply accepted all defaults. I chose to download the source codes. Within about 3 minutes I had three apps downloaded to my mac. The web site looks clean, it’s easy to follow.

App Control panel
App Control panel

There’s an option to download the fully built and ready-to-go app.

Trigger app build process App's being prepared for download Download your app

When you install the app, you get something that is really basic but functioning.

login view

main view

I then loaded the iOS version on Xcode to take a look at the source code. Browsing around I saw a source tree that is reasonably well organised, clean, simple and straightforward. You see that it doesn’t have much feature. I wouldn’t call this a foundation to base anything evolved on, but the basic hierarchical navigation views are in place.

Sample app in Xcode

I tried to build from Xcode and straight away the code wouldn’t compile. I saw there were missing dependencies, could try to solve that manually but decided to use cocoapod for that (everybody does these days). Indeed the presence of podspec file was another give away. After refreshing the dependencies, the code still wouldn’t compile, the Test target failed. So I deleted the Test target, then the code runs. I couldn’t be bothered to spend much time on this.

There’s also Android and Windows app source codes available. I didn’t take time to go through those, but I expect they would be similar: basic structure, quick and easy, but not much feature to see. To be honest, the basic app structure created by Xcode would be much like what you get here, one benefit is that through the theme feature of the web site, it’s possible to make it a bit more proprietary and get going.

Brief summary

For a beta service, this looks like a good start. It certainly will help people who just need a decent looking prototype to get started. The concept of App Builder, aiming at people who don’t want to write code, seems to be in motion. I’m not sure how much success they’re getting, but it is worth checking them out regularly. There might be situations where even a professional developer would want to get something simple out quickly, particularly throwaway ephemeral apps that are not worth over-engineering. This one looks good for that kind of purpose. For more elaborate needs however, writing code is still going to win the day.

To write good code, you need to think carefully about what you’re trying to do, what the context is and what the constraints are, then design a solution that cater for those things.

Who is set to benefit from the introduction of Swift programming language

Swift could open up a great opportunity for Apple, getting large number of developers to write programs for OSX and iOS. Conversely, Swift could be the opportunity that some would be waiting for to start leveraging their skills on Apple ecosystem. Swift could be a blow to those ecosystems as Apple is suddenly more attractive to a rising generation of developers enamoured with functional programming.

One of my first reactions to Swift was the following:

In this post I elaborate a little more on the reasons that I held this belief, that everybody wins.

  • Apple, obviously: legions of developers who might have been put off by Objective-C will now give a second look and many are likely to write code for Apple platforms.
  • Groovy, Scala, Objective Caml programmer: programmers experienced with these languages can now leverage their skills to build solutions for the Apple platform without having to learn another language. Their main hurdle would be  to get acquainted with iOS and OSX platform concepts and building blocks.
  • Scala ecosystem: the introduction of Swift might have the side effect of actually making some people understand Scala better and quicker, this because  it shares many concepts with Scala but has a more readable syntax
  • A converse effect of the above bullet point: Apple developers who make the jump to Swift, would also realise the many benefits of functional programming and adopt languages like Groovy, Scala or Erlang.

Folks looking for new opportunities should find plenty. From a business opportunity perspective, here are some potentially profitable developments:

  • Groovy backend for Clang and LLVM: this could make it possible to write native iOS and OSX code in Groovy. People used to writing web only code would suddenly be able to port their solutions to the Apple platform.
  • Cross Training Developers: this could be the best time for Groovy or Scala training organisations to tap into the masses of iOS and OSX developers scrambling to learn functional programming. Why leave that money on the table?
  • Apple and Pivotal work together: this is a bit tangential, but if Apple were interested in expanding their Cloud clout, this is a good way to do that because they suddenly would be able to target the data centre too! Just buy Pivotal and leapfrog both Microsoft and Google in one fell swoop!

I don’t see yet how Swift could benefit either Microsoft or Google ecosystems. If anything, this could be a blow to those ecosystems as Apple is suddenly more attractive to a rising generation of developers converting to functional programming.

Swift, a general purpose programming language for a specific platform

Apple releases a new programming language for its platform, called Swift. Swift synthesises Apple’s learning from years of Objective-C, but they also cherry picked from the vast pool of learning embedded in many high profile and popular languages such as OCaml, C#, Rust, Lua, and many others. Interestingly, Apple seem to have left out concurrency and parallelism, either they consider those to be outside of the scope for a modern language or they are just not ready to release something in that area. Parallelism and concurrency are first and foremost systems concerns, more at home with a systems programming language. Apple is heavily focused on the user experience, and much less on system experience (TM). This makes me believe that Apple intentionally decided that Swift would not be a systems programming language. At least not now.

Apple announced a new programming language. The inevitable reactions poured in, Apple lovers mostly rejoiced, Apple haters pounded on. Some complained the fact that it was not open source. Here are some thoughts from an observing angle.

A new programming language that launches in 2014 would aim to attract the masses and actually solve problems. If not then nobody would pay attention, regardless of their affinities. There’s been a lot of learning compounded in the software engineering discipline over the years, it would be foolish to sidestep all that and try to bring up something new. These learnings can be found in the existing languages, C#, OCaml, Erlang, Groovy, Scala, Rust, Go, Lua, and many others I might not even be familiar with. So in this context, if you were in any vendor’s shoes, you would need to embrace what’s available and bring it closer to your environment. That’s what Apple has done. 

Concurrency and parallelism

It is surprising that Swift does not seem to address concurrency and parallelism the way Erlang for example does, at least not in a visible way so far. It seems they didn’t want to ‘copy’ much from Erlang in fact. One could speculate what Apple’s rationales might be. My immediate thought, when I saw that omission, was that perhaps that would have pushed the enveloppe too far for the current generation of Apple developers. If that were included, a-la-Erlang for example, quite likely the first batch of applications delivered with Swift could be utter disasters and permanently cripple the uptake of the language. Apple would have to first create a solid infrastructure for such parallelism and concurrency constructs. That is the most important reason I can think of for leaving out such paradigms.

Another rationale to consider is the fact that unpredictability doesn’t marry well with user interface behaviour. Parallelism and concurrency are first and foremost systems concerns, more at home with a systems programming language. Apple is heavily focused on the user experience, and much less on system experience (TM). This makes me believe that Apple intentionally decided that Swift would not be a systems programming language. At least not now.

Vindication

Swift appears to be, at least from one vendor’s perspective, a vindication that verbose programming languages don’t make developers productive in this day and age. Also, letting people make simple silly preventable mistakes is not a profitable business. Every time you looked at Objective-C source code, after any amount of time with Clojure, Groovy, Lua, Erlang or OCaml, to name a few, you were left wondering why such status quo persisted. Apple gave their answer today. But they waited a long time for that. Microsoft with C# and particularly F# have long been delivering the goods in that department. Google with GO have been forging ahead and registering tremendous success. Marrying the best aspects of functional programming with sequential and object-oriented programming, deliver the most benefits to users at the moment. With Microsoft, Google, Apple, Mozilla on board, it would be hard to argue that functional programming has become mainstream. The early adopters should rightly feel vindicated, somehow.

Update: A pointer to the reference web site was missing, for those who might not be Apple developers. There is no point in including ‘hello world’ or other trivial sample code here. Swift web site is:  https://developer.apple.com/swift/.

Tails, privacy for anyone anywhere. Makes sense to me

I often felt that visualisation has the potential for a more secure computing than we have seen so far. Project Tails is a good move in that direction, and is in effect a great virtualised secure solution. I am encouraged to see this happening.

I wrote before in this blog that I felt security and privacy were underserved by current technology offerings. This project lays out a vision that is very close to how I imagined it, and it looks promising.

Project Tails Logo

OSX Mavericks is actually ready for the public, it rejuvenated my MBP late 2008!

OSX 9 Mavericks is ready for the public, not just developers. I’ve upgraded a MacBook Pro Late 2008, the installer only asked if I wanted to continue but after that I didn’t get any other question. Once the installation was complete about half an hour later, I could just carry on working where I left off. So far, my laptop actually feels faster, and I am hoping that the battery would last longer on a charge. That’s the only thing I need to witness now before I declare this a great great OSX upgrade.

I know, I know. You don’t install a beta software on your production (everyday) computer. But you know what, blame Apple for all this as they showcased battery-saving old-laptop-life-extending performance-boosting features in last week’s WWDC. From the moment I watched the keynotes my dilemma started, how long was I going to wait to get this stuff on my ageing MacBook Pro Late 2008? Finally, I cracked and upgraded my laptop to OSX Mavericks.

My experience? Well, it felt like it was just a regular patch install or something like that, rather than a major upgrade. If this is what they call beta, then I’d install a beta anytime. I downloaded the beta, installed it and only had to confirm I wanted to install it, it took about 30min to install and restart. When it restarted on OSX Mavericks, I could just continue working where I left off without touching anything at all, absolutely everything I had before was preserved intact where I had left it on OSX Mountain Lion!

Here I was, a mere 45min after clicking “Install OSX Mavericks”, using the brand new bleeding edge OS without having to answer a single question or any form of trouble!

I was thinking that there’s bound to be a catch somewhere, surely something would fail, I’d see some nasty error messages popping all over the place! Nope, none of that occurred, not a single error popped up, not a single trouble so far. I found it hard to believe that would be the case, still expecting something nasty to happen anytime but that may just be paranoia.

Here is the list of programs I am able to just carry on using after installing OSX Mavericks beta 1 without even touching a thing, not even changing a setting, just start it as usual and use it:

  • Google Chrome (both Canary and regular), I also listen to BBC Radio or RTS (Swiss) with this
  • Firefox (latest) and Firefox Aurora
  • Dropbox, Box, Google Drive, Alfred
  • Parallels Desktop 9 (that’s also a beta software)
  • Omnigraffle Pro, Pixelmator, Evernote, Skitch
  • Intellij IDEA 11,  Eclipse Juno, XCode
  • Apache Tomcat, JBoss, Mule ESB
  • Ruby on Rails (3.1.13 and 4.0 RC2)
  • Postgresql 9.2, MySQL 5.6
  • Homebrew (brew), Ruby version manager (RVM)
  • Apple’s iWork: Pages, Numbers, Keynote
  • LibreOffice 4

You can see there’s a lot of software development products, despite that nothing broke. I thought Rails (Ruby on) would certainly fail, or that something like ‘bundle install’ would choke. Nope, they all worked fine just like before. I did notice that Chrome Canary would have a rendering problem in between previews while writing this blog post, but that’s it, and that is actually normal since Canary itself is a bleeding edge program.

What else can I say? Without even trying a benchmark or anything sophisticated, I see that my MBP Late 2008 is noticeably faster than it’s ever been before, just starting programs and carrying out tasks, everything is working smoothly.

I am now expecting gains in battery life, which I can confirm after a couple of days of usage. In fact, my urge to migrate was triggered by the hope that it will be faster and battery life would be better. It delivered on the first, now let’s wait a couple of days on that last point.

Older MacBook Pro Late 2008, a simple performance tip if you have an SSD + HD installed

If you read this blog for some time you may have come across my story on upgrading my MacBook Pro Late 2008 by adding an SSD to it. There were a couple of other things that I’d been doing but didn’t blog about, frequently shuffle around programs to make the most of the SSDs. I’ve been applying these techniques and it didn’t occur to me to talk about it until I saw an article on Apple’s newly announced Fusion Drive technology.

If you read this blog for some time you may have come across my story on upgrading my MacBook Pro Late 2008 by adding an SSD to it. There were a couple of other things that I’d been doing but didn’t blog about, frequently shuffle around programs to make the most of the SSDs, that’s the story I am about to tell here. In this post I am assuming that you are familiar with Unix/Linux file naming conventions, and that you have similar constraints that I have as explained in my disk upgrade story earlier in this blog.

To recap the posting I’m referring to, I had deliberately chosen a smaller SSD (60 GB) to keep the costs down, but that meant that I had to keep a lot of large files in the slower HD drive. Given the difference in performance between the two drives, I was wondering how I could somehow make that SSD work harder for me. So I came up with a simple routine, which I didn’t think much of at the time. There are times when I am more frequently programming, and other times when I am using graphical tools or launching virtual machines (Ubuntu, Windows xx), so I would swap around those programmes and large folders between the two disks in an very simple way.

Mac OSX has a feature that comes in handy here: applications may be installed in the system by placing them in the folder “/Applications”, or installed only for one user when placed in a folder called exactly “Applications” in the user’s home folder, which in Unix is “~/Applications”. Knowing this, I laid out my two disks to take advantage of it. In case of data files, even virtual machines you simply have to ‘forget’ any cached uses and get the application to load it by giving it a direct folder reference. Parallels is an exception, it is sensitive to virtual machine images being moved around and might fail to load them. While loading it, you have to tell Parallels that you have moved a VM, it will do the right thing, otherwise you may damage your VM. I won’t go into that here.

When I am frequently using Xcode I would move it to “/Developer”, I would move other large software like Adobe FireWorks from “/Applications” to “~/Application” and create symbolic links to mask these changes. When I enter another period where I don’t develop or do it less frequently, I swap those large folders around again and restore the original links. This may sound convoluted but it isn’t, it’s just a couple of lines of shell scripts that would run a couple of minutes then you’re done. The trigger for starting this folder dance was that, when my SSD had less than 10GB free space the machine could run out of virtual memory (remember I have 8 GB RAM on this machine), so I had to try and keep that disk above 11 GB free space at all times.

The main drawback I run into was when I tried to do the same with iTunes and iPhoto (my large photo library), I run into problems and had to stop that, but it worked fine for running frequently used programs. I also used to run “Fix Permissions” after each shuffling of large folders, this made my technique even slower, so I only tended to do it once every other week and sometime forgot to revert things when I changed daily work routines.

To summarise, if you have a MacBook Pro Late 2008, like I have, or any Mac that is equipped with both an SSD and an HD, you can make the SSD work harder for you and gain some performance by applying this super simple folder shuffling technique. You can even do it with large data files that you may be opening several times a day or in relatively quick successions. I initially came up with the idea by thinking about the way detachable storage works, nothing special. The technique is most effective if you have a relatively stable work routine over several days or weeks.

I recently saw an article by ArsTecnica on Apple’s Fusion Drive, which seemed to be indicating a somewhat similar technique but obviously a sophisticated and robust one that is also transparent to the user. This technology will be available in their new line of MacBooks, I didn’t really follow that event. t thought of telling this story, in case someone happens here while looking for tips. I have to say though, I read lots of stories about SSD failure rates, I experienced one with my older Time Capsule external storage drive, it was a LaCie 1TB drive, one day it simply stopped responding, no warning whatsoever, gone for good without any (noticeable) incident. So, although SSD are exciting, and I’ve been enjoying  a performance boost since I installed mine, there’s a little nervousness that it may surprise me one day. I wanted to warn you, the reader, about this risk because, you just never never know.

Tech platform curation is good, but let adults take responsibility

In tech, like in many other industries, people need to make trade-offs. Apple chose to curate as much as possible, and they are mostly doing a good job – why else would their devices be such a runaway success? And yes, it is certainly a slippery slope giving so-called power users more choices. But I don’t think the need to curate should be detrimental to good practice, in this case a backup solution should never force a user down a single path, the way Time Capsule is doing it here.

I frequently experience the issue that Apple, in their attempt to totally curate the platform, actually take away vital responsibility from those who could otherwise be more empowered. Most computing devices are good when they function normally and remain responsive to user interactions. But, when something goes wrong, that’s when you really appreciate the ability to get out of trouble. And those are the moments when a technical savvy person could get really frustrated with Apple. Take this latest example with my Time Capsule:

Time Capsule wants to delete my backup history
A dangerous Time Capsule dialog

This dialog might look innocent but it isn’t, here is what it is saying to me:

Time Capsule has decided that it is going to destroy your backup history from the beginning of times. This means that you are starting anew, there is no way back from this. Now I give you two options, a) do this right now and get over it, or else b) I stop doing any backup until you finally accept this situation.

This is terrible for several reasons. The first one is that it defeats the whole purpose of Time Machine, remember when Steve Jobs famously demo’ed feature saying that you “will never lose a file again”? Well, this dialog clearly contradicts that claim, your history will be gone for no fault of your own. The second reason why this isn’t good is that, backup rotation schemes have been around forever, Time Capsule has no business deleting my older backups without giving me any other alternative. What it is supposed to do here, is to allow me to either add a new disk, or take the current backup history offline, or simply suggest to delete the oldest backup (but not the entire history!).

If given more options, since I know how to go about this, I would be able to take an appropriate action and be content with the product. But if it treats me like a kid, giving me no other option, that is a bad user experience and it is frustrating. Another example is that, I noticed the disk free space on my MacBook Pro had shrunk dramatically and I suspected something wasn’t quite right. Luckily I’d used the Target Disk Mode before, so I did that and found out the disk needed repairing, which I run. Before repair it was reporting 34 GB free space, after Repair it reported 124 GB free space! I have one more example with Server Manager (OS X Mountain Lion) but I save that for another post, if time permits.

This Time Capsule issue is one example where platform curation falls short. And at the moment, it looks like Apple is the biggest culprit in such practice – though Microsoft seem to be marching fast on the same track – I’ve been running Windows 8 RC for a while, it’s getting harder to troubleshoot issues, see what apps are running for example.

In tech, like in many other industries, people need to make trade-offs. Apple chose to curate as much as possible, and they are mostly doing a good job – why else would their devices be such a runaway success? And yes, it is certainly a slippery slope giving so-called power users more choices. But I don’t think the need to curate should be detrimental to good practice, in this case a backup solution should never force a user down a single path, the way Time Capsule is doing it here.

 

Apple doesn’t just do nice device experiences, their SDK and documentation are masterclass too

If you know C and you get properly acquainted with Objective-C, you will realise that Apple succeeded in making people write large C code without hating it or getting into trouble. People say, and I agree, that learning Functional Programming (FP) makes you a better programmer even if you were to go back to non-FP languages. I think the same thing can be said of programming for iOS using Apple provider toolkits. Learning to code iOS application yields much more than solid applications, it also teaches you how to be a better programmer.

I’ve been regularly using Apple SDK for a number of months now, earlier on I only did small proof of concepts (as an Architect sounding out and testing gears before making any recommendations). I’ve used many developer toolkits throughout the years, but Apple’s have been an eye opener for me, once I decided to build a sizeable application with them. I would easily give Apple a top mark for creating and nurturing a development platform, yes they do make breaking changes but they clearly keep the concepts sound and stable throughout.

In the next paragraph I’ll be mostly referring to development environments (IDEs), I’ll skim over documentation because it made no big difference except in the cases of Microsoft Visual Studio and Apple’s Xcode.

I’ve used Eclipse intensively throughout the years, before that I’ve used IBM VisualAge on large projects. Eclipse is good, but I find IntelliJ IDEA to be a much sharper and more productive product than Eclipse in that area. I’ve looked at NetBeans too, for a time its free profiler was a selling point for me but I didn’t end up doing any serious work with it. I’ve used Microsoft development tools since the time that Borland shipped better ones (Borland’s were my favourite at the time), and I still use Visual Studio every now and then. For a time PowerBuilder was the best productive development tool for me and I enjoyed it until I moved on to web applications for good. I’ve had some exposure to IBM Rational software engineering products too, at the time they were often unstable, bloated, so I never got to liking them much. I’ve also used, and continue to use many text editor flavours, Unix ones like VI and Emacs, and various others that I don’t care much to mention. So I’ve seen quite a wide variety of developer tools and mostly didn’t come out too jazzed up about them.

What all of the above developer toolkits have in common is that they provide you a base upon which you can extend by means on plugins or add-ons. In nearly every case you need to source additional libraries to complete projects, at least that’s been my experience in most cases. However, in my opinion these products fail to teach you best practices in any meaningful way. If you are looking to learn to write fool-proof and performing code, you still have a long trial-and-error learning curve in front of you, the toolkit won’t provide you any guidance.

Apple’s combination of XCode, Cocoa, Objective-C and the documentation, together provide you much more than just an SDK and IDE, they actually teach the developer how to write code properly. As you write applications for Apple platform, you get more acquainted with patterns in a practical and effective way, you learn one behaviour and can become more productive as time goes by.

Microsoft have attempted to do something similar, Microsoft Patterns & Practice web site is where they are trying to complement where Visual Studio is lacking. There is a lot of good examples on how to compose Microsoft tools to produce results, it’s the best source I’ve come across if you only target Microsoft platforms. But I’ve found Microsoft Patterns&Practice to be too heavily biased towards APIs, and those APIs tend to change before you get to master them. So, unless you are immediately applying the techniques that you learn in an active project, preferably very close to the publishing time period of the articles, the learning may not stick and might get dated. I’ve had my fair share of disappointments learning Microsoft development libraries. For example, I’ve been through numerous Microsoft data access technologies and every time I had to learn a totally different approach for no clear reasons.

IBM’s DeveloperWorks is huge and for a time it offered lots of good articles on various development topics. But usually, they helped a lot if you were targeting IBM WebSphere and Lotus product stacks, they required more effort if you didn’t. I’ve long not done much with IBM technology stack, I look at DeveloperWorks every now and then, the venerable WebSphere stack is chugging along. I would think that IBM WebSphere development toolkits may help in learning some good practices, but I think unless you can afford the pricey IBM Rational suites you may not reap good learning fast enough and may end up having to patch things up to become proficient.

I’ve watched Oracle technology stack get more and more complex as they acquired companies. I’ve used many of the their components at separate times and when companies like BEA and Sun MicroSystems shipped products. In recent years I’ve come to believe that the JavaServer Faces (JSF) approach isn’t an efficient one if you didn’t specifically target Oracle platform. I’m not particularly fond of what I see on Oracle sites, I don’t think they help much in teaching good practices to developers.

These are the largest technology solutions that I have significant experience with, and I haven’t really seen the sort of purposeful learning that I see when dealing with Apple development toolkits.

In my opinion, Apple has done a better job in this critical area of developer enablement than many others, and what you learn in the process will serve you well beyond Apple platform. If you know C and you get properly acquainted with Objective-C, you will realise that Apple succeeded in making people write large C code without hating it or getting into trouble. Before iOS became popular, and aside from Linux hackers, you could’t convince a young developer to learn C programming. Apple has somehow pulled that trick without people realising it. And if you know your design patterns, for example the Gang of Four book, you will find it a delight to discover how Apple’s Cocoa code hangs together. The way you design and write iOS applications is closely aligned to the way patterns should be recognised and applied, for this reason you are learning patterns as you code for iOS. This choice alone ensures that developers grow quickly to maturity when they develop for iOS platform.

I’ve not talked about HTML  development toolkits so far (meaning HTML, CSS, JavaScript), for a reason. I have yet to see any toolkit in this area that actually teach good practices. It is actually paradoxical that that kind of web application development could become so popular, because I think it offers the highest learning curve of all. Yes, sure, people clone (GIT) a To Do List application sample, make a few changes and promote that into an application. But there is no good practice in there, actually that’s where the learning begins. The number of concepts and technologies that a developer must learn before they can write solid HTML code is astonishing. And if they don’t learn those things all they tend to do is create more mess and never learn any good skill in the process. So I’d say that there is no useful learning environment there, unless the recently announced Adobe Html would prove me wrong.

Talking about web development specifically, there are many popular development platforms that help people produce applications quickly. However, the most popular ones such as PHP, Ruby On Rails (RoR), won’t teach you much about good practices. RoR did a good job in helping beginners get in the game with its convention over configuration practice, but that is it. Once people got started with their first RoR application, they usually don’t know where to go next and quickly run into learning shortcomings as their application usage picks up.

In summary, I think the benefits that iOS developer realise is greater and more durable beyond the platform alone. People say, and I agree, that learning Functional Programming (FP) makes you a better programmer even if you were to go back to non-FP languages. I think the same thing can be said of programming for iOS using Apple provider toolkits. Learning to code iOS application yields much more than solid applications, it also teaches you how to be a better programmer.

My MacBook Pro Late 2008 humming with Mountain Lion, smooth as silk

My MacBook Pro Late 2008 is shining ever more with OS X Mountain Lion. With this setup, unless there would be a serious hardware failure, this MBP can go a few years without needing any upgrade, though I am pretty confident Apple might drop support for it after 1 or 2 OS releases from now.

I’ve upgraded my MacBook Pro Late 2008 to Mountain Lion. The process was flawless and quick. My mac runs noticeably faster than it did with Lion. All apps start up and close faster than they did before, Omnigraffle Pro in particular loads up stencils much faster than it used to.

As happened when I upgraded to Lion, I had to fix issues with some developer tools. Apple removed  the (Unix) X11 server package from OS X Mountain Lion distribution, they recommend installing the open source package called XQuartz in replacement. This is automatically suggested, I can’t even remember the dialog as I wasn’t thinking about blogging when I started the upgrade process. OS X Mountain Lion also features an automatic dependency software discovery, it kicked in as I launched a Java app that required JVM 1.6.

Open source brew and rvm

The first thing to do is run “brew doctor” on a terminal window, this will point to any issues it finds and there were a half dozen in my case. The biggest issue was with X11 server. Once I was done resolving brew reported issues, I run “brew upgrade”, then “rvm upgrade” shortly after, to ensure that all native package dependencies were recompiled and linked with the new OS libraries. At the end of it all, brew doctor warned me that XQuatz wasn’t known to work well with brew packages, but I haven’t run into any problems yet. This was all I needed to do to be completely up to date with OS X Mountain Lion.

FileVault Legacy encryption

Apple shipped Lion with FileVault2, which obsoleted FileVault I had in place earlier on. Nothing breaks, it just feels untidy to be constantly remminded about this legacy. When I upgraded to Lion I didn’t have enough space to turn off FileVault and redo the encryption. The same thing happened again with Mountain Lion, not enough space. So I did one simple radical thing, used Carbon Copy Cloner to backup my user home folder, deleted and recreated the user account, this removed FileVault. This whole thing wasn’t necessary as I said, but I like to tidy up sometimes and remove legacy software.

Now I am enjoying OS X Mountain Lion, the only thing that took time was the backup prior to upgrading. Backing up my MBP to Time Capsule over wi-fi was excruciating slow. I had two false starts because I would accidentally hit a key and stop it after a couple of hours. It took nearly a day to backup about 280 GB. I just left it running and went about other business.

My MacBook Pro Late 2008 is shining ever more with OS X Mountain Lion. With this setup, unless there would be a serious hardware failure, this MBP can go a few years without needing any upgrade, though I am pretty confident Apple might drop support for it after 1 or 2 OS releases from now.

Mountain Lion, a better file handling in the App. Spotlight has room to improve though.

OS X Mountain Lion improves upon the way files are handled in Applications. You can now duplicate, rename or move a file as illustrated. I still miss something, which I think would be very handy: in the Spotlight search result list, it would be nice to have more of the same options too.

OS X Lion introduced a radical change in the way files were handled in Applications. The experience wasn’t quite right for a proficient user,  definitely missed the “save as” option. With Mountain Lion they’ve fixed that issue. I like the change they’ve now introduced.

New file management in OS X Mountain Lion
New file management in OS X Mountain Lion

Now, I think a similar improvement in Spotlight search result would be really cool for a more advanced user. Every time I search for files in Spotlight, I wish I could do some of these things:

  • open a Terminal window where the file or folder is
  • see some information about the file, without actually opening it
  • or just open a Finder window on the file location

Those would make my experience much better, and I think many people, especially technical people, would enjoy that too.