I have never liked the way that windowing systems like OSX ofen leave you with a messy desktop, windows on top of each other, overlap etc. But at the same time I recognize the usefulness of having multiple windows open at the same time, so I was pleased to discover an app on the mac app store called BetterSnapTool. It enables the user to snap a window to a corner or side fo the screen, making it easy to have say 2 or 4 windowed apps lined up perfectly on the screen!
My new GTD system
May 5, 2011I decided that I needed a new system for getting things done. My main concern was to be able to make notes and todo lists on mac, iphone or ipad (I’m an apple sheep, baa!)
For note taking I wanted something that was quick and easy and dealt with simple text files, so for that purpose I picked Simplenote. It has dedicated apps for iphone and ipad as well as a web application. There is no decidated Mac app but the most popular choice which I picked was Notational Velocity (aka NV) which is an open source app which syncs with Simplenote (only tags dont sync but I can live with that).
There is also a desktop widget called DashNote that also can allow you to view and edit simplenote notes, this is great for quick access view of the notes.
The next thing I wanted to tackle was todo lists. I wanted something simple that did not get in the way. I decided to use TaskPaper which is super quick to create and edit todo lists. I like that it is lightweight and does not get in the way. It stores the todo lists in text files so it is easy to integrate with the simplenote and notational velocity. In NV I changed the settings so that it stores the notes as text files rather than binary format and also added the taskpaper file extension as a recognized text file type. This means that any note can be edited as a todo list and then sync-ed over to my mobile devices using the notational velocity – simplenote sync
Now there is also versions of the TaskPaper on iphone and ipad but they require a different synching service called www.simpletext.ws. Now I wanted to keep the text files for todo lists and notes together so how would that work when there are 2 separate synching services? Well the good news is that you can set the directory path for both notational velocity and simpletext to be the same directory (check the simpletext instructions for how to change the directory path as it requires a command to be typed into the terminal).
The end result is that I can see files in simplenote, notational velocity and and taskpaper. And they sync pretty well. One rule I stick to is for notes I primarily edit them in simplenote while for tasks i primarily edit them in taskpaper and this seems to avoid synching conflicts.
For the icing on the cake, the directory that I sync is inside a drop box folder so I can also reference the files from dropbox if i want, then in dropbox i can use the additional features of uploading images and other binary files if i need to.
So what I like about the system is:
- There is more than one way to access the information I need.
- I can pick and choose different technologies to suit more workflow.
- The info gets synched so i can view or edit the info on each of my devices.
- Some the synching has to be initiated manually but once I got the hang of it things have been working great!
Git
April 8, 2011I have been getting to grips with Git version control system. As someone who is familiar with subversion (SVN), git does seem to offer some distinct advantages. Mainly that it used distributed repositories rather than the centralized one like SVN, so it makes it much easier to branch and merge compared to subversion. Also its much easier to work with offline too.
I am still learning some of the basics of Git but one thing I have liked so far is that its very easy to create a project and then use that as a baseline for creating other projects by using branching.
Installation
Installation instructions are available on the Git website.
Git-ifying your project
I have a project folder called alice which I would like to enable Git version control. Here are the steps that I have been using. There are other alternative commands but I will focus on the workflow I have been using.
- cd alice
- git init
- git add .
- git commit -m ‘first version of project’
Explanation of Commands
git init – this initialized a repository in the working directory. This only needs to be called once.
git add . - this tells git to add any files that have been updated or created since the git repo was last commited (or initialized) to the staging area, where it can be tracked. The dot character is passed in to the command to represent the current directory.
git commit – this commits the tracked changes that were in the staging area to the repository.
Other useful commands / options
git status – provides a status of both tracked and untracked changes.
git diff –cached – provides diff of tracked files compared to the repository
There are other options for doing diff of untracked files but I have found it easier to add the files to the staging area first using git add and then just concentrating on these commands to keep track of my changes.
So a typical workflow is:
- make changes
- from the working directory run git add .
- git commit -m “insert comment here”
Making a copy of the repository
Suppose I want to create a second project bob that is based on the first project alice. Heres what I would need to do, assuming i am in the alice directory:
- cd ..
- git clone alice bob
node.js
April 5, 2011I took a look at the Node.js event driven I/O framework that is generating a lot of interest recently. See the node.js site for more info. I went through the instructions on the associated github site to build and test the framework as follows:
Installation on Mac OS X
git clone https://github.com/joyent/node.git
cd node
export JOBS=2 # optional, sets number of parallel commands.
mkdir ~/local
./configure –prefix=$HOME/local/node
make
make install
export PATH=$HOME/local/node/bin:$PATH
Examples
I was then able to run the 2 examples on the site. One to create a “hello world” web server
example1.js
var http = require(‘http’);
http.createServer(function (req, res) {
res.writeHead(200, {‘Content-Type’: ‘text/plain’});
res.end(‘Hello World\n’);
}).listen(8124, “127.0.0.1″);
console.log(‘Server running at http://127.0.0.1:8124/’);
The other example is to create a TCP server that lisens on a port and echoes the request as a response.
example2.js
var net = require(‘net’);
var server = net.createServer(function (socket) {
socket.write(“Echo server\r\n”);
socket.pipe(socket);
})
server.listen(8124, “127.0.0.1″);
Initial Impressions
I was impressed at how quick and easy it was to get up and running with node.js and look forward to trying out further examples.
Posted by jonsrose