A Pilgrim's Journal

recording discoveries along the pathway of life

Entries tagged "advogato-old".

17th February 2010
I'm chuckling as I wonder if syndicators etbe and apenwarr realize they are back-to-back in the recentlog.
Tags: advogato-old.
12th February 2010
"We're so plugged into the consumer entertainment industry that we don't know what's going on in the world. We know all about Johnny Depp and Angelina Jolie and U2 and The Family Guy, but we don't know the laws that are being passed in our countries. We don't know about the injustices of our social systems. We don't know where our food comes from, or the suffering required to get food onto our table. We don't know about the people in our neighbourhoods who are writing books and making movies and putting on plays and singing in choirs and running garage bands. Just like the citizens of The Matrix, we are mostly oblivious to reality, in part because somebody has convinced us that consuming entertainment is a worthwhile pursuit."

- Paul Nijjar, Adjacency Matrix

Tags: advogato-old, life, quotes.
23rd December 2009

Tags: advogato-old, git.
16th October 2009
Today

Tags: advogato-old, onlinux.
9th October 2009

Tags: advogato-old, onlinux.
2nd October 2009

Tags: advogato-old, onlinux.
24th September 2009

Thanks to Ilari on #git irc.freenode.net for the discussion that lead to enlightenment.

Tags: advogato-old, git.
23rd September 2009
badger:

Tags: advogato-old, git.
31st July 2009

Tags: advogato-old, politics.
23rd July 2009
Paul Graham on the Manager Schedule vs. the Maker Schedule.
Tags: advogato-old, quotes.
24th June 2009

Tags: advogato-old, onlinux.
22nd June 2009
A little while ago, I wrote a summary on Linux sound. Since then, the Insane Coding blog posted a new summary of its own, which I'm linking for completeness.
Tags: advogato-old, audio, linux.
18th June 2009

Tags: advogato-old, police, politics.
1st May 2009

Tags: advogato-old, audio, linux.
11th March 2009
badger, those pull and push settings are configurable. Usually when I do a git-fetch, it grabs everything. Check how your remotes are setup in .git/config, and edit to taste.

Note that pull and push are not two halves of the same coin. For that, use fetch and push. Pull is a mix of fetch and merge, and it doesn't make sense to merge using multiple branch targets all at once. In fact, that is impossible as far as I know. Whenever you do a merge, you are always merging some other branch into your current branch.

Tags: advogato-old, git.
6th March 2009
chalst and ncm: I confess that I still read the recentlog, nearly every day, without logging in. So a feature that tracked my reading habits would be slightly incorrect.
Tags: advogato-old.
22nd February 2009
Law

Tags: advogato-old, programming, xml.
22nd February 2009
apenwarr has written an excellent rebuttal to my original rebuttal. I'd like to clarify my different viewpoint.

I think the crux of the argument boils down to these two statements:

and

I obviously disagree with both of these statements, but I understand how you could think they were true.

On the surface, parsing doesn't seem to create a new format, but even in Avery's own example, the majority of browsers accepting an incorrectly quoted option have indeed created a new format. It isn't a documented format. It is actually an anti-documented format, because the spec says it is wrong. But anyone writing a browser today would not be able to merely follow the specs and produce a functional browser... they would have to follow the behaviour of every other browser in existence as well. Just ask the developers of the now long-defunct, but exciting, Project Mnemonic.

Now, obviously this makes it easier for Average Joe to write his own webpage, and it probably did help advance the popularity of HTML and the rise of the web. But there is a defacto HTML standard out there because parsers were not strict enough. I don't know how you can deny that. (Part of the problem was that browsers were developed alongside the spec, so that contributed a lot too. The poor spec didn't stand a chance.) :-)

And strict receiver-side validation does improve interoperability. Can you imagine if the average C++ compiler allowed a relaxed syntax? Suddenly compiling code that "works" on one platform would not work on another. I admit that this is already a problem to a smaller extent than HTML, but differences in validating the C++ language spec between compilers is seen as a bug in the compiler, and rightly so.

This raises an interesting Option 4, to add to Avery's list: let the parser be forgiving with unambiguous syntax, but warn loudly.

This would be a huge improvement to what we have today. We need more web browsers that report the number of HTML errors in a page, by default, in the status bar. And it should be hard to disable, so that a site's non-compliance is widely seen and scorned. (And yes, some of my web pages would be scorned too.)

