Git vs Mercurial

I’ll post my findings on why I prefer one over the other here.

Pro Git

  • feature branch workflow that doesn’t leave dangling branches all around (hg clone is a workaround imo).

Pro Mercurial

  • hg is one character shorter than git
  • hg st is many characters shorter than “git status” – it’s much more convenient
  • hg can reference commits using a short number and not only hashes
  • hg serve

Cons Git

  • None yet really.

Cons Mercurial

  • It’s Python. Clients use Windows. Too often a non-optimal match.

Other Thoughts

Eclipse is moving to Git.

With just a few branches and simple workflow, MercurialEclipse has served well. EGit just recently became useful enough for day-to-day work.

Gitorious is nice (and free), I’ve not seen a similar tool for Mercurial yet.

Lexmark E120n with cups

After a system reinstall (new system hard drive, this time round with Ubuntu Server 10.10 64-bit), I needed to setup CUPS again with a network connected Lexmark E120n printer, which works quite well. Linuxprinting.org however lists a PPD/driver that doesn’t work well at all – for larger files (PDF with airplane boarding passes) it just spits out one page and then stalls.

Enabling remote configuration of CUPS

All of this needs to be modified/added to /etc/cups/cupsd.conf, and then the host can be accessed using HTTPS and /admin/.

Listen *:631

# Restrict access to the server...
<location />
  Order allow,deny
  Allow all
</location>

# Restrict access to the admin pages...
<location /admin>
  Encryption Required
  Order allow,deny
  Allow all
</location>

# Restrict access to configuration files...
<location /admin/conf>
  AuthType Default
  Require user @SYSTEM
  Order allow,deny
  Allow all
</location>

And restart cups. This will however complain with “400 Bad Request” and the log says Request from "1.2.3.4" using invalid Host: field "hemma.wendt.se". This is because Debian/Ubuntu default config simply chose this setup. The fix:

ServerAlias *

Setting up the printer

Driver: Lexmark E120n Foomatic/lj4dith (grayscale)
Connection: socket://192.168.1.137:9100
Defaults: job-sheets=none, none media=iso_a4_210x297mm

I’ve put up the PPD file I use should I need it again.

SMS Gateway API from 46elks

I just got an alpha invitation to try out the 46elks SMS API. These are my notes.

My Own Summary of The API

  • Several numbers can be tied to your account
  • RESTful HTTP API (with version in base URL) with JSON responses
  • BASIC HTTP Authentication
  • HTTPS
  • Simple GET web hooks / URL callbacks (per account and per number) for inbound delivery with message payload as URL query parameters

Nice

  • “Splitting and joining multi-part SMS messages are automatically handled by the API.”

Opportunities

Delivery Notifications

I’d like to be able to know if a text (SMS) has been received by the target recipient(s). We used this when we had several people “on standby”, if the first person was not reached withing one minute, we moved on trying to contact the next one.

A callback URL for delivery notifications (tracking) would be perfect.

Error Messages

The API docs doesn’t mention error codes/messages or what types of validations are carried out on the backend.

Non-plain Text Content

VCards is the type I’ve ran across previously.

Other Notes

Character encoding is said to be UTF-8 which is fine. The docs should perhaps be more clear on this since they accept parameters with GETs (and in URLs, there is not standard way of telling what character encoding is used).

I’d prefer if the URL callbacks used POST (and JSON payload). GET URLs are limited and even though not many users tend to send 1024+ long texts, my mother does and that would risk being cut off somewhere down the line (or software stack).

Delivery limits – how long will 46elks hold my messages when my server park is out? How many attempts at delivery will 46elks make?

The documentation should have perhaps used https in the examples.

Timeout limits for replying to a message should perhaps be in there, as well as the option to turn this feature off. If my service somehow is throwing error messages out, I’d prefer them not being sent to my clients.

Bottomline

As an alpha preview – this is great and looks really nice and convenient to use. A complete (send and admin account) interface can be written using HTML+JavaScript only. As expected, there are a couple of things missing from the API, such as cost information/account balance and perhaps type (prepaid, invoice, …).

Update: I put out the quick hack files I used to try the API on GitHub.

Apache2, WordPress 3, OpenId och segfault

Pillade med Squeeds blog igår och det slutade med Segmentation fault. Det visar sig att OpenID-pluginen kikar efter om zend finns installerat och denna kik gör att Apache-processen segfaultar. Mycket intressant eftersom jag kör samma setup på min privata blog med exakt samma programvaror och hos samma hosting partner (GleSYS). Min instans är något större, men det borde inte spela någon roll.

Debugging och core dumps: peta in CoreDumpDirectory /tmp i configen, sedan

aptitude install php5-dbg
ulimit -c unlimited
/etc/init.d/apache2 restart

Och för att kolla på en stacktrace:

gdb /usr/sbin/apache2 -c /tmp/core.pid
set pagination 0
bt
bt full

Lyckades dock sätta upp en ny “ren” instans som fungerar utan problem. Antar att webbnissarna som installerat drupallite olyckligt ändrat något jag inte kan hitta.

