<< First < Previous Next > Last >> Page 1 of 19

Steadyflow and Other Status Updates

Well, well, this has been quite a long time without updates. Much to my shame, I was almost completely uninvolved in Precise development, mostly just updating my few packages in Debian, and I still can’t predict how much free time I’ll be able to spare on Quantal.

On the bright side, recently I attended the local Ubuntu InstallFest in my city, on which I’ll definitely make a separate post; short version is, I’m quite satisfied with it. I still don’t like the direction where Unity is going, and I’m concerned that it’s eating away resources that could be instead spent on polish and upstream contributions—but at least GNOME Shell, with its repository of extensions installable in one click from a website, by 3.4 has got to the point where I find it pleasantly usable and even superior to the traditional, GNOME 2 style desktop workflows.

The event, and the release of Precise, also inspired me to continue the development of Steadyflow. The 0.1.x series is now stable enough, with most of the bugs weeded out, so the upcoming 0.2 release will be mostly focused on new features. I started with a port to GTK3, which is already done in trunk; I actually could have done that earlier, but it would have required patching bugged bindings distributed with Vala, which are now fixed as of at least Vala 0.16.

I’ll briefly run over the most requested features in Steadyflow, and my assessment of them:

  • Multiple streams per file. I get this one a lot, as well as people asking me questions whether Steadyflow is a download accelerator. It’s not. The main reason I wrote it in the first place is to have a centralized place to manage my HTTP and FTP downloads (especially big ones, like ISO images) outside a browser. Well, that, and a small exercise in UI design. In practice, using multiple streams with the same server does more harm than good, for both the server and the client, and you’re more likely to hit your maximum speed cap per IP than per connection (or just the maximum overall network throughput; if there’s a slow network between you and the server, the download is going to be slow whether you use one connection or ten). So I’d review patches if someone else implemented it, but I won’t implement this myself.
  • However, downloading from multiple mirrors at the same time can potentially increase download speeds, so at some point I may look into that. It will come later than 0.2, perhaps after adding metalink support so Steadyflow can actually know about these mirrors.
  • Custom HTTP headers. This is of little interest to end users, but browser integration extensions (like FlashGot and Chromeflow) could use this feature to pass headers for sites that require cookies, referers, or a POST request. That will require a significant change to Steadyflow’s guts, but it’s definitely on the roadmap for 0.2.
  • Importing incomplete downloads, possibly with a different URL. This is easy to implement and will definitely be in 0.2.
  • Download speed limit. Possible, but I’ll need some feedback first.
  • Show the main window by left-clicking on the tray icon. Obviously not in Ubuntu, since indicators don’t support the behavior of tray icon, but in trunk it’s now the case whenever Steadyflow is built without the indicator library, such as in Debian.
  • Finally, while not requested by anyone, I plan to add support for verifying checksums (MD5, SHA-1, and SHA-256) and auto-retrying failed connections in 0.2.
  • Torrent support. The answer is no. I know that other, more heavyweight download managers do this, but still, it’s far too complex for a small hobby project like this. There is already an excellent torrent client in Linux with a GUI that directly inspired Steadyflow: Transmission. And I’d rather have Transmission itself than a half-baked, buggy implementation of 5% of Transmission in Steadyflow. In fact, Steadyflow would have no reason to exist if Transmission supported ordinary downloads in addition to torrents, but alas, its developers are not interested.

Finally, a note about my silence. Actually, one of the reasons I avoided posting in this blog is because spammers flooded the comments over the months, posting over 900 comments for every post. I ignored it until I got a complaint from my hosting provider that my MongoDB database was growing out of control. After (hopefully) fixing the vulnerability that let them do so, I cleaned up all the spam comments with two commands:


var my_date = new Date(2011, 07, 13)
db.post.update({}, { '$pull': {comments: { created: {'$gt': my_date} } } }, false, true )

