February 01, 2007

I have a plan




... and a prototype. This is a brave, new prototype for my dancepad sensors, using an off-the-shelf weight/force sensor from a cheap digital scale in a Wheatstone bridge, driving up the voltage differential with a op-amp and then using the other half of the dual op-amp to make it more digital with a Schmitt-trigger.

The protoboard probably has a few extra components that aren't really necessary, the opamp should have enough power to drive two transistors, but in this version the op-amp drives an LM311 comparator, that has an open-collector open-emitter output. Since the differential amp + Schmitt-trigger are connected inverted, this arrangement suits perfectly, as the comparator collector can be inverted using a pull-up resistor.

Now "all" that's left to do is finalize the calculations for gain-resistors in the diff-amp, draw a pcb, order a few parts and duplicate this circut 18 (or 16) times = 2 pads, 9 or 8 contacts each. I haven't really decided on the center button yet. It would be nice, but it's not really that necessary in the near future. The good thing is, if I make the pad-structure properly I could add the 9th sensor pretty easily.

Oh, one thing I forgot in the above list: build the pads. That means lots of plywood, several smaller chunks of wood, polycarbonate and a wide variety of other strange pieces of hardware.

I also have a cunning plan for the player menu controls for the pad, as I don't like the foot-operated switches so many DIY dancepad projects use. And since I'm using force-sensors here, you can be assured that the other parts are going to utilize something weird too.

Written at 00:02 | Comments (0)

September 20, 2006

Python 2.5 released

Python 2.5 has been released into the wild, now with more features! One of those new features are conditional expressions, similar to the ternary ?: -operator in C/C++ and some other languages. And to show a bad example of how useful a feature it is, here's a small snippet returning a float range generator utilizing anonymous generators, conditional expressions and lambda functions:


frange=lambda start, stop=0.0, step=1.0, include_stop=False:
(
(min if step > 0 else max)((start, stop)) + index*step
for index in xrange(int(abs(start - stop) / abs(step) + 1))
if index*step < (abs(start-stop) + (step if include_stop else 0))
)

Like the xrange() and range() functions, the generated sequence does not include the stop-value. However, since inclusive ranges are quite useful with floats, the default behaviour can be overridden by setting the include_stop argument to True. In this case the stop-value is included in the range if it is a multiple of steps from start.

Written at 10:49 | Comments (0)

March 17, 2006

Putty for Symbian OS

There was one thing I didn't like about in s2putty: it didn't take advantage of the full resolution available on the device, but used traditional resolution that was scaled up. The result was a bit fuzzy, and nearly gave me a headache.

I downloaded the latest beta source, as it is supposed to support S60 3rd Ed and the double resolution. A quick browse thru the sources revealed that it should support double resolution on N90 as well, if it provided the proper flag for the OS. Reading the 2nd Ed FP 3 C++ SDK docs I realized all I have to do is recompile the project with the correct SDK, and the ELayoutAwareAppFlag is turned on. The other choice would've been to find the CAknAppUi::BaseConstructL() method and give it the flag, but since this required no source changes it was the way to try out first...

Workes like a charm, the text is crisp and clear, with the 5x7 font it gives a 70x53 terminal window in fullscreen mode.

If you don't want to compile the project your self, you can download s2putty 1.4.1 beta 1 for S60 2nd Edition FP 3 (PGP Signature) and install it on your device, if you trust me enough :-)

Update: it does have a small problem with fullscreen setting, if you store fullscreen mode as default. It won't activate fullscreen UI mode at startup, although the internal state is set to believe it is in fullscreen mode. You have to toggle fullscreen mode twice (off-on) to actually use it in fullscreen mode.

Written at 13:51 | Comments (0)

February 23, 2005

Comments are back

I've allowed commenting again, after implementing a simple and stupid spamblocker. You have to enter your email address twice. The address is mangled, but available at the moment. Some day I'll make the spam blocker fancier, but for now, this'll do until I get new comment spam.

Written at 11:02 | Comments (0)

December 08, 2003

Mobiililogausta

Tässä välissä voisi kai mainita, että nyt voin olla postaamatta logientryjä kännykänkin kautta. Pienen pätsäyksen ja pulauttimenkirjoittamisen jälkeen .procmailrc:heni ilmestyi pieni resepti, joka syöttää tietyt kännykästäni tulevat viestit mtpost.py-kikkareelle, joka puolestaan tekee blogi-entryn käyttäen hyväksi hieman pätsättyä MTShell-1.107 pulautinta.

