Project announcement: UZLGastennetLogin

One month ago, I bought an android smartphone and a few days later my first app was born: UZLGastennetLogin! =)

Note: This app is only useful to people working at or visiting the University Hospitals Leuven.

At UZLeuven we have a separate network to provide internet access to alien/untrusted devices: patient, visitor or external company laptops, tablets, smartphones etc. You need a personal access code to access this network though. When you are not logged in, any website you try to access, redirects you to a login portal.

There are 2 problems using this network on a smartphone:

  • Not all smartphone browsers can display the login page properly, so it is impossible to access the internet.
  • Every time you turn off your wifi (to save battery) or loose signal (very likely in an elevator), you have to relogin, which is quite time-consuming.

This is where the app will come in handy:

  • Detect network changes (without polling)
  • When UZLeuven guest network is detected, check whether we are logged in, if not login in the background using preconfigured credentials.
  • Indicate current state through a widget.

The first version of the app allows only manual login, but it already saves you from using the webinterface and re-entering your credentials over and over again. Today, I published it on the market.

Available in Android Market

Mouse locating kwin effects

Ever felt lost on your desktop? Or more precisely: unable to find your mouse pointer within a (few) second(s)? I know I have, and nowadays on 2 monitors or more (or a huge 48″ tv), this isn’t an exception.

In KDE, we always had the track mouse effect which draws circling yellow stars around your pointer. Unfortunately, this is not adequate anymore. That’s why I thought it would be fun to write my own effect which would do a better job. The key to success seems to me that it should be a full screen effect drawing the attention to the right spot no matter where at the screen you’re looking.

For now, I’ve devised 3 effects:

  1. Looney tunes zoom: fancy term for describing an effect which darkens the background and zooms in on the cursor with a spotlight. I somehow associated that with intro or outro from looney tunes, not sure if that makes sense. :p
  2. Sunray: animates some kind of rays around the mouse position.
    kwin sunray mouse locate effect
  3. Radial texture animation: least fancy name, as it is so generic. 🙂 It just animates a texture from outer to inner. The concrete application is to show arrows pointing to the mouse.
    kwin arrow mouse locate effect

For the last 2 effects, I don’t have screencasts yet, don’t ask, I’ve been through hell to create the first one. Also, for the last one, I have to fix the texture uv map generation, or use a better mesh (or maybe a different technique 🙂 ).

Project announcement: KonnectionMonitor

A few years ago, back in 2007 when I started using Linux as my primary operating system, I had a few itches to scratch because I missed my handy windows utility programs I’d become grown to. One of those utilities was TCPView which monitors incoming and outgoing TCP connections.
Hence, a new project was born: KonnectionMonitor. It’s goal was to mimic the TCPView utility on Linux/KDE.

Learning the /proc filesystem, I was amazed how easy it was to write such program. I’m not sure if it is the ideal way, but it works. Packaging seemed less easy though. 🙂 Nowadays we have a fully fledged opensuse build service and kde-apps.org integrating with it which makes publishing your soft a lot easier. I already gained some experience packaging VocTrainer and Telemeter Plasmoid, so it was only a matter of finding time to package this oldy. It’s baptized with the kind of cheesy name KonnectionMonitor which suggests it is built for KDE, but currently there is no KDE dependency present, so feel free to use it bloatingly-free in other desktop environments. 🙂

One remark: if you know TCPView, you will currently miss the close connection command in KonnectionMonitor. I’ve looked into ways on how to implement this on linux and there is no obvious way to do that (there is no api function). The only solution coming close to that, is sniffing the network and sending a RST (reset) packet (which in turn involves some other low level network tricks to be able to send a valid packet to the right host). I’ve already started experimenting with libpcap. It should be doable, stay tuned.

For now, we have version 0.1 which can be downloaded from kde-apps.org. The source is on gitorious.

KonnectionMonitor v0.1

Telemeter plasmoid v0.2

Most important improvements are:

  • Auto refresh respecting server-side request throttling.
  • Asynchronous webservice request prevent plasma from freezing (when webservice time-outs)

Keep in mind: the telenet webservice does not always work. 😉

Changelog
– added icon
– don’t let theme determine label color
– autorefresh option: takes ticket expiry into account
– deny refresh request when request is in progress
– don’t fetch at startup when configuration is needed
– gui feedback when refreshing
– show usage and next request time in tooltip
– on error, show webservice error message in tooltip
– refresh in separate thread: fixes plasma hang when webservice is out of service

Download

Telemeter plasmoid v0.2

Telemeter plasmoid v0.1

The telemeter plasmoid works for some time now but when I tried to distribute it, I entered packaging hell and things got deferred.. until some guy reminded me about it in the comments. 🙂

I could explain how I eventually managed to work around the packaging issue, but I’ll save that for another post 😉

Without further ado, Telemeter plasmoid v0.1 is released, go get it at kde-look.org!