I believe Opera has a feature like this, if memory serves.

As for the side note claiming that parsing is not the problem, but the rendering is, my argument was based on XML as a data exchange format, and less as a way to display content in a browser. For example, the opensync project uses XML for data interchange, and plugin config. These formats are defined in strict schemas, which are tested and used via libraries like libxml2, which I assume falls into Avery's Big XML Parser category. If these schemas were not correct, I would consider it a bug detrimental to future interoperatility, and something that should be fixed.

The web itself is already so goofy that trying to apply XML to it now is like nailing jello to the wall. So in that respect, I can understand Avery's pain. It just bothered me that someone was boasting about an incomplete parser and claiming they interoperate with XML better than the big libraries. It seemed to me that he was discounting the long-range goals at work in XML in order to avoid some short-term pain. Of course, in the real world of making the customer happy, such shortcuts are often needed, but it's something to hide away in that closet of programming hacks, not published as an example on the web. That sounds harsher than I mean it, but I like those long-range goals, and XML is a solid technical achievement in its own right, even if rather cumbersome. Hey, I'm a C++ programmer... I like strict syntax. :-) I believe strict syntax promotes accuracy, and that accuracy helps you down the road when projects get larger and more complex.

In some ways, you could say that the inaccuracy found all over the web results in an unstable foundation that is generally holding the web back from greater things.

I hope it is also clear that I'm not a fan of XML. (Referring to it as a monstrosity was probably a good hint.) It has its place, but I think a lot can be accomplished by drastically simpler documented formats, and I'm quite willing to hack up my own simple file format if I think it is appropriate. I just don't call it XML.

I have some thoughts percolating in my head about Postel's Law, but that will have to wait for another post.

Tags: advogato-old, programming, xml.
21st February 2009
movement: Yes, I was partly expecting this response. But I'm sure it's because my lawn is so pristine that you kids keep wanting to mess it up. :-)

Seriously though, I have no problem with Javascript as a language that people might want to use to get things done on the desktop. The problem is that, in almost all current implementations of Javascript, it is setup to run any random code from the internet that the user clicks on... or even code he doesn't click on, in some cases.

In order for me to consider using a web-enabled Gnome desktop, I need to be confident that I have the power to enforce this strict separation of church and state. My PC is the church, and the internet is the state. :-)

I need to be able to flip a setting that makes it impossible to run any javascript that comes from outside my machine, whether it be through email, the web, or various files left over in /tmp or .webgnome or /home/cdfrey/Desktop, and only run javascript that I've installed and authorized, such as through apt-get or /usr/local.

This is where my confidence in Gnome's security design falls apart, because history seems to show that it is always more tempting to enable the new shiny web than it is to lock it down securely.

Tags: advogato-old, desktop, programming, security.
21st February 2009
Dear apenwarr,

Tags: advogato-old, programming, xml.
21st February 2009

Tags: advogato-old.
21st February 2009
company writes:

Note that I’m not talking about a web browser. I’m talking about a full featured framework that allows every application to display (partial) web pages, execute XHRs, upload photos to flickr, run user-downloaded scripts or otherwise integrate with the web. In fact, even the browser situation is worse than ever as GNOME is currently trying to switch to a different framework.

So how are we gonna marry GNOME with the web?

Maybe I'm an old foggie, yelling "get off my lawn!" here, but it is my opinion that this is the direction that caused a lot of Linux people to laugh at Microsoft.

I don't want the web everywhere on my desktop. I don't want my desktop married to the web, downloading and running scripts in the background for my convenience, or even by an accidental mouse click which is sure to happen. I don't even run javascript in my browser. Why would I want it anywhere near my web-connected desktop?

Remember back when it was impossible to get a virus via email? Then Microsoft came along, and made it default to automatically open your email in an Outlook subwindow and excute its HTML? I don't want my desktop to go in the same direction.

Perhaps you think that Gnome developers are smarter and they won't fall into the same traps that Microsoft developers did. Maybe Gnome developers are special? Perhaps. But I fear that the Linux desktop is making the same mistakes that Microsoft did, only more slowly.

Tags: advogato-old, desktop, programming.
17th January 2009
riscgrl: I keep reading your Advogato blog entries regarding comments on various patches, but I don't know where the patch is, or where your comments are.

Might you consider including links in your entries for those interested? :-)

