Search Results: "Jurij Smakov"

14 October 2013

Jurij Smakov: Broken envelope-from considered harmful

Recently I went through the process of getting my new key (C99E03CC is dead, long live 43C30A7D!) signed to replace the old one in the Debian keyring. Some people used caff to send out their signatures and in 3 different cases I did not receive the signature for my uid, leaving me somewhat dumbfounded as signatures for other uids went through just fine, as did various test emails to my address. After pestering people on IRC and discussing the issue with one of the signers, we concluded that Debian's mail servers are configured to reject any mail with invalid envelope-From header - and chances that caff-sent email is going to have an invalid one are pretty high. As far as I can tell, a valid configuration is such that echo $ USER @$(cat /etc/mailname) returns a valid email address. So, if you are a caff user, please make sure that your system is configured correctly before sending out signatures with it, namely that the emails sent using something like echo 'test' mail $ YOU are getting through successfully.

21 February 2013

Gunnar Wolf: Too cool not to repost

[ post made mainly for those poor souls who don't yet follow Planet Debian, but do follow me ] Earlier today, Roland Mas threw an idea towards whoever had too much free time: Implement a valid QR code construction that would become an interesting pattern when interpreted in Conway's Game of Life. But, as Jurij Smakov promptly showed, there is only one flaw in Roland's request: The need for too much free time. Jurij replied within ~4hr with a arbitrary string to QR code converter that allows said code to be seeded into a Game of Life interpreter. Jurij: You get all the geek points I had in store for this month.

20 February 2013

Jurij Smakov: QR codes meet Game Of Life

Challenge accepted: :-).

19 February 2013

Roland Mas: A challenge for whoever feels they have too much free time

Open question to enthusiasts, theoretical computing scientists and mathematicians of all sorts: is it possible to construct a valid QR-code that leads to interesting results when used as an initial configuration for the Game of Life? The rules: For Science! Update: The answer seems to be yes. Jurij Smakov assembled a QR-code generator and a Life engine and plugged them together for easy experimenting. And Stefano Zacchiroli noticed that using "free software" (no quotes) as the input leads to a couple of gliders endlessly traveling a field with a few still lifes. This is way beyond awesome.

5 June 2011

Jurij Smakov: Dear Lenovo ...

Let me explain something to you: jacking up prices for your laptops by 10% on June 1st and simultaneously declaring an "incredible, 5-days only, 10% off sale on all Thinkpads" on your website is not how your sell more laptops. That's how you make your potential customers recognize that they are probably better off looking elsewhere for their next laptop. Specifically, I'm talking about an Intel-based Thinkpad Edge 11 with 4GB RAM, which was listed at 663 EUR on before June 1st, but is now, during the "promotion", is listed at 736 EUR. Notably, even after the discount, it still works out to be more expensive than what Amazon UK has to offer, at 552 GBP for the same laptop (NVY5EUK).

10 February 2011

Jurij Smakov: My own little Squeeze release

Squeeze installer for sparc is affected by a number of problems, discovered late in the release cycle. In particular: These are documented in Squeeze installation notes, however it would be nice to push available fixes for these bugs into the first point release. In order to test the fixes I've created a couple of unofficial Squeeze installer images for sparc, which can be found here. See the README file for details. If you have a sparc system where install is affected by one of these bugs, it would be great if you could try it out and send a report to debian-sparc or directly to me. There is also #611314 (sym53c8xx module is not loaded automatically), but we don't know what causes it yet. For now just use a simple workaround described in the bug.

25 November 2010

Cyril Brulebois: Debian XSF News

Since people seem to like it, I ll be trying to publish some news about ongoing work on the XSF side, on a (possibly) regular basis. Let s have a look at what happened since last time I blogged about X in Debian, mostly by checking what appeared in my =debian-x mailbox. Debian XSF News #1 What are the XSF plans?

6 November 2010

Jurij Smakov: DVD media for SunBlade 1000

This might save someone a good deal of sifting through ancient posts on obscure forums: if you wonder why your SunBlade 1000 workstation refuses to boot off a freshly burned DVD, keep in mind that the standard-issue DVD drive in those machines (typically Toshiba SD-M1401) is pretty picky about the DVD media type used. Trying to boot off DVD-R discs invariably failed for me with a "read failed" error, while the same image burned onto a DVD+R blank worked like a charm.

5 September 2010

Jurij Smakov: Kernel config files

Long ago I've set up a small but occasionally useful service on merkel: Debian Official Kernel Configuration files. It extracts and stores the configuration files from all kernel packages ever uploaded to the archive (does not seem to work particularly well with stuff uploaded to experimental though). Now that merkel is going away, this service is likely going to die. If you care about things like that, and would like to see it continue beyond merkel's demise, feel free to grab the script code and historical config files, and set it up elsewhere (it's not likely that I'm going to bother).

18 December 2009

Jurij Smakov: Slow boot

