Tuesday, January 31, 2012

Minor Update to Table Showing Compiler Support for C++11

I just added coverage of enhanced enums (e.g., enum classes) and new alignment controls (alignof, alignas, std::aligned_storage and std::aligned_union) to my C++11 training course, and during the course of my research into and testing of those features, I made some minor updates to my summary table of C++11 support in gcc and MSVC.

The new slides will be included in the published version of my C++11 training materials the next time I push out a release.  Having recently done that, I don't expect the next release to go out for a while, but in the meantime, the information sources I refer to for enhanced enums and for alignment control in my C++11 training course are listed below.

Enhanced enums:

Alignment Control:
Scott

Wednesday, January 25, 2012

September Open-Enrollment Seminars in Stuttgart, Germany

In what has in recent years become an annual pilgrimage to Stuttgart, I, in collaboration with QA Systems, will conduct three open-enrollment seminars in September.  Each is two days long.  As with all my public presentations, you'll find details at my Upcoming Talks page. To save you the trouble of clicking through that, here's the summary:

17-18 September 2012
Effective C++ in an Embedded Environment
20-21 September 2012

Fastware for C++
24-25 September 2012

An Overview of the New C++ (C++11)

The talk on C++11 will be a two-day version of my three-day training course, which means that some topics I'd normally cover will be omitted. The topics to be skipped will come out of the material covering new standard library functionality, but which library features will be omitted will be determined during the seminar, based on the interests of the attendees and the time remaining after all core C++11 language topics have been discussed.  To ensure that attendees have copies of all the materials I'll show, each attendee will receive a copy of the materials for the full three-day seminar, even though it will be clear from the outset that I won't be able to cover everything.  In other words, the handout you'll get as a seminar participant will include "bonus topics" not covered in the lecture :-) 

Last year's experiment in doing a presentation in German was, linguistically speaking, successful (people had no trouble understanding me, and I had no trouble responding to their questions and comments), but I don't speak German as quickly as I speak English, and that meant that I had to omit a couple of topics I normally cover.  The feedback I got was that covering more topics was more important than doing a presentation in German, so this year, I'm back to an all-English set of talks.  During breaks and lunch, I still plan to speak German, however, so if you're interested in hearing my funny accent and colorful grammatical constructs, don't worry. You'll have plenty of chances :-)

I look forward to seeing you in Stuttgart in September.

Scott

Monday, January 23, 2012

C++11 Training Materials now jibe with the Final Standard

I mentioned in my November announcement of an updated version of my C++11 training materials that I'd been made aware of a few places where my stuff wasn't fully in accord with the final standard.  In this most recent revision, I've addressed those issues.  To the best of my knowledge, everything in the materials now corresponds to the standard.

Achieving such conformance was my primary motivation for releasing a new set of materials so soon after the last revision, but I also clarified some explanations, fixed a few typos, and did other minor housekeeping chores. All in all, I revised things in about two dozen places. As always, people who've purchased the notes should have automatically been notified of the new release, and they should have received a list of changes I made. If you weren't notified, let me know.

Added 1/27/12: From Artima (publisher of the training materials):
You can log into Artima with the account you used to purchase the
book, click on "Your Settings", and redownload anytime. If you've
forgotten your password, you can get a reminder at
http://www.artima.com/account/mailpwd?d=%2Findex.jsp

Incidentally, I also increased the length of the free sample from 25 to 40 pages, thereby adding range-based for loops, nullptr, Unicode support, and raw string literals to the list of topics I cover there. That should make it easier for people to get a better feel for what they'll receive if they purchase the materials.

I hope you'll excuse my repeating myself from my November posting, but the following is still apt:
If you're interested in a book-like publication covering the most important parts of C++11 (both language and library), I encourage you to consider purchasing my training materials.  If you like my other publications, I think you'll like these, too.  To see exactly what you'll be getting, check out the free sample.

Because this publication is in an unconventional format (annotated training materials), is available from a lesser-known publisher (Artima), and is electronic-only (DRM-free PDF), getting the word out about it has been challenging.  I'd appreciate it if you'd let people know about it, whether through blogs, tweets, social networks (the politically correct term for Facebook), email, or that most retro of communications mechanisms, face-to-face conversation.
Thanks,

Scott

Monday, January 16, 2012

C++ and Beyond 2012 Announced

We've just announced dates and locations for C++ and Beyond 2012: August 5-8 in Asheville, North Carolina.  Like its predecessors, enrollment will be limited, and the centerpiece of the event will be all-new technical sessions by me, Herb Sutter, and Andrei Alexandrescu.

For more information, consult the announcement on the C++ and Beyond blog, then make plans to spend August 5-8 in Asheville for the premier C++ event of the year. I look forward to seeing you there!

Scott

Friday, January 6, 2012

New C++ and Beyond 2011 Panel Sessions Now Online

Microsoft's Channel 9 has posted two more sessions from last year's C++ and Beyond.  Both feature me, Herb Sutter, and Andrei Alexandrescu fielding questions from C&B attendees.
Session topics are:
These are the final sessions from last year's C&B that will be posted, but we're already hard at work on C++ and Beyond 2012. It will take place August 5-8 in the eastern USA.  I'll post details soon -- within days.

Scott

Tuesday, November 1, 2011

C++11 Training Materials Updated

Now that C++0x has become C++11, I updated the name of my training materials and released the latest revision to past buyers. This marks the third updated release of these materials since their original publication in April 2010.

Updating notes for a multiple-day training course (such as my three-day C++11 seminar) has an interesting constraint:  unless the changes involve adding or removing full days worth of material, the length of the course can't be changed.  For a topic like C++11, where I'm learning more all the time, this means that I sometimes want to add information without changing the length of the class.  One way I do that is by adding comments below the PowerPoint slides.  The comments don't get shown in class, but they elaborate on material in the slides.

For the most recent materials update, one of the ways I took advantage of this was by taking the following bullet point from a list of "Other Features" in C++11 (that the course doesn't really cover, typically because the features are less important or because there's currently little or no compiler support for them):
  • Contextual keywords for alignment control, preventing derivation, and constraining virtual function overrides.
I added the following elaboration in the comments:
The identifiers override and final are contextual keywords. Both classes and virtual functions may be declared final. final classes may not be used as bases (per 9/3), and final virtual functions may not be overridden in derived classes.  A virtual function declared override must override a function in a base class. The following is an amalgam of examples from 10.3/4-5:
struct B {
    virtual void f() const final;
    virtual void f(int);
};
struct D : B {
    void f() const;                      // error: D::f attempts to override final B::f
    void f(long) override;             // error: wrong signature overriding B::f
    void f(int) override;               // OK
};
Because elaborations like this generally don't get presented in class, this means that the information in the training materials is in some ways more comprehensive than the information I deliver during a presentation. On the other hand, during a live presentation, people can ask about whatever they want, so I typically address a variety of topics that aren't in the training materials at all.

To the best of my knowledge, my training materials are currently the best source of accessible information about C++11. The Internet is filled with pages about C++11, but many of them were written at a time when draft C++0x was still in a state of flux, and unless you already know the details of the final version of C++11, it's hard to judge whether what you read on a given page is up to date.  The final C++11 standard is definitive, of course, but it's currently expensive (about US$400 at the ISO store), and I don't think anybody will tell you it's easy to read or understand.  There is, as far as I know, only one book out that covers C++11, and although I have not read it, given its recent publication date, I'd be surprised if it takes into account the very latest changes that took place during standardization. (I'd hoped to link to this book, which I know about only from a press release, but now I can't find it. If you know which book it is -- or of other books currently available that cover C++11 -- please let me know.)

To be frank, my training materials aren't perfectly up to date, either.  I had hoped that they were, but it's a big standard (1353 pages), and just yesterday I received a set of bug reports from a member of the standardization committee pointing out places where my notes' treatment of some parts of C++11 are out of sync with the final standard.  I'll fix those problems in the next release of the training materials, a release that, like all releases, will be automatically pushed out to anybody who has purchased the materials.