Much to my surprise, the command executed instantly—it would have probably taken several minutes on an SQL database—owing to the low number of posts compared to the insanely high number of comments. After compaction, the database shrunk from over 300 MB to less than 2. Woohoo!

A Quote

Given the extraordinary ability of the human mind to make sense out of things, it is natural occasionally to make sense out of things that have no sense at all.

~ Richard Furnald Smith

Adieu, Gmail

Normally, I don’t care for Google+, or Facebook, or other similar “social” noise. I once had a Facebook profile before it became, well, the Facebook of today and was still a relatively low-profile place which I could conveniently use for my and other people’s contact details.

Normally, I also pay little attention to the privacy concerns surrounding Google’s web services since pretty much their inception.

However, the recent pseudonymity controversy demonstrated that Google’s “don’t be evil” motto did not pass a reality check. Google has demonstrated that it would rather allow the jerkassery to continue than listen to the concerns of the very community Google+ is supposed to be supporting. Typically for a corporation, money—in this case, advertising revenue—won over civility and common sense.

It is always sad to see a corporation damage its popular support through bulldozing tactics, because ultimately it harms both the corporation and the community. When Wikia, capitalizing on the success of the wiki model, unilaterally imposed its new skin on hosted wikis against the wishes of their contributions, it caused many of them to fork the projects—including the flagship, WoWWiki—and move elsewhere. The result was dissipation, confusion, and the reduction of Wikia’s role as the leading host for specialized wikis. The remains of forked projects remained as rotting carcasses—again against the wishes of the community. Wikia would rather profit from advertisements on dead but popularly visited wikis than put them out of their misery.

Google, likewise, had the potential to be a great all-in-one Internet company, trusted by casual users and power users alike. There were a few things about its web services that made me raise an eyebrow in the past: increasingly obtrusive integration (no, please, don’t add annoying useless “features” to Gmail unless I enable them explicitly), censorship on YouTube (which I left earlier, seeing how many videos were blocked in Russia or vice versa, enabled only on Russia), personal censorship of search results, Gmail privacy concerns, and so on. Instead, they chose the path of alienating themselves—the corporate equivalent of sticking your fingers in your ears and saying “la la la, not listening”. It’s a tragedy—both for Google and for the users.

So be it, then. As I said, I wouldn’t use Google+ even without the real name policy, since I don’t care about that particular site, but the trend is worrying and Google’s behavior—from addressing the wrong problem to silencing its own employees—is extremely offputting. I find it better to jump ship now than later regret postponing it too much.

Under different circumstances, I wouldn’t consider leaving Gmail. From a technical perspective, it’s a fast, reliable, and highly flexible mail service. If I only cared about the technical perspective, I’d stay and recommend it to others. But I care about ethics. Luckily, I used my ubuntu.com email address almost exclusively, rather than my Gmail address directly, so all it required was pointing my Launchpad account to the newly enabled account managed by my hosting provider.

Here’s a possible lesson to be learned: keep your online identity in your own hands. Count on the possibility you’ll want to switch services, and manage your online handles in a way that they can be easily redirected to another service provider, if needed. In programming terms, keep the interface separate from the implementation.

Configuring GTK 3 appearance outside GNOME 3

Now that Natty has shipped GTK 3, and Oneiric has already updated some core GNOME applications like Nautilus, Evince and Brasero, people are going to ask how to configure the appearance of GTK 3 applications.

Some have suggested linking the ~/.config/gtk-3.0 directory to /usr/share/themes/Adwaita/gtk-3.0, but I do not recommend this approach. It hardcodes the location of the theme (in disregard of the XDG specification) and makes it impossible to configure anything else.

The correct way to configure this, assuming you do not run gnome-shell and thus gnome-tweak-tool settings are ignored, is:

  1. Create a directory named gtk-3.0 in ~/.config (that is, in the .config subdirectory of your home directory).
  2. Inside that directory, create a file named settings.ini with contents like this (using my settings as an example):