For a very long time my laptop (running sid for a few years now) has been booting kind of slowly. It looked like there was a 2-3 second delay every time a kernel module was loaded, which resulted in something like 3 minutes total boot time. Never bothered me enough, but yesterday I've finally got some time to investigate. After increasing the verbosity of udev logging in /etc/udev/udev.conf I've found lots and lots of messages like this in the log:
Dec 18 00:41:46 droopy udevd-work[425]: wait for '/sys/some/path/bInterfaceProtocol' for 20 mseconds
The only udev rule file containing a reference to bInterfaceProtocol was /etc/udev/rules.d/z60_libccid.rules with the following lines in it:
# last file created by the kernel, if this is present everything should be
The libccid package itself is long gone (I don't remember installing it at all), and the versions of the package starting with 1.3.4-1 (uploaded in February 2008) do not contain this rule. However, the file survived on my system, so this rule was continuing to trigger for every device, even the ones not providing the bInterfaceProtocol at all. Removing the now-redundant file resulted in a dramatic boot speedup (it now takes about 30 seconds), so if you are experiencing similar problems, you might want to check it out.

25 April 2009

Jurij Smakov: JNI examples for Android

After describing my adventures with JNI on Android, I decided to write a proper doc on it, with detailed explanations and examples of native library usage. This doc, created using noweb, is now available online: JNI examples for Android.

10 April 2009

Jurij Smakov: Series of unfortunate events

While I did not think I would continue hacking on VoiDroid after achieving a semi-broken proof-of-concept implementation, it seems that I can t get out of it easily :-). I spent today trying to implement a solution which would allow the native C++ code to call into Java - for example, if we have a call in progress, and want to update the call status displayed to the user when it changes. The JNI library has some native callbacks which are getting called on call state changes, but getting the information to Java turned out to be a quite an experience, which, I thought, would be amusing to document, and, hopefully, save someone some quality bang-head-on-desk time. 1. Some of the threads calling native callbacks were initiated in Java (and thus known to JVM), and some where not, they were started in the native code. As JVM did not know anything about them, JNI calls would fail without too much explanation. Eventually I figured that out, and started attaching them as appropriate (JNI provides facilities for that). 2. Even after attaching, I could not resolve references to my classes from the native code, until I found a mysterious line in JNI docs: When a thread is attached to the VM, the context class loader is the bootstrap loader.. Basically, it means that when you attach a native thread, it is only capable of resolving built-in Java classes. 3. I later found a reference to a technique, suggesting to cache a good classloader from a Java-initiated thread, and later set the classloader for the attached thread to it. I implemented that, only to find out that Android s JVM is not your regular JVM, so things are slightly different here, and this technique does not work. 4. Luckily, there is an incredibly useful post describing the problem, and suggesting a workaround: caching an instance of needed class globally in native code, after calling NewGlobalRef on it, to avoid garbage collection on exit from a native function. I did that, however I only had access to the class, and Android JNI only supports calling NewGlobalRef on an object, so I had to create a dummy object in the native code (JNI_OnLoad() function, actually) and cache that. 5. That finally enabled me to call into Java from native, attached threads (w00t!). Unfortunately, you are not allowed to modify the UI (exactly what I wanted to do from my Java callback!) from a non-UI thread, which brought me right back to the drawing board. 6. As callbacks initiated from native code would not work for this reason, it was suggested to me to use a classic producer-consumer mechanism, getting Java call into the native library block until new information gets delivered by a native thread. Easily done with some pthread mutexes, and the goal is close, right? 7. Wrong! Now the problem was that if I started a UI Java thread, which would call the native function in a loop to retrieve the data (it would not actually spin, as the native function blocks until new data is available), then it would be declared not responding by the UI framework in a few seconds. I could start a non-UI thread for that, but you guessed it a non-UI thread is not allowed to update UI! Instead of resolving the problem we just shifted it into the Java land. 8. While I was simply thinking about stuffing the result into a class variable and passing it to the UI thread this way, this tutorial, showing how to display a progress indicator while doing some heavy calculations in the background, provided a more elegant idea. One can use Android s android.os.Handler class to pass messages (with arbitrary payload) between threads. That was the last piece of the puzzle, which allowed me to finally achieve a working implementation (some 10 hours or so later :-).

8 April 2009

Jurij Smakov: VoIP client for Android

I ve been working on a fun little project lately, trying to make a simple VoIP client which can be used on an Android device. It was fairly straightforward to port PJSIP SIP stack to it, however hooking it up with Android s audio system took a bit more fiddling. Once it was done, I just needed some JNI wrappers for the native functions, allowing me to call them from Java UI. Alltogether, it probably took about a month, most of the time spent chasing down incredibly stupid bugs, like trying to load a binary instead of dynamic library into Java :-). Finally, a couple of days ago I was able to build a primitive, but working application, which can successfully do SIP calls from my G1. The source code and the instructions on how to build it are available at

18 August 2008

Jurij Smakov: DebConf8 impressions

What I liked What I did not like What I did

24 July 2007

Marc 'Zugschlus' Haber: co-maintainer sought for torrus