If you're interested in a book-like publication covering the most important parts of C++11 (both language and library), I encourage you to consider purchasing my training materials.  If you like my other publications, I think you'll like these, too.  To see exactly what you'll be getting, check out the free sample.

Because this publication is in an unconventional format (annotated training materials), is available from a lesser-known publisher (Artima), and is electronic-only (DRM-free PDF), getting the word out about it has been challenging.  I'd appreciate it if you'd let people know about it, whether through blogs, tweets, social networks (the politically correct term for Facebook), email, or that most retro of communications mechanisms, face-to-face conversation.

Thanks,

Scott

Monday, October 24, 2011

C++11 Discussion with me, Herb Sutter, and Andrei Alexandrescu

One of the panel sessions at C++ and Beyond 2011 in August was devoted to C++11, the new standard for C++. That panel session is now live.  I hope you find it interesting.

Scott

Tuesday, September 20, 2011

"Final" C++11 Feature Availability Summary Updated

Since "freezing" my C++11 Feature Availability Summary about a month ago (per this post), I've had a couple of people point me to Stephan T. Lavavej's unbelievably detailed blog post summarizing C++11 feature availability in Visual C++ 11 (as well as VC10), plus I came across Michael Wong's corresponding post for C++11 support in xlC++, so I decided that I froze only the feature tables in my C++11 support summary.  I'll continue to update my links to sources summarizing C++11 feature support in various compilers, because that's not a lot of work for me, and I think the information is useful.  You'll find those links on the first page of my feature availability summary.

Enjoy the ever-burgeoning compiler support for C++11!

Scott

Thursday, August 25, 2011

Video Interview with me, Herb Sutter, and Andrei Alexandrescu

Immediately after the conclusion of C++ and Beyond on August 10, Charles Torre from Microsoft's Channel 9 rounded up me, Herb Sutter, and Andrei Alexandrescu for an hour-long discussion of a variety of issues related to, well, C++ and beyond.  That interview is now live, and I hope you enjoy it.

Scott

Tuesday, August 16, 2011

C++11 Feature Availability Spreadsheet Updated

Now that C++ and Beyond 2011 is behind me, C++0x has been officially christened C++11 (or, as I like to think of it, "C++:  The Spinal Tap Edition"), and Stephan T. Lavavej pointed me to his unbelievably easy to download and install binary of gcc 4.6 for Windows, I had time to play with gcc 4.6 and update my C++11 feature availability summary (now rechristened to reflect that "C++0x" is terminologically passé).  Once again I found myself cackling with glee as I successfully built and ran programs with wacky stuff like
constexpr int factorial(int n) noexcept {                 // define constexpr function!
  return (n == 1) ? 1 : (n * factorial(n-1));
}

std::array<int, factorial(5)> a;                          // use it!
and
for (auto i : { 1, 2, 3, 4, 5} ) std::cout << i << " ";   // range-based for!
I mean, really, who can't love that?   More complicated stuff works, too, like defaulting and deleting and automatically generating move operations.  And nullptr (already present in VC10) joins the party, too. Fun, fun, fun. 

Because C++11 is no longer a draft standard (even if there are still some bureaucratic levers to be moved) and compiler support for C++11 is increasingly common, there's no need for me to keep updating the feature availability summary, so, modulo bugs in the existing data (I'll fix those as they're brought to my attention), I'm freezing it as is.  That will give me more time to play around with the newly-minted and schnazzed up C++, and that's a lot more rewarding than putting little letters in boxes on a spreadsheet.

Have fun with C++11.  How can you not?

Scott

Monday, July 11, 2011

Only 10 Seats Left at C&B next month

Next month's C++ and Beyond is nearly sold out;  there are only 10 spots left.  Registration runs until the end of the month, but only if we don't sell out first, which seems likely.  If you've been thinking about registering for three highly technical days with Herb Sutter, Andrei Alexandrescu, me, and about 100 of the most experienced and insightful C++ developers on the planet (registrations have already come in from three continents), I encourage you to do it while you still can.

I'm especially looking forward to hearing Herb talk about taking advantage of GPUs' computational capabilities in general-purpose programs, and I suspect that Andrei's talk on Big Data will reflect the fact that he and his colleagues have hallway conversations that include offhand comments like, "it's taking too long to create a hash table with four billion elements."  In the meantime, I'm working on the materials for my talk on the C++0x memory model, and my research is showing that, pretty much as expected, there are some interesting subtlties very much worth exploring.  And that's only a third of the technical program!

I'm also looking forward to hanging out and talking with those ~100 experienced and insightful developers, because they -- you -- collectively comprise a gold mine of information.  Plus they -- you -- work on really interesting problems.  And you're all just so darn nice, too.

I hope to see you in Banff next month!

Scott

Sunday, June 5, 2011

C&B Early Bird Registration Expires Friday!

Early Bird registration (and, more importantly, the $300 per person discount that goes along with it) expires at the end of this week (i.e., at the end of the day on Friday, 10 June) for C++ & Beyond 2011, so if you've been thinking about joining Andrei Alexandrescu, Herb Sutter, and me in Banff in August to talk about topics such as programming GPGPUs, the C++0x memory model, processing BIG data, and more, be sure to sign up by the end of the week!

Scott

Sunday, May 8, 2011

Presentation Materials from ACCU Talks Now Available

Silly me. When I posted about the availability of videos of my ACCU talks, I forgot to also make available the presentation materials for those talks, even though in the talks I say I'll send copies to anybody who asks me for them.  Let's skip the you asking me and me sending them to you, okay?  Instead, just download them directly:
Scott

Wednesday, May 4, 2011

Blog posts now reflected to Twitter

If you're interested in knowing about new posts to this blog, but your preferred notification mechanism is twitter, you'll be pleased to know that I've set up a twitter account, and I've arranged for blog posts here to be reflected there. This is, at least for the time being, the only use I plan to make of twitter.

At twitter, I'm @Scott__Meyers, i.e., http://twitter.com/Scott__Meyers.

Scott

Tuesday, May 3, 2011

Videos from ACCU Talks Now Available

The fine folks behind the 2011 ACCU Conference recorded my technical presentations, and those videos are now online as follows:
Viewing these videos is the next best thing to having been to the sessions, provided your definition of the next best thing includes having a seat at the extreme left end of Row 1. The video is nothing to tweet home about (especially if you want to read the text on the slides), but the audio is quite nice. One thing you're likely to find attractive is that the way the video is exposed, I'm hidden much of the time.

Enjoy!

Scott

Monday, May 2, 2011

Updated C++0x Training Materials Published

In April of last year, I announced the publication of my training materials on C++0x.  In trying to win your interest, I wrote:
In some ways, they're better than a book. They make more extensive use of color, they "cut out the fat" to focus on the technical essentials, and my licensing terms grant buyers unlimited updates for life: as long as I update the materials, buyers are entitled to a revised version for free.
I published updates last May and August, but I decided to hold off on publishing additional revisions until C++0x had settled down.  With ratification of the FDIS in March, that settling has occurred, so I've updated my training materials to correspond to the essentially-final draft standard.  The revised version of my materials also includes all the modifications I've made based on my experience using them for professional training purposes, so the latest incarnation should be both the most accurate ever as well as the clearest and most useful.

If you've purchased a copy of the materials, you should already have received notification from Artima Press on how to download the latest PDF. If you haven't purchased a copy, but you've been thinking you'd like to learn more about C++0x, maybe this is the time to give my materials a try.  You can download the first ~25 pages as a free sample at the materials' sales page.

I hope you find these revised materials on C++0x useful.

Scott

Monday, April 25, 2011

C&B Talk on Perfect Forwarding

I've just posted a description of another presentation I'll be making at C++ & Beyond to the C&B blog.  Like all the other talks at C&B, it's of the all-new, world-debut variety.  The title is Adventures in Perfect Forwarding, and following the link will take you to the blog entry that will tell you all about it.