Tags: advogato-old.
6th December 2008

apenwarr, I think you're neglecting to account for some data. You wrote:

The problem is, the math is much worse the other way. If the other three parties form a coalition government, then all three parties will have to vote in favour of everything in every bill. That's about as likely as them voting down a specific Conservative bill. In other words, terribly unlikely. You have to pile up an awful lot of assent before you can pass a coalition bill.

Actually, it is better. The coalition has a majority, which means it cannot be defeated except by itself (which is quite possible, if they get silly). And those barking sounds you hear are the wolves at the door of each of the three coalition parties. Compared to the Conservatives, they're broke. I think that's one of the key reasons that any of these cover-your-ass politicians actually took a stand. Harper tried to kill them financially.

Their poor financial state should work in our favour.

In my book, it's a shame that it took this long. If you listened to the debates, the left leaning parties overlap substantially on a number of issues. There is plenty to get done if they focus on those areas.

They just have to keep their backbone and not give up too soon. Voters keep whacking all the policitians with the minority cluebat, and they just don't seem to take the hint. Minority means: fight hard, but bend, compromise, and work together in the end. I haven't seen much of that lately, and a coalition is the best news I could have dreamed of.

Perhaps I'm overly optimistic, but I'm not afraid of another election. I'll most probably vote the same way I did the last time. I'm sure a majority for someone is coming eventually, but the coalition deserves a chance to show what they can do.

Harper already had his.

The one thing that does disturb me is the lack of understanding that some Canadians are showing regarding the Parliamentary process. Yes, this new coalition is relatively earth-shaking, but it is how Parliament is supposed to work. It is really quite beautiful, because the real voter majority still has a chance to have their say.

Tags: advogato-old, politics.
22nd October 2008
Registration

Tags: advogato-old, onlinux.
8th October 2008

Tags: advogato-old, onlinux.
8th October 2008

Tags: advogato-old, onlinux.
30th September 2008
Fest 2008

Tags: advogato-old, onlinux.
27th September 2008

I started writing a little simulator for fun, and while trying to compile, make tells me:

make: *** No rule to make target `lender.o', needed by `economy'. Stop.

Tags: advogato-old, humour.
14th May 2008

Tags: advogato-old, debian, security.
2nd May 2008

Tags: advogato-old, onlinux.
17th October 2007
salimma,

Tags: advogato-old, c++, programming.
9th October 2007

Tags: advogato-old, onlinux.
8th September 2007
kelly, I pretty much agree with you about PHP. It is useful in some ways, but once I start programming something of any real size, I start to miss simple things like how the compiler is forced to check the syntax of all code, whereas an interpreted language can let you write some invalid code in if statement, and you may miss it until it runs.

As for operator overloading in C++, that's a bit like saying you won't use C because it has some bloated feature like printf() instead of write(). :-) You don't have to use operator overloading, but it sure is handy when it makes sense to use, such as when creating fundamental types like money values or complex numbers.

Tags: advogato-old, programming.
4th September 2007
redi, I did try that. I desperately wanted it to work, but the rating didn't seem to make any difference in the resulting recentlog until I certified them. Perhaps I just didn't try hard enough. I'll have to try again when I have time.

The posting situation isn't really that bad, and I usually read the recentlog without being logged in. Just some days the thought crosses your mind... "there's got to be a better way." :-)

Tags: advogato-old.
2nd September 2007

Tags: advogato-old.
26th July 2007
Tags: advogato-old, onlinux.
28th January 2007
robogato: Thanks for the explanation of the history of that message. It makes more sense now.

In your context, it likely had to be strongly worded to get people's attention. Here, though, people might take it more seriously than you meant.

Tags: advogato-old.
28th January 2007
I just noticed something new in the advogato pages. When looking at a user, you get the following warning:

When did this happen?

I must disagree with this sudden pseudo-gpg keysigning level of certification, especially since this warning is now retroactively applied to people's previous certifications, by mere virtue of being tacked on the bottom of the list.

I've written about the issues surrounding the certification process before. The above warning was never on advogato's pages before, or surely someone would have told me about it in response to earlier rants.

I also disagree that such a strict level certification is even practical. Is it really the goal of advogato to shut out the unknown? If so, this would seem to be a new development.

None of the people who have certified me know me personally. Are they all supposed to delist me?