Softavaatimuksia: mtpost.py vaatii toimiakseen Python-2.2:n tai uudemman sekä Python Imaging Libraryn. MTshell vaatii perlin ja paljon kirjastoja, sekä Movable Type:n, ja vieläpä sellaisen installaation, joka käyttää MySQL-kantaa taustavoimana.

Written at 12:56 | Comments (0)

February 05, 2003

MS-word ja haku-lausekkeet

Ei sitä enää tänäpäivänä luulisi ihmisen törmäävän näin tyhmästi tehtyyn pattern-matchingiin kuin mitä ms-word 2000 (9.0.4402 SR-1):ssä on.

Taustaa:

Haussa on mahdollista hakea wildcardien avulla, jotka vaikuttavat regexpeiltä MS:n omalla syntaksilla. "?" täsmää mihin tahansa yhteen merkkiin, "[a-d]" täsmää mihin tahansa merkkiin joukosta a:sta d:hen, "[!a]" täsmää ei-a:han, "*" täsmää 0 tai useampaan edelliseen merkkiin ja "@" täsmää 1 tai useampaan edelliseen merkkiin.

Näin siis teoriassa, käytäntö onkin sitten toinen juttu.

Tänään piti löytää eräästä dokumentista §-merkkeillä erotettuja sanoja, muotoa "§sana§", ja sanassa ei ole yhtään välilyöntiä. Ensimmäinen yritykseni oli tietenkin kokeilla tuttua säännöllistä lausetta "§[^ ]*§" ja muuttaa se MS-muotoon "§[! ]*§".

Ei onnistunut. Lause "§[! ]*§" täsmää myös kaikkeen tekstiin kahden §-merkityn sanan välissä, joka ei mielestäni täsmää tuohon lauseeseen. Hämmentävää kyllä, lause "§[! ]@§" toimii niinkuin ohjeissa sanotaan, eli §-merkki, 1 tai useampi ei-välilyönti ja §-merkki.

Tästä hämmentyneenä päätin kokeilla vähän lisää. " *" täsmää vain ja ainoastaan välilyönneistä koostuviin vaihtelevan mittaisiin merkkijonoihin, mutta " *a" täsmää kaikkiin merkkeihin kursorin paikkaa seuraavasta välilyönnistä seuraavaan a-kirjaimeen. " @a" täsmää puolestaan vain ja ainoastaan sellaisiin merkkijonoihin, jotka alkavat välilyönneillä ja niitä välittömästi seuraavaa yksi a-kirjain.

On se hyvä että joku on taas ajatellut käyttäjän puolesta, ja tehnyt sääntöihin poikkeuksia sekoittamalla säännöllisiä lauseita ja ns globbing-patterneja samoilla merkeillä samaan hakufunktioon ilman valinnanmahdollisuutta.

Written at 10:18 | Comments (0)

January 31, 2003

Antti vs bind 1 - 0

Muutaman tunnin säädön jälkeen homman pitäisi pelata vihdoin niinkuin pitää, nimipalvelu näkyy ulos, ja sisäänpäin se antaa sisäverkon IPt, ulos julkisen IPn.
Elämä on laiffii.

Jos jotakuta kiinnostaa oikeasti miten tuon tein niin tässä lyhyesti:
named.conf:ssa on acl sisäverkolle, ja sitten tuolle rekursio-oikeus, view:llä rajattu näkymä sille ja muille erikseen, sekä kaksi zone-tiedostoa per zone, toinen julkisille IP-osoitteille ja toinen sisäverkon osoitteille. Reverseä en ole vielä säätänyt toimimaan, sen virittäminen saattaa kestää jonkin aikaa. alla sopivia pätkiä named.conf:ista

acl localnet {
  192.168.xx.xx/xx;
  127.0.0.1;
};

options {
// the usual stuff plus
allow-query { localnet; };
allow-recursion { localnet; };
forward first;
forwarders {
192.168.xx.xx; # this the IP of this DNS server
// if you have other DNS servers, forwarders or otherwise, put them here
};
};

