Bejegyzések

Bejegyzések megjelenítése ebből a hónapból: 2013

Amateur (HAM) radio: analyzing historical data from reversebeacon.net

What is amateur radio? Amateur radio (or HAM radio) is a great hobby, or sport - it depends on how seriously do you take it, and what activities you choose to engage in precisely. Basically HAM radio is a pastime where people around the world buy and/or build radio transceivers, antennas and lots of other gear, and make contacts with each other using the frequencies and modes that complies with rather strict regulations. Amateur radio operators also participate in emergency communication, since no infrastructure is required, and with the proper tools, they can talk over thousands of kilometres. Despite the aforementioned strictness of radio regulations, there are multitude of ways you can "do HAM radio". If you enjoy chatting, you can buy a cheap hand-held device and check into a "net" on a local repeater. If you like "hunting DX" - making long-distance contacts on different continents (or covering an unusually large distance at the given circums...

Programming the Bluegiga BLE112 Bluetooth 4.0 module with Linux

Why? BLE112 is a Blutooth 4.0 or Blutooth Low Energy (BLE for short) module that contains a microcontroller packed with an awsome firmware that lets you write Bluetooth 4.0 applications in a very user-friendly language called BGScript.

Speeding up bitcoin-qt on Linux

The problem After freshly installing bitcoin-qt - the de-facto bitcoin client - to a computer, it starts downloading "blocks" from the network. The last few (tens of) thousands of blocks are especially slow, and the client is using the disk heavily. Examining the disk usage closely with iostat showed that the disk utilization was 100%, but at a very low data rate. My disk can read and write about 150 MBytes/second if utilized properly, but bitcoin-qt could only write about one megabytes per second. (EDIT: thanks for the donation, you rock! :) )

Finding a Hamiltonian path - a randomized aproach

The problem There is an international programming contest in Hungary held in every year. I like to participate, the problems are very entertaining. One of the problems in 2003 was an idealized DNA sequence assembly based on short reads. The sequences of course were generated by a computer (they weren't actually sequenced DNA data), and the input was very "clean": There were given N reads, each L long. The sequences overlapping exactly at five bases (five characters) There were no read errors, or any kind of noise That's it. It felt tempting to build a graph of that data. Doing it in Python, the adjacency dictionaries (one forward, one reversed) was built in a couple dozen seconds for the largest files. (Python dictionaries are hash maps, they're pretty fast, and scale well.)

ERROR: "Problem with InfiniDB process PrimProc, should be a single version running"

InfiniDB Infinibd is a column-oriented database (actually a MySQL storage engine, or to be more precise, a MySQL distribution with this special storage engine). It can handle analytical / reporting queries very well. ERROR I installed it on my laptop to form a nice data warehouse / reporting development environment together with Pentaho's tools. It did OK for a while, but it seized to work about a week ago. Upon startup, the /etc/init.d/infinidb script gave this error message: Problem with InfiniDB process PrimProc, should be a single version running

Implementing a Hilbert (90 degree shift) filter in Python

Why? A digital 90° phase shift filter is an important building block of the so-called Software Defined Radios (SDRs). And SDR is a radio that has (relatively) minimal hardware, and most of the features are implemented in software. There are no fancy buttons and displays, but there is a UI application that controls the box. The box is a direct conversion receiver. It just converts part of the radio frequency spectrum to the audio spectrum (the reality is a bit more complicated, but you got the idea). An SDR usually provides two signals that are almost the same, except one signal's frequency components are shifted 90 degrees in one direction. Given these two audio signals, the software can do anything a conventional receiver can achieve with bulky components or expensive integrated circuits. Plus, the software can be changed easily. Actually this is the greatest thing in SDRs. The software can demodulate AM signals by LW-MW-SW broadcast stations, or FM usually encountered ...

Converting a dual-boot MBR partitioned disk to GPT

Background story I always liked computer games. My first PC was a Pentium 100 MHz machine with very little RAM, which was dedicated almost entirely to a RAM disk. My first precious PC was lacking a hard drive. Every time I wanted to use it, I had to boot up from a floppy and copy software from a few other floppies to the RAM disk. One of my favourite games was UFO: Enemy Unknown. It took a lot of time to boot and copy everything in place, so my machine was on most of the time, and I played a lot on it :) This kinda shows my commitment to PC games. The famous game was recently rebooted by Firaxis as "XCOM: Enemy Unkown". The game was kinda sluggish on my current setup, so I decided to buy new hardware.

ERROR: Pentaho Data Integration (Kettle) process runs twice

The Problem I work a lot with Pentaho Data Integration a.k.a Kettle toolkit. For those who don't known: Kettle allows you to build processes with a GUI that can be run in the IDE or from the command line, and reads data, converts and transforms it, then spits it out. It can deal with a lot of databases and various file formats, can invoke shell scripts, can run JavaScript snippets, and perform various conversions and transformations. Very handy when you have to load large, broken CSV files into relational databases just to mention an example. I recently re-designed one of our processes (or "jobs" in Kettle) when something really strange showed up during testing. Part of the process run twice. It seemed like I'd duplicated the whole process from some point. The IDE is basicly allows you to build a graph, the nodes are the process steps, the edges are telling what to do when a node was finished. Clearly, beside error handling edges, I only draw a single edge...