Note taking and the power of the (semantic) web – Part II

NotesMappr’s semantic features have been enhanced to include automatic detection of associated images. That is, if on creation of a note [based on a Freebase query] NotesMappr detects that the note has an associated image it will inform the user and prompt to download and subsequently attach the image to the new note.

 

So, it is now possible to extend and enhance your own notes with both articles and images from Freebase. Subsequent semantic integration will include the automatic detection of related videos from YouTube and Twitter searches and display them in an appropriate fashion.

Posted in Android, Knowledge Management, Mind maps, Mobile, Note taking, NotesMappr, Semantic, Topic maps | Leave a comment

Note taking and the power of the (semantic) web

NotesMappr version 1.2 has just been released and is available on the Android Market. This version of NotesMappr is special… it is the first version of the app that is integrated with the semantic web.

 

If you take a look at the images in the slideshow above you will see an example of how NotesMappr’s semantic web integration works:

  1. First, a note about President Obama is created
  2. Subsequently, a web query is made (with the predefined – editable – search term “Barack Obama”) which returns a list of matching topics
  3. A topic is selected (in this case, “Presidency of Barack Obama”) and the appropriate article is returned
  4. After that, if required, the returned article is converted into a note which can subsequently be associated with the original “Barack Obama” note

That is, it is now possible to enhance your own notes with articles from Freebase, an open Creative Commons licensed repository of structured data of almost 22 million entities.

It really is that easy.

Now, imagine studying with this app at your disposal. Or researching. Or generally just compiling notes on whatever topic that interests you. Just think for a moment how useful this app would be. What are you waiting for? Get NotesMappr for your Android device, now. It’s free.

Posted in Android, Knowledge Management, Mind maps, Mobile, Note taking, NotesMappr, Semantic, Topic maps | Leave a comment

An Android app – a new beginning

It has been a very long time since my last proper blog post [March 29]. The reason being that for the last two months I have been thinking a lot about PolishedCode, NotesMappr (an advanced semantic note taking app), software development in general and Android development in particular.

Bokeh Madness. Photo by Rishabh Agarwal: http://www.flickr.com/photos/rishabh_destiny/4890358364/

Bokeh Madness. Photo by Rishabh Agarwal: http://www.flickr.com/photos/rishabh_destiny/4890358364/

All in all, I have come to several different (but related) conclusions. The first one, perhaps, the most important: I do want to continue developing both NotesMappr and Android apps (in general). I enjoy developing but I need to find a balance. Getting a mobile app to a decent publishable state is a time-consuming endeavour. In my case, I am doing the actual development of the app, the UI design and the (admittedly, very limited) marketing of the app (in my spare time)… “time-consuming” is an understatement.

I have also come to the realization that if I want to have this “balance” that I was referring to, it really is unsustainable to be doing all of those above functions by yourself in any kind of timely fashion. So, I have reached out and found a very talented designer (who is either mad or doesn’t realize what he is getting himself into – probably a bit of both) who is willing to be part of this project.

In addition, I have realized that unless you have an extreme capability for self-motivation, having another person to help you through those moments of doubt and burnout is absolutely essential to prevent a project of this nature from stalling.

Furthermore, the app has, what seems to be, a very loyal group of existing users and I would like to move it to the next logical phase to achieve validity in terms of being a Minimum Viable Product (MVP): a MVP is a product with the fewest number of features needed to achieve a specific objective, and users are willing to “pay” in some form of a scarce resource.

So, this project is moving forward again. I think it is safe to say that NotesMappr’s next (major) versions will bring a much more polished design (in terms of the app’s look-and-feel) and some exciting (semantic) features that will make it a much more useful (and even powerful) note taking app.

Posted in NotesMappr, Personal, Software | Leave a comment

Android – A developer’s perspective

The following is an article that I wrote over the 2010 Christmas period for JAXmag (the free PDF magazine from JAXenter) and was published in their January 2011 issue which focused on Google’s Android mobile OS.

When I think back on the last twelve to eighteen months of Android and everything surrounding Android I am just astonished at how far Google’s mobile OS and platform has come in what is a relatively short period of time.

