Motif – it’s still usable :)

Recently I was looking for a very fast and very simple window manager that can be used over VNC (with depth 8) so I can save as much as possible in bandwidth and remote computations. I have decided to go with mwm. Yes, with good old Motif. As soon as I did it, I had to make few changes. I wanted to change default applications that are started when vncserver is initiated, I wanted some changes inside Root Menu, and some modifications of default key bindings. After long, long search in google galaxy I have found Motif’s Holly Grail :) 20 years old book from O’Reilly. Just take a look below at the “precious”. Fortunately you can browse the whole content of it from O’Reilly’s page.

mwm

An Introduction to Set Theory by C.J. Date

bkt_introduction_to_set_theory

Summary: basics that escalates heavily at the end

If you haven’t heard about set theory and set algebra, you may consider this one as a good introduction. If you have graduated from mathematics or computer science, you already know it. This video targets people who are familiar with relational database but had no chance to get familiar with it’s background – relational model and set theory. From my perspective, this video is overpriced. I don’t judge here the quality of the video, but the content. You should be able to find all the information available in the video by simply googling for the set algebra.

Should you watch this one? Well, it depends. If you have no solid background in the set theory, I would suggest to get familiar with this branch of mathematics. Especially, if you are interested in relational model. If you simply query SQL database for some basic data and you don’t have to create well designed database model – don’t bother. If you think about watching some other C.J. Date’s videos related to relational model, this one can be a good start.

Product page:

O’Reilly (video): An Introduction to Set Theory

Mastering Vim – Understanding Vim’s Lesser-Known Features for More Effective Editing by Damian Conway

bkt_mastering_vim

Summary: Takes every average vim user few steps forward

There is huge chance that you are reading this review because you are looking for some advanced features in vim. And, most probably, you are a regular vim user that already knows few things about it. Typical movements, jumping between words, selecting and yanking simple text regions. This is enough to get work done, but if you are looking for a shortcut to accelerate in vim, this video is for you. Well structured, very concise and extremely well delivered.

I am sure that you will be amazed with unlimited undo section and the ability of vim to persist undos and jump over editing timeline with huge flexibility. I bet you will benefit, right after watching, from advanced searches and replacements. I can guarantee that you will have huge temptation to get Damian’s .vimrc straight away into yours as soon as you finish the whole series.

Huge plus for all additional materials that come with the video course: vimrc, examples, summary of vim’s expressions, and all the commands used over the course. This way you can save lots of time. Instead of digging through the video once again, you can simply take a look at the list of all samples used in the video.

Just one advice from my side – keep your vim close to you while watching video and you will be able to experiment as soon as you watch particular section.

I’d definitely suggest this one to people who know vim’s basics and want to get something more out of it.

Product page:

O’Reilly (video): Mastering Vim – Understanding Vim’s Lesser-Known Features for More Effective Editing

Things – story of abandoning application over one night

Long long time ago in galaxy far away I have bought Things – for both, my Mac and iOS devices. And I was very pleased using it (in fact, you can find it serving as a background at one of the pictures in the gallery at my blog). Anyway, I was using it constantly all the way during projects.

things_app

The key point here is to give you small background on my task management. I am one of these guys who still uses hand writing a lot, I am huge fan of Moleskine and pens (especially Parkers and Pelikans). However, Things were one of these applications that have made me go digital. So, there I was working with Things all the time. I loved local synchronization between my Mac and iPod, everything was perfect until clouds came. This was something, I simply couldn’t accept. Over one night, I have completely removed all my notes, projects, todos, ideas from the digital era, and went back to paper one.

moleskine

The key factor to do so was “cloud”. Don’t get me wrong. I think that clouds are cool, but I simply don’t trust them. I don’t like the idea of keeping my sensitive date “somewhere”.

I do believe in corporate clouds, where company creates cloud and manage it. I even believe in clouds that are bought buy companies and managed by somebody. But I don’t trust “personal clouds”, where you simply agree to all the licenses saying “you can trust us, you can believe us, but in case anything goes wrong we are out of the scope of legal case”.

So, basically, I don’t store _any_ sensitive data outside my personal storage. Well, maybe with exception to gmail, but I think this is going to change soon as well. You will be able to read that in some other post of mine.

Indentation in Java – how to deal with it in SVN

Indentation may be a nightmare when you want to merge codes between two different branches.

If there are no formatting standards inside your team, if everybody uses different tool, let it be NetBeans, Eclipse, vi, emacs, you will probably, sooner or later, face the same issue – completely unsynchronized codes.

There was this discussion that involved this topic some time ago. I remember I have read it somewhere here: http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=3978. Anyway, sooner or later you will face the hell of merge if everybody uses different indentation, different editor and different tab/space schema.

So far, the best solution I have follows.

