6063 comments
2357 subscribers
6182 on Twitter
Subscribe! Feed reader E-mail

On this page:

Imagining an index of sketchnotes

With sketchnotes gaining in popularity, I’m often curious about how other people drew a talk. TED talks are popular for sketchnoting practice, and sketchnoters are beginning to bump into each other at conferences as well.

There are many avenues to share or discover sketchnotes, such as The Sketchnote Handbook Flickr Pool and the wonderful graphic recordings at Ogilvy Notes. Sketchnote Army is a blog that features lots of sketchnotes, and Twitter searches turn up even more. But there isn’t really something that’ll help you bump into other sketchnotes of the same talk, or even sketchnotes of the same conference.

Are we at the point yet where multiple people might be sketchnoting something? For popular TED talks, yes, and many conferences might have sketchnoters in the crowd. I think it would be interesting to make it easier for people to find each other and compare notes.

So I registered sketchnoteindex.com and created a quick spreadsheet to get a feel for the data that would be good to capture and how we might want to organize it. (Prototype with the lowest-effort thing first!) In addition to indexing topics, I’d like to eventually build an image and visual metaphor index too, so we can see how different people have represented time. Text search would rock someday. In the meantime, I put together a quick text prototype as an excuse to learn more about the Ember.js framework, although I’m thiiiis close to chucking it all and using Emacs or a Ruby script to generate static HTML.

Some things to consider:

  • We want to avoid spam and build good data for navigation. I can start off manually indexing sketchnotes, and then open it up for submission (possibly with an assistant).
  • Many sketchnotes don’t indicate their licensing, so technically, they’d be all rights reserved. We can link to things, and include thumbnails if we have permission.
  • I can coordinate with Sketchnote Army (Mike / Binaebi) for submissions, and I can set up notifications for other sources.
  • Revenue model: Advertising? Flesh this out into a system where conferences can pay a small fee to have branding on their page? Do this as a volunteer because I want to learn more about sketchnotes along the way? Hmm…

Right now, Ember.js pulls the data off the CSV I exported from my Google Docs spreadsheet. That way, I don’t have to create an admin interface or anything else. I’m not actually using Ember.js’ features (aside from a little templating and a few models), so I may swap it for something else.

So this was about eight hours including data entry (300+ sketchnotes; I did it myself instead of delegating because I wanted to sketch the idea out quickly), going through the Ember.js tutorials, and fighting with Javascript.

Short URL: http://sachachua.com/blog/p/24420

Planning my code/development learning

One of the best things about programming is that as you learn more, the possibilities increase dramatically. Each new thing you learn can be combined with so many other things for even more awesomeness. I’m getting ready for my idea-of-the-month experiment, and I’m thinking about the kinds of building blocks I’d like to learn more about and use.

Android development – I can build small apps for myself
Data visualization library like D3 – web-based graphs
Some kind of Javascript/CSS/Rails front-end toolkit that makes it easier for me to prototype rich user interfaces
Evernote API, so that I can improve my workflow
AutoHotkey – finely-tuned timesavers
Rails 4 – prototyping
WordPress backend – building things
WordPress theming – design
Twitter API, for analysis
Meetup API, for analysis
Google Contacts, Google Calendar, IMAP headers – for analysis
OCR, speech recognition – so I can convert, even at 80% accuracy
Arduino, sensors, and motors – for interfacing with the physical world
Emacs LISP – for personal productivity
PhoneGap – cross-platform mobile apps?
Dropbox API – tools, analysis
Twilio or some other text API – communication

For March, I’d love to dig into Emacs, D3, and maybe Evernote. That way, I can prepare for the Emacs conference, visualize my Quantified Self stuff, and dig into my new brain backup system. :)

Short URL: http://sachachua.com/blog/p/24401

Web app idea: Stamp mix calculator

2013-01-03 11.05.45

I’ve resolved to send more paper letters. I also have an odd mix of stamps that I want to use up: some with Canada Post’s permanent postage, and various denominations throughout the years. There are different rates for domestic, US, and international letter mail. Naturally, I want to optimize my stamp use so that I use the minimum number of stamps and avoid exceeding the required stamp rate.

Some examples for the $1.80 international rate:

  • 2 x $0.89 + 1 x $0.02
  • 2 x permanent postage (currently valued at $0.61 each) + 3 x $0.02 + 1 x $0.52

And lo, someone has actually built a stamp optimizer. Also, only one in Google Search? What do people call these things?

Next question: Has someone built a stamp optimizer that lets you keep track of your stamp inventory, maybe through bookmarkable parameters? It would be neat to be able to not have to enter in your particular mix of stamps each time. That might be overengineering this, though.

Who knows, I may sit down one day and code this just for fun. It totally fits the profile of the programming competitions we used to do in high school and university.