Like it or not, I think Advogato is a virtual community, and has to live within its means. Not everyone can go to the effort of vouching for another user's identity, especially if said user lives in another country, or another continent. The best way is still to judge by their output as best you can.

I publically state that my certifications are not based on what identity I believe a user has, but on the simple binary decision of whether I believe their output qualifies as worthy to be seen on Advogato. (i.e. not an abuser or a spammer) The Journeyer setting is that binary switch for me.

Tags: advogato-old.
29th December 2006

Tags: advogato-old, barry.
2nd December 2006
robogato: Very cool, thanks! If that is an official subversion repository for advogato, it would be cool to have it on the Show me the Code page.
Tags: advogato-old.
13th October 2006
apenwarr:

You're only looking at it from the customer's perspective. What about the stress of competing for that 100kph job? Are the wages the same? If that fast dude gets injured or loses his job, are the safety nets the same? Maybe they are, but you didn't mention them.

I've seen fast sandwich makers in Canada, too; although they don't seem to be that numerous.

Tags: advogato-old.
12th July 2006
My list of mailing lists is getting so large that I now have a class of mboxes that are more archive and reference than something I'm actively interested in.

Here's an update for those following my newmail.cc mailbox reporter program.

I added the capability of listing archive mboxes in your .newmailrc with a value of -2. Then you can selectively hide/show this second-tier list of mboxes with the -H and -S switches.

I also added an environmental getopt() that behaves the same way as getopt(), but prepends the command line options from an environment variable ahead of the argv[] options.

env_getopt() seemed like something that somebody would have implemented before, but I didn't see anything like it in my web search. I may have reinvented the wheel. Anyway, it is now implemented as GPLv2 in case others need the same functionality.

Tags: advogato-old, code, email.
25th June 2006
fxn:

Advogato also has XMLRPC, with which you can do programmatic access to your diary. I do this in the hope that it saves advogato bandwidth.

Below is a small python beginner script that I cooked up just for this task. It checks the dates of the posts and saves the new ones as individual files.

If someone finds it useful, please feel free to use it. You can download it here.


#!/usr/bin/python

import xmlrpclib import os import difflib

def Download(filename, entry): print "Downloading: " + filename out = open(filename, "w") create, update = server.diary.getDates("cdfrey", entry) out.write("%s\n" % update) out.write(server.diary.get("cdfrey", entry)) out.close()

def GetTimestamp(filename): inf = open(filename, "r") s = inf.readline() inf.close() return s[0:len(s)-1]

def Update(filename, entry): print "Updating: " + filename filetime = GetTimestamp(filename) webcreated, webupdated = server.diary.getDates("cdfrey", entry) if( filetime != webupdated ): print "Entry %d is out of date" % entry if os.access(filename + ".bak", 0): os.unlink(filename + ".bak") os.rename(filename, filename + ".bak") Download(filename, entry)

oldf = open(filename + ".bak", "r") newf = open(filename, "r") oldl = oldf.readlines() newl = newf.readlines() print ''.join(difflib.unified_diff(oldl, newl))

path = "/home/cdfrey/text/advogato/posts/" server = xmlrpclib.Server("http://www.advogato.org/XMLRPC")

entryCount = server.diary.len("cdfrey")

for entry in range(entryCount): filename = path + "advogato.%03d" % entry if os.access(filename, 0): Update(filename, entry) else: Download(filename, entry)

Tags: advogato-old, code, programming.
21st June 2006
fzort:

Thanks for sharing the link to those chess problems. It reminds me of a paperback book I picked up last year called Bobby Fischer Teaches Chess. It's full of problems like that, taking the reader from beginning backrank mates to more complex combinations. It's a very fun book to read, especially the second half, as you hold the book upside down.

The thing I've found is that chess problems, and the Bobby Fischer book, only helped my end game, and the planning, if I remember to do that. It is the opening that can make or break a game, and I've had many games broken by a bad opening.

I'm experimenting with lightening games lately, and while I lose almost all of them on time, I find it is a good way to practice openings, and to force my brain to work faster.

Maybe I'll see you on freechess.org. I have the same handle there. I'm still very much an amateur.

Tags: advogato-old, chess.
1st June 2006
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.

Tags: advogato-old, barry.
18th April 2006
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.

Tags: advogato-old.
3rd April 2006
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.

Tags: ads, advogato-old, cbc, drm, radio.
2nd April 2006
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:

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.

