Trunk Notes 4.2.0

A minor update to Trunk Notes has been submitted to Apple. This release has a few new features and some bug fixes.

Minor annoyances fixed are:

  • {{random pagename}} crashing Trunk Notes if pagename is the same as the page containing the random function.
  • The page location was being updated even when it shouldn’t have been.

There are a couple of small improvements:

  • Dropbox sync continues if the app is backgrounded. This isn’t the oft promised and long awaited automatic Dropbox sync, however it makes things a tiny bit nicer.
  • The {{recent}}, {{popular}} and {{created}} functions now ignore system pages with the prefixes Special: and Docs:.

The new features are:

  • An in-app browser is used instead of pushing you out to Safari when you tap on a web link. This will make Trunk Notes hugely better for those of us who have pages filled with links – particularly when used for research. The in-app browser can open the page in Safari or Chrome if you want the power of a full web browser.
  • The action button now shows a “Share To…” option. This gives you the ability to share the text of a page with other apps on your system more seamlessly than the copy/paste workflow necessary before.

If you enjoy using Trunk Notes and find it an valuable companion to your digital life please leave a review on the App Store!

Some thoughts on mobile app development and developers

I’m a big believer that native is best when it comes to mobile apps. PhoneGap has for me never been a satisfactory answer. I’m personally not a big JavaScript fan, although some of the newest developments may change that. I prefer my languages strongly typed with mature deep standard libraries. HTML mobile user interfaces lack that special something.

For the past 3-4 months I’ve been getting to know C# and the Xamarin platform. It’s a great solution for many of the projects I’m working on. C# is a well designed language and Microsoft is no longer the big bad wolf they once were. Xamarin Studio can be painful but Visual Studio + VsVim + ReSharper is delightful (most of the time.)

For all intents and purposes Xamarin apps are native for what matters – the UI. The MVVM approach means my code is better architected because I can’t be lazy and mix business logic and interface if I’m to maximise code reuse.

The difficulty with wanting more apps to be developed in Xamarin is in recruiting new developers. I’m not expecting to be able to hire an experienced Xamarin developer. What I do want though is a native mobile developer open to adding C# and the Xamarin platform to their developers toolkit. I’ve done a number of telephone interviews with people who know nothing about Xamarin but want to stay pure native. For me a good developer should be open to learning new stuff whenever possible. A developer working in the mobile space must be readily adaptable. Disliking something without properly evaluating it isn’t a good tactic if you want your skills to stay current and relevant.

There are lots of great ways to create mobile apps. I still love coding the way Apple and Google intended, however there are relevant alternatives which are worth trying. I’m personally quite excited by React Native that was announced last week, despite my reservations about JavaScript. Despite all I’ve said I don’t believe in flitting about, without learning something in depth, so I do respect those who want to spend a little more time really getting to grips with one particular technology. For those people though with greater experience I would just say keep an open mind.

Whichever way you code apps I hope you enjoy all the exciting new developments 2015 will have to offer!

Controlling the size of an image on a page in Trunk Notes

I’m going to start posting answers to some emails as blog posts. Lots of you ask interesting questions about Trunk Notes and Go Calc, the answers to which deserve wider audience.

A recent question was:

“Is it possible to control the size of the image shown on the wiki page? Having a smaller thumbnail that one could click on to access the full image would be helpful.”

The answer is yes, however I admit the syntax could be simpler.

If you had an image called 26_12_2014.png to display a small version of the image you can write:

![](26_12_2014.png =150×150)

You may notice that the image is still the same width but stretched. The reason is the stylesheet which determines how your pages work.

To fix this turn in the custom stylesheet setting and remove the following text from the page Special:SetStylesheet:

#contents img {
width: 100%;
}

The emailer then asked how to make this into a link. The answer is the slightly cumbersome:

[![](26_11_2014.png =150×150)](/File:26_11_2014.png)

Phew! What we need here is a Lua script to help. I will get something together and post the answer later. If anyone wants to beat me to it let me know!

A Review of 2014

I promised a little while ago on Twitter that I was going to start blogging again. My last blog post was from February, far too long ago for this to be considered an active blog!

My goal is to change from writing solely about Trunk Notes and Go Calc to composing more regular posts on mobile app development, technology and anything else I find interesting.

2014 has been a year of change for me. Whilst there have been a few updates to Trunk Notes, and a much overdue one for Go Calc to support the iPhone 5 screen, I have been mostly preoccupied by other things.

My day job is at a great agency in Birmingham (UK) leading a team of fantastic mobile developers on a wide range of apps. These apps range from an established app which was in Apple’s “Best of 2013, Disruptive category” that is still gaining hundreds of new users each day, to an MVP for two people with a great idea and a small amount of investment. Moving forward I will be working on exciting projects for consumers and on enterprise apps which will have transformative effects on business processes.

There have been many exciting developments in technology this year. For me it was the release of the iPhone 6 and iOS 8 which had seen me move back to iOS for my daily device. My Nexus 4 is now squirreled away in a drawer. Some/many would argue iOS 8 was all about playing catch up with Android. However there are now features, such as action extensions, that provide a major boost to what can be achieved on a mobile device without needing to be an evil genius. My hope, one shared by many others in the tech community, is that Apple focuses more on improving stability and adding polish over the next few months.

As a developer I’ve been excited by the introduction of Swift, however my focus has been on dealing with the challenge of cross platform mobile development. Working with clients who want to see their ideas on both iOS and Android had always meant persuading them that two native apps was the way to go. I’ve never been happy with Phonegap and similar HTML/JavaScript based solutions. Basing the entire interface around a web view produces a UI that is, in most instances, unsatisfactory. JavaScript has seen tremendous growth over the past couple of years, however for me a weakly typed language which lacks built in obvious support for standard object oriented programming doesn’t fit the way I work. The Xamarin platform is the great compromise. C# is a fantastic language and the underlying technology is mature and stable; even more so now that Microsoft is no longer evil and is making exciting moves in development communities. Most importantly being able to work with native interface paradigms is essential. Apart from a slightly slower launch time and a bigger binary an app created in Xamarin should be indistinguishable from one created in Objective- (iOS) or Java (Android). I will be blogging in the future about my love affair with Xamarin! Xamarin is the main reason I’ve only spent a cursory amount of time with Swift.

Of course the biggest life changing event in 2014 for me was the birth of my first child – Rheuben. If you are a parent you will understand why this, as with many experiences, is both incredibly unique and one that connects you with what it means to be human.

2014 was a fantastic year on so many levels. 2015 is also looking to be a year of change. I will continue to improve Trunk Notes. This will be connected with being an evangelist for the personal wiki – a wonderful way to organise personal information. In the main though I’m going to be spending lots of my time architecting great mobile solutions through better project management, systems design and cross platform strategies.

As I said at the start of this post, I’m going to be blogging much more frequently. This post is being drafted on a Sunday morning with a sleeping baby curled up next to me. There are many such moments which I can use to keep this blog alive with content. Enjoy the rest of January everyone and hopefully I will be writing again soon!