Short URL: http://sachachua.com/blog/p/24340

Tech report: Living on the T-Mobile 2G network

I was going to be in the US for 14 days, so I picked up a free prepaid SIM card for my phone in order to avoid massive roaming fees. My Samsung Galaxy S3’s compatible with the T-Mobile network, so I opted for the $2 Pay by the Day plan that included unlimited talk, text, and 2G web. A $30 load covered my 14-day trip with a dollar to spare. My parents were going to be there longer, so the $50 unlimited talk/text/web (100MB at 4G speed) was a better fit for them. 

After I put in the SIM card, I confirmed that phone and text worked. The Internet connection wasn’t working, though. The call center agent asked me to make sure airplane mode was off (yup) and packet data was enabled (yup), and she tried resetting my connection to the network. Still no luck, though. Some searching turned up the fact that the 2G network is GSM. The following setting made it possible for me to connect to the Internet using my phone:

Settings > Wireless and networks > More Settings > Mobile networks > Network mode > GSM only

2G was fine for quick map lookups and the occasional web search. I didn’t need to stream video or anything like that, so I didn’t miss the data speeds.

If you’re going to be on a short US trip and you don’t need a lot of data, it might be worth checking this out.

Short URL: http://sachachua.com/blog/p/23734

Having fun with code

I’ve been learning more about Android development so that I can build apps for my smartphone and tablet. I’m starting to get the hang of things, piecing code together from examples and StackOverflow answers. I began with figuring out how to populate a Fragment with some text and ListView using CursorLoader and a ContentProvider, drawing data from my web application using JSON. Now I’m working on the record view, and after that, authentication and synchronization.

There’s so much to learn, but it’s great feeling the pieces click together. I like this.

Is this flow unique to programming, or can I learn enough to translate this to other fields? I like pulling ideas and concepts together, tweaking and combining to make something I want. What would it look like to be able to do this with writing, while avoiding plagiarism? What would it look like to be able to do that with business, orchestrating people?

There are several kinds of businesses. On one end of the scale, there are individual businesses where people spend most of their time doing work and some time doing paperwork and business development. On the other end of the scale, people move away from doing the work themselves to coordinating other people. It’s like the way that in large companies, some people focus on being individual contributors and some people manage teams. Where do I want to be on this spectrum? If I want to scale up and outwards, will I necessarily have to give up the fun of hacking, can I bridge the gap and find the joy in hacking other things, or can I keep some of this and find a balance?

People have figured this out before. I think I’ll be able to do so too. =)

Short URL: http://sachachua.com/blog/p/23710

How to build MobileOrgNG for Android

MobileOrgNG is kvj’s fork of matburt’s MobileOrg for Android. It has a better layout for large devices and a useful outline view, but doesn’t have some of the other features in the main branch. Here’s how you can build it in Eclipse.

In order to be able to get all the libraries you’ll need, install the Subversive SVN plugin for Eclipse.

  1. In Eclipse, click Help – Install New Software.
  2. Click on the dropdown for Work with and choose the update site for your Eclipse version (ex: Juno).
  3. When the packages load, type in Subversive to filter the list.
  4. Choose Subversive SVN Team Provider. You can choose other plugins as well.
  5. Click Next and proceed through the installation process.

