Sunday, October 10, 2010

Microsoft Mathematics Add-In for Word and OneNote

Heh, this one is pretty awesome. Calculus and plotting in Microsoft Word :-). Best of all, it's a free add-on.



And while we're on the subject of educational software:

You can even grab the source code for this: http://chem4word.codeplex.com/

Saturday, October 02, 2010

Mount hfsplus and hfs read write on Linux

Mount HFS+ rw on Linux (at your own risk...)

# Install HFS+ support
aptitude install hfsplus hfsprogs hfsutils
# Keep an eye on your dmesg:
tail -f /var/log/messages
# Get an idea on what partition you'd want to mount
cat /proc/partitions
# See what filesystems are supported
cat /proc/filesystems
# Check for a hfsplus LKM
modprobe -l | grep hfsplus
# Load it
modprobe hfsplus
# Check to see if it's loaded
grep hfsplus /proc/partitions
# Mount the HFS+ partition. If it's journaled, we don't need -o force.
mount -t hfsplus -o force -o rw /dev/sda2 /mnt/test
# Verify it
/dev/sda2 on /mnt/test type hfsplus (rw,force) touch /mnt/test/selftest ls -la /mnt/test/selftest
# If we're not allowed to mount with the write option, check dmesg
# If required, fsck, then remount.
/sbin/fsck.hfsplus -f /dev/sda2
# As an alternative, you can disable the journal on a MacOS:
# GUI: hold option while clicking the menu in Disk Utility. CMD:
diskutil list
sudo diskutil disableJournal /Volumes/Yourdisk

Tuesday, August 24, 2010

ClusterSSH alternative, broadcasting to multiple terminals

Gnome "Terminator" is basically similar to ClusterSSH, dsh, kanif or such but runs all terminals in a single window you can split and such somewhat similar to screen.

It's also a bit more configurable (eg: gnome-terminal).



http://freshmeat.net/projects/gnometerminator/?branch_id=70626&release_id=268543

Friday, August 13, 2010

ThinkPad fingerprint scanner - Linux PAM setup

Using fingerprint scanners for login is cool. Sure, it's insecure, but who cares about that :-). It's awesome!

Do enroll more than one finger, and have a fallback mechanism though...

# Install fingerprint software.
# You can play around with fprint_demo to try it out...
sudo aptitude install fprint-demo libpam-fprint libfprint

# Enroll the index finder. See pam_fprint_enroll --help for details
pam_fprint_enroll --enroll-finger 7

# Edit your PAM configuration to enable fingerprint login
# Fallback to password if it fails.

# emacs /etc/pam.d/commond-auth
# Add something like:

# Fingerprint
auth sufficient pam_fprint.so

You could also require both, but that's just awkward :-). And if finger print scanning breaks, it's a PITA.

Monday, July 26, 2010

Emacs: Different fonts in different modes


I love monospaced fonts (such as Terminus or Consolas / Inconsolata), but they can be harder to read when it comes to documentation or simple conversation.


So, let's make Emacs use different fonts (monospaced and variable) depending on the mode we're in (eg: Info and ERC should not be monospaced), and let's add some shortcuts to change font type /size easily. You can do something like this with a bit of elisp in your init.el / .emacs.


;; Insidious Black Magic Bits:

;; Use variable width font faces in current buffer
(defun my-buffer-face-mode-variable ()
"Set font to a variable width (proportional) fonts in current buffer"
(interactive)
(setq buffer-face-mode-face '(:family "DejaVu Sans" :height 100 :width semi-condensed))
(buffer-face-mode))

;; Use monospaced font faces in current buffer
(defun my-buffer-face-mode-fixed ()
"Sets a fixed width (monospace) font in current buffer"
(interactive)
(setq buffer-face-mode-face '(:family "Consolas" :height 100))
(buffer-face-mode))

;; Set default font faces for Info and ERC modes
(add-hook 'erc-mode-hook 'my-buffer-face-mode-variable)
(add-hook 'Info-mode-hook 'my-buffer-face-mode-variable)

;; Control + scroll to change font type
(global-set-key [C-mouse-4] 'my-buffer-face-mode-fixed)
(global-set-key [C-mouse-5] 'my-buffer-face-mode-variable)

;; Shift + scroll to change font size
(global-set-key [S-mouse-4] 'text-scale-increase)
(global-set-key [S-mouse-5] 'text-scale-decrease)


And the results:

Note that you can also Shift + Left Click on a window to set fonts / font sizes.

Sunday, July 18, 2010

Converting Perforce depots to Mercurial repositories with hg convert

Converting Perforce to Mercurial repositories is fast (4-5 seconds for a 500MB repository with 300 revisions).

You'll also want to start p4d and log into P4V before, so it caches credentials.

1. Setup your p4 client:
export P4PORT=localhost:1666
export P4CLIENT=your_client_here

2. Enable hg converter by adding to ~/.hgrc
[extensions]
hgext.convert=

3. Start p4d
./p4d &

4. Convert the depot:
You need to specify a revision. Look it up in the p4 client (depot-details-revision). @all might also work.
hg convert //depot/...@307 converted-perforce path/to/hg-repo

5. Look at the history
hg history

6. Look at diffs and history with a graphical tool. This should give you a better idea of branches and such.
hgview

7. Clone your repository
hg clone /path/to/hg-repo

8. Publish your repository via the web interface
hg serve

9. Browse around
http://localhost:8000/


Additional notes:
Keep an eye on:

Sunday, July 11, 2010

Memory Scanner and Editor for Linux

If you're familiar with ArtMoney, MemEdit or Cheat Engine on Windows, then you know what it's used for :-).


Basically, it lets you search for variables in the memory of a running process, then refine the search further (eg: give higher, lower or fixed values). You can use this basically to cheat at games. Look for the health, money or mana values, refine the search, then freeze or set the value to whatever you want.

ScanMem is a simple commandline tool on Linux that lets you do the same. There are other uses, but this one is the most common...

Monday, June 07, 2010

Nautilus Location Bar - Fix Text Mode

Gnome keeps getting dumber and dumber all the time. First the "Open in Terminal" right click option was gone, now the address bar.


Before at least you had a crayon button to toggle it. Now you need to type / and start typing or Ctrl-L to show it. Makes it a bit harder to copy/paste stuff to it.

Here's how you fix it:
gconftool-2 --type=Boolean --set /apps/nautilus/preferences/always_use_location_entry true


Friday, May 21, 2010

VIM: The Matrix Has You


(click for gif animation)


This is pretty much the coolest thing I've seen all day.

A "Matrix" screensaver for VIM. It's amazingly realistic too.

Tuesday, April 06, 2010

Share GNU screen sessions with a different user

Here's something cool you can do with screen. Share a screen session with multiple terminals. "screen -x". Of course, this only works if you're using the same user.


Let's say you want to do some cooperative debugging with another username. Simple:

1. Set screen setuid flag:
chmod +s screen

2. Start a new screen sessions:
screen -S mihai

3. Set multiuser
Ctrl-A
:multiuser on

4. Add the user to join your session to the ACL list:
Ctrl-A
:acladd jimbo

5. Now connect as jimbo and join cmihai's session (called mihai):
screen -x cmihai/mihai


Now you can share you screen session with that user :-).

Sunday, January 03, 2010

Unpack functions and BSDProgress - progress bar for your archives.

A colored unpack script using bar:

A little KSH93 function for your .profile. Now you can augomatically unpack most archives while watching the pretty progress bar.
You need bsdprogress (Solaris and Linux port of NetBSD's progress). With a bit work it also works on AIX.
I just re-wrote this for progress, so I didn't check the cpio and such yet.
# Mihai Criveti - Unpack function:
# Progress Unpack - unpack using GNU tar and bsdprogress.
function up {
for archive in $*; do
print $archive;
case $archive in
(*.tar) progress -f $archive gtar xpif - ;;
(*.tar.gz) progress -f $archive gtar -zpixf - ;;
(*.tgz) progress -zf $archive gtar -ipxf - ;;
(*.tar.bz2) progress -f $archive gtar -jipxf - ;;
(*.tbz) progress -f $archive gtar -jipxf - ;;
(*.gz) progress -f $archive gunzip -;;
(*.bz2) progress -f $archive bunzip -;;
(*.tar.Z) uncompress -c $archive | tar gxvf - ;;
(*.cpio) cpio -icd < $archive ;;
(*.Z) uncompress $archive ;;
(*.rar) unrar x $archive ;;
(*.zip) unzip $archive ;;
esac
done
}

Let's say we want to unpack files that end in *bz2 (it will automagically detect .tar.bz2 or tbz2), *gz and a specific tar archive:


cmihai@phobos:/home/cmihai/build$ up g*bz2 c*gz Python\-3.0.1.tar
gnupg-1.4.10.tar.bz2
100% |**********************************************************************| 3330 KB 296.95 KB/s 00:00 ETA
gnupg-2.0.14.tar.bz2
100% |**********************************************************************| 3888 KB 340.20 KB/s 00:00 ETA
ccache-2.4.tar.gz
100% |**********************************************************************| 86363 201.51 KB/s 00:00 ETA
Python-3.0.1.tar
91% |******************************************************** | 43320 KB 787.63 KB/s 05:00 ETA

See: 
http://netbsd.gw.com/cgi-bin/man-cgi?progress++NetBSD-current
http://mac.freshmeat.net/projects/bsdprogress/
It builds fine on AIX (Makefile tweaks), Solaris and Linux. Native on NetBSD.
Other versions:
http://clpbar.sourceforge.net/
http://freshmeat.net/projects/progress