When Android was launched in September 2008 (if my memory serves me correctly), I barely took any notice. I admit now that at the time I thought it was one of the Google engineers’ “20 percent time” projects and would, in all likelihood, not survive its first year. Obviously, we all know now that it was a mistake to underestimate Google’s intentions for their mobile platform.

Let the bokeh flow! Photo by Kenny Louie: http://www.flickr.com/people/kwl/

Let the bokeh flow! Photo by Kenny Louie: http://www.flickr.com/people/kwl/

However, even though I initially disregarded Android when it was launched by Google, one year later, in September or October of 2009, it became apparent, based on the number and quality of new devices that were being launched, that Android was going to take off big time and it required no real leap of faith to see that mobile computing (in all its possible forms) was going to outright dominate the field of software development for the foreseeable future. Mobile computing is going to be big… really, really BIG.

So, Android’s popularity has seen unprecedented growth over the last year. It has gone from a minor mobile platform hardly worth consideration, to either the second or third (depending on who you listen to) biggest Smartphone platform in terms of operating system share. For example, Gartner has claimed that Android has become the No. 2 worldwide mobile OS in 2010 and will be fighting for the top spot by no later than 2012 or 2013.

Furthermore, the global mobile market will continue to see substantial growth figures for the foreseeable future and I expect that there will be room for several players. This is not a one-horse race. Apple’s iOS, Google’s Android, RIM’s new QNX OS (to be used in the forthcoming PlayBook) and even Microsoft’s Windows Phone 7 OS will all have a place at the table. And let’s not forget Nokia. A lot of developers I speak to seem to have forgotten all about the mobile giant because of the tech-press’ almost exclusive focus on the looming, epic battle for mobile dominance between Apple and Google. Even so, Nokia is a force to be reckoned with and, in my opinion, their MeeGo project has a lot of technical merit. Let’s see if they can come up with the required (consumer and developer) marketing strategy to ensure their platform’s relevance.

Perhaps, out of all of the current mobile platforms, Microsoft’s Windows Phone OS could be the one that eventually falls by the wayside. It could be a case of “too little, too late” for Microsoft. However, if anything, tech history has shown that it is foolish to count Microsoft out too early in the game. They obviously have deep enough pockets to continue to invest in their platform. I also believe that for the first time Microsoft is really committed to their mobile platform. They have come to realize that it is a strategically vital part of their product portfolio in its own right and not just a simple extension of their desktop OS.

Since I wrote this article in December, Nokia and Microsoft, in February, announced a long term strategic alliance. For all intents and purposes, said strategic alliance ties together Microsoft’s Windows Phone OS and Nokia’s mobile hardware and distribution platform with far-reaching implications for both MeeGo and Symbian in particular and the mobile industry in general.

However, for a technology to survive, especially a consumer-facing technology, it has to be completely aligned with (and, to a certain degree, even drive) consumer trends. Currently, the hot trend (with Apple’s iPad leading the way) is the tablet paradigm. Google’s response to the tablet trend was the development of Android 3.0 (codename Honeycomb), which in their own words “is a new version of the Android platform that is designed from the ground up for devices with larger screen sizes, particularly tablets” making for very interesting times ahead of us with regards to the competition between Apple and Android in the tablet space.

Personally, I am very excited about Android 3.0. Just like the iPad allowed developers to really go to town in terms of exciting new apps which really take advantage of the bigger screen, the same holds true for Android 3.0 tablets. Obviously, Honeycomb adds several new features that specifically contribute to an enhanced user experience, including (but not limited to):

  • Fragments – a new framework component that will enable both a richer and more interactive UI.
  • Drag and drop functionality.
  • Enhanced animation framework.
  • Extended UI framework and new “holographic” UI theme.
  • Hardware accelerated 2D graphics and a new 3D graphics engine.
  • Support for multi-core processor architectures.

Furthermore, additional functionality includes a new digital rights management (DRM) framework which will open the door to companies like Netflix adopting Android as a content delivery platform.

