Older blog entries for cdfrey (starting at number 24)

The last month has been kind of a mental lull for me. Slow progress everywhere.

But alas, I'm finally back on the Barry project after a few months' detour on other critical issues.

The libusb project has undergone an API redesign over the last few months too. It's all in the devel tree. If you're following libusb, and wondering why things are not being updated, make sure you're looking at the SVN repository, not CVS as its website says. :-)

Since Barry depends on the devel tree of libusb, there has been some porting needed in Barry, and some hacking needed on libusb. The last little while I've been reading through the libusb code, and adding libusb_wait(), libusb_poll(), and libusb_abort() support, which are critical if you want to use async calls and still avoid a threading library.

Still lots of work needed in Barry. It will be nice to have a working libusb and test setup again soon.

redi, thanks for the comment. The Journeyer policy is not about accuracy of the ranking system. That's not really my prime concern. I'm concerned that newcomers that are even remotely worthy have a chance to become part of the advogato community. And since I don't know a newcomer until he's participated for a while, it is improper to judge his merit based on his opening post.

So I'm stuck with two conflicting goals, and a merit system that combines them into one ranking: 1) should he be part of the community, and 2) what is his worth.

I want to answer yes to #1 and never make a judgement on #2. Hence Journeyer is the most appropriate ranking I can give.

I seem to be on an opinion editorial streak lately. A reply to another blog post turned into a blog entry of its own that I thought I should post again here.

    I don't know why people are buying radio either. Sirius satellite radio seems to me to be a replay of cable TV. I'm sure someday people will want to play commercials on it after sufficient people have paid and joined.

    If you're already paying for something, you shouldn't have to watch commercials with it as well. But greed and cost cuts seem to make things continually worse in our commercial world.

    I was reading more information on Sirius at Wikipedia. One of the interesting things mentioned there is that the Howard Stern show was voluntarily not available in Canada. i.e. the company itself chose not to make it available.

    This should send warning flags to anyone technically savvy, and anyone concerned about freedom for the consumer. Isn't satellite radio supposed to be available everywhere in North America? Isn't that one of the draws of satellite? Then how can the company choose who gets to listen to certain shows?

    From the wikipedia article, it notes that satellite radio receivers can display the name of the song. That implies digital.

    So either there are different satellites for the US and Canada (could very well be, I don't know), or it's digital and protected with some form of DRM-like technology (Digital Rights Management). Maybe both.

    DRM is coming to your computers, your TVs, your computer monitors, and your radios apparently. And its primary purpose is to shift control away from you the listener, and to the broadcaster or content producer.

    This leads to grey market activities, just like with satellite TV. People pay to get hacked or "illegal" access to content that should be available anyway, or that would be available if older technology was used. There is no way to segment your audience with conventional radio, but apparently there is with satellite radio. And you're paying for the privilege!

    This kind of thing burns me up, if you haven't already guessed. I urge everyone to be wary of technology like this, and vote with your pocketbooks. Unfortunately, not everyone has the technical savvy to notice when these chains are placed on them, or they just don't care. The former I can try to help with information. The latter are aiding their own captors.

    On a political note, Sirius Satellite radio in Canada is backed by the government-funded CBC. This is even worse. For one thing, it calls into question the entire business model of Sirius radio. I'm sure CBC programming is being funded publically. What does this imply for the other shows? Is Howard Stern completely funded by his share of the Sirius subscription fees? Or does he get other funding? What about the other radio shows? If the subscription fee doesn't cover the whole cost of production, it's almost guaranteed that commercials will arrive someday.

    Then we'd have the worst of all worlds: a content restricted by DRM, with commercials, that you pay for! Agh, why doesn't anyone see this?

    In addition, CBC shouldn't be anywhere near commercials, or subscription radio. This is a publically funded operation, not a commercial enterprise. The minute you allow commercials and alternate streams of revenue to influence your public broadcaster is the minute you undermine the whole reason for having a public broadcaster.

    I'm sure this is what some people want. It is definitely not what I want. I want a strong, publically funded broadcaster that is not beholden to any commercial advertisers, and whose only goal is to produce quality, Canadian news and entertainment. There has to be a balance, and we already have lots of commercial media. It's the public media that is hard to maintain and needs to be maintained.

    Even the CBC website has banner ads now. What am I paying my taxes for!?

A recent diary entry welcomed a new user to Advogato, and urged folks to help make him feel at home.

Let me get the greeting out of the way first. Welcome Hossein! I hope you find this place more welcoming than I have.

Don't get me wrong: I think it's a great site that needs to exist. But the barrier to entry is high. Perhaps too high.

While I haven't spent a lot of time studying trust metrics, I do have my own experience with Advogato.

There is the occasional spam attempt in the recentlog, and they don't last very long. Some may attribute that to how well the trust metric system works here, but in my view, it is more due to inertia than a technical improvement. Make it hard enough for new users to join, and even spammers give up. That's saying something. :-)