// Local network sees local IP-addresses

view "local" {
match-clients { localnet; };
recursion yes;

// Put the usual zone definitions here, e.g. root and localhost

// then the local network version of your zone:
zone "mydomain" {
type master;
file "/etc/bin/zones/local.mydomain"
};
};

// The following view is for the rest of the world:

view "global" {
match-clients { any; };
allow-query { any; };
recursion no;

zone "mydomain" {
type master;
file "/etc/bind/zone/mydomain";
};
};

Written at 23:27 | Comments (0)

Linjat vinkuu

DNS-serverit ja whois-kannat ovat päässeet suhtkoht hyvin yksimielisyyteen siitä että mun domain sijaitsee nykyään tässä koneessa. Spämmifiltteri on vielä hieman opettamatta, mutta kyllä sekin vielä jossain vaiheessa rupeaa toimimaan kunnolla.

Written at 19:12 | Comments (0)

January 27, 2003

dvbn tuskaa

Ei voi ymmärtää. Yritin saada Superbowlia levylle dvb-t -kortilta, ei onnistu. DVB-ohjelma osaa kyll näyttää ohjelmaa kyllä hyvin montakin tuntia putkeen, mutta kun pitäisi saada sama stream levylle, niin ääni häviää noin 10 sekunnin sisällä, ja kuva-streamkin menee rikkinäisenä levylle. Ei toimi, ei.

Alkuperäinen tavoite oli saada dvb-ajuri toimimaan linuxissa ennen superbowlia, mutta eihän ne ajurit suostu toimimaan. Miten voi tehdä sellaisen ajuripaketin, jota ei voi edes käyttää normaalisti, vaan pitää ladata jossain tietyssä järjestyksessä moduulit, eikä se viimeinen moduuli _sittenkään_ löydä kaikkia symboleja.

Kun tuo linuxin puukotus ei onnistunut aikataulussa, siirsin huomioni WinXPn puoleen, ja siellä kortin mukana tullut dvb-softa vaikutti suht pätevältä. Useankin tunnin sessio kanavaa vaihtamatta ja vaihdelle sujui ongelmitta. Ensimmäinen pettymys oli ajastetun nauhoituksen puuttuminen, mutta sekin puute vaikutti kovin pieneltä sen jälkeen, kun useista yrityksistä huolimatta en onnistunut tallettamaan ehjää tiedostoa.

Ja digi-tv:n pitäisi muka olla tulevaisuutta? Toivottavasti oikeilla digibokseilla on helpompaa saada asiat toimimaan kuin tällä tietokoneistetulla versiolla.

Kuvanlaadussa ei yleensä ole kyllä valittamista, paitsi subtv:n naurettavan huonolaatuinen lähetys, jos vähänkin enemmän on liikettä ruudussa, niin kaikki muuttuu legopalikoiksi. Ja digitaaliset radio-asemat kuulostavat hyviltä. Vielä kun saataisiin ilmaan BBC World.

Written at 01:04 | Comments (0)

January 26, 2003

CSS ja turhautuminen

CSS on sinällään hieno keksintö, mutta silti jos on jokin visio, on CSS rasittavan tuskallinen käyttää. Erityisesti jos käytettävät työkalut ovat ViM ja Google. Lähinnä tuo CSS-osaamattomuus on se rasite kun yrittää saada jotain juttua kohdalleen, ja aivan varmasti tämäkään ei näytä siltä miltä pitäisi, jos käytössä on jokin toinen ympäristö kuin minulla.

Written at 14:07 | Comments (1)

Minä, blogaaja

Kuinka minusta tuli muodin orja, ja oman blogin pitäjä?
Hyvä kysymys. En ole koskaan erityisemmin lämmennyt ajatukselle päiväkirjasta, enkä siitä että moni ihminen tietämättäni tietää minusta enemmän kuin normaalin ihmisen mielenterveydelle on hyväski. Kai modernin maailman aivopesu siitä, että kaikki ovat joltain osin exhibitionisteja on saanut minutkin kuilun partaalle, ja hieman siitä yli. Aika näyttää mitä tästäkin tulee, toivottavasti jotain viihdyttävää ainakin omaksi huvitukseksi, kun voin katsella taaksepäin omia mielipiteitäni.

Written at 04:18 | Comments (0)