So, with all of the current innovation taking place within the mobile space by so many different companies, as a mobile developer you are faced with several competing platforms and you have a finite amount of time to learn and (truly) master one. Which one do you pick? Like always, it depends on several factors and I’ll list the ones that I considered when deciding which platform to start developing for:

  • Current development-related skill-set and experience.
  • The platform’s commercial viability in combination with your financial motives.

Let’s take a look at the above factors, starting with the first one: obviously, each platform has its own specific tool-chain comprised of programming language(s), development environments, and so forth that you will need to become familiar with before you can commence developing for said platform.

For example, when it comes to iOS-development you are looking at Xcode and Objective-C for your development environment and programming language, respectively. If you have already developed for Mac OS X it probably will not be a major hurdle to start developing iOS apps. Likewise, with Android it’s all about Eclipse (and now also IntelliJ IDEA with version 10 of the IDE) and Java. So, if you have any kind of experience with Java and the Eclipse IDE you might be more inclined to start developing Android apps. And finally, for Windows Phone 7 apps, your weapons of choice are going to be Microsoft’s Visual Studio and C# (and Silverlight). So, depending on your current skill-set you might want to choose to develop for a mobile platform that does not require you to learn a completely new set of tools, languages and development environments.

However, for a lot of (independent) developers, their attention will have been drawn to mobile development by the press’ tendency to focus on the financial success stories of some of the (primarily, Apple iOS) developers. Inevitably, when you read stories of developers that have made a substantial sum of money with what, in hindsight, seem to be relatively simple apps, you think to yourself “I could have done that.” Clearly, as a developer, there is definite value in adding mobile development skills to your tool belt. The trend is obvious and irreversible; that is, more and more people (and eventually, the vast majority) will want to both access content and interact with web-based services from their mobile devices. Companies will need to ensure that they can take advantage of this phenomenon and hence we will see a tangible increase in the demand for developers with mobile development skills and experience.

Nevertheless, I personally believe that you are doing yourself a disservice if you exclusively focus on the potential financial rewards of mobile development. Financial motives will, without doubt, be a factor, but I think it makes more sense to have a combination of goals that you will want to pursue when deciding on which platform to develop for. Let’s be honest: mobile development is just plain cool. I haven’t been this excited about a development-related technology since Ruby on Rails was released back in 2005. The reason for this excitement being that, from a development point of view, the possibilities are practically endless. Useful mobile apps really have the potential to become a big part of people’s lives. So much so that in less than five years time we will not be able to imagine how we managed without our mobile phones and the accompanying applications that we have installed on them.

So, once you have decided on a platform, you need to actually start developing. My choice of platform was Android. I was already familiar with Java development and getting the (Eclipse-based) development environment up and running was very straight-forward. Furthermore, I could develop for Android with any host OS. That is, in order to develop for iOS you need to have a Mac box at your disposal. Likewise with Windows Phone 7 OS, you are forced to do your development on a Windows box. Not so with Android because of its Java underpinnings. My preferred OS is Ubuntu and Android development on Ubuntu is an absolute joy.

Android development

Anyway, with regards to actual Android development, what has my experience been so far? How did I go about learning the platform and where are the potential pain points? Your first port of call has to be the Android Developers website. Before you do anything else, read (and understand) the Application Fundamentals section in the Dev Guide. If you take any piece of advice away from this article, it would have to be this. Once you have a bird’s eye overview and understanding of the Android software stack you can move on to installing the Android SDK in conjunction with Eclipse. Again, your friend here is the Dev Guide. All in all, Google’s Android developer documentation and accompanying blog are an excellent source of development-related information.

Once you have Eclipse (or IntelliJ IDEA 10) and the Android SDK installed, the next step is to start looking at some of the samples that are part of the SDK. Import them into your IDE, tweak, compile and run them; they will provide you with a lot of insight into various aspects of the OS and will potentially give you ideas for your own apps. What’s next? I think every developer has their own version of the “Hello World” program; a program that is the first one that you implement with each new programming language and/or platform that you are learning. In this case, the problem space of your Hello World program has to be small enough to allow you to only focus on Android development while still including sufficient elements to make for both an interesting and valid learning experience.