Check out the code, reformat it as you like, don’t discuss with people what is better, don’t try to enforce formatting rules, don’t fight over this one – there is no point here. Your IDE probably has some magic key to perform “Format code” trick. Just use it and code with indention as you like it.

However, just before committing changes, reformat code again. And here, you have to make some agreement within the team. But don’t fight here as well, as this “storage format” will be used only inside SVN repository. The formatting tool can be anything you like – for example the Eclipse. Simply format code using command line and that’s it.

eclipse -nosplash \
  -application org.eclipse.jdt.core.JavaCodeFormatter \
  -verbose \
  -config ~/workspace/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs \
  MyClass.java

Of course, you can put configuration files wherever you like (even in SVN).

This way, you can make sure that files you commit will be really consistent with the code you have checked out. Merging will be lot more easier since now.

The Closed World Assumption by C.J. Date

bkt_closed_world_assumption

Summary: For relational theory addicts

I always have problem while reviewing C.J. Date’s material. The point here is that the quality, content and way of delivering it are always top noch. No questions here. But on the other hand, when it comes to audience, I think they are targeting specific people and really limited number of specialists. In today’s lazy world, we seek for quick and easy answers and when it comes to deeper understanding of certain topics we tend to avoid getting into details – especially when it takes time.

This is exactly the case here. This material is really important for people who want to get familiar with the foundations of relational databases. In practice, we typically focus only on SQL and database engines, but I think that it’s good to get into basis of relational system if we want to really feel what database are all about. It certainly is the case that you will not become SQL expert after this series, but you will be well aware of some of the limitations in the database world.

There are few things that I miss here in the video. First of all, I would like to be able to download the slides as it definitely would improve the watching experience. Unfortunately, I couldn’t find them on the web page. Another issue here is that video material contains topics you can find in some other videos which should be watched in advance to fully benefit from this one (at least that’s what I assume basing on the content).

Big plus here for packing all the content in reasonable time span. It should be quite easy to find an hour, maybe two (if you want to go carefully over all topics) to watch it.

The content of the video is based on Logic and Databases: The Roots of Relational Theory by C. J. Date but you will also find the definition of closed world as well as samples in the book SQL and Relational Theory: How to Write Accurate SQL Code

Product page:

O’Reilly: The Closed World Assumption

Locko – “personal cloud”

I am strongly against clouds, and the reason here is not that some naked pictures recently leaked from somewhere. I simply don’t store sensitive data at someone’s hard drives. Period.

However, I need some sort of cloud for my personal usage – especially for Locko. I don’t want to copy paste all the passwords manually.

locko

As a personal “cloud server” I use svn installed on FreeBSD. To be able to exchange data between Locko’s database you have to transfer this directory

~/Library/Group Containers/J3CP9BBBN6.com.binarynights/Locko.lckdb

All you have to do is:

1. create SVN repository at your server

svnadmin create /svn/repos/Locko.lckdb

2. make sure you can access it in read/write mode

# pay attention to these files
/svn/repos/Locko.lckdb/conf/svnserve.conf
/svn/repos/Locko.lckdb/conf/userfile

3. checkout Locko.lckdb project at the machine that contains Locko database