Tags: advogato-old.
2nd April 2006
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.

Tags: advogato-old, code, email.
4th December 2005
jvic, Just run another X server.
Tags: advogato-old.
Barry version 0.0.1 released
26th November 2005
Tags: advogato-old, barry.
3rd November 2005
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:

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.

Tags: advogato-old, barry.
1st October 2005
Thanks to all the folks that bumped me up to Apprentice, which lets me comment on articles. Much appreciated.

ncm:

Tags: advogato-old, c++.
24th September 2005
Thanks for the site renewal, quad!
Tags: advogato-old.
15th September 2005
I finally got around to adding some features to the GNU split command, which I felt were sadly lacking ever since I thought of them. :-)

I often use split to break huge files into multi-CD images, such as for backups or archiving. At the same time, I often find I'm low on disk space, so I would like to process each split file chunk as they appear instead of doing it all at once at the end.

I wrote a patch that adds exec and pause functionality with the following arguments:

  -e, --exec=CMD          run CMD after each output file is closed
  -w, --exec-wait=CMD     run CMD after each output file is closed
                          and wait for the child to exit
  -p, --pause             pause for keypress after each output file is closed

I find these features very useful, so I hope they make it into the official coreutils tarball.

If anyone has any tips on how to handle recovering a tty-based STDIN (see the split source code), please let me know. I'm currently just open()ing the tty on STDOUT, but that is not ideal.

Tags: advogato-old, code, programming, split.
11th September 2005

I can relate to your complaint. I joined advogato for the same reason, except I wanted to comment on the FreeDCE article from a while back.

I appreciate that advogato is not your average blog site, and because of that, it is remarkably spam-lite. Still, it is frustrating when becoming a full fledged member requires bugging other people to certify you.

I suppose I should get back to hacking now too. :-)

Tags: advogato-old.
23rd August 2005
Well, it would appear that I've been interrupted by telemarketer calls one too many times. I've decided to do something about it in my own little way.

I've started my own Telemarketer Boycott List. This is mainly for my own memory enhancement, so I can remember the parasites^H^H^Hcompanies that try to turn me into a customer, and thereby avoid them in any future business dealings.

I'm putting it on the web in the hopes that others can benefit from my list, and perhaps create lists of their own.

I'm under no delusions that this will make a great dent in the telemarketing industry, but it will grant me an amount of personal satisfaction.

Tags: advogato-old, boycott.
12th July 2005
Marcus: You lucky dude.
Tags: advogato-old.
30th May 2005

Spent most of today reading through the various websites for for C++ wrappers of SQL databases. The best ones, in my opinion, are the official ones: mysql++ and libpqxx. Unfortunately, these are both tied strictly to their specific databases and are not database independent.

Also in the mix are DBConnect and GQL. Both are rather pointer-happy, but at least DBConnect encourages use of it's own smart pointer to avoid copious use of delete. On the plus side, they are database-independent.

Only mysql++ has the SSQLS feature. What is that you ask? It is a mechanism whereby you can easily create structures that mirror your database tables, and then go around using them as members of container objects, and doing things like:

query.insert(row_data);

This makes the library code extremely hairy (so hairy that it motivated a fork of the code a few years ago), but gives the advantage of enabling the compiler to check your field names, localizing your C++-to-SQL linkage in one place, and letting the library take care of generating properly escaped SQL code.

So far, my research confirms that the free software community still lacks a proper database independent C++ SQL library that shields the programmer as much as possible from quoting issues. As always, please email me if you know better.

Cool Program of the Day

Unpaste is a program by Jeroen Vermeulen that attempts to find repeated code in your C, C++, and Java programs. It is a work in progress, but already useful. It scans all the files you give it, and detects duplication even with name changes or differences in const.

Humour

Sometimes reading code can be funny (see the bottom of this file).

Tags: advogato-old, mysql, programming.
27th May 2005

boog, your Snippets project is cool, but it's not a new idea. It reminds me of a similar project with the same name which I ran across back in the days I used to be a regular FidoNet user. It was run by a fellow named Bob Stout. Here is his original Snippets archive.

The license of each of the contributions varies with the contributor, but they are all freely available for use last time I checked.

You might consider joining forces with Bob Stout and combining your efforts to produce one large repository (perhaps mirrored on both sites). Not sure if you tried this already, but it would appear that the original Snippets site could use a little help.

Fun