Once you have finalized your Hello World app it is time to move on to your first serious development project. In my case, the first app of any real substance is NotesMappr, a note taking app with semantic features. For all intents and purposes, NotesMappr is a typical (non-game) Android app in the sense that it is comprised of various activities that incorporate several (relatively complicated) widgets like the AutoCompleteTextView widget, the ListView widget and the ExpandableListView widget. I recommend that you read the development documentation for these widgets carefully and examine the accompanying examples. Furthermore, ensure that you have a proper understanding of the BaseAdapter class and some of its subclasses like ArrayAdapter, CursorAdapter and SimpleCursorAdapter all of which are purposed towards binding a specific type of data and display.

An additional concept to master with regards to Android development is data storage, specifically content providers. Content providers are the only way to share data across applications (for security reasons, I expect). This includes Google’s own Android applications like Contacts and subsequently, access to the phone owner’s list of contacts is only possible by means of (existing) content providers. Furthermore, implementing a content provider will allow you to integrate your application with the rest of the OS, specifically with Search and the Live Folders feature (which is a real-time view of a content provider). Getting to grips with Android’s content providers (and the accompanying concept of content resolvers) and the SQLite-based backing store API is essential, in this respect.

Next item on your list of Android development topics to master is (multi) threading. Android’s UI toolkit is not thread-safe. What this means is that you should not manipulate the UI from any thread but the (main) UI thread. I can confirm that failing to do so will result in some spectacular stack traces. But it is vital that you keep the UI thread unblocked otherwise you risk the infamous Application Not Responding (ANR) dialog. The Android OS will display the ANR dialog if an application does not respond to an input event within five seconds. What does all this mean to you, the developer? In simple terms, if you have a long-running operation involving, for example, network access or computationally expensive calculations, simply spawn a worker thread in which said operations should be performed and periodically communicate back to the main UI thread by means of a Handler. For reference sake, a Handler object allows you to post results from a (worker) thread back to the UI thread to update the views on the UI thread as needed; this is a standard pattern of multi-threaded programming on Android.

Finally, developing mobile applications poses a series of User eXperience (UX) challenges. Why? First of all, the small screen and secondly, specifically with regards to mobile phones (perhaps not so much so with tablets), the potentially less than ideal situations in which mobile apps can be used; such as, on a busy bus or while standing in a queue in the super-market or bank. These factors absolutely dictate the design of the application from a UX point-of-view. Consequently, for many types of mobile apps, it makes sense to adopt a so-called hub-and-spoke interface: a UI that contains several discrete tasks that are all reachable from one central screen (the hub); however, the individual screens of the app (the spokes) are not directly navigable from one to another. This arrangement works very well for mobile apps, since it narrows the user’s focus to a small set of choices at any given time, preventing (user) errors due to a simpler and (hopefully) more intuitive interface. Obviously, it depends on the kind of app that you are developing as, for example, the typical calculator app will, in all likelihood, not require a hub-and-spoke UI. Mobile apps require a different mindset when it comes to designing effective and user-friendly interfaces for which there is no straightforward mapping of design patterns from conventional web and desktop applications to mobile apps.

In summary, with regards to actual Android development, the key is to ensure that you have a proper understanding of the system’s principal components and how they relate to one another. Mobile development in general and Android in particular, require a different way of thinking on behalf of the developer, specifically, with regards to UX and the accompanying user interface. Nevertheless, due to Android’s use of the Java language and its reliance on the Java ecosystem, those developers with a Java background will definitely not find themselves out of their depth.

So, there you have it. The tidal wave of mobile computing is upon us. The pace of innovation taking place within the mobile space is absolutely phenomenal. And make no mistake… although we have touched upon Android version Three Point Zero in this article, what we have seen up until now within the mobile industry can be considered to be no more than a mere dress rehearsal. The actual play is about to start and Android is poised to be the star performer.

Posted in Android, Mobile | 4 Comments

Why NotesMappr? A different kind of note taking app

People sometimes ask me what problem am I trying to solve with NotesMappr. It’s a valid question and one I would like to try to answer in this blog post.