[Settings]
gtk-theme-name=Adwaita
gtk-icon-theme-name=Humanity
gtk-toolbar-style=GTK_TOOLBAR_BOTH_HORIZ
gtk-font-name=Ubuntu 10

Adjust the settings the same way you would in .gtkrc-2.0 for GTK 2 applications. Obviously, to use the Adwaita theme, you need it installed (the gnome-themes-standard package). There should be no spaces around the = sign for the gtk-toolbar-style setting—the other settings seem to work with spaces, but I removed them for consistency.

Below is a screenshot of Evince 3 running on Oneiric with the Adwaita Improved theme.

Steadyflow 0.1.7 released, now in Oneiric repository

It’s been just over two weeks since the release of Steadyflow 0.1.6, but the feedback was larger than I expected for such a simple program, and so, based on that, here is the new release: Steadyflow 0.1.7.

Highlights:

  • The indicator menu has been expanded and now includes download controls for individual files and for all files at once.
  • Password authentication is now supported for FTP, SFTP, SMB and so on.
  • It is now possible to select multiple files to start, stop, or remove them all at once. In addition, a file’s context menu now includes a “copy URL” option.
  • If Steadyflow is on the Unity dock, its icon’s context menu will include an “Add download” item.

For early adopters of Ubuntu Oneiric, Steadyflow 0.1.7 is now available in the official universe repository. Natty users can, as always, use the PPA.

It will probably be a while until another release.

Chromium extension for Steadyflow now available

By popular demand, I have added a Chromium extension for downloading links with Steadyflow, “creatively” titled Chromeflow. (Integration with Firefox and Epiphany is already supported through the FlashGot and Ephyflow extensions, respectively.)

The extension is available as a .crx install for i386 and amd64. Its code is based on a similar extension for the FatRat download manager, which is, incidentally, way more powerful than Steadyflow and may be a better choice for users who need advanced features like multi-stream downloads and torrent support.

Meanwhile, the unstable version in bzr has added support for FTP/SMB/SFTP authentication dialogs (they were a standard feature of GTK all along—blame me for not knowing this!), which means that password-protected FTP and brethren are now supported, not just anonymous connections. I have also added “Pause all” and “Resume all” menu items to the indicator icon, and intend to add per-file pause and resume support before the 0.1.7 release.

Steadyflow 0.1.6 released, now available for Natty and Oneiric

Today I released version 0.1.6 of my pet project, the Steadyflow download manager.

This release adds the much-requested remaining time indicator, courtesy of Hunter Rew, the ability to run an arbitrary command when a download completes, and of course, the usual bugfixes and translation updates.

Under the hood, the code has been fixed to build with Vala 0.12 and either the old or new libnotify, and dropped the deprecated dbus-glib in favor of GDBus. The latter means that it won’t build on Lucid anymore since it requires GLib 2.26 functionality. As such, I also dropped the flat-file settings backend; now Steadyflow exclusively uses GSettings to store its preferences.

Packages for Natty and Oneiric are available in my PPA. I’m also working on getting Steadyflow into the official Debian and Ubuntu repositories.

Hah

First, it’s worth noting that Java effectively invented the checked exception (clearly inspired by C++ exception specifications and the fact that C++ programmers typically don’t bother with them).

~ Thinking in Java

Random Thought

The Debian installer really makes me appreciate the strives for usability Ubuntu has made since its inception, and the little touches in the right places that have helped in its quest to popularize Linux on desktops.

(Well, other than Unity. That one sucks.)

This song still warms my heart in all these years

There’s a voice from far away that keeps on calling,
Purer even than the purest morning dew.
It’s enchanting, captivating and controlling,
And it shows this road, this road I never knew.

The far away is calling, the far away is calling,
The far away is calling, it’s calling for me;
I cannot be ignoring this far away that’s calling,
Oh please don’t leave me, far away, I’m coming, can’t you see.