While perusing the site, I found a link to The Parable Of Two Programmers. Excellent read.

C++ and the Web

After writing a dynamic website for a client in PHP, I was struck by the lack of help that the language and interpreted nature of PHP gives a programmer for dealing with large sites. Also, I'm amazed at how many XSS and SQL injection attacks I see for PHP websites posted on Bugtraq. It reminds me of the arguments against C I used hear from anti-C people, who used to blame buffer overflows on the language. At the time, I thought it wasn't right to blame the language when it was the programmer's fault, but now I'm on the other side of the fence, taking a step backward (in my opinion) from the safety of C++ to the wild west of PHP.

And the problems with C pointed out in the past by security-conscious language bigots :-) are all "fixed" in PHP. There are no buffer overflows. There are no memory leaks. There are no real number size issues.

Instead, I'm now on the bigot side, and really missing strict type checks, and really missing a compiler to check all syntax. Wondering how people manage with this.

So I got to thinking, and I'm trying to design a PHP clone in C++. I'm writing about it now so that people can head me off at the pass if something like this already exists. My goals are to make it nearly impossible, or at least harder, for a programmer to put XSS or SQL injection bugs into their websites. Make the compiler check for these things. That's what C++ is for anyway.

Perhaps C++ can give the same structure and organization to a website that it gives to a large local application.

Some of these ideas were inspired by Joel Spolsky's article referenced by ncm's recent post, which referenced titus's recent post. I agree with Nathan, but Joel's article did get me thinking. His type method should fit nicely into C++, where everything is a type, and instead of the programmer doing the checking by reading "wrong" code, the compiler will do it, and enforce it.

So that's my idea, which I plan to call CPPHP. I hope to have some code someday soon that actually works. Right now I'm just prototyping my design. If this already exists somewhere, or if you just want to send feedback, please email me.

Edited to add:

I just want to plug John Torjo's win32gui library, which has some ambitious aims for programming GUI's with C++. If that could be done for the web, that would a wonderful advance.

Tags: advogato-old, c++, cpphp, programming, web.
6th May 2005
bi, I would have to agree with Rich Kyanka, although his urgency makes me wonder if he has ulterior motives. I don't know anything about him.

His point stands though. When I first heard about Google Accelerator, I thought "wow, what a privacy / security hole", then didn't give it another thought.

Interesting that he is paying a programmer to figure out how to stop Google from caching his website. The simple solution to that is to force all administrators to login with https, and automatically disable any admin account that has a successful login with plain http.

Of course, you need to educate your admins about how to check SSL certificates, and make sure it's not just Google doing a man-in-the-middle. But I guess that's a policy problem. :-)

Tags: advogato-old.
13th March 2005
titus:

The C++ way to do this is to wrap access in a class. Put your initialization in the constructor, and the cleanup in the destructor, and then put an object of that class type on the stack.

C++ scope rules will take care of the rest, and it's exception safe.

Hope that helps,

Tags: advogato-old, c++.
21st February 2005
In the hopes that record company executives are reading my blog, I'll post some free advice which I hope they take to heart.

A few months ago, I was driving home from work when I heard a really cool song. This was not just any ordinary song. It was one of those impulse buy songs, and I don't buy CDs very often (I already have plenty).

So while still in the car, I drove straight to nearest music store, and start searching for the CD. I asked the checkout girl about it, and she searched in vain in the computer system. Then the answer appeared.

The CD was to be released in about a month.

Dear record executives: the song playing on the radio is your best advertisement (if it is a good song). Don't waste that momentum by separating the radio release from the CD release.

By now, my impulse to buy is long past, and while the CD is surely in the stores by now, I don't hear it on the radio anymore.

C++

About a week ago, I was tinkering with C++ iostreams, and managed to get a working streambuf for network sockets. I posted the sample code and within about 6 hours, Google had already picked it up and I started getting hits the next day. There hasn't been a day when someone hasn't requested it since, so network streambufs must be a common C++ problem. I hope it helps some folks.

Tags: advogato-old, iostreams, music.
4th February 2005
The more I learn about web programming, the less I like it.

At least that appears to be the trend so far, and I have a continual hope that as I learn more in depth topics, it will all magically become more elegant.

I was working on a website today, when I suddenly laughed out loud at what I was doing. I was writing PHP inside a PHP variable, which generated HTML.