I continue to hope to see you in Banff in August.

Scott

Tuesday, April 12, 2011

C&B Talk on C++0x Memory Model

Herb Sutter, Andrei Alexandrescu, and I are in the process of fleshing out the technical program for this year's C++ & Beyond, and I've just posted my first session announcement.  The title is "The C++0x Memory Model and Why You Care," and rather than repeat the talk description here, I'll let you follow the link to the C&B blog entry for the details.  This will be a new talk I'm creating specifically for C&B, and it should cover topics of interest to anybody who cares about multithreaded programming under C++0x.

The other C&B talks that have been so far announced are:
I think this year's C&B is shaping up to offer an exceptionally strong set of technical talks, and I hope to see you in Banff in August.

Scott

Saturday, April 2, 2011

Appearing/Disappearing consts Article now at C++Next

Shortly after I posted about DDJ publishing and then "unpublishing" my article on appearing and disappearing consts, Eric Niebler suggested I publish it at C++Next. I was pleased to get the offer.  C++Next is emerging as a premier site for C++-related articles, and, unlike some other publishers I could mention, it doesn't demand exclusive worldwide rights to the content it publishes, nor does it insist on "the right in [its] sole and exclusive discretion to edit, rewrite, condense, abridge, or otherwise change" what I wrote. (In fairness, that last part was followed by "taking care, of course, not to change your meaning," but my experience is that the most appropriate person to retain sole and exclusive discretion over what I mean is me.)

Eric volunteered to do the hard work of taking my article and preparing it for publication at C++Next, and then, in a stunning departure from some other publishers I could mention, he worked with me as I tweaked things here and there for final publication.  The result is the best version of the article that exists, both in terms of content and presentation.

I'm grateful to Eric and also to Dave Abrahams, both of whom were instrumental in helping me publish this article in its current form.  In an era when anybody can publish anything with a few mouse clicks, it's a pleasure to work with people who remain dedicated to the hard and detailed work of making content available that's useful to readers and satisfying for authors. Even more than usual, any shortcomings that remain in the article are my fault, because Eric and Dave bent over backwards to accommodate my requests.

Scott

Saturday, March 26, 2011

Effective C++ in the C++0x (C++11) Age

Yesterday, Herb Sutter posted the truly exciting news that the new version of C++ has reached FDIS status.  Practically (though not officially) speaking, this means that the new standard for C++ is finished, and we can stop using the code name "C++0x" and start using "C++11" in its place.

I was recently informed that the German translation of Effective C++ will be reissued with a new cover as part of their "classics" series.  They asked me to write a little something about it, and I came up with a new preface that considers the relevance of the information in the book in the age of C++0x/C++11.  Given the adoption of the FDIS, plus the fact that the preface will be published only in translation, it seems appropriate to post it here:
2011 is an exciting year for C++ developers. It marks the official debut of the new standard for C++, informally known as “C++0x”. Over a dozen years in the making, C++0x makes C++ more powerful and flexible than ever. In addition to introducing major new features, such as support for concurrency, lambda expressions, move semantics, and type deduction for variables (auto variables), C++0x provides an assortment of secondary capabilities that also increase expressiveness, improve efficiency, and eliminate programming drudgework. Examples include range-based for loops, static assertions, inheriting and delegating constructors, reference-counting smart pointers, hash tables, regular expressions, variadic templates, and more. All told, the C++0x feature set is about twice that of “old” C++. Furthermore, the feature set is increasingly real: the number of C++0x features supported by modern compilers is large and growing quickly. 2011 isn't just the year when C++0x receives official ratification as a new standard, it's also the year in which it starts to see serious mainstream use.

Which may lead you to wonder whether the information and advice in this pre-C++0x edition of Effective C++ remains relevant. I'm pleased to report that it does. Surprisingly so, in fact. Having spent nearly two years steeped in the details of C++0x, I expected to groan a bit as I reviewed this book's table of contents with C++0x in mind. Surely some Items would be inappropriate. But the advice I found proved sound. Should C++0x developers prefer consts, enums, and inlines to #defines (Item 2)? They should. Should they prevent exceptions from leaving destructors (Item 8)? Certainly. Should they use objects to manage resources? Declare data members private? Consider alternatives to virtual functions? Factor parameter-independent code out of templates? (Items 13, 22, 35, and 44.) Yes, yes, yes, yes! My goal has always been for Effective C++'s table of contents to summarize the advice in the book, and that summary remains just as applicable to C++0x development as to “traditional” C++ development. C++0x is a bigger language, and in some ways it's a different one, but the core techniques for making effective use of “old” C++ are core for the effective use of C++0x, too.

This doesn't mean that this Effective C++ is a perfect match for C++0x. The book doesn't discuss features new to C++0x, so Items about making effective use of those features are missing. A C++0xified Effective C++ would certainly have Items devoted to move operations, to uniform initialization, and to lambda expressions, and it'd probably have an entire chapter on making effective use of the concurrency API. Such a book would also contain different examples, e.g., ones making use of auto variables, range-based for loops, in-class default initializers, as well as the occasional variadic template. To the extent that this book falls short in its support for C++0x, the errors are those of omission, not commission.

But Effective C++ has never claimed to be a comprehensive book. My intent has never been for it to address every aspect of the language. Rather, it has been to examine the most important aspects of C++ that affect practicing programmers on a day-to-day basis. C++0x introduces new aspects of the language that warrant discussion, but that doesn't diminish the importance of the issues I treat in this book. In fact, it may accentuate them, because effectiveness with C++0x requires mastery of the language it extends, i.e, “old” C++. As the shiny new parts of C++0x garner more and more attention, discussion of the “old” parts will recede, but those parts will still be important.

Whether you're programming in “traditional” C++, “new” C++, or some combination of the two, then, the information and advice in this book should serve you well, both now and in the future.

Friday, March 25, 2011

C++ and Beyond 2010 Presentation Materials Now Available

The official presentation materials from last year's C++ and Beyond event that I did with Herb Sutter and Andrei Alexandrescu are now available for purchase.  For the full story, please consult my post at the C++ and Beyond web site.

Scott

Monday, March 21, 2011

Neuer Schulungskurs: Effektives C++ im eingebetteten Bereich

Seit 1999 habe ich mit der Firma QA Systems daran gearbeitet, technische Seminare in Mitteleuropa (hauptsächlich in Deutschland, normalerweise im Herbst) zu halten. Wir haben versucht, fast jedes Jahr etwas Neues anzubieten. Bis zu diesem Jahr hat „etwas Neues“ immer neue Themen bedeutet, und in den letzten Jahren ist es fast voraussehbar geworden, dass die Weltpremieren meiner neuen Seminare in Deutschland stattfinden. So war es mit meinem Seminar über C++0x in 2009 und mit dem über Fastware in 2010. Für 2011 wollen wir auch etwas Neues haben, aber dieses Jahr ist es kein neues Thema. Stattdessen ist es ein bewährtes Thema – die effektive Anwendung von C++ im eingebetteten Bereich – in einer neuen Sprache: Deutsch.

Wir finden, dass es ständig Interesse an diesem Thema in Deutschland gibt, und wir glauben, dass einige Ingenieure die Informationen lieber in ihrer Muttersprache erfahren würden, auch wenn der Referent (ich) mit einem komischen Akzent spricht. Der Inhalt des Kurses ist gleich wie die ursprüngliche englische Version („Effective C++ in an Embedded Environment“), aber alles ist auf Deutsch: der Vortrag, die Folien, die Unterlagen, die Fragen und Antworten – alles.