Taking Hossein as an example, even with a personal introduction by chalst, and with 4 other regular users vouching for him, he still can't post a reply to a front page article. If that's a welcoming welcome, what hope does a virtually unknown programmer have for becoming a full participating member of Advogato?

From the vouching side of the equation, a regular user has to go through a list of decisions before certifying a user:

  • Do I know who he is?
  • Does he participate in free software?
  • Does he have some productive articles or software he's written to prove he's not just a spammer?
  • How can I be sure the guy posting is who he says he is?
  • Do I care enough to go through 3 clicks (more if you're not logged in) to certify him and put my name on the line for mostly a stranger?
  • What level of certification does he deserve?

The last question brings politics into the equation. Perhaps not explicitly, but it is there. If I don't know who ncm is, and I certify him as an Apprentice, what does that say? About him? About me?

What if raph certifies someone as an Apprentice? What does that say about the new user? What message is that sending to people who have visited the site for the first time?

When I first found Advogato, I viewed the Apprentice, Journeyer, and Master labels as declarations of skill. It implies, at least to the uninformed, that someone certified as a Master has more experience or should be taken more seriously than someone else of lesser credentials. This is of course not true, as the current credentials any one user has are only the product of a number of factors which are more concerned about preventing abuse and gaming of the system than setting an honest rating.

I think the terms used are unfortunate. They add a connotation to the process that, in my opinion, should not be there. Do we want to judge a newcomer based on his productivity before we get a chance to know him? Or should the first question we deal with be more of a welcome mat than a pay grade?

Hossein states he is here to study trust metrics, and I'd be really interested in seeing his conclusions from his study.

Please post at least a link to your results if you publish them, Hossein. I'll be watching. In the meantime, I'll be heading over to your account to add a Journeyer to your list of certifications, but please know that it is in no way a judgment of your skill level. I don't know you, and I don't want to be making such a judgment on a website, even if it were appropriate. As such, my policy is to certify everyone who needs certification, and seems relatively worthy of it, as Journeyer. My interest is in helping you get a foot into the Advogato door, and once in, to help you avoid having your statements branded before you even open your mouth.

29 Mar 2006 (updated 2 Apr 2006 at 05:46 UTC) »

dwmw2 mentioned that he can't live without a tree view of mail folders showing which have new messages.

I currently use a combination of procmail, mutt, and my own scripts to sort and read mail. The procmail script sorts the mail into organized mbox files in ~/Mail/. Then I run newmail to get a list of mailboxes with new messages in them. Then I use

mutt -f Mail/mboxfile
to read.

Here's an example of my "newmail" output:

 Total     New  Mbox                                                          
------  ------  ----------------------------------------------                
    55       1  barry
   158      21 *bochs-dev (1)
  2096    1405  boost
   446     444 *bugtraq (3)
    80      78  bugtraq-generic
   402     144  c++
  4072       3  canada-dmca-opponents
  1200     157 *cdfrey (1)
   166     120  debian
   246      67  gentoo-announce
    41      15 *gentoo-desktop (1)
  1848    1022  gentoo-dev
    38       6  gentoo-gwn
    82      28  gentoo-hardened
   355     237 *gentoo-portage-dev (1)
   605      62  gentoo-security
   276     247 *gentoo-server (4)
  1217    1217  git
    11      10  gnupg-announce
    91      90  gnupg-devel
   423     331  gnupg-users
   129      82  kt
  1162       8  kwlug
   364     133  libusb
 10023   10022  linux-kernel
   601     344  linux-thinkpad
   144     144 *mailer-daemon (5)
   551     314  mplayer-users
   411     401  open-graphics
  1404     164  plusplus
   541      35  plusplus-commits
    63      34  risks
   211     189  slashdot
    47       2  spca50x-devs
     8       1  xboard

Yes, I'm a little behind. :-) This shows the total messages in the mbox file, the total unread messages, which mboxes have had new mail since I last checked (*), and how many new messages arrived since I last checked.

It's worked pretty well, not only as a mail system but as a spam whitelist too. I only use the code personally, so the code isn't polished for release. It's a single .cc file that can be compiled standalone, so it shouldn't be too hard to play with if you want.

    Update: Found a bug where two uninitialized variables cause a new mail count to be out of whack the first time you run it. Once the mailbox data is cached, behaviour is normal.

    Grab the file again if this matters to you.

jvic, Just run another X server.
Barry version 0.0.1 released
    If you have a BlackBerry, and wish to retrieve data from it on your Linux system, consider paying a visit to the Barry Project page and giving the latest release whirl.

    This is of course a very early alpha release, but so far it has the capability to download calendar items, email messages (dates not supported yet), and address book entries. It attempts to convert the address book entries into LDAP LDIF format, and the email into mbox format.

    You can also use the command line tool to capture protocol data during database retrieval, in case you wish to lend a hand in the reverse-engineering process.

    The library and tool are written in C++. The ultimate goal of this project is to create a fully functional syncing mechanism on Linux. My goal is to have the API easily available in Python, perhaps via SWIG, so GUI folks can use it to integrate with their application of choice; but I haven't gotten that far. People with C++-to-Python experience are extremely welcome right now, even to just give advice on some of the pitfalls to avoid on the C++ side, so when the Python integration time comes, it will be as painless as possible.

    I hope to see you on the mailing list if you are interested in this project.

One of the projects currently on the front burner for me is a library and application set for syncing the USB model of the RIM Blackberry handheld on Linux. Net Direct is the company behind this project, with full plans to open source it when it's ready. I may put it on SourceForge early if there is interest, but there's not a lot of code to hack on yet.

The first major task, of course, is to figure out the binary protocol that these devices use. I know about the documentation for the serial protocol at the Cassis project, but unfortunately, the USB protocol isn't the same.

There are rumours that the USB protocol may have been reverse engineered already, but my Google searches come up empty. If anyone knows of such a document, please email me. It would bring this project to fruition much faster.

While I'm on the topic, let me plug two fine USB tools:

  • usbsnoop - a Windows filter with source code that intercepts the USB conversation between application and device.

  • libusb - an LGPL cross-platform library that lets you work with the low level USB interface in userspace, without developing a kernel driver first.

To all the folks that replied to my previous diary entry, thanks! I apologise for being so busy I couldn't respond in depth as I wanted to.

Thanks to all the folks that bumped me up to Apprentice, which lets me comment on articles. Much appreciated.

ncm:

    Monotone

    What made you pick Monotone? I haven't yet made the time to evaluate all the distributed source control systems yet to find which one I like best, so I'm always eager to hear other people's reasons for their choices.

    The ever present C++ debate

    What worries me about the indulgence of template based generic programming over OO inheritance and virtual functions is that with templates, you are duplicating code for each type you wish to code for. This doesn't happen with OO, albeit with a slight performance hit of virtual functions.

    This code duplication caused by templates is fine for code that you'd normally write anyway. For example, for_each instead of for loops, or any similar small piece of code.

    But the larger your template functions become, the more each instance costs every time you use it.

    Take the mozilla string hierarchy currently in discussion. How would you use templates to provide the same string functionality without the code duplication of templates? Mozilla is plenty big enough as it is.

    Creating template versions of the mozilla string class, perhaps parameterized with the various functionality as template arguments, would cause each function that needed a general string argument to be a template as well, to accept whatever the user passed in. Am I missing something obvious here?

    I must be, because there are a lot of C++ gurus that keep saying inheritance is bad, but tend not to go into detail. :-)

Thanks for the site renewal, quad!

15 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!