In a nutshell… with NotesMappr I am trying to solve the problem of “managing your personal context.” Your personal context includes (but is obviously not limited to) your friends, your family, your spouse, your job or your own business, your hobbies (and the accompanying personal and professional projects), and so on. Being able to effectively organize this context of yours in a cohesive and uniform manner so that you can be on top of things in your life is what NotesMappr is about.

It is a lofty goal. And some would say that it is an unrealistic goal for a ‘note taking’ app. It isn’t. NotesMappr’s underlying topic map-based data structure enables you to organize and structure all of those entities (of relevance) that make up your personal context in a coherent manner.

Wise words can be fuzzy. Photo by Kevin Dooley: http://www.flickr.com/photos/pagedooley/

Wise words can be fuzzy. Photo by Kevin Dooley: http://www.flickr.com/photos/pagedooley/

What’s more, NotesMappr is far from finished with regards to what kind of data you can attach to each of those entities. At the moment, NotesMappr is still limited to images in terms of attachments. However, future versions will include the ability for you to attach videos, GoogleMap coordinates, Google (or Bing) searches, Twitter searches, Freebase queries, and so forth to your notes.

I would like for you to be a part of NotesMappr. Your involvement will make NotesMappr a better app and as a consequence NotesMappr will be a better tool to help you organize your projects, your ideas, and may I be so bold as to say, your life. Ultimately, that is NotesMappr’s goal. Helping you to improve the quality of your life.

Posted in Knowledge Management, Mind maps, NotesMappr, Semantic, Topic maps | Leave a comment

NotesMappr version 1.1.1 – minor user interface improvements

NotesMappr version 1.1.1 has been released on the Android Market.This version includes minor enhancements to the app’s user interface, the most important one being the inclusion of an application-wide title bar with buttons providing you with quick access to the app’s main screen and search functionality. In addition, the main screen’s button icons have been slightly improved with regards to previous versions. Admittedly, the changes in this version are small. However, said changes do improve the app in terms of its overall user experience.

Furthermore, with version 1.1.1 the app is finally beginning to stabilize with regards to its user interface (UI). There is still a vast amount of functionality that will be added to the app over the course of the next couple of months but I don’t expect that the app’s UI will change dramatically with regards to this version. Saying that, there are still several minor UI enhancements that will be rolled-out in conjunction with the next feature-focused releases of NotesMappr.

Finally, take a look at this version’s interface and judge for yourself :-) Like always… feedback is more than welcome.

 

Posted in Android, Design, NotesMappr, User Interface, User eXperience | Leave a comment

NotesMappr version 1.1 released on the Android Market

NotesMappr version 1.1 is available on the Android Market. With this version I have primarily focused on improving the app’s user interface both in terms of its overall visual presentation and its consistency. Furthermore, the “big feature” that was included in this version is full-text search making it possible to search within your actual notes as opposed to previous versions that only allowed searching within the titles of your notes.

NotesMappr’s main screen UI

NotesMappr version 1.1 main screen

NotesMappr version 1.1 main screen

NotesMappr’s Association creation UI

NotesMappr - Association creation screen

NotesMappr - Association creation screen

Subsequent 1.1 releases (e.g., 1.1.1, 1.1.2, etcetera) will focus on polishing and improving the app’s user interface even more. Furthermore, version 1.2 will probably see the inclusion of (as mentioned in a previous blog post) at least one of the following features: cloud-based data backup, Live folders and tagging (initially slated for version 1.1). As always, please let me know what additional features you would like to see included in future versions of NotesMappr.

Obviously, the app has been extensively tested before I released it but it is always possible that a bug sneaks into a release. If you find any bugs just let me know by sending an email to support at polishedcode dot com.

Finally, I hope you enjoy the new version of NotesMappr.

Posted in Android, Mobile, Note taking, NotesMappr, Software, User Interface, User eXperience | Leave a comment

NotesMappr version 1.0.3 – Maintenance release