Ich kann nicht behaupten, dass ich Deutsch so gut spreche wie  Englisch (schön wär's!), aber QA Systems und ich denken, dass wir dieses Jahr eine gute Gelegenheit anbieten, nützliche, verlässliche Informationen über die Anwendung von C++ im eingebetteten Bereich auf Deutsch zu bekommen. Wenn Sie sich für dieses Thema interessieren, empfehle ich Ihnen, dass Sie die Beschreibung des Kurses auf der QA Systems Website anschauen.  (Dort wird der alternative Titel "Effective C++ in einer Embedded Umgebung" verwendet.)

Ich hoffe, Sie bei diesem Seminar im Oktober in Stuttgart kennenzulernen.

Scott

Talks in Stuttgart in October

For the dozenth year in a row, I'll be collaborating with QA Systems on a series of one- and two-day technical seminars in Germany in the fall.  (Okay, the first year the seminars were in Switzerland, and, yes, I am aware that Switzerland is not part of Germany.)  This year's talks are:
If the title of the second seminar looks a little funny, that's probably because you're expecting it to be in English.  It's not.  Like the entire seminar, it's in German.  I'll post details about that in a separate posting that will follow this one, although I'll note here that I didn't choose the rather Denglish title above.  The title I use is "Effektives C++ im eingebetteten Bereich."

The seminars with QA Systems are always a lot of fun, with very sharp attendees asking really interesting questions.  I hope to see you at one or more of the talks I'll be giving in Stuttgart in October.

Scott

Monday, March 14, 2011

Registration for C++ and Beyond 2011 is now open!

Herb Sutter, Andrei Alexandrescu, and I will be doing an all-new C++ and Beyond in August in Banff, and registration has just opened.  If you're intrigued by the notion of getting together with some of the most interesting and experienced C++ developers on the planet, discussing how to take advantage of new C++0x language features, and exploring how to attack challenging performance problems, C++ and Beyond is an event I think you'll find worthy of your attention.  I encourage you to check out the C++ and Beyond web site for everything there is to know about the event.

Most of my posts related to C++ and Beyond go to the C&B blog, so if you'd like to follow developments related to C&B, I suggest you subscribe to its feed.

I hope to see you at C&B 2011 in Banff in August!

Scott

Wednesday, March 9, 2011

Appearing and Disappearing Articles at DDJ

The article I mentioned in my last post ("Appearing and Disappearing consts in C++") is no longer available at the URLs I provided.  In fact, it's not available at the Dr. Dobb's web site at all.  However, the PDF I submitted to DDJ is available through this link, where it will remain. The rest of this post explains why the article briefly flickered to life at DDJ and then vanished. Unless your interest in C++ extends to the process of getting something about it published, you can skip the information that follows.

I can't speak for other authors, but the way I've always worked with publishers on articles can be summarized this way:
  1. I send the prospective publisher an idea for an article, a rough draft of an article, or an essentially complete article, and I ask if they are interested in publishing it. If so, we move to step 2.
  2. We negotiate a contract for the article.  Generally speaking, I grant them certain publication rights, and they agree to pay me something for them.
  3. I deliver a final version of the article, which they then convert into whatever format will be published.
  4. They ask me to review the converted article to ensure that no errors were introduced during conversion.
  5. The article is published.
In this case, DDJ went directly from step 1 to step 5 after agreeing to publish the article, something they were able to do, because I'd submitted an essentially final manuscript, thus eliminating the need to wait for me to deliver the final copy in step 3. I found out about the publication from a friend of mine some hours after the bits went live.

I contacted DDJ and expressed my concern that they had published without our agreeing on a contract or my being given a chance to review the article for errors.  They sent a proposed contract, and I requested changes.  We went back and forth a couple of times.  They eventually decided that we would be unable to come to agreement, so they removed the article from their site.  I found out about this when somebody posted a comment to that effect to my blog, although DDJ sent official notice some time later.

As an aside, the contract negotiations didn't get hung up on money.  It was more about the kinds of rights DDJ would acquire and who'd have control over the content of the article.

 I'm sorry about the confusion about the article's location, but at least we can enjoy the irony of an article about appearing and disappearing consts itself appearing, disappearing, and now reappearing.  I still  hope you find the article interesting and useful.

Scott

Tuesday, March 8, 2011

New Article: "Appearing and Disappearing consts in C++"

It's been a couple of years since I got the itch to write a technical article, but I recently found myself thinking about types in C++ and how the language sometimes adds or removes const without your explicitly asking it to do so.  This is especially the case when it comes to new features in C++0x such as decltype and lambda expressions.  The result is "Appearing and Disappearing consts in C++" at Dr. Dobbs.  The normal online version of the article is available here, but I think the formatting they use makes it difficult to read, so I suggest you view the printer-formatted version of the article instead. 

I hope you find the article interesting and the information in it useful.

Scott

Monday, January 24, 2011

Caches and Move Semantics at ACCU in April

I'll be giving two talks at the ACCU Conference in Oxford, England, in April:
The ACCU Conference has a great reputation, and based on my experience there last time, I can pretty much guarantee an event that's both technically solid and extremely entertaining. I hope to see you there!

Scott

Tuesday, January 4, 2011

New Training Course: "Fastware for C++"

I've been working intermittently on a book to be called Fastware!  for the past few years. (You can find information about it at its web site.) That project is currently on the back burner, because I ran into two difficulties.  First, I realized that the scope of the project -- encompassing topics in hardware, systems design, concurrency (both thread-based and distributed), algorithms, data structures, tools for improving performance, and more -- was not only going to be impossible to fit within 300 pages, it was also probably beyond my ability to fully comprehend.  Second, the fact that the book was to be language-independent meant that I'd be unable to push my technical treatments down to the level of detail that I and my readers are accustomed to.

These challenges interfered with my work on the book, but they did nothing to diminish my interest in the production of low-latency software systems, so I decided that a reasonable alternative approach was to take my long-established High-Performance C++ Programming training course, update it to acknowledge the emergence of compilers supporting features from C++0x, and expand it to include selected performance topics beyond C++ and its standard library. The result is a new two-day training course that draws heavily on my original vision for Fastware! while still assuming that C++ is the implementation language:  Fastware for C++.

Fastware for C++ covers hard-core C++ performance-related information such as how to avoid the creation of unnecessary objects and how to use the STL efficiently, but it also covers the impact of CPU caches on data structure and algorithm design, the need to optimize the performance of code you don't control (e.g., third-party libraries), commonly-available concurrent algorithms and data structures modeled on the STL, build-time optimization via profile-guided and whole-program analyses, and more. For details, consult the course's web page, and if you're interested in technical training on low-latency software systems in C++, I hope you'll keep it in mind.

Scott

Tuesday, October 12, 2010

Updates: C++0x Feature Availability, C++ & Beyond Encore

Two independent announcements that I'm bundling together, because both are short:
  • C++0x Feature Availability Table Updated.  In July, I posted that I'd updated my table of C++0x feature availability to include a link to a page summarizing Clang C++0x support.  Recently I discovered that that link is missing.  I can't explain this, but I can fix it, and I have: the link to Clang support is now present.  While I was updating that information, I took the opportunity to update my information for MSVC from Version 10 beta 2 to simply Version 10.  As far as I know, my table is now up to date, but if you see anything that's inaccurate, please let me know.
  • C++ & Beyond Encore Seats Going Quickly.  The "encore" version of C++ & Beyond that Andrei Alexandrescu and Herb Sutter and I will be putting on in December is now 1/3 sold out.  There won't be a second encore, and, like the original event that will take place at the end of this month, attendance is strictly limited to 60 spots, so if you've been thinking of attending, I encourage you to register sooner rather than later. (If you're interested in the technical program, talk descriptions are being posted to the C&B blog.)

Scott

Monday, October 11, 2010

Notes from MISRA Day 2010 Talk Now Available

On September 29, Les Hatton and I gave dueling presentations at the 2010 MISRA Day conference.  The exchange was billed as a debate between the two of us, with Les defending C for use in embedded (typically safety-critical) systems and me advocating C++.   As it turned out, Les argued that the choice of programming language is a lot less important than the ability of developers to use it well (a position with which I agree), but I went out and made my case for C++, anyway. 

It was an interesting talk to prepare, because it got me to thinking about very fundamental aspects of C++.  C++ has lots of fancy features, but what are the core features that really make it nicer to program in than C, especially for systems where you know you'll be programming in some kind of "safe" subset?  (MISRA has published guidelines for both C and C++ that are designed to constrain its use to improve its suitability for application in safety-critical systems.)  I ended up spending the biggest part of my time on constructors, destructors, and RAII, although I touched on many other aspects of C++, too.  These days, I spend most of my time focusing on the more advanced C++ features (often the new ones introduced in C++0x), so it was nice to go back and remind myself of some of the key things that distinguished C++ from C at the very beginning (in the early 1980s).

If you're interested in the presentation materials I used at MISRA Day -- at my take on key C++ features that make it more attractive than C for use in safety-critical systems, they're now available for viewing.

Scott

Friday, September 24, 2010

Encore! C++ & Beyond Redux Occurs Dec. 13-16

C++ & Beyond, the sort-of-a-conference-but-not-really that Herb Sutter and Andrei Alexandrescu and I are putting on at the end of October, has been sold out since July, but so many people added themselves to the waiting list, we decided to do an encore presentation in December.  For details, consult the event announcement at the C&B web site.

In the meantime, Herb and Andrei and I just "finalized" and published the C&B technical program, so I encourage you to take a look at the topics we plan to address.  I put "finalized" in quotes, because we always reserve the right to change things.  Officially, the schedule is perpetually in draft form.  Having said that, I don't think any of us expects to make any changes. We just like knowing that if we wake up one day with a brilliant idea for a topic, we have the freedom to displace something else on the (always draft) schedule to make room for it.

I hope to see you at C&B, either in October or in December.  If you're interested in following what's happening in C&B-land, please subscribe to the C&B RSS feed.  Most of my posts that are specifically about C&B appear there.

Scott

Thursday, July 22, 2010

Updated C++0x Feature Availability Information

Today I downloaded the TDM distribution of gcc 4.5 for Windows and played around with it a bit.  Part of that playing around including cursory checks to see what new features of C++0x were supported, and I was pleased to see that there were quite a few, including lambdas, raw string literals, and new STL algorithms like all_of/any_of/none_of.  I updated my summary of C++0x feature availability with the new information, and as long as I was at it, I also added a link to C++0x support in Clang, as I'd happened across that page a couple of days ago.

Gcc 4.4 already had a lot of C++0x support, and in conjunction with MSVC 10, which also offers many C++0x features, it was already possible to experiment with lots of C++0x, but with the introduction of gcc 4.5, not only do we have even more of C++0x to play with, but, thanks to gcc's support for lambdas, writing portable C++0x code is now easier than ever.

If you find the revised C++0x feature availability table useful, please spread the word about it.  If you find errors in it, please let me know about them.  Either way, have fun with C++0x!

Scott

PS - Even if you're familiar with Gnu's summary of C++0x support in gcc 4.5, you might want to take a look at my table, because Gnu and I break things down differently.  Gnu's table, for example, makes no mention of alignof, but my table includes it as a line item, which is why I was motivated to see if gcc 4.5 supports it.  It does!

Friday, May 21, 2010

Notes for Portland Code Camp Talk Now Available

My presentation isn't until tomorrow, but I somehow managed to finish the materials for it today.  If you're interested in what I have to say on the topic "CPU Caches and Why You Care," I encourage you to download the presentation materials (PDF) and take a look. 

Scott

Wednesday, May 12, 2010

Upcoming Talk at Portland Code Camp

I've been interested in Code Camps ever since I heard about them a couple of years ago, but, until this year, my interest never rose to the level of participating. Portland Code Camp will take place in Portland, Oregon, on May 22 (a week from Saturday), and I'll be giving a talk on CPU Caches and Why You Care.  The material is based on my work on Fastware! (which, after a year-long digression into C++0x, I'm finally getting back to), and the talk will serve as an alpha version of material I expect to present in my seminar on Fastware for C++ in Stuttgart (Germany) at the end of September and possibly also at C++ and Beyond in Snohomish, Washington, a month later.

Like all Code Camps, Portland Code Camp is free, so if you live near Portland, Oregon, and don't mind devoting a Saturday to all things code-related, I encourage you to register, then come by my session for a crash course in CPU caches.  It should be interesting to see how it goes, given that the talk currently exists only in my head.  But in my head, it's really good :-)

Scott

"C++ and Beyond" Tickets Going Fast

On April 17, I announced the opening of registration for C++ and Beyond, the end-of-October sort-of-a-conference event featuring me, Andrei Alexandrescu, and Herb Sutter.  Registrations have been coming in at a steady rate ever since.  20 of the 60 available places have now been taken.  At this rate, we'll sell out long before the end of the Early Bird registration period, thus demonstrating why we're known for our technology smarts and not for our business savvy. 

One of the primary features of this event is its limited size, so the number of available spots will not increase.  Once 60 people have signed up, that's it:  registration will close.  (We'll probably set up a waiting list, in case there are cancellations.)

If you're at all interested in C++ and Beyond, I strongly encourage you to subscribe to its RSS feed, because most of what I have to say about that event goes on its blog, not here.  Even if you're not interested in attending C&B (as Herb, Andrei, and I call it), you may find the C&B blog interesting, because that's where we post ideas for technical sessions and otherwise more or less think out loud. Last week, for example, I posted about a prospective session called CPU Caches and Why You Care.

Scott

Monday, May 10, 2010

New ESDS Book: Effective Perl Programming

I was honored when the authors of the new (second) edition of Effective Perl Programming agreed to be a part of my Effective Software Development Series.  I'm not a Perl programmer, and the book's first edition had been very well received, so although I offered a few comments on the manuscript, I primarily tried to stay out of the authors' way and let them do what they clearly know how to do very well:  explain how Perl programmers can use the language more effectively, especially in light of the changes that have taken place in the Perl community since the first edition was published in 1998.

If you're a Perl programmer, I encourage you to give this new edition a look-see.  I think you'll be impressed with what you'll find there.

Scott

Tuesday, April 27, 2010

New Training Materials Developments

My training materials on making effective use of C++ in embedded systems are now available. Like my materials on C++0x, they cover material not in my books, come DRM-free, and include free updates for life. I encourage you to check out the sample excerpt.

Less than a day after I announced the availability of my C++0x materials, people started asking about how they could get a license for everybody on a team or everybody in a department, etc. Our solution is a very generous volume discount schedule. Starting with the 10th copy, you get 30% off, and by the time you order 50 copies, you're getting 50% off.

I hope you find the materials on using C++ in embedded systems useful, and I hope you find that the volume discount schedule makes group purchases economical.

Scott

* C++ and Beyond: Meyers, Sutter, & Alexandrescu, Oct. 24-27 near Seattle.
* License Scott's training materials for commercial or personal use.

Sunday, April 18, 2010

"C++ and Beyond" Registration Now Open

In January, I mentioned that Herb Sutter, Andrei Alexandrescu, and I were organizing a sort-of-a-conference event called "C++ and Beyond". We originally planned to hold it this summer, but it turned out that the intersection of availability of a suitable venue and availability of the three of us yielded dates in late October: October 24-27, to be precise. Full information about "C++ and Beyond" (C&B) is available at its web site, and you can remain apprised of C&B-related development by subscribing to its RSS feed. Because of the existence of that feed, I will make very few additional announcements about C&B to this mailing list. If you're interested in C&B, I encourage you to subscribe to its RSS feed.

I blogged about the structure of C&B at http://cppandbeyond.com/2010/04/15/c-beyond-event-structure/ and about the venue and why we chose it at http://cppandbeyond.com/2010/04/16/the-venue-for-cb/, so here I'll simply summarize the main points:
  • Attendance is limited to 60 people.
  • C&B runs from 8AM to 9:30 PM each day and features as much time dedicated to informal discussions as to official presentations.
  • It takes place at a venue designed to foster interaction among participants.
For details, please consult the C&B web site.

Registration for C&B opened yesterday.  There's a 10% discount for early bird registrations (by July 24) , and a further 10% discount for groups of 3 or more. Given the limited attendance and the fact that the first slot got snapped up less than 8 hours after registration opened, I suggest you register earlier rather than later.

I hope to see you in October at C++ and Beyond. I'm convinced it is going to be one of the most rewarding technical opportunities of 2010.

Scott

* C++ and Beyond: Meyers, Sutter, & Alexandrescu, Oct. 24-27 near Seattle.
* License Scott's training materials for commercial or personal use.

Monday, April 12, 2010

Latest ESDS Book, "Effective C#, Second Edition"

As .NET and C# evolve, so must the advice on how to use the language effectively. I'm pleased to report that today I got a shiny new copy of the new second edition of Bill Wagner's "Effective C#". As with the first edition, I learned a lot reading it, and I'm confident it will be as useful to C# developers as both its predecessor and Bill's other C# book, "More Effective C#". (Where do they come up with these names?)

Amazon's page for Bill's new book is http://tinyurl.com/y7awxhc. I encourage you to check it out.

Scott

* Scott's training materials now available for commercial or personal use.

Thursday, April 8, 2010

C++0x Interview with Software Engineering Radio

Last week I chatted with Markus Völter of Software Engineering Radio about C++0x, and earlier this week the interview went live. You can find it at http://www.se-radio.net/podcast/2010-04/episode-159-c0x-scott-meyers.

Scott

* Scott's training materials now available for commercial or personal use.

Wednesday, April 7, 2010

My training materials for C++0x, etc., now available

Briefly:
A non-brief explanation follows.

* * * * *

When I write a technical book, my general approach is as follows:
  1. Master the material.
  2. Figure out what "story" I want to tell, i.e., what to cover, what to omit, what order to cover things in, what examples to use, etc.
  3. Write it up.
In practice, Step 2 almost always breaks down into these steps:
  • 2a: Come up with a story that I think will work, i.e., that will effectively convey the technical information.
  • 2b: Develop a training course corresponding to that story.
  • 2c: Deliver the training course to professional developers and see how well the story works. In places where it doesn't work as well as it should, return to step 2a and iterate until everything is satisfactory.
The only difference between writing a book and developing a training course is the existence of step 3: writing the prose corresponding to the story.

My primary activity during the past year has been learning about and teaching other people about C++0x. (It wasn't supposed to be that way, but C++0x turned out to be a much more involved topic than I expected.) I now have a set of C++0x training materials that I think are quite good, but I don't want to write them up in book form, because, among other things, C++0x is still being refined, as is both my understanding of it and compiler vendors' implementations.

Still, I think the information in my C++0x training materials is valuable in its current form, and, to be honest, more comprehensible and up-to-date than what you're likely to find by searching the Internet. Before now, the only way people could get a copy of these materials was to attend one of my training courses (my schedule's at http://www.aristeia.com/seminars.html), but such courses don't take place terribly often, and they're not in everybody's budget, so I've decided to offer my C++0x course notes for sale on a standalone basis.

Unlike a book, they lack the connective prose that makes for a smooth reading experience, but in some ways, they're better than a book. They make more extensive use of color, they "cut out the fat" to focus on the technical essentials, and my licensing terms grant buyers unlimited updates for life: as long as I update the materials, buyers are entitled to a revised version for free. Furthermore, because training materials inherently use a large font and are chopped into page-based chunks, reading them on mobile devices like iPhones should be a more satisfying experience than trying to read a conventional technical book.

The C++0x notes are available now, and by the end of the month, I expect to have the notes from my courses on using C++ in embedded systems and on improving software quality available, too.  You'll find detailed information on all of these at http://www.aristeia.com/Licensing/personalUse.html. Virtually none of the material in these courses is available in my books.

My initial goal with this project was to make the information in my training materials available to individuals who don't attend my training courses, but I know that there are companies who might be interested in the materials, too. For example, technical training companies might want to use them with their own clients, and large companies with internal training departments might want to use them as the basis for internal training.  As a result, I'm now making all my training materials available for commercial licensing. Details on that option are available at http://www.aristeia.com/Licensing/licensing.html.

For over 20 years, I've been doing my best to disseminate useful, accurate technical information to professional software developers. I've written several books and dozens of articles, but some of my most valuable information has existed only in the form of training materials that were accessible only to people who could attend a course. That's no longer the case. All my materials may now be commercially licensed, and selected sets of training materials may be purchased for personal use.

I hope you find the availability of the information in my training materials interesting, and I especially encourage you to check out my C++0x notes (including a free ~25-page excerpt) at http://www.artima.com/shop/overview_of_the_new_cpp.

If you have comments on my making my training materials available for personal and commercial use, don't hesitate to let me know.

Thanks,

Scott

* Scott's training materials now available for commercial or personal use.

Monday, January 11, 2010

Boutique Summer Conference: "C++ and Beyond"

Few things are as professionally rewarding as getting together with colleagues to discuss interesting technical issues. For C++ developers these days, there are more things to discuss than usual. The first of a raft of new language features -- the initial wave of C++0x -- are becoming widely available, and they promise to change the way we design and implement good software. We're still trying to come to grips with the concurrency revolution in hardware, while at the same time dealing with increasingly demanding performance constraints. In the meantime, new languages (e.g., D) and language abstractions (e.g., futures, ranges) offer new tools for approaching the systems we need to build. There's a lot going on.

Herb Sutter, Andrei Alexandrescu, and I thought would be fun to organize a technical event where we could discuss the contemporary challenges facing C++ software developers. Thus was born "C++ and Beyond," a limited-attendance conference to be held this summer near Seattle, Washington. We haven't worked out the details on this event yet, and one reason is that we're still trying to figure out when to hold it. Rather than pick dates at random, we chose two sets of dates and decided to ask prospective attendees which they prefer. To that end, if you think you might be interested in getting together with me, Herb, Andrei, and a few dozen people as interested in and passionate about issues relating to C++ software development as you are, please visit cppandbeyond.com to learn more about the conference and to vote on when you'd like us to hold it.  While you're there, please also submit comments on the kinds of topics you'd like to see explored at the conference. With your help, we'll be able to put together a killer program focusing on the issues you want to talk about on dates that are convenient for you.

I hope you're as excited about this event as I am. If so, please visit cppandbeyond.com this week to let us know when you'd prefer to see the event held and to tell us what you'd like to see it cover. Voting ends on Friday, January 15, so I encourage you not to procrastinate too long.

Thanks,

Scott

Tuesday, December 8, 2009

Seminars in Germany next Fall

Those of you who like to plan things far in advance will be pleased to know that
we've chosen the dates, topics, and location for my C++ seminars next fall in
Stuttgart, Germany. In addition to the seminar on using C++ in embedded systems
that I've given for several years, I'll be giving my overview of C++0x (suitably
updated to take into account the latest efforts by compiler vendors and the
standardization committee) as well as a new seminar on how to write C++ software
that runs very quickly (i.e., "Fastware! for C++"). As is the case for all my
scheduled public presentations, details are available at my "Upcoming Talks
page," http://www.aristeia.com/seminars.html .

Ich hoffe, Sie nächstes Jahr in Stuttgart zu sehen!

Scott

Tuesday, October 13, 2009

C++0x Training Course Extended to Three Days

I mentioned in a July message that the debut of my new training course on C++0x
would take place in late September, and that debut has now taken place. The
course was a lot of fun, but I was surprised to discover that the quantity and
depth of the material requires substantially more time to cover than I'd
anticipated. I've hence extended the course from two to three days, although a
two-day version is still available. (It omits most coverage of TR1-based
library components.)

The public world debut of the new "extended dance remix" version of my overview
of C++0x will take place in Bellevue, Washington, in early December. Details
are available at http://construx.com/Page.aspx?nid=17&id=115 . I hope to see you
there.

Scott

Friday, September 4, 2009

"97 Things" Contribution

You may be familiar with O'Reilly's "97 Things" series, which currently consists
of "97 Things Every Software Architect Should Know" (
http://oreilly.com/catalog/9780596522698/ ) and "97 Things Every Project Manager
Should Know" ( http://oreilly.com/catalog/9780596804169/ ). There's now a
programmer-centric version in the works under the editorship of Kevlin Henney:
"97 Things Every Programmer Should Know;" wiki at
http://programmer.97things.oreilly.com/wiki/index.php/97_Things_Every_Programmer\
_Should_Know .

I was asked to write a contribution for this project, so I decided to revise my
2004 IEEE Software article to fit the "97 Things" length restriction of 500
words. The result is at
http://programmer.97things.oreilly.com/wiki/index.php/Make_Interfaces_Easy_to_Us\
e_Correctly_and_Hard_to_Use_Incorrectly . I hope you like this concentrated
version of my advice to "Make Interfaces easy to use correctly and hard to use
incorrectly," and I encourage you to look over the other articles at the
project's site -- and possibly even add your own.

Scott

Wednesday, August 26, 2009

C++0x Seminar in December in Bellevue, Washington, USA

The fine folks at Construx Software in Bellevue, Washington, and I have teamed
up to schedule my new two-day intensive overview of C++0x on December 1-2.
Details are available at http://construx.com/Page.aspx?nid=17&id=115 . This
will be the first public presentation of the seminar in North America, and it
will benefit from the improvements I'll make after its world debut in Stuttgart,
Germany, at the end of September (
http://www.qasystems.de/html/deutsch/seminare/seminardetail/seminardetail14.php
), as well as whatever updates I make following the next C++ Standardization
meeting in October.

I hope to see you in Bellevue (or Stuttgart!) to talk lambdas, rvalue
references, hash tables, regular expressions, variadic templates, attributes,
and a whole lot more.

Scott

Tuesday, July 7, 2009

New Training Course on C++0x

I've just completed development of a new C++ training course, this one on the
new features in C++0x (the forthcoming revised standard for C++). My original
plan had been to develop a one-day seminar, but it turns out that C++0x has so
many new features, trying to describe and explore even the "primary" ones in
only one day just isn't possible. So the course runs two days. Furthermore,
recent compiler releases (e.g., VC10, which is now in publicly available beta,
and gcc 4.4) support a surprisingly large number of C++0x features, so even as
the C++ standardization committee hammers out the final details of the next
version of C++, you can start getting experience with parts of the enhanced
language and standard library right now. If my experience is any indication,
your new best friend in C++0x will be "auto," and, especially if you're doing
multithreaded programming, you're likely to develop a serious fondness for
lambdas.

The new course is described at http://www.aristeia.com/C++0x.html , and its
public world premiere will take place in Stuttgart, Germany, at the end of
September (link available at http://www.aristeia.com/seminars.html ). If you're
interested in knowing more about the course or if you'd like to consider booking
it for presentation at your company, let me know.

Scott

Sunday, April 12, 2009

Video of my TOC Talk Now Available

The talk I gave at the February Tools of Change in Publishing conference is now
available at http://blip.tv/file/1976570 . It's aimed at people in the
publishing industry, so it's not terribly technical, but if you're interested in
my take on what authors need to think about when writing for multiple output
devices, you might want to take a look. (An alternative is to look through the
entries of my blog for Fastware! at http://fastwareproject.blogspot.com/ .)

Speaking of having book content available on multiple devices, I've recently
discovered that some of my books are available on electronic devices other than
Kindle. This was news not just to me, but also to my editor, so we're in the
process of trying to figure out what's available where and why. Our goal is to
make everything available everywhere. Once I have a clearer picture of the
availability of my books on different devices, I'll post details to this list.

Scott

Monday, March 2, 2009

Summer/Fall Seminars in Vienna and Stuttgart

My annual collaboration with QA Systems in Germany will continue this year in
Stuttgart with a five-day schedule that includes two new seminars, one on C++0x,
the other a generalization of my "High-Performance C++ Programming" seminar
called "Fastware with C++." Dates are in September and October, and you can
find all the details at my Upcoming Talks page,
http://www.aristeia.com/seminars.html .

New this year is a series of four technical seminars in Vienna (Wien) in June,
including my language-independent presentation on producing high-quality
software, as well as three in-depth C++ topics. The topics I'll discuss in
Vienna are different from those I'll address in Stuttgart. These seminars are
also in collaboration with QA Systems, and details are available at
http://www.aristeia.com/seminars.html .

I hope to see you in Vienna or Stuttgart...or both!

Scott

Tuesday, February 17, 2009

Electronic Options for my Books

Executive Summary: my books are now available as DRM-free PDFs, for the Kindle,
or via Safari for both online viewing and PDF download. You now have multiple
options for reading my "Effective" books without harming any trees.

* * * * *

[DRM-Free PDFs]

I've mentioned in the past that I've been working on PDF versions of my books.
Those are now available, DRM-free and chock-full of linked navigation in all the
ways I believe you have a right to expect: tables of contents, indices,
cross-references, URLs, mailtos, the whole nine yards. In fact, they've been
available since October, but I've held off officially announcing them until now,
because there were a few bureaucratic loose ends that didn't get tied up until
last week. Information on the PDFs is available at
http://scottmeyers-ebooks.com/ .

[Kindle]

Unbeknownst to me until about an hour ago, two of my books -- Effective C++ and
Effective STL -- are now available for Amazon's Kindle. I haven't seen these
editions myself, so I can't tell you anything about them. Since I don't have a
Kindle, this is unlikely to change anytime soon. If you try these editions,
please let me know what you think of them. You'll find links to the Kindle
editions of these books at http://www.aristeia.com/books.html .

[Safari]

My books have been available for online viewing via Safari for a while, but only
last week did I learn that Safari also sells PDF versions for download. These
PDFs were prepared without my involvement, and I haven't yet seen them myself,
but my guess is that they will offer fewer features than the PDFs I mentioned
above. They may be priced more attractively, however. The entrée to the world
of Safari is http://www.safaribooksonline.com/ .


I'll do my best to keep my books page ( http://www.aristeia.com/books.html ) up
to date regarding the various delivery options for my books, but sometimes new
editions come out without my knowing about it. (The author is always the last
to know!) If you find a version not listed at my site, please tell me about it.

Personally, I find that print and electronic versions of books have
complementary strengths and weaknesses, so I'm pleased that my books are now
offered in so many formats. I hope you'll take a look at the options available
and, if you try one or more of the non-print versions, let me know how you like
them. For the book I'm working on now (check out http://fastwarebook.com/ --
which needs a lot of work, sigh -- if you are interested), my plan is to target
electronic publication as the primary delivery mechanism, so I'm quite
interested in what works and what doesn't.

Scott

Thursday, February 5, 2009

Seminar Scheduled: C++ in Embedded Systems

I'll be giving my two-day intensive seminar on making effective use of C++ in
embedded systems on March 30-31 in Beaverton, Oregon. Details are available at
http://www.cpd.ogi.edu/coursespecific.asp?pam=2457 . This is one of my favorite
training courses, because the topics range from the very lowest level language
issues (e.g., what is the cost of using various C++ features?, what's a good way
to model memory-mapped IO?) to higher-level process issues (e.g., how can we
approach the development of real-time and safety-critical systems in C++?). If
you're interested in the use of C++ for developing embedded software, I hope
you'll consider attending this seminar.

Scott

Tuesday, January 6, 2009

Upcoming Talks in New York City and Santa Clara, California

On February 10, I'll be giving a talk at the "Tools of Change" publishing
conference. The topic is "Authoring Challenges in a Multiplatform World." As
the conference and talk title should suggest, it's not a talk about software
development, it's a talk about what I think authors need to worry about as we
make the transition from paper-based publication to a mix of paper and
electronic reading devices. If you've been reading my Fastware! blog (
http://fastwareproject.blogspot.com/ ), you'll have a good idea of the flavor of
the talk. Links to the conference and the talk description are at my Upcoming
Talks page: http://www.aristeia.com/seminars.html

In March, I'll be making my usual visit to the Software Development conference
in Santa Clara, CA, where I'll be giving one full-day language-independent
tutorial on software quality and three shorter hard-core C++ talks. Links to
the conference and talk descriptions are also at my Upcoming Talks page:
http://www.aristeia.com/seminars.html

I hope to see you at one or both events.

Scott

Wednesday, November 5, 2008

Blog for "Fastware!"

I've started a blog for discussion of issues related to the book I'm working on
called "Fastware!" The book itself is about how to produce software systems that
are fast, but the issues I'm currently addressing in the blog are about the
writing itself rather than the technical content. I hope to move on to
content-related topics before too long, but first I have some authoring problems
to resolve. I encourage you to take a look at the blog at
http://fastwareproject.blogspot.com/ and offer comments on the issues I raise
there. (Currently, there are only two entries, but tomorrow is another day.)
My conversations with authors and publishers have not been terribly helpful in
resolving the questions I'm wrestling with, so I'm hoping that by exposing these
issues to the world at large, I'll get feedback that will help me produce a book
that's well suited to the future of publishing as well as the past.

Please let others know about this blog if you think they are likely to be
interested in authoring issues (now) or speed-related issues (later).

Thanks,

Scott

Tuesday, September 23, 2008

New Article Just Published

The C++ Source has just published a new article of mine, "Enforcing Code Feature
Requirements in C++." You'll find it at
http://www.artima.com/cppsource/codefeatures.html . Here's the summary from the
top of the article:

>Functions often depend on particular behavioral characteristics
>(“features”) of code they invoke. For example, thread-safe code must
>invoke only thread-safe code if it is to remain thread-safe, and
>exception-safe code must invoke only exception-safe code. This paper
>describes a technique that enables the specification of arbitrary
>combinations of user-defined code features on a per-function basis and
>that detects violations of feature constraints during compilation. The
>technique applies to member functions (both nonvirtual and virtual),
>non-member functions, and function templates; operators are excluded.

The article has a definite "researchy" feel to it (you may sense that from the
summary above), and in fact I originally wrote it for publication in the
academic community. Still, I think the ideas and techniques it describes are
relevant to many problems C++ developers regularly confront.

The research behind the article took over a year (off and on), and the article
itself was extensively modified twice (essentially rewritten) before it got into
its current form, so it represents a lot of work on my part. I'm pleased with
the way things turned out. I hope you find it interesting.

Scott

Thursday, July 17, 2008

All March Interview Parts Now Available

Last month I mentioned that a video interview I gave in March had been broken
into four parts and was being posted piecemeal. All four parts are now
available, and you can find links to them at my "Articles and Interviews" page,
http://www.aristeia.com/publications.html .

Scott

Sunday, June 22, 2008

New Web Site Plumbing

A significantly revised version of my web site has just been installed, and,
with any luck, you won't notice a thing. The fundamental look and content has
not been changed. Under the hood, however, much is different. Frames are gone,
and that means that bookmarking and printing should work a lot better. Most
pages are now standards-conformant, and the few that are not (typically those
with tables that were tricky to replace with CSS) will be soon (I hope).
Cross-browser compatibility should be better. Fundamentally, all the stuff that
used to work should continue to work, and many things that didn't work before
should work now.

Included among the old things that should continue to work are URLs. It really
makes my blood boil when I bookmark a page at a site and later find that the URL
I saved is broken, because the webmorons maintaining the site couldn't be
bothered to ensure that old URLs remained valid when said morons decided to
reorganize. One of my primary constraints during the work on my web site was
that old URLs should continue to work, and one of the reasons I'm telling you
about the revised plumbing is that I'd like you to tell me if any URLs into my
site that used to work don't any more. If an old URL fails to work, that's a
bug, and we'll do our best to fix it pronto.

If you happen to notice any other implementation aspect of the revised site that
isn't what it should be, please let me know. I welcome comments on content,
too, but my focus right now is on getting the HTML and CSS, etc., working the
way it should be.

Thanks,

Scott

Wednesday, June 11, 2008

New Podcast interviews available

In March, Addison-Wesley asked Ted Neward to interview me about the forthcoming
electronic versions of my books as well as about my thoughts on C++0x, and that
interview has now been chopped into four pieces and scheduled for publication in
both audio and video podcast form. The first two parts (covering my thoughts on
electronic publication) are now available:

Audio form: http://www.podango.com/podcast/2243/OnSoftware_audio
Video form: http://www.podango.com/podcast/2066/OnSoftware_video

You should be aware that the audio form is simply the audio track of the video
form. Unfortunately, the video form shows the interview topic and names of the
participants only through video, so if you listen to the audio only, it'll be
easiest to understand if you note the topic and names (Ted Neward and me) in
advance.

The remaining two parts of the interview will be published on June 17 and 24,
and there are RSS feeds at the site so you can arrange for automatic
notification, if you like.

Incidentally, the PDF versions of my books are currently undergoing final QA,
and I'm hoping they'll become available later this month. That's a couple of
months later than we'd originally planned, but we've been addressing more
"issues" than we anticipated during their preparation, most arising from
"undocumented features" in several tools we've been using. We've also had to
wrangle with the usual impossible things taking place -- you know, the stuff
that just seems to happen when doing anything software-intensive the first time
around.

I hope you enjoy the podcasts.

Scott

Wednesday, April 30, 2008

Talk in Redmond, WA, on May 20

On Tuesday, May 20, I'll be giving a talk at the Northwest C++ Users Group in
Redmond, Washingon. I'll be describing a fully compile-time mechanism for
enforcing arbitrary code constraints. It's an updated version of a talk I gave
at the Users Group last year and at the Software Development Conference earlier
this year. The current approach checks everything during compilation,
approximates support for contravariant constraints down an inheritance
hierarchy, and allows overloading on constraint sets. I think it's kind of
nifty.

Details are available at http://www.nwcpp.org/Meetings/2008/05.html . I hope to
see you there.

Scott

Wednesday, March 19, 2008

Books' PDF Update; October Talks in Germany

It's hard to believe it's been nearly six months since I first wrote about the
forthcoming availability of my books in electronic form. We've done a lot of
work since then, and the PDFs are nearly completed. Initial availability is
expected to be next month. We've largely hewed to the plan I posted in October,
but we did make one major change: the PDFs will use no DRM. Instead, we'll
rely on "personalization" technology that adds purchaser information (e.g.,
their name) to the PDFs when they are purchased. Presumably, this will
discourage people from posting their PDFs on the Internet.

The lack of DRM means you can put copies of the PDFs you buy on all your
machines, you can annotate and print them to your heart's content, you can
access them through desktop search tools, etc. In other words, you can
literally (and legally) do pretty much all the things with your PDF copies of my
books that I can, as long as the result is for your personal use. I've attached
a marketing flyer that gives more information about the electronic versions of
my books and also gives an email address to write to if you'd like to be
notified when they become available.

* * * * *

For the tenth year in a row, I'll be presenting a series of technical seminars
in Europe in the fall. This year all the talks will be in Stuttgart, and one of
the highlights will be my recently-developed two-day course on making effective
use of C++ in embedded systems. You can find links to all the seminars at my
Upcoming Talks page, http://www.aristeia.com/seminars.html .

Thanks for your continuing interest in my work.

Scott

Thursday, December 6, 2007

Talks Scheduled for the Software Development conference

The Software Development conference in Santa Clara, California, is taking place
earlier than usual this year (the first week of March), and I'm slated to give
two full-day tutorials and three shorter talks during the three days I'll be
there. You'll find a summary of the topics I'll be speaking about at my
"Upcoming Talks" page (http://www.aristeia.com/seminars_frames.html). You may
be especially interested in my "C++ Double Feature" talk, which, though
incorporating some material I've presented a couple of times before, is
essentially brand new.

I hope to see you at Software Development in March.

Scott