Recently, Jurij Smakov resigned from maintenance of the Debian torrus packages. This leaves me as the sole maintainer, and I need help. torrus is an extremely powerful framework to collect and display round-robin data. It can do much more than mrtg, is cricket “done right”, but is not configurable via the web as cacti is. Its upstream is busy with their work, but active. It is written in perl and uses XML as configuration file format. It is mainly used to collect operational data from SNMP hosts and network components. It would be great if any co-maintainers offering to help would have knowledge in perl, XML and SNMP. I am currently in the process of fixing the RC bugs and, in a next upload round, other bugs that are pending. torrus is team maintained (but I am the only active team member at the moment). Its maintainer address will be set to a mailing list with the next upload. If you want to help, just subscribe to pkg-torrus-general and/or pkg-torrus-maintainers and say hello. Your help is appreciated.

20 July 2007

Uwe Hermann: Retiring the sparc32 Debian port... or not?

According to Jurij Smakov's announcement, the Debian port for 32bit SPARC machines is about to be retired. This is really sad in my opinion, as we should rather support more architectures instead of less architectures. After all, Debian is "The Universal Operating System" [1]. Now, I know that my opinion doesn't matter much in this case, but many other people who own sparc32 boxes seem to feel the same, judging from the thread which was started by the announcement. Also, I do realize that nobody wants to retire the port just for fun. To my understanding there is one major problem which needs to be sorted out in order to "save" the sparc32 support in Debian (and also in Linux!): There is no Linux kernel maintainer for the sparc32 Linux code at the moment! This seems to be the root of the whole problem. It makes maintaining a Debian port for sparc32 really hard, as you can surely imagine. Also, there seem to be too few people who actively work on the surrounding toolchain stuff (gcc, binutils, etc) which is also very important. My suggestion would be to not drop the Debian support for now, but rather set the status to "needs help" or something and actively search for contributors and/or maintainers. Heck, list it on Unmaintained Free Software, or write a "call for help" Slashdot article, post the issue on all Linux-/Debian-/SPARC-related mailing lists etc. etc. (or write funny blog posts, heh). I guess if two or three experienced SPARC developers would step up and take care of the kernel and toolchain maintenance for sparc32, there would be no reason to drop it anytime soon. Anyone?

24 February 2007

Jurij Smakov: Debian kernel configs

For a while now there has been a small but consistent demand for a simple way to obtain the kernel configuration files, used to build official Debian kernel packages. I’ve been working on a solution for that problem, and I think by now it’s working reasonably well to announce it to the world :-) . Ladies and gentlemen, without further ado I bring you the Debian Official Kernel Configuration Files. It works by scanning the archive nightly for new linux-image and linux-modules packages and extracting configs from them. If you have any comments or proposals on how to improve it, feel free to contact me by email.

13 February 2007

Jurij Smakov: SCALE highlights

I had a chance of visiting the annual South California Linux Expo (SCALE) over the weekend. It was fun, as usual. People at Gentoo booth were emerging something continuously, NetBSD people had their traditional toaster running NetBSD, FreeBSD had some pretty funky crowd, and Debian booth was too small to accomodate all the people :-) . Newbie-friendly FreeSpire had some very enthusiastic folks, showing off their new Click and Run service. They got pretty excited when I mentioned debtags to them. Krugle is a relatively new source code search engine with some nice features. Unfortunately, they were not indexing the Debian’s code repositories, but promised to fix it ASAP (and add support for crawling git repositories as an added bonus). Zenoss presented their impressive open-source monitoring system, and I had a chance to fiddle with the new TrollTech’s Linux-powered GreenPhone. Coming with its own software development kit, this gadget has some serious geek-appeal, however at a price tag of $700 I’m afraid I’ll have to pass for now. And it was exciting to learn that there are still people who feel like writing their own OS pretty much from scratch.
There was one inquiry regarding the Debian’s accessibility features for the visually impaired. Unfortunately, it turned out that the Speakup-enabled kernel flavour we used to have in Sarge is no longer available in Etch. I think that reintroducing it (at least, for i386) should be a release goal for Lenny, I’ll definitely try to see what I can do about it.

12 January 2007

Jurij Smakov: Kernel Handbook updated

The Debian Kernel Handbook has been updated with information relevant for Etch. I’ve also cleaned it up a bit, removed empty chapters, and added some new ones. Any feedback, comments, or content proposals are welcome, submit them to the mailing list, mentioned in section 1.2.

23 November 2006

Jurij Smakov: Net neutrality

For quite some time I’ve been hearing about some “net neutrality” issue, but never cared enough to figure out what the fuss was all about. That is, until I’ve seen this advertisement, paid for by National Cable and Telecommunications Association (NCTA). It was trying so hard to discredit the idea of “net neutrality” without actually explaining what it was, that I just had to spend some time educating myself on the issue. And I glad I did, because my final opinion turned out to be completely opposite to the one, promoted by NCTA’s unsubstantiated claims.