There’s a voice from far away that keeps on calling,
Telling me of this amazing magic place.
Have I tried today to make a better ‘morrow?
It demands to know the answer right away.

The far away is calling, the far away is calling,
The far away is calling, it’s calling for me;
I no more can ignore it, I no more can ignore it,
Please wait for me, oh far away, I’m coming, wait for me.

As I vow that I’ll be honest, true and pure,
And no friend of mine will hurt with me around,
I start running to the voice that keeps on calling,
On this path I never knew and now I found.

The far away is calling, the far away is calling,
The far away is calling, it’s calling for me;
I cannot be ignoring this far away that’s calling,
Oh please don’t leave me, far away, I’m coming, can’t you see.

Insightful

http://www.dedoimedo.com/computers/gnome-3.html

Gnome 3 is the logical continuation of not caring what you do, where you store your files, how much power you consume by keeping your applications open or never shutting down your computer. Because, let’s face it, it is so difficult to concentrate on opening and closing programs, or Gods of the Internets forbid, minimizing the windows. Such a tedious task, when you need to respond to your tweets and your chirps.

What? Don’t look at me. I switched to KDE more than half a year ago.

Random Thought

GNOME 3.0 != GNOME 3?

LOR

Watching social debates on linux.org.ru used to send me into cultural shock.

Not anymore. I’ve just accepted a detached attitude, and now I just observe them from the side. It’s like watching a tribe of cavepeople shake their primitive weapons at the civilized world, saying, “They don’t eat their conquered neighbors? What decadent weirdoes!”

Installation Report: My Mother

This Sunday, fresh after finishing setting up a home Wi-Fi network for my parents, I decided to wipe the old Windows 7 installation from my mother’s laptop and reformat and reinstall everything. The system had got cluttered and glitchy by then, and the last straw was a bug that caused every document sent to printing to be printed indefinitely over and over, as long as there was paper.

Instead of reinstalling Windows, however, I wondered if this time around I could install Ubuntu, mostly for ease of maintenance. (When working with Windows on my parents’ machines, I’ve long been frustrated at its poor and inconsistent logging, often requiring trial-and-error sequences to make things work, and the inability to fix even the most trivial but show-stopping errors in proprietary software without access to its source code.)

My mother, 46 years old, previously relying on me even to copy files under Windows, is just about as close to a non-technical user as one can get. Since she only used Firefox, Picasa, and the bundled card games, she said she didn’t care which OS to use, and so my parents greenlit this installation.

Instead of the GNOME flavor of Ubuntu, I chose Kubuntu 10.10, partially for ideological reasons and partially because it would be more familiar to former Windows users. As such, it was going to be a test of the system’s usability for an average non-technical user, and its quality of localization for someone with next to no knowledge of English (which she only started studying very recently). So, without further ado, I booted the freshly downloaded live USB image…

Since I rarely install Ubuntu from scratch—most of my installations are upgrades—the installer was a pleasant surprise. It looked slick and professional, easily on par with that of modern commercial software. However, along with it came the first minor problem: it reported the computer as not being connected to the Internet, not even showing me the list of Wi-Fi connections. To remedy this, I had to enter live CD mode (“Try Kubuntu”) and connect to the home Wi-Fi network through its panel, after which the installer reported being connected. Ideally, I think the installer should expose the network connection widget, so that the user can manually enter network settings if necessary.

Along the way, I opted to install the restricted extras. After the installation finished without trouble, I started tweaking the system. First of all, I saw that KWin animations were being sluggish. I tried to run Compiz, but to my surprise, it didn’t run at all. Only then I checked OpenGL settings and saw that X was using the Mesa software rasterizer, even though I saw a “Searching for proprietary drivers” window just before the installer rebooted. (So apparently KWin compositing can function kinda-sorta-bearably even under software rendering—kudos to the developers!)

