The Search For A Digital Notebook (Part II – Note Syncing)

Posted on July 21, 2013

In the first part of the this post (which can be found here), I chronicled my experience with various forms of digital note taking. If you actually made it to the bottom of that post, you may remember that I (currently) settled on a Samsung Galaxy Note 10.1 Tablet for all of my note taking needs. As promised, this post will detail how I have customized it to fit my needs as a college student.

First, I needed to find a note taking app worth using. As mentioned before, the bundled S-Note is pretty good, and the included equation and shape matching is pretty great (I used to use the shape matching to draw perfect XY coordinate planes all the time in a calculus II class). But it was missing one main feature, which was a deal breaker for me. I wanted the ability to lasso content and reposition/resize it. This is a fairly common feature for tablet apps so I was a little shocked that it was missing in S-Note. I did find a workable (but painful) workaround in which you could screen cap, crop, and then insert the drawing back into the note as an image for resizing, but that gets old fast. So lacking this feature, I wandered into the dark dark forest that is the Android App Store (which is another thing I hate about Android in case you were wondering – can you say “fragmentation”?).

 

lecturenotes

I read a lot of reviews for different apps, but ended up settling with LectureNotes. My first experience with LectureNotes was pretty rough. I’m big on first impressions – so if the app isn’t visually appealing or immediately user friendly, it’s already starting out in the negative as far as I’m concerned. While LectureNotes certainty isn’t the worst example of the two above conditions, it definitely isn’t winning any awards there either. It’s interface is very plain, and visually it’s pretty basic. It can easily be seen that there was not a lot of expense or effort taken to make it a beautiful user experience. However, with that being said, LectureNotes makes up for its aforementioned unattractiveness with customizability, tons of features, and the best of all: a responsive developer (more on that later). The default pen setting looks awful in LectureNotes (especially if you are coming from S-Note) – it is way to thin. A quick adjustment of the pen settings and your notes will start looking great again. The sheer customizability of this app is just awesome. Just look at the settings menu. You can tweak everything from the toolbar contents and size to the behaviors of tools after and during they are used. It’s really a great app. One of the best standout features is layers (think Photoshop, but with notes). This is useful, but also extremely fun. For example, I aways have two layers in my notebooks for my classes. One for the actual notes, and one for doodling. That way I can take serious notes all day long. But when I’m feeling particularly inattentive, I can just switch on the doodle layer and draw a great caricature of my professor fighting a dragon right next to that bulleted list about Big O notation. Need only the notes again? Just toggle the doodle layer off and you’re golden. (of course this is great for other things like PDF annotating too, but that’s much less fun). Even with layers, the best feature of LectureNotes is hands down that wonderful little lasso tool. This lets you draw a circle around any element on the screen and duplicate, scale, or move it anywhere on the page. Finally.

The biggest drawback about LectureNotes is it’s lack of export features. You can export notebooks as PDF’s from the app, but that just takes so much work. What’s the point of having a digital notebook if we don’t make it work for us a little right? I emailed the developer asking if a syncing feature was something that he was thinking about adding soon and he replied within a few days (how awesome is that, seriously) with the following message.

Dear Thomas,
many thanks for your email, I am glad to hear that you like the app.
LectureNotes does not directly sync with cloud services, there are too many
cloud services around. However, you can use apps such as FolderSync to sync
the LectureNotes’ app directory with your favorite cloud service (or place
the app directory on a place on your SD card that gets already synced).

Best regards,
Markus

I had not heard of FolderSync yet so I checked it out. Turns out, it’s a handy little app that lets you sync any folder on your android tablet with your favorite cloud service (in my case, Dropbox). This got brain juices flowing, and I came up with an idea. FolderSync is free for the first folder that you sync (which is all I needed in this case), so I went ahead and grabbed that app and set it up to sync my LectureNotes app directory with Dropbox. It works really well. LectureNotes auto saves, so while you’re taking notes FolderSync is actively sending the new notes to dropbox and keeping everything in sync remotely. Now this is all well and good, if you feel like wading through tons of system and metadata files every time you want to read your notes (Spoiler: I didn’t). Now bear with me here, this is where this gets pretty hackish…

The great part about Dropbox is that it keeps local versions of all the files you have synced. So it was pretty simple for me to write a quick python script that routinely scrapes the synced lecture notes directory, pulls out the actual notes, and sends them to where I want on my computer. Below is the code that I wrote to take the notes from my dropbox folder, and stick them into the appropriate locations in my school directory. It’s pretty basic python, so I won’t explain it unless anyone asks.

This works great. Basically the flow is as follows. My notes from the Galaxy Note are actively synced to my Dropbox account as I take them. When I open my computer the files are automatically downloaded via the Dropbox desktop app. Then all I have to do is run the program below, and the actual notes are copied into the specific directories where I want them. And then my school directory with the new notes  is seamlessly synced across all my devices (but that’s another story…)

Essentially with this setup, all you ever have to do is run the below program when you want the updated notes on your computer. Now that’s so much easier than going through all the effort of going to look for your backpack and then actually taking the tablet out right and reading them on that right? Right.

The code:

def buildSourcePaths():

	COPath = "/Users/knickman/Dropbox/Class Notes/Lecture Notes Data/Computer Organization"
	OSPath = "/Users/knickman/Dropbox/Class Notes/Lecture Notes Data/Operating Sytems/Operating Systems (Class)"
	TOCPSPath = "/Users/knickman/Dropbox/Class Notes/Lecture Notes Data/Theory of Computer Science/Class Notes"
	EFPath = "/Users/knickman/Dropbox/Class Notes/Lecture Notes Data/Expiremental Film"

	pathList = [COPath, OSPath, TOCPSPath, EFPath]
	return pathList

def buildDestPaths():

	COLocalPath = "/Users/knickman/Documents/School/College/Franklin & Marshall/Junior/Semester Two/Classes/Computer Organization/Notes"
	EFLocalPath = "/Users/knickman/Documents/School/College/Franklin & Marshall/Junior/Semester Two/Classes/Experimental Film/Notes"
	OSLocalPath = "/Users/knickman/Documents/School/College/Franklin & Marshall/Junior/Semester Two/Classes/Operating Systems/Notes"
	TOCPSLocalPath = "/Users/knickman/Documents/School/College/Franklin & Marshall/Junior/Semester Two/Classes/Theory of Computer Science/Notes"

	pathList = [COLocalPath, OSLocalPath, TOCPSLocalPath, EFLocalPath]
	return pathList

def main():

	sourcePathList = buildSourcePaths()
	destPathList = buildDestPaths()

	classCounter = 0
	for path in sourcePathList:

		fileList = []
		for curFile in listdir(path):
			if isfile(join(path, curFile)):
				fileList.append(curFile)

		for files in fileList:
			if "page" in files:
				curPath = path + '/' + files
				destPath = destPathList[classCounter] + '/' + files
				shutil.copyfile(curPath, destPath)

		classCounter = classCounter + 1

main()