Changelog:
v0.1 / 2011-04-06
=================
– fetch telenet account usage from telemeter webservice using gsoap
– store credentials in plasmoid config or kde wallet
– click on plasmoid to trigger manual refresh (telemeter service protects itself by denying access when too many requests happen consecutively, the plasmoid currently does not prevent you from doing this)
– automatically refreshes at configurable interval
– use Plasma::Meter::AnalogMeter with custom svg for better text positioning

Telemeter plasmoid configuration

Win7RCAutoShutdownAlarm v0.2

Today I finally discovered why there always remained some garbage in the transparent area of the systrayicon where the piechart had passed by. It also turned out it really pays to read up-to-date Qt docs. I accidentally noticed the difference when reading the source. 🙂

Things learned:

  • when constructing an QImage you plan on using transparency on, always initialize it properly (using some fill you like).
  • when using QPainter on QImage, always use a alpha premultiplied format, for performance reasons.

I thought this new acquired knowledge justifies a new release. 🙂 So welcome v0.2 with the following changelog:


v0.2
- fixed systray render bug leaving garbage in transparent area
- added 128px taskbar icon
- added transparent circle background, otherwise you don't see anything near the end ;)

I <3 libpcap

A few years ago, I wrote a small app showing the open network connections (announcement following shortly). I never figured out how to measure transfer rates over the connections since the kernel does not seem to provide this info through the /proc filesystem (only some data queue length which is related to kernel mem usage).

Today we all know and love iftop, but where does it get that info? Simple: pcap! Out of curiosity, I checked out the libpcap docs to see how hard it would be to get started. Turned out to be pretty simple! There are a few excellent tutorials which get you started real fast. In about half an hour I made this very simple sniffer which accumulates the received bytes and packets per second and prints it out when the second changes. Each line contains the timestamp (sec), KB/s and number of packets received in that second. Here you can see me watching a youtube vid 🙂

Opening device eth0
ts = 1285276934, load = 0.7 KB/s (4)
ts = 1285276935, load = 0.3 KB/s (1)
ts = 1285276939, load = 0.9 KB/s (4)
ts = 1285276940, load = 14.4 KB/s (44)
ts = 1285276941, load = 294.9 KB/s (764)
ts = 1285276942, load = 608.9 KB/s (1505)
ts = 1285276943, load = 1164.4 KB/s (2882)
ts = 1285276944, load = 1242.6 KB/s (3064)
ts = 1285276945, load = 1166.6 KB/s (2880)
ts = 1285276946, load = 69.9 KB/s (179)
ts = 1285276947, load = 140.1 KB/s (363)
ts = 1285276948, load = 139.9 KB/s (361)
ts = 1285276949, load = 139.7 KB/s (358)
ts = 1285276950, load = 139.7 KB/s (358)
ts = 1285276951, load = 139.3 KB/s (358)
....

It is a good test to see if the calculated payload is correct. The initial burst of ~1.2MB/s confirms that. 🙂

Project announcement: Win7 RC auto reset alarm

Okay, this is becoming a bit outdated since windows 7 has been released for quite some time now, but you never know there are some other poor lads like me out there still using the RC. =)

Why I am using the RC is quite a story actually.. About a year ago, I bought this really beefy game rig. I tried some games using wine and although in general I managed to play them, I found it a bit silly that I wasn’t enjoying my new box for a 100% since there was always some direct3d feature not implemented yet or subpar framerate. So I decided I’d buy a game console software, aka Windows. But XP was almost EOL, Vista was a mess and Seven wasn’t released yet. So I figured I’d install the release candidate and see how it went from there.

All went well! And for the first time in many years, I even felt Microsoft was back on track. All my games ran very well. Until the day of doom, March 1st 2010. 🙂 On that day, Microsoft started to reboot all windows 7 rc’s every 2 hours. And by reboot, they don’t mean clean shutdown, they mean hard reset! Fair enough, it’s not like I paid for it.

Anyway, since I use Wintendo only for games, I realised it was actually a good thing that windows made me take a brake every few hours. It’s a good time to reassess the situation and maybe conclude to stop and do something else. 😉 No matter how I tried, I would always lose track of time and end up with game progress not being saved, steam stats not updated/lost, etc. So that’s where my little “windows 7 rc auto power off alarm” comes in. =)

This little utility will give an audible warning every minute when 1h45min have passed by. 10 mins later it will warn you with an additional sound, every 2 secs, that now the time really has come to finish your current mission/save your progress and do a proper shutdown. It is advisable to put this program in your startup folder so that it automatically starts when you log in, although it does not really matter when you start it as it initializes the timers using the boot time and not the time the program is started.

When the program is started, it sits in the system tray. Clicking on it will show you how much time is left. If you have a second monitor you can also use the pie chart countdown widget to have a visual indication on when to shutdown. Activate it by right-clicking on the systray icon and click “Show timer”. It shows green and should turn red when 0-hour is approaching. Click and drag it to move it around, scroll on it to scale.
Win7RCAutoShutdownAlarm desktop widget Win7RCAutoShutdownAlarm systray icon

Source is on gitorious, binaries can be download from qt-apps.org.

That’s it!