Using Jockey, I installed the proprietary NVIDIA drivers and rebooted… only to discover that, while KWin now had normal performance, all the fonts suddenly increased in size! I have no idea how changing the driver could also change the default DPI, but thankfully KDE has a setting to force 96 DPI, which I used. After that, I increased the default font size from 9 to 10, simply because that laptop’s screen was small for its resolution and the default 9pt UI font looked too small. On most monitors, however, the default should be acceptable, either with the default slight hinting or full hinting, which I enabled on that computer for better clarity. The choice of hinting style strikes me mostly as a matter of personal preference.

I also found out that the restricted extras were not installed for some reason even though the installer prompted for them, so I installed the kubuntu-restricted-extras manually. Even worse, while the ttf-mscorefonts-installer package was installed, the fonts themselves weren’t, because the user didn’t accept the EULA. I have to remove and reinstall the package to actually download and install the fonts.

That done, I changed some other defaults: deleted some software that I knew my mother would never use (such as KPPP and KRDC), installed Ubuntu Software Center, replaced Rekonq with Firefox, and Dragon Player with VLC. I would use Muon instead of Software Center, but sadly it doesn’t seem to be available in Russian yet (hint, hint).

Finally, I added shortcuts for Firefox, Kontact (where I configured her email account), and commonly used folders to the desktop and panel, switched Dolphin to use double click and table view by default, switched the desktop widget to display the desktop folder like in Windows, and replaced the standard notification widget with Colibri.

At that point, I saw another problem: the default Kubuntu color scheme is too low on contrast. That Asus laptop has a fairly lousy LCD matrix, one of those cheap low-contrast matrices that change brightness depending on viewing angle. So white and light blue icons on a light greyish-blue panel didn’t cut it. After trying a few themes, I settled on the Cream theme for Plasma, which provided a dark grey panel, and the LuckyEyes color scheme for Oxygen. Still, I wish Kubuntu was more high-contrast by default; Ubuntu and Windows 7 do better in this department.

Then I presented the system to my mother.

First, she requested the KDE main menu to be switched to classic mode, calling it more familiar. She quickly figured out how to use the Web, thanks to the familiar Firefox icon, and how to check mail. Then she asked how to switch between different Wi-Fi networks, as they have two different ones at their apartment. I pointed her to the network management widget, and she figured it out easily.

File management proved to be trickier. Before, she never learned to copy files on her own under Windows. I showed her how to open two different folder windows and copy files via drag and drop (she needed to be told that “move” means that the files are deleted in their source folder). She then accidentally clicked the desktop switcher button instead of the quick access button, and wondered why all her windows suddenly slid off the screen.

Then I asked her to open a freshly USB flash drive (since she wanted to learn to copy photos there). This part, however, proved less than intuitive. She quickly found the USB icon on the panel and clicked it to open the removable devices menu, but to actually open the flash drive, she tried double-clicking it—to no avail. Furthermore, the “Open in File Manager” menu entry was in English, not localized into Russian. I had to point her to that menu entry, and then show her two ways of ejecting the flash drive. It was not obvious to her that she had to right-click the flash drive’s list entry in Dolphin to bring up the ejection menu entry. I had to guide her to the eject button on the panel, too, but once she found it, the “plug/eject” icon metaphor became obvious to her, and she started operating flash drives without my help from now on.

She also complained that there were no card games in the default install, so I had to install KPatience, using that as an opportunity to demonstrate the Software Center at work. I hear they had that fixed in Natty.

Finally, since she used Picasa before to manage photos, and my father also used it on his laptop, I looked for a way to install Picasa under Ubuntu. My first bet was the official Linux version, but it turned out that it simply packed its own copy of Wine and wasn’t localized into Russian. On the other hand, when I installed the Windows version of Picasa under Wine, it didn’t display folder labels, and I had to look into the “Linux version” (massive sarcasm quotes) to understand why. I suspected that the problem lay in missing fonts, and discovered that the Linux version bundled Vera font files in its Wine fonts directory. One copy operation later, the version manually installed under Wine ran without glitches, in Russian. I also installed Shotwell as a possible alternative to Picasa, but when I tried to open an image from it in an external viewer, it said that no external viewers were available…