NotesMappr 1.0.3 has been released and is available on the Android Market. Version 1.0.3 fixes a bug related to the inability to scroll long notes (under certain circumstances). What’s more, the new version includes a couple of user interface enhancements including appropriate tab icons and a more visually appealing notification user interface (originally planned for version 1.1).

As I have mentioned before, version 1.1 will focus on the ability to tag notes (for both organizational and information discovery purposes). Obviously, I am already thinking about what features will be included in version 1.2. As things stand now, I will probably focus on Android’s Live folders feature and cloud-based data backup (necessary, if for example, you upgrade to a new device, so that you can restore NotesMappr’s data onto the new device).

Update – Tuesday, March 08: NotesMappr version 1.1 will also include full-text search functionality.

Like always, feedback with regards to NotesMappr’s current and (planned) future state is more than welcome.

Posted in NotesMappr, Software bug, User Interface | Leave a comment

Started development of NotesMappr version 1.1

Development of NotesMappr version 1.1 has started. The planned release date for version 1.1 is Tuesday, March 15. The following issues and feature will be addressed and added, respectively:

  • Implement a more visually appealing notification user interface
  • Add appropriate icons for lists and tabs
  • Make incremental improvements to the main screen’s user interface
  • Implement tagging functionality

All in all, version 1.1 will focus on improving the user interface of the application in conjunction with one major addition in terms of functionality: tagging of notes. Although I alluded to implementing social network integration (specifically, with Twitter and Facebook) and additional note attachment types (for example, video) with regards to version 1.1, I think it makes sense to ensure that the application’s overall user experience is improved, first. That is, user interface enhancements in tandem with tagging for the classification and categorization of notes seems like the most logical next step before I turn my attention to, for example, social network integration.

Anyway, let me know what you think with regards to the planned set of improvements for NotesMappr.

Posted in Android, Design, Knowledge Management, NotesMappr | Leave a comment

NotesMappr launched on the Android Market

NotesMappr has been launched! Click here to check it out on the Android Market. Furthermore, the first bug release addressing a rather annoying user interface bug is already available.

After two days of being published, the application has been downloaded 45 times. However, the number of active installs (number of installed apps – the number of times the app has been uninstalled) is currently at 66%. I think it is highly likely that the vast majority of the uninstalls are related to two factors:

  • The above-mentioned bug that effectively made it impossible to create new notes; that is, the soft keyboard was ‘sitting’ on top of the text field in the Create Note screen (the fix ensures that the content of the window is automatically panned so that the current focus is never obscured by the keyboard and users can always see what they are typing).
  • Downloading the application with a different set of expectations than what the app can actually deliver. NotesMappr’s specific purpose is the semantic organization of notes. If you have no need or desire to organize your notes in a contextual manner, then it is highly unlikely that NotesMappr will be appropriate for your needs. That is, if all you want in terms of organizing your notes is a simple list (or perhaps folders), then NotesMappr’s semantic features will introduce a level of unwanted complexity.

All in all, I am satisfied with the app’s launch. It gives me a tremendous amount of satisfaction to think that other people can derive utility from NotesMappr.

Down low. Photo by Kenny Louie: http://www.flickr.com/people/kwl/

Down low. Photo by Kenny Louie: http://www.flickr.com/people/kwl/

Moreover, with regards to NotesMappr’s release strategy, I was initially going to make big point releases with several major features in each release. However, I think it makes more sense to focus on only one major feature per release which will allow me to reduce the time between releases. For example, instead of adding Twitter and Facebook integration in conjunction with new attachment types for release in, for example, three months time, I will add Twitter integration and release the application as version 1.1 in two weeks time. Facebook integration will be in version 1.2 which will be released two weeks afterwards, etcetera, etcetera. Obviously, as part of each point release, I will make the necessary bug fixes and user interface improvements.

Finally, I really do hope that you enjoy using NotesMappr as much as I am enjoying developing it. Please keep in mind that the application is far from what I originally envisaged it to be and your suggestions, ideas and thoughts with regards to NotesMappr’s current and future state are more than welcome.

Posted in Android, Mind maps, Mobile, Note taking, NotesMappr | Leave a comment