# MAKE sure to create backup before proceeding any further !!
cd ~/Library/Group\ Containers/J3CP9BBBN6.com.binarynights/
mv Locko.lckdb Locko.lckdb~
svn co svn://yourhost/Locko.lckdb
# go to newly created directory
cd Locko.lckdb
# and get database from original location
cp -r ../Locko.lckdb~/* .
# make sure to add all data into SVN
svn add hosts
svn add default
svn commit -m "created new database for Locko"

4. on second machine, simply checkout database

# MAKE sure to create backup before proceeding any further !!
cd ~/Library/Group\ Containers/J3CP9BBBN6.com.binarynights/
mv Locko.lckdb Locko.lckdb~
svn co svn://yourhost/Locko.lckdb

And that’s it. In my case it works fine as one of the machines is the master and the other one is used occasionally. I haven’t tried to merge simultaneous additions or modifications of passwords. However, I expect some issues here as everything here are binary data.

Scratch – which book should I pick!?

In this post I will give insights on which book should you pick when you want to start teaching kids. Please note that this is my personal view!

bkt_super_scratch bkt_learn_to_program_with_scratch
What is the age of kids? 6-10 11-16
Who are you? Just a parrent Teacher and I know some programming language already
Who will read this book? Me, together with kids My children can already read books and know maths
How kid will proceed with learning? We will sit together, and follow the book. My kid can read “complex” text and understand it. He will do tasks on his own.

Learn to Program with Scratch by Majed Marji

bkt_learn_to_program_with_scratch

Summary: Really good reference for Scratch

I have started my Scratch experience with Super Scratch Programming Adventure! book and my first reaction to reading Learn to Program with Scratch was like I wanted to reject this one and not to read it at all. The point here is that Super Scratch is made with better taste when it comes to graphics and is better suited for kids. But, don’t be fooled by the layout. Learn to Program with Scratch is equally good. In fact, it is much better reference to Scratch language. It simply targets different group of people. While Super Scratch Programming Adventure! is focused more on kids at age 6-9, I’d say that this one targets kids between 11-16 as well as teachers. If you want to teach Scratch, this one will be much better pick for you as it covers the langue in more systematic way.

On the other hand, when it comes to kids, it requires more reading (and reading is, oh so borring) and more systematic approach to learning – and that’s also boring ;) But for me, this one is much better place to look at when I want to find some information regarding Scratch.

Let me just show you the sample. Below, you can find the game made in half an hour after reading first chapter of the book. Let’s be honest, this is really cool that you can develop game after reading like 10 to 15 pages of text.





The trampoline code is quite simple – all it has to do is to react on mouse position change.

trampoline

Button is responsible for triggering all the sprites on the scene when it is pressed (it uses messages to achieve that).

button

And the key “player” here is the ball. It is responsible for flying around and determining whether it should bounce or stop the game (when you fail to catch it with trampoline).

ball

The organization of the book is similar to any other programming language manual. You can find here sections describing all the elements of the language, with samples and explanation of how to use them. You can find lots of tutorials, however, they might be hard to follow sometimes. There is also a quite comprehensive index to make your life easier when you are looking for some particular stuff.

In my opinion, this one is best fit for you if you are either a teacher or you are at high school/middle school. But for sure, I’d advice to buy it if you want to get gentle introduction to Scratch.

Product page:

O’Reilly (print): Learn to Program with Scratch
O’Reilly (e-book): Learn to Program with Scratch

Super Scratch Programming Adventure! by the LEAD Project

bkt_super_scratch

Summary: Solid introduction to Scratch (v. 2.0)

For some time now I am looking for the programming language that can be used for teaching kids. I, personally, grown up on LOGO and BASIC. After I got my first PC XT I have jumped directly into C. But there is a huge drawback when it comes to these languages. Children have to learn to write before they can proceed with any coding. And, let’s be honest, how much fun can you get out of the code like this.

10 PRINT "HELLO"
20 GOTO 10

Being able to read and write the code is something that puts a bar at ages 9-10 before you can even start – I don’t take into account here all these IT prodigies that code before they walk. With Scratch, that’s a whole different story:

– you are building the code instead of coding
– you are playing with graphics instead of text
– you can make a program just by dragging pieces with the mouse

and that’s something that makes huge difference comparing to LOGO/BASIC/Pascal.

Now, the tool without manual is something hard to handle. And that’s the place where this book comes in. It is written with a simple language and tutorial/comix approach. All steps are explained in proper way. It is really hard to get lost here. You are just guided what to do and how to proceed to get certain results.

Take a look below. That’s simple code written just after reading few pages from the book:


And the code blocks are really simple to manage. You just build the code, you don’t write it.

code

You probably know that kids, when asked to write their very first loop (e.g. five steps), do something like this

print "hello"
print "hello"
print "hello"
print "hello"
print "hello"

Success!!

And, to my surprise, that’s what I have found in the book – the clone tool. It allows you easily clone the code so you don’t have to write it again and again. You certainly can tell that people behind the book have seen kids in action already.

You will probably ask the question – “OK, so when should I start to teach my kid coding, and how much will it cost me”. The best thing here (with Scratch) is that you can start with as low as price of Raspberry PI – a small computer that can fit in your hand (http://www.raspberrypi.org). The benefit of it is that you can use Scratch, but it’s hard to play modern games :) Then, you have to give away your TV set for a while, so your kid can use it for “development”. This is win-win. Your kid is learning while you can read something that you have planed to read long time ago. Another win-win is when you will go over the book with your kids and help them understand all the concepts. And, even though book is super simple, there are few topics that must be explained (especially to younger ones):

– cartesian coordinates
– numbers and simple operations
– some basics of logic.

If your kids already had these topics at school, they will be abel to go over the book themselves.

When it comes to content, book is designed such way, that each chapter represents game that has to be developed. The complexity gradually increases from very simple movements to complex behavior of sprites.

I would highly recommend this one to parents who know that modern times require that kids not only play with computers but also can program them. And I really think that Scratch accompanied with this title can really help you teaching kids to code.

Just one remark – don’t force kids to code as you expect it to be done. Let them use their imagination. My son’s first code was composed of 10 ghosts moving in random directions. And we have made this code together having lots of fun and great laugh :)

Product page:

O’Reilly (print): Super Scratch Programming Adventure!
O’Reilly (e-book): Super Scratch Programming Adventure!

←Older