Later, I entered her Gmail credentials in Kopete to let her chat with me via Google Talk. The concepts of IM applications were highly unfamiliar to her, and I had to explain how to post a message, how to see if I’m online, and how to see if there were incoming messages. The messaging indicator was initially unfamiliar to her, but she soon got used to the concept of all message notifications being gathered under the envelope icon.

Another problem came in the form of the HP LaserJet M1120n MFP. While printing over the network worked out of the box, I had to search Google to discover how to enable support for scanning over the network. After I ran hp-setup, both Simple Scan and XSane found the scanner, but displayed an error. One Google search later, I found out that the HP proprietary plugin that was installed missed a library symlink in /usr/lib. I added it and then the scanner worked, but was it really that hard for HP to make sure it would work out of the box? How is a casual user supposed to solve this?

To summarize, here are some things that Kubuntu could improve, usability-wise:

  • Expose network settings in the installer, so that the computer can be connected to the Internet without leaving the installer.
  • Use a more high-contrast theme by default. Either use a darker panel, or darker icons. The contrast of the default Oxygen color scheme could be improved as well.
  • Add default actions for removable devices that can be executed without opening the menu, for example, by double-clicking. Furthermore, make it possible to access removable devices from the desktop in more than one way without a Dolphin window already open.
  • Improve interoperability of file associations between GNOME and KDE applications. If I associate image files with Gwenview in Dolphin, then Firefox and Shotwell should pick it up.
  • Display clearer error messages in scanning applications. I only found out about the symlink thanks to Launchpad, because the message was a generic “I/O Error”.

Finally, I’m not sure that “restore session at startup” is a good default. To my knowledge, no desktop environments other than KDE do this. GNOME, Xfce and Windows all boot to a clean desktop session by default.

root@localhost

Rooted my HTC Hero and deleted all applications I didn’t use, including all that social crap (Twitter, Facebook, etc.)

I honestly don’t understand why they aren’t deletable by default. Does HTC have a “users are morons” policy?

Night

It is dark in my bedroom. The dim silver light of the street lamps shines through the windows and the curtains, forming an ornate pattern on the wall they fall on – and on my chest, when I stand in front of them. And I look at these bright spots of light and smile, watching them move over my shirt as I lean on the wall, because I’ve learned to appreciate the beauty of small things – even when, in the absence of a moon from this side of the house, I have to settle for artificial lighting along the road through the garages.

Screw You, YouTube

I’ve had enough of your Draconian Rights Management, Google. I could endure your insistence on deleting copyrighted videos, I was understandably pissed off to open some pages only to discover that the video is blocked in Russia, but when I found out I couldn’t download a video I uploaded myself just because it was flagged as “blocked in some countries”, that was the last straw.

Truly, if you want something done right, do it yourself.

Today's Dream

I was in some weird mix of the Altai Mountains and East Siberia, apparently on a resort—I’m not sure. We were near the source of the Biya River, and I was planning to visit Lake Teletskoye. I led a bunch of kids, including Shinji and Asuka, to a gate in the mountains that turned out to lead to the Geofront; it was guarded by a single Japanese guard, very tall and hyper, who didn’t even know what he was supposed to be guarding, but he was a fan of Evangelion and thus was excited to see its heroes in person.

After we entered, trying to avoid fiery floor traps, the GM (apparently we were playing some kind of RPG) realized that we horribly sidetracked away from the main quest, and tried to guide us out.

Today's Dream

I had a dream that the United States declared war on Russia and bombed Moscow. I was in the surroundings of a building resembling the Computing Center.

Random

A message to all Maias from alternate Everett branches, which, alas, cannot reach its destination even in principle…

“When I look out there, it makes me glad I’m not you.”

<< First < Previous Next > Last >> Page 1 of 19