The tool “ots” simply is an open source tool for summarizing texts content.
You can install it on your Linux box with: “apt-get install libots0 libots-dev”
http://libots.sourceforge.net – Here you will also find the academic publications around that topic.
Example usage: cat myarticle.txt | ots –ratio 5
This command would summarize the article, giving the 5% of the article which is most important and return the summary.
This blog-post (http://blog.wired.com/business/2008/05/microsoft-cans.html) would be summarized by the above command to:
“Microsoft said today it plans to phase out its book scanning effort, an initiative launched less than three years ago.” – Nice!
KDiff3 is a great tool to do all sorts of textbased diffs. I use it regularly to resolve merge-conflicts in subversion. It can of course also be used to manage 3-way-diffs.
Just mark 2-3 files in your file-explorer, right-click and choose ‘KDiff3 / Compare’ and you get a nice screen like this one:
Since I am doing more and more stuff on the commandline, I noticed that sometimes I just wait for some task to finish to do a next step in a sequence to accomplish a certain goal. What if a running task would take an estimated 3-8 hours and it is Friday afternoon?
In this case you can use the commandline-tool ‘at’ and schedule something like ‘at 1am tomorrow do xyz’.
If you do not have at yet, install it on your Debian box with: apt-get install at
There are 3 commands available:
- at <datetime> – Starts the scheduling-dialog for a specific date or/and time to execute certain commands.
- atq – Shows a list of already scheduled and pending jobs.
- atrm <job-id> – Deletes pending jobs you would like to remove from the job-queue.
Case: What do you have to do in order to set a sequence of commands as root at a specific time?
Let’s say it is Friday 15:00h (and the server-clock says that too) and you would like to fire the command
- echo “Good morning!” > hello.txt @ 08:00h tomorrow
You would do the following:
- Log in as root.
- Type ‘at 8.00′ <enter>.
- Since for today 08.00 is already in the past, at assumes that you mean tomorrow. But you can use all sorts of time- and date signatures, for example you could use ‘at 08:00 01.06.2008′.
- Now the prompt changes to at> and waits for your commands to be executed sequentially at the time you specified.
- Now you type your first command to be executet: ‘cd ~/stuff’ <enter> – to make sure where the next command is executed, since it writes a file.
- Now type your 2nd command: ‘echo “Hello 8.00″ > hello.txt’ <enter>
- The prompt shows another at>. If you have more commands add them. In our example we have only two. To finish we press STRG-D and you have your normal prompt back.
- Type the command ‘atq’ to see the pending jobs in the queue. Your job, you just added has a job-ID in the first column.
- To delete the job from the queue type ‘atrm <job-id>’.
Phun is a very addictive physics simulator I came accross. Watch the videos on YouTube, install it on your Mac and try it yourself. Have Phun!
Inspired by an article at InfoQ (http://www.infoq.com/articles/better-best-practices) I discovered an interesting model, which explores the nature of learning in an interesting way: The Dreyfus Model for Skills Acquisition.
In essence it describes how people acquire skills over time, what supports them best in their progress and how they behave with their growing knowledge. Five levels are described:
- Novice – Needs to be told exactly what to do. Has very little understanding of the context to base decisions on. Wants frequent quick wins, needs regular feedback and reassuring messages. Learns best by abstract and context-free rules.
- Advanced beginner – Is familiar with the basic steps but still needs guidelines to follow. This is the stage at which a learner is most dangerous – he knows enough to think he knows a lot. Uses more sphisticated rules than a beginner. Treats all aspects with equal importance.
- Competent – The learner begins to understand his tasks and starts seeing longer term consequences. He can figure out a sequence of tasks in order to accomplish a goal. Learns best when given hierarchical goal-based targets accompanied by some rules. *
- Proficient – An ability to analyse a situation and seperate what is most important develops. The learner is experienced enough that solutions start to just appear and are seen in the wider context. The person can rely on his judgements. He follows higher-leveled maxims. Decision-making feels less labourous. Searches inspiration, loves challenges and is open to constant learning.
- Expert – Works mainly on intuition and is rarely wrong. Involves critical reflection on his intuitions, rather than goal-based planning. Loves to meet and exchange thoughts with other experts. Best practices are seen as a necessary evil. Does not rely on rules and maxims. Has a vision of what is possible.
* Most people don’t get beyond the competent level at most skills. Progression from Novice to Competent is linear. The model points out that one can become competent at something just by doing enough repetitions, but learners who want to reach beyond this point need to develop and maintain an active will to become proficient. It takes many years of dedicated effort to become an expert in a particular field.
Here you will find an application of the Dreyfus Model to software development with Ruby on Rails: http://pragmaticstudio.com/dreyfus
In search of an example how to implement a top-level exception handler in PHP I came across this nice site containing lots of well explained tutorials and articles: