Posts

Showing posts from 2010

Sharing my source the Proper way

I plan to share my sources via a software project management suite. From now on, you could even contribute if you wish! You could also follow project updates (commits, documentation pages, releases, etc.) in your feed reader.

I don't have a problem with using Google's products for open source development, but do tell me if you think otherwise. Kosi had recommended GitHub, but it doesn't offer all features I need, and I'm hesitant to spread over many service providers.

For more information, visit the bkil's personally developed and used tools project summary page.

BUG: has even more options than ls

This seems to be some kind of an easter egg in man pages.

Exuberant Ctags bug at SourceForge: ctags doesn't have more options than ls - ID: 2707519 (- after all)

wodim man page (formerly cdrecord) - see the top of the BUGS section

OCaml vs. Haskell

Do you prefer laziness or ease of compiler implementation and proof of correctness? Haskell feels very comfortable to me, and I can write some beautiful code in it. Laziness could introduce some complexity to reason about temporary memory usage. It's the same reason I like Erlang: quick, dirty, but also elegantly minimalistic and predictable. I haven't tackled OCaml (yet ;->). Do you think it worths it?

OCaml vs. Haskell discussion at Y-Combinator

Haskell performance is on par with OCaml (shootout.alioth.debian.org) do note, that the Haskell compiler and solutions have evolved since then

bkil.hu has moved

The host of bkil.hu has decided to switch servers and inform me only afterwards with an e-mail that got into the spam folder for most people. You get what you pay for. That means my secondary private mail addresses gave bounce messages for about 60 hours, sorry about that. I only check them when I have time.

By the way, I found out all about this issue when running ping. It's a great habit of mine to do that daily. Actually, I have a trivial script running in the background to endlessly send a ping packet to bkil.hu once in a few minutes to keep my wireless links active for dumb access points. Too bad I rarely check its output in detail. That just gave me an idea! ;-)

An online open source computer symbolic algebra system

It looks like I forgot to publish this post from my drafts. A colleague of mine has recommended this.

Mathematical Assistant on Web (installed)Mathematical Assistant on Web (sources)

Running argoUML, fixing hostname

When attempting to run ArgoUML under my custom install of Debian Lenny, it died on startup with the following:
"ERROR: unable to get localhost information.
java.net.UnknownHostException (...)"

solution: check the output of the command hostname, add a line corresponding to that name to the file /etc/hosts

Anyway, it might be a great piece of software, but I didn't have much luck with the functionality I needed. Namely, my simple collaboration diagram got its indexes all mixed up.

Install Hugs under Puppy Linux to program Haskell

Hugs is a nice little interpreter if you'd like to try out the language Haskell. It has few dependencies and it requires moderate resources to run. The download for a minimal install is less than 1.5MiB in size.

If you have an operating system with package management, you can simply install the package 'hugs', or 'hugs98'. For example, on Debian-based systems (including Ubuntu) this amount to simply running: aptitude install hugsOn distributions without a decent package manager (like Puppy Linux), you can install the Debian packages manually (refer to your distribution for details, but it usually involves clicking on each downloaded package or typing dpkg -i name.deb). You first need to select a Debian major distribution version which matches with the versions of libraries on your system. On the Pupeee (Puppy 4.3) I had been using till now, choosing Lenny seems to work fine. So I've downloaded each i386 version from a mirror close-by of the following packages:hu…

Install GIMP resynthesizer for texturization

With this free GIMP plugin, texture synthesis is possible. It can generate images and fill voids from a given texture sample.

Its uses include making a picture tileable, removing objects from images and images comforming to a given theme.
resynthesizer source code, binary and free windows downloadResynthesizer tutorial - use the Earth as seen from the Moon as your background picture

Puppy Linux on the IBM ThinkPad T42

I only gave a quick shot at the beast, but it did work out pretty well. It didn't work out of the box, however.
kernel: 2.6.31.5 (Puppy)hardware: IBM ThinkPad T42error message: initrd boot error "pup-431.sfs not found"solution: remove 'pmedia=usbflash' from syslinux.cfgother remedies to try:kernel command line: add 'acpi=force' and 'pci=noacpi'BIOS: turn off Fast Boot

Elementwise processing 2.1 for common keys in Haskell

Here's a neat little utility function which I commonly find useful.

ef2_1 :: (a -> a -> a) -> (a -> a -> Bool) -> [a] -> [a] -> [a]
ef2_1 = ef0 [] where
 ef0 zs f lt (x:xs) (y:ys) | lt x y = ef0 (x:zs) f lt xs (y:ys)
 ef0 zs f lt (x:xs) (y:ys) | lt y x = ef0 (y:zs) f lt (x:xs) ys
 ef0 zs f lt (x:xs) (y:ys) = ef0 (f x y:zs) f lt xs ys
 ef0 zs _ _ xr yr = reverse $ xr ++ yr ++ zs

main = print $ ef2_1 (\x _->x) (\(x,_) (y,_)->x<y) d1 d2 where
 d1 = [(1,9), (3,8), (4,7), (5,6), (7,5)]
 d2 = [(2,5), (4,4), (6,3)]

Making metropolitan travel more ergonomic

It would make a difference if they have published the exact synchronization of traffic lights and/or broadcast timely phase signals (via UDP over GPRS or such).

Using this data combined with the readings of the bicycle odometer, software on your PDA or mobile phone could continuously suggest a velocity that should minimize idling at each traffic light. Manual settings for maximal speed, acceleration and cardiovascular pulse could be given.

Note that this strategy only works well for uncongested networks, like dedicated bicycle lanes or paths.

Trained cyclist already apply a similar technique manually, however, not all lights are synchronized to each other.

Can you guess which conjecture these try to test?

let f l 1=l++[1];f l k|mod k 2==0=f(l++[k])(div k 2);f l k=f(l++[k])(3*k+1)in putStr $ unlines $ map (show . f[]) [1..11]

let f l 1=reverse(1:l);f l k|mod k 2==0=f(k:l)(div k 2);f l k=f(k:l)(3*k+1)in putStr $ unlines $ map (show . f[]) [1..11]

let f 1=Nothing;f k=Just(g k,g k);g k|mod k 2==0=div k 2;g k=3*k+1 in putStr $ unlines $ map (show . \n -> n:unfoldr f n) [1..11]

let f 1=Nothing;f k=let x=(if mod k 2==0 then div k 2 else 3*k+1)in Just(x,x)in putStr $ unlines $ map (show . \n -> n:unfoldr f n) [1..11]

Silent voice - input method innovation

They have conducted the following interesting experiment. Electrodes were placed on the skin of a subject at the neck. Then a specially trained person imitated a phone call without sounding an utterance or even moving his lips!

They say, when "articulating" text in one's mind, the nerves relevant to speech are activated similarly to when reading the text aloud. They have achieved fair decoding accuracy from these signals.

There could exist many use cases for an interface built around these findings. On top of all previously known applications for speech recognition, those could also be realized which were inappropriate at certain locations because of the noise induced by speech. Imagine the workplace perspective of talking on the phone without opening your lips or making any sound, all with the speed of speech!

Too bad it has such a low speed in practise today. I wonder how far they can push it.

You can also view a video demonstration at the original article: Nerve-tapping n…

Constructing a simple portable bike

I've been considering if it would make sense to construct a bike "from scratch" using general materials for a frame. It could also be equipped with standard bicycle components to make repairs much easier.

The concept of building the frame (and thus the bike) akin to playing with a metal toy construction set sounds interesting. It would allow great innovation in portability.

Replayable keylogging for yourself

It would be feasible to protect as much information created by the user as possible. Certain software have evolved the ability to partially provide a feature similar to this via periodically created temporary document copies (editors) or constantly refreshed configuration files (browsers). Most of them use their own, unconfigurable, error-prone ad-hoc solutions.

I propose that a solution be found at the operating system level which any software can reuse.

Keyboard input could be considered the most entropy rich for most users, however, selection and positioning via the mouse pointer must also be taken into account. The good solution would probably model widget activation in an abstract manner.

Best buy elsewhere

WorstBuy Trains Employees to Boo Linux to Customers [linuxinnovations]Microsoft 'indoctrinates' Best Buy workers with anti-Linux 'lies' [DailyFinance]

"First they ignore you, then they laugh at you, then they fight you, then you win." - Mohandas Karamchand Gandhi

You just have to love monopoly

Nice creative homebrew bike project implementations

This guy is committing some wicked do-it-yourselfing! His portfolio also include tree perches and full featured low-cost mobile homes for the homeless.

High mileage trikes and more

Bike replacement

I have replaced my portable bicycle with a small kick scooter a few months ago. Testing is still underway. Average commuting speed is in excess of 10km/h for longer intra-city trips. Riding comfort is fair on sidewalks not made of bricks. Bicycle lanes with bricks are a bit rough, but still doable. I agree that the device does give you a better workout than a bicycle.

At around the same time, I'm beginning to use one of my mountain bikes in the city.

My Psion MC218 got retired

I have input more than 1 million characters of notes, coursework, ideas, plans and doodling on the device. I've programmed some simple calculations on it to aid my purchases. Sadly, I never got around to develop in Java for the device. I've finished all 50 Sokoban levels on it for the delight of my good old mathematician roommate many years ago. :-)

All in all, it was worth it. However, I've retired it in favour of my netbook last year.

Though, I still carry it around in my backback as a backup solution to this day. I also accompany it with an extra set of rechargeable batteries.

Computer replacement - Asus Eee PC

I've purchased a new Asus Eee PC 2g (700x) portable "netbook" computer last year. It cost the equivalent of about 128 Euros in a local shop nearby, though prices were very close citywide back then. At least I found good use for my aging 4 GiB USB flash drive.

I'd been considering this exact purchase since the manufacturer has announced this line. Though for business reasons, it took them some time to market the smallest model.

I've loaded Pupee Linux on it, installed Google Chrome, disabled a few background processes, developed a few simple scripts for it and made some other small customizations. I may share my exact customizations later on.

Battery life varies greatly with usage. If you disable all onboard devices and turn down the backlight to about 10-20%, you can study from PDF or HTML documents for 3:07 (187 minutes). The biggest consumers are the processor and the wireless radio, so heavily browsing the web on a wireless network reduces this to a bit over two …

online interpreter and collaboration tools: codepad, ideone, tryhaskell

Visit the cool site codepad.org, where you can try out any esoteric programming language online which you never had the spirit to install so far. You can also view, try out or even modify programs that others have typed in previously. Supports the following languages: C, C++, D, Haskell, Lua, OCaml, PHP, Perl, Python, Ruby, Scheme, Tcl. (via verdelyi) ideone.com also supports a heapload of languages: Ada, Assembler, AWK, Bash, bc, Brainf**k, C, C#, C++, C99, CLIPS, Clojure, COBOL, Common LISP, D (dmd), Erlang, Forth, Fortran, Go, Haskell, Icon, Intercal, Java, JavaScript, Lua, Nemerle, Nice, Ocaml, Pascal, Perl, PHP, Pike, Prolog, Python, R, Ruby, Scala, Scheme, SmallTalk, Tcl, Unlambda, Visual Basic .NET, Whitespace.tryhaskell.org - specialized for Haskell, but does its job in light-weight JavaScript!

New poll of mine

A new poll is available for you to vote on. ;-)

Back in business

I'll be back online in the upcoming days, stay tuned! :-)