redi is currently certified at Master level.

Name: Jonathan Wakely
Member since: 2005-04-07 13:39:20
Last Login: 2012-02-08 22:34:09

FOAF RDF Share This

Homepage: http://www.kayari.org/

Notes:

Mix equal parts of C++, UNIX and Free Software. Bring to the boil and serve.

I am a maintainer of the GCC C++ runtime library, libstdc++. I'm a sporadically-active member of the ACCU and the BSI C++ panel that represents the UK on the C++ Standards Committee.

Projects

Recent blog entries by redi

Syndication: RSS 2.0
8 Feb 2012 (updated 8 Feb 2012 at 16:50 UTC) »
fzort and cdfrey, the conditional (a.k.a ternary) operator doesn't strictly require the second and third operands to have the same type, but it must be possible to convert one operand to the type of the other. In fzort's example both needed to be converted to foo*, neither can be converted to the other type, so it's ill-formed.

(There is another form allowed which doesn't require conversion, where one of the operands is a throw-expression: which ? new foo : throw "catch me". This isn't entirely useless syntactic sugar, it can be used to throw exceptions from constexpr functions, which don't allow if statements.)
12 Jan 2012 (updated 8 Feb 2012 at 22:26 UTC) »

I've finally drunk the git kool aid. I'd tried it before, but didn't inhale. Maybe I'm just feeling the effects of that cocktail of mixed metaphors but I really like it.

No more manually copying files between my home machine and my netbook (which isn't big enough or strong enough to handle a whole gcc subversion checkout, let alone the whole git repo) so I can work on the train. And I've already created about one new local branch a day in my gcc clone, so I can juggle fixes for several different PRs at once without constantly applying and reverting patches to my svn working dir.

I signed up to github so I can easily fork other people's repositories and send pull requests via the web interface, but decided to use gitorious for hosting some of my own projects. I like that gitorious itself is open source, but unfortunately ... it just doesn't work as well! I don't mind occasional weird rendering bugs on the web pages, but now I can't push/pull anything, due to an ssh error that didn't happen previously. Ho hum, I'll stick with it for a while yet. Github, on the other hand, is pretty damn slick.

6 Jan 2012 (updated 8 Jan 2012 at 17:09 UTC) »

Vim syntax highlighting for C++11 raw strings



A little over a year ago I mentioned a vim syntax file for C++0x which I was using for a while, but it only adds support for some new keywords, not new syntax such as lambda expressions and list-initialization. Last month I found cpp11.vim in the Vim online script database, which intends to support the new C++11 syntax, by replacing your existing cpp.vim entirely.

Not quite satisfied with either of those, I've started using my own cpp.vim to extend the default cpp.vim file (which is done by putting it in ~/.vim/after/syntax/cpp.vim) with syntax highlighting for the new keywords and also C++11 raw strings.

With my colour settings they look like this:
  
char raw[] = R"#(s/"\([^"]*\)"/'\1'/g)#";
which is equivalent to:
  
char yuk[] = "s/\"\\([^\"]*\\\"/'\\1'/g";
only without suffering from leaning toothpick syndrome.

The # in the example can be (almost) any sequence of zero or more characters acting as a delimiter. The example above requires a non-empty delimiter because the string contains )", which would be taken as the end of the raw string otherwise:
  
char raw[] = R"(s/"\([^"]*\)"/'\1'/g)"; // ERROR!


You could choose to use "" as the delimiter sequence, as a nod to Python
  
char raw[] = R"""(triple-quoted for great justice)""";
20 Dec 2011 (updated 20 Dec 2011 at 13:56 UTC) »

broonie asked what's wrong with switch statements?

The default behaviour of switch statements is broken, it's too easy to forget a break and introduce a fall-through bug. That's harder to do with the if-else-if-else form.

Breaking after each case should have been the default and continue should have been required to explicitly fall through. It wouldn't even have needed a new keyword.

20 Dec 2011 (updated 20 Dec 2011 at 10:54 UTC) »
hjclub, I repeat this from the Advogato FAQ (emphasis mine):

the purpose of the trust metric is to certify that a given user account on Advogato is known by the Advogato community to actually belong to the individual who claims it and is known to be a member of the free software and open source community.


Certifying random spammers because you feel like it doesn't meet the purpose. You are of course free to use the trust metric for something different to its stated purpose, but don't be surprised if you get "exiled" as a spammer when you insist on certifying spammers. If you happen to know someone is who they claim to be, and they're a real member of the open source community, write a diary entry to say so, telling other users they're not an annoying spammer, even though they have an obviously computer-generated name!

FWIW, a spam rating of 9 does not mean 9 people rated you, users with a Master cert add 3 to a spam rating, Journeyers add 2, and Apprentices add 1, reflecting the trust the community places in people with a higher rating. So it only takes three Masters to take a spam rating to 9. I haven't rated you as a spammer because I recognised your username and think you should get a second chance to participate in the community, but if you continue to certify obvious spammers I will use my +3 spamhammer :)

257 older entries...

 

redi certified others as follows:

  • redi certified redi as Journeyer
  • redi certified movement as Master
  • redi certified ncm as Journeyer
  • redi certified lerdsuwa as Journeyer
  • redi certified slamb as Journeyer
  • redi certified jbuck as Master
  • redi certified cdevienne as Journeyer
  • redi certified jsm28 as Master
  • redi certified terceiro as Apprentice
  • redi certified phr as Master
  • redi certified StevenRainwater as Journeyer
  • redi certified jkeating as Journeyer
  • redi certified robocoder as Apprentice
  • redi certified DV as Master
  • redi certified skvidal as Journeyer
  • redi certified JMarc as Master
  • redi certified phe as Journeyer
  • redi certified rth as Master
  • redi certified stefan as Journeyer
  • redi certified hubicka as Journeyer
  • redi certified aoliva as Master
  • redi certified murrayc as Master
  • redi certified bonzini as Master
  • redi certified aph as Journeyer
  • redi certified pinskia as Journeyer
  • redi certified cdfrey as Apprentice
  • redi certified sriggs as Journeyer
  • redi certified bagder as Master
  • redi certified arnuld as Apprentice
  • redi certified chalst as Journeyer
  • redi certified fzort as Journeyer
  • redi certified yosch as Journeyer
  • redi certified qubit as Apprentice
  • redi certified tromey as Master
  • redi certified hulten as Apprentice
  • redi certified argp as Journeyer
  • redi certified dennissheil as Apprentice
  • redi certified xamat as Journeyer
  • redi certified murajov as Apprentice
  • redi certified rgreening as Apprentice
  • redi certified Trollaxor as Apprentice
  • redi certified ittner as Apprentice
  • redi certified 8191 as Apprentice
  • redi certified stan as Apprentice
  • redi certified mcnemesis as Apprentice
  • redi certified guylhem as Journeyer
  • redi certified DRMacIver as Apprentice
  • redi certified LaForge as Master
  • redi certified ryuslash as Apprentice

Others have certified redi as follows:

  • redi certified redi as Journeyer
  • Akira certified redi as Journeyer
  • cdevienne certified redi as Journeyer
  • fzort certified redi as Master
  • arauzo certified redi as Journeyer
  • movement certified redi as Apprentice
  • Guillaume certified redi as Journeyer
  • byte certified redi as Journeyer
  • ncm certified redi as Journeyer
  • pasky certified redi as Journeyer
  • chalst certified redi as Journeyer
  • negative certified redi as Journeyer
  • lerdsuwa certified redi as Journeyer
  • mpr certified redi as Journeyer
  • bonzini certified redi as Journeyer
  • argp certified redi as Journeyer
  • murajov certified redi as Journeyer
  • sdodji certified redi as Master
  • ittner certified redi as Master
  • 8191 certified redi as Master

[ Certification disabled because you're not logged in. ]

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!

X
Share this page