Google OpenID

https://www.google.com/accounts/o8/id fungerade bra för registrering av konto. (Man behövde inte krångla med https://www.google.com/accounts/o8/site-xrds?hd=squeed.com som URL.) Efter att XRDS-Simple-pluginnen installerats funkade allt som väntat.

Nordstedts spanska fickordbok

Översättningarna är i regel av mycket hög kvalitet. Appen som sådan saknar lite funktionalitet, i min smak följande:

  1. Möjlighet att spara vissa ord under “mina favoriter” eller liknande. Det är inte ovanligt att man förbereder ett litet batteri med ord eller fraser som behövs för att t ex byta ut en trasig varmvattenberedare (calentador de agua). Att ha dessa tillgängliga i hettan skulle vara mycket användbart.
  2. En historik över senast valda ord hade också hjälp mycket. Upp till de 100 senast markerade orden hade varit kanon.
  3. Stöd för landskapsformat – det går snabbare att skriva in ord, och blir framför allt färre misstag, med ett “fullstort” tangentbord.
  4. Länk till gramatikhjälp från verb. När man slagit upp “veta” och får saber, så vill man direkt få se böjning av detta. Detta bör fungera för både vanliga regelbundet böjda verb samt vanligt förekomna oregelbundna verb.
  5. Tangentbordet försvinner när man kommer tillbaka från ett ord.

Ord som saknas

Faktura. Fanns som synonym under räkning, samt fakturera.

Sony Ericsson Arc

After about one week’s usage, these are the bug’s I’ve run into.

Issues

Stays in USB-to-PC mode

Somehow, my phone won’t get out of this mode. In the notification area, it still asks if I want to connect the memory card, even though I disconnected the phone several hours ago.

Battery drain

Sure, using wifi does consume battery but it’s still worse than on my N900 with a 1.5 yrs old battery.

Folder menu doesn’t collapse after app start

When an application is started from a folder in the bottom “container” of the home screen, then that folder is still open when returning from the app.

Findings

A hardware button to lock orientation

Lying in bed or in a sun chair, having that Ipad lock on the side was really useful. I’d go with an easily accessible software switch, but going into settings to turn it on/off is too far away for my liking.

Services not restarted when requested

I accidentally killed a few services too many (when looking for performance killers) and suddenly bluetooth obex transfers stopped working, as well as all searches (both web and speech searching with google.com just stopped working, the browser showed up but didn’t do anything).

Translation is poor

One example: When Google voice search is analyzing the recorded sound, the top label says “Working” in English, and “Fungerar” in Swedish (“it works”).

Gmail is a separate application from e-mail

Why, oh why? I’ve yet to see the amazingness of this.

No unified communication out of the box

Why, oh why? I’d like:

  1. one stream of directed messages (incoming and outgoing – basically all conversation, texts/SMS, email, jabber, twitter DM etc …)
  2. one stream of social messages (facebook, twitter, RSS feed etc)
  3. one unified view of my communication with a contact (conversation and social stream separated probably)

Performance decrease with usage …

Starting apps gets slower and slower and slower and slower. Without noticeable change in available memory.

Sitecom WL-357

Skaffade i Spanien en Sitecom Wireless Mobile Router 300N WL-357 för att dela på den internetaccess vi har via Orange. Det fungerar för närvarande inte på grund av att det USB-3G-modem som Orange skickade med (minst ett år “gammalt”) inte stöds av Sitecom-routern. Loggen säger:

day  1 00:00:32 [SYSTEM]: DHCP Server, Sending ACK of 192.168.0.100
day  1 00:00:18 [SYSTEM]: WAN, Unsupported USB device vid:0x12d1 pid:0x141b
day  1 00:00:06 [SYSTEM]: WAN, Detect USB device vid:0x12d1 pid:0x1446
day  1 00:00:06 [SYSTEM]: WAN, start Mobile 3G mode
day  1 00:00:06 [SYSTEM]: WAN, stop Mobile 3G mode

Modemet funkar dock fint med Ubuntu (man behöver bara installera paketen modeswitch och modeswitch-data) så det är inte fel på modem eller abonnemanget, ett “Orange Internet Everywhere (Prepago)”.

hemsidan för routern fanns dock räddning i form av ny firmware med nyare lista med USB vendor- och produkt-ID:n. Kerneln gick inte att tanka upp, men application-uppdateringen svalde den och det var tillräckligt för att komma igång. Loggen säger nu istället:

Jun 24 15:57:51 [SYSTEM]: NTP, Local time=2011/06/24 15:57
Jun 24 15:57:51 [SYSTEM]: NTP, Daylight saving status: Disable
Jun 24 15:57:51 [SYSTEM]: NTP, Time zone = +0.0 Greenwich Mean Time: Dublin, Edinburgh, Lisbon, London
day  1 00:01:01 [SYSTEM]: UPnP, Start
day  1 00:01:01 [SYSTEM]: UPnP, Stopping
day  1 00:01:01 [SYSTEM]: NTP, start NTP Client
day  1 00:01:00 [SYSTEM]: DNS, start DNS Proxy
day  1 00:00:58 [SYSTEM]: NET, start Firewall
day  1 00:00:58 [SYSTEM]: NET, start NAT
day  1 00:00:58 [SYSTEM]: NET, stop Firewall
day  1 00:00:58 [SYSTEM]: NET, stop NAT
day  1 00:00:58 [SYSTEM]: WAN, IP changed, restart services
day  1 00:00:58 [SYSTEM]: WAN, New IP = 90.169.113.215
day  1 00:00:56 [SYSTEM]: PPP, CHAP Authentication Succeeded
day  1 00:00:42 [SYSTEM]: WAN, Mobile 3G, SIM Card is ready
day  1 00:00:27 [SYSTEM]: WAN, Identify USB device 'Huawei E1552'
day  1 00:00:27 [SYSTEM]: WAN, USB device caps (0x0)
day  1 00:00:06 [SYSTEM]: WAN, Detect USB device vid:0x12d1 pid:0x1446

Bitcoin mining

Testar lite på chans att gräva efter guld. Jag skaffade ett AMD Radeon HD 6XXX från inet.se, drog in Ubuntu server 10.10 64-bit och installerade xserver-xorg-core, och följde i övrigt

Uppdatering

Det tog lite tid att komma igång, och att hitta en mining pool som ger OK utdelning för erlagd insats. En lokal ordentlig spik i valutakursen mot dollarn kom när Silk Lane sålde knark mot “ospårbara” bitcoins. Inom loppet av fyra dagar gick kursen från ca 6 dollar till uppåt 35! Jag ändrade munin-graferna under tiden så man ser inte den branta uppgången i bilden nedan, men kursen dök (efter att senatorer drog in lite tjänster och fick Silk Lane nedstängt) så ser det ut att stiga igen. Under nästa vecka skall jag gräva för deepbit.net igen mot fast ersättning och se om det ger bättre utdelning än BTCGuild.

Det är för övrigt galet enkelt att skapa Munin-grafer. Python äter upp dåligt formaterad JSON som Yaml (Google currency har inte ” på objektattribut).

Valutakursen BTC-USD från MtGox

Valutakursen BTC-USD från MtGox

Intjänad bitcoins from BTC Guild

Intjänad bitcoins from BTC Guild

Plånbokens värde i SEK

Plånbokens värde i SEK

JavaForum 2011Q2

Igår var det JavaForum 2011Q2 som denna gång hölls på Ullevi Konferenscenter – en lokal jag tyckte funkade mycket bra. Jag hade anmält mig som talare på ämnet Clean Code med förhoppning om att få till lite diskussion – det är ändå inget jättenytt eller kontroversiellt ämne.

Jag hade 30 minuter och använde 21 av dem till att agitera med presentationen nedan. Övriga 9 minuter höll jag tyst bäst jag kunde för att få lite diskussion och det gick – det var olika deltagare som ställde frågor och svarade. Ett par småskratt och målet med kvällen nåddes.

Kanske kommer någon in och betygar min prestation på Speakerrate?

Finns också som PDF.

2,5-årskoll

Fick hemskickat ett papper där man skulle utvärdera barnets språkutveckling och första frågan löd:

Hur många ord kan barnet säga (uttalet behöver inte vara korrekt, men det skall vara tydligt att förstå)

  • 0-25 ord
  • 0-50 ord
  • mer än 50 ord [Ja, det borde vara fler, inte mer]

Så, för att vara på det säkra började jag skriva upp alla ord Leia använde igår och idag kom vi upp i 50 (utan att använda namn).

  1. springa
  2. kom
  3. kopp (glas)
  4. gröt
  5. mun
  6. näsa
  7. öra
  8. öga
  9. koja
  10. titta
  11. där
  12. katt
  13. kaka
  14. sko
  15. kille kill (kittla)
  16. hoppa
  17. tå, tår
  18. gott
  19. glass
  20. inne
  21. sitta
  22. gunga
  23. täcke
  24. mage
  25. napp
  26. hjälp
  27. banan
  28. mera
  29. en gång till
  30. här
  31. ut
  32. korv
  33. tomte
  34. boll
  35. inte
  36. bil (brum brum)
  37. päron
  38. äpple
  39. sked
  40. min
  41. dumma (dig)
  42. arg
  43. tröja
  44. bada
  45. hålla
  46. äta
  47. här
  48. själv
  49. kolla
  50. penna
  51. kram

Och bland namn skrev vi upp

  • bror
  • mamma
  • pappa
  • Anton
  • Lisa
  • Fredrik
  • Cilla
  • Johan
  • Farfar
  • Farmor
  • Nej
  • Ja
  • Hej Hej, Hej då
  • mormor
  • Tova
  • Birk
  • Natalie
  • Leia
  • Pippi
  • Ida
  • Emil (Imle)
  • Sully (Monsters Inc)
  • Micke
  • Jenny
  • Anna

Check. :)