Now you can check out the MobileOrgNG source code and other modules. MobileOrgNG is set up as an Eclipse project, so importing it is easier than importing the original MobileOrg. Here’s how to get MobileOrgNG:

  1. Copy the Git repository URI (ex: git://github.com/kvj/mobileorg-android.git)
  2. In Eclipse, click File – Import – Git – Projects from Git.
  3. Choose URI.
  4. The URI may automatically be detected from the clipboard. If it isn’t, paste it in.
  5. Click Next.
  6. Click Next again.
  7. Click Next.
  8. You should now be at the dialog called Select a wizard to use for importing projects. Choose Import existing projects and click Next.
  9. It should have detected the mobile-org project. Click Finish.

In addition to MobileOrgNG, you will also need the android-actionbar and android-file-dialog libraries. Here’s how to get android-actionbar:

  1. Go to https://github.com/kvj/android-actionbar and copy the Git repository URL (ex: git://github.com/kvj/android-actionbar.git).
  2. In Eclipse, click File – Import – Git – Projects from Git.
  3. Choose URI.
  4. The URI may automatically be detected from the clipboard. If it isn’t, paste it in.
  5. Click Next.
  6. Click Next again.
  7. In the Local destination dialog, change Initial branch to honeycomb-support. Click Next.
  8. You should now be at the dialog called Select a wizard to use for importing projects. Click Cancel.
  9. Click File – Import – Android – Existing Android Code Into Workspace.
  10. Click Browse and choose the android-actionbar directory in your workspace. You can deselect the actionbar example if you wish.
  11. Click Finish.

Here’s how to get android-file-dialog.

  1. Go to http://code.google.com/p/android-file-dialog/source/checkout and copy the SVN URI (ex: http://android-file-dialog.googlecode.com/svn/trunk/).
  2. In Eclipse, click on File – Import – SVN – Project from SVN.
  3. Paste in the URI.
  4. Click Next.
  5. Eclipse should prompt you to normalize the URL. Click Yes.
  6. Click Browse. Choose trunk and click OK.
  7. Click Finish.
  8. Choose Find projects in the children of the selected resource. Click Finish.
  9. Make sure that Check out as a projects into workspace is selected. Click Finish.

Confirm that the libraries are detected.

  1. Right-click on the mobileorg-android project and choose Properties.
  2. Click Android and confirm that both libraries are detected. If not, you may need to remove and re-add them.

The Dropbox API key isn’t part of the source code, so you’ll need to apply for your own at https://www.dropbox.com/developers/start . After you get the API key, add it to your project:

  1. Create a new Android XML Values file. I called mine secrets.xml.
  2. Right-click on the file and choose Team – Ignore.
  3. Add a string with the key dropbox_consumer_key and the value from the Dropbox webpage.
  4. Add another string with the key dropbox_consumer_secret and the value from the Dropbox webpage.

MobileOrgNG should now compile without errors.

Short URL: http://sachachua.com/blog/p/23633

Building MobileOrg for Android

If you want to use your Android device to work with your Org-mode files, there’s MobileOrg and there’s MobileOrg NG. MobileOrg seems to have more recent activity and more contributors, but NG has a more tablet-optimized layout and better support for navigating large files, so it would be good to apply some of the ideas from NG to the main MobileOrg project. Might be a useful way for me to learn more about mobile development.

Here’s how to build MobileOrg (the matburt version).

  1. Copy the URI to the Git repository (ex: git://github.com/matburt/mobileorg-android.git).
  2. In Eclipse, click on File – Import – Projects from Git – URI. This may autodetect the URI. If not, paste in the URI. Click Next.
  3. You should now see a list of branches. You can leave them all selected. Click Next.
  4. Check the box for Clone Submodules. This will make sure that the project’s dependencies are also checked out. Click Next.
  5. When you see the dialog called Select a wizard to use for importing projects, click on Cancel.

Because the .project file hasn’t been set up, you’ll need to import the project using a different wizard. However, there’s an Eclipse bug that can make this a bit of a hassle, so this is what you should do to get the projects set up in your system.

  1. Close Eclipse.
  2. Move the mobileorg-android subdirectory from your Eclipse workspace directory to a different directory that is not in your workspace.
  3. Start Eclipse again.
  4. Click on File – Import – Existing Android Code Into Workspace. Click Browse and choose the mobileorg-android folder.
  5. Click on Deselect All.Reselect the following:
    • com.matburt.mobileorg.Gui.OutlineActivity
    • library
    • com.twofortyfouram.locale.MarketActivity
  6. Click on Finish.

Now you should have a bunch of projects in your system. You may need to adjust the libraries and build paths.

  1. Right-click on the com.matburt.mobileorg.Gui.OutlineActivity project and choose Properties.
  2. Click on Android and confirm that both libraries are detected. If not, you may need to remove and re-add them.
  3. Wait for the libraries to be built. If you notice that the compiled JARs don’t have classes, doublecheck that the src folder has loaded the sources. Right-click on the src folder and choose Refresh in order to get the sources recognized by Eclipse.

Re-detect the Git connection by doing the following:

  1. Right-click on the com.matburt.mobileorg.Gui.OutlineActivity project and choose Team – Share Project.
  2. Choose Git.
  3. Check the Use or create repository in parent folder of project.
  4. Check the .git directory you’re using.
  5. Click on Finish.

I also had to remove some code from AndroidManifest.xml because you’re apparently not supposed to have more than one action in an intent-filter:

diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 01c4f1e..9fc3eb1 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -64,14 +64,11 @@
             android:name=".Gui.OutlineActivity"
             android:label="MobileOrg"
             android:theme="@style/Theme.MobileOrgActionbar" >
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
-
                 <category android:name="android.intent.category.LAUNCHER" />
-
-                <action android:name="com.matburt.mobileorg.Synchronizer.action.SYNC_UPDATE" />
             </intent-filter>
         </activity>
         <activity
             android:name=".Gui.NodeViewActivity"
             android:label="Org View"

(StackOverflow)

Hope that helps!

Short URL: http://sachachua.com/blog/p/23631

Get the highlights as a PDF!

Stories from my Twenties: Highlights from a Decade of Blogging