This was what I was doing back as a kid when I was learning BASIC. I used to write BASIC code to generate more BASIC code because it was too hard to type it all manually.

Of course, I was kid back then, and hadn't really discovered subroutines, but today's popularity of "LAMP" (Linux/Apache/MySQL/PHP) makes me wonder if the world hasn't been caught doing the same thing I was as a kid. We have PHP encapsulating PHP, encapsulating SQL, encapsulating HTML, encapsulating..... argh.

And PHP and MySQL's popularity has happened over recent years where there is no concept of stored procedures, so I have to conclude with my limited web programming knowledge to date, that somewhere there is a lot of embedded SQL code stuck in PHP wrapping.

The whole idea of inserting your data into an SQL statement when you're trying to insert binary data into your database still rubs me the wrong way, but this is how it is done in MySQL.

If I'm missing something glaringly obvious, my inbox is open as usual.

Projects:

I haven't had much of a chance to tinker with FreeDCE these days, as paid work is keeping me occupied. I do plan to get back to it shortly.

I've also been sidetracked by a secondary project I've been working on to organize my "To Read" list. I run across many websites and various PDF or PS papers that I intend to read, and they get lost as links or stored in my inbox as I email myself. This was not helping, so I decided to write a small web project to organize a queue of reading material, as well as mirror it on my local hard disk in the event that the link dies before I get time to read it.

If anyone is interested in tinkering with it, version 0.2, pre-pre-pre-alpha is on my software site. Sorry, no pre-installed sandbox for the public to play in yet, although that would be cool.

Tags: advogato-old, programming, web.
25th January 2005

fzort: Thanks for the link to Herb Sutter's concurrency article. It was quite the interesting road of travel to the end.

Here's a link link to Andrei Alexandrescu's presentation on lock-free programming, which reference's Herlihy's 1991 paper on Wait-Free Synchronization, in case anyone else is interested in blowing a few hours.

Read over last year's ACCU conference events and wished I'd been there. Would be very cool if I could make this year's.

Tags: advogato-old, programming.
20th January 2005
I still haven't figured out how everyone communicates with each other on this site. It seems like there is some connection going on, as I see replies and references to other people's diary entries along the way. But it sure looks easy to completely miss a message from someone.
Tags: advogato-old.
20th January 2005
I've been browsing CVS entries on the web (specifically knipknap's canvas code (nice work, I enjoy seeing other C++ designs)), and a thought occurred to me.

Personally, I prefer to create local CVS repositories. This allows me to keep them local, they are faster, more secure in my opinion, and I can place them on the best machine for the job. It also lets me keep all the history local, as well as letting me tinker with the raw repository files to make up for CVS shortcomings, such as move. Overall, I am still very pleased with CVS, and have no compelling need to "upgrade" besides my own curiosity of what could be better.

A real drawback to my way of development, is that the history is unavailable to the outside world. When using public CVS repositories (such as SourceForge, Alioth, or Gna), all your free software work is out in the open by default. There is no danger of forgetting to make a release, or having users waiting while you find free time to publish work in progress.

Happily, I can have my public CVS along with my local CVS copy. SourceForge and Gna document that they create nightly tarballs of the raw CVS repository, for backup purposes. This would allow me to keep personal copies of my repository, but I would be unable to push them back into the public repository if I worked off a local repository. That would be a dumb thing to do too, but I like my local repository, dang it. :-)

I have a couple options:

I suspect I've answered my own question and it's time to dive into arch.

The main reason I like CVS is its simplicity. From the backend storage to the command line, it is mostly straightforward and doesn't place a heavy load on my fingers to use it every day. Arch appears to need some scripting to help cut down on the verbosity.

Tags: advogato-old, cvs.
20th January 2005
lkcl: You might consider writing an article for Linux Journal on DCE. Their latest issue has an article on D-BUS all over the front cover, so they are definitely open to that kind of thing.
Tags: advogato-old.
17th January 2005
The recent story on the free DCE projects motivated me to create an account here. I'm not yet sure what it will get me, as I cannot post replies. :-)

The FreeDCE project looks rather dead from a mailing list point of view. I would appreciate it if someone could post links to where people interested in DCE congregate.

Feel free to email me at cdfrey@netdirect.ca if you can't get my attention through this site. I'm still exploring the functionality.

Tags: advogato-old.

RSS Feed

Created by Chronicle vUNRELEASED