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

Wednesday, October 31, 2007

PDF Versions of my Books

I'm currently working with my publisher on the preparation of PDF versions of my
books, which we hope to make available (i.e, for sale) within the next couple of
months. We have a pretty good idea of what we're going to be offering, but
we're still tinkering with the details, and I'd be interested in any suggestions
you'd care to offer.

The basic plan is to offer the complete books (front cover to back cover) in PDF
protected by fairly lax DRM. The existence of DRM means you'll have to use a
reader that supports that DRM, the most common choice probably being Acrobat
Reader. You can expect:
- The ability to have each ebook on several machines simultaneously. Each PDF
file is licensed for one user, but that user will have the ability to put copies
on multiple machines. A copy at work, home, and on a laptop will be no problem.
- The ability to print your copy of each ebook.
- The ability to copy material out of the ebook, except that you will probably
be limited to no more than 30 copy operations in each 30-day period.
- All URLs and intra-book cross-references will be live links. So TOC and index
entries will be live, cross-references among book Items will be live, etc.
- The PDF you download will be the current version. I often make small updates
between printings, and if I've submitted the PDF for printing n of the book to
the publisher, you'll download that version, even if the printing still
available in hardcopy bookstores is n-1.
- Books with text in two colors (EC++ and ESTL) will have text in two colors.
(This may seem obvious, but tell that to the people who scan my books and post
illegal copies on the internet, sigh.)
- All photos in the books that are in black and white will be in color. Okay,
there's only one photo, and it's of Persephone (our late dog), but it will be in
color!
- All the usual PDF features, e.g., full-text searching, cross-platform support,
pan and zoom, etc.

As I said, that's the basic plan. If you have suggestions for things we should
add or should avoid, especially if it's based on your experience with other PDF
ebooks, and most especially if it's based on experience with other PDF versions
of Addison-Wesley books, please let me know. Suggestions most likely to be
adopted will require little or no human intervention, so asking for things like
live links between books (which do not exist in the printed books, because I
want all the books to stand on their own) are likely to be noted, logged, and
not acted upon, at least not for the initial release of the books in this form.
We'll revisit such suggestions if we decide to do something more ambitious in
the future.

Thanks in advance for your feedback. We're hoping to do a really nice job with
these ebooks, and with your help, we will.

Scott

Wednesday, October 3, 2007

Video Interview Now Available

In March of this year I was interviewed for OnSoftware by Chuck Allison at the
Software Development conference in California. The interview was chopped into
three pieces and, I found out just today, posted in late August and early
September. Topics discussed include how I got into C++, my view on the proper
role of the language, its use in embedded systems, template metaprogramming, new
features in C++0x, and general principles for improving software quality.
You'll find links to each of the three videos at my publications page
(http://www.aristeia.com/publications_frames.html) and also at the main
OnSoftware page
(http://www.informit.com/podcasts/channel.aspx?c=dadf92ca-3bdc-484e-9cd8-cbfe0cf\
c0de6).

I haven't watched myself on video much, so I was surprised to see how much I
look around while talking. I mentioned this to my wife, and she simply looked
at me and said "Well, duh."

I hope you like the video interview.

Scott

Monday, September 3, 2007

Astoria Seminar Update

In June I announced that I'd be participating in The Astoria Seminar, an
intensive C++ event taking place September 24-26 in Astoria, Oregon. I noted
that the event was limited to 55 attendees, so the attendee-speaker ratio was
guaranteed to be 11:1 or less. Right now, there are still a fair number of
spots open, so it's looking likely that the attendee-speaker ratio will be well
under 11:1.

I can't predict the future, but I think it's highly unlikely you'll ever get
another chance to attend an event with this kind of access to Andrei
Alexandrescu, Dave Abrahams, Walter Bright, Eric Niebler, and me. If you've
been thinking about attending the seminar, but have been undecided, I encourage
you to give it serious consideration. I really do think it's likely to be a
one-of-a-kind event.

For details on the Astoria Seminar, visit http://www.astoriaseminar.com/ .

Scott

Friday, June 15, 2007

The Astoria Seminar: September 23-26

On September 23-26 in Astoria, Oregon, I'll be participating in a C++ event that
I hope you'll find intriguing. The event is kind of hard to describe, because
it's sort of a conference, sort of a workshop, sort of a party.

Fundamentally, five people who know more about C++ than is probably healthy --
Andrei Alexandrescu, Dave Abrahams, Walter Bright, Eric Niebler, and me -- are
going to get together at a boutique hotel (the Hotel Elliot) and nifty meeting
space (the Banker's Suite) and talk serious C++ with the 55 people who choose to
attend. Breakfast is provided, so the talk starts early. After breakfast,
there will be some lecturing or interactive workshops (depending on who's
running the session). Topics are all over the C++ map: memory management,
expression templates, callbacks for C APIs, compiler internals, generic program
design. Then we'll have lunch. It's also provided, so there will be no
interruption to the flow of the conversation. After lunch, it's back to
immersive technical sessions. We'll all need a break after that, but in the
evenings something really interesting happens: we all return to the Banker's
Suite to hang out and talk. Or code. Or whatever. No formal sessions are
scheduled, but all five of us will be there, so if you want to talk code
generation with Walter, he'll be happy to do it. Want Eric to explain
expression templates to you -- or maybe his compile-time regex engine? He's on
board with that. Wonder what Andrei is doing for his PhD research or what new
tricks Dave has in mind for his Boost Python library? Ask 'em. I'll be there,
too, telling you what new book I'm hoping to write. (I'm always hoping to write
a new book, so this topic is always valid :-})

If this sounds like your kind of event, I encourage you to visit the Seminar web
site to learn more: http://www.astoriaseminar.com/ . Please note that
attendance is limited to 55, and we're not kidding, because the space won't hold
any more than that. This suggests that if you're interested, you'd best sign up
soon.

Astoria, by the way, is near the mouth of the Columbia River, so if you or your
family like the idea of a few days in a cute town near the Pacific Ocean, this
could be an opportunity for you to, er, photograph two seagulls with one camera
:-) The Seminar's evening hang-out sessions are optional and unstructured, so
if you'd rather build sand castles on the beach until the sun goes down (or
roast hot dogs and marshmallows on driftwood fires after it does), you can do
that, too.

Scott

Friday, April 6, 2007

April 25 Talk in Redmond, WA

I'll be giving a talk for the Northwest C++ Users Group on some recent work I've
been doing that actually borders on research. The fundamental idea is to find a
way to partition code such that calls can cross partition boundaries only if
certain conditions are satisfied. For example, thread-safe code would not be
able to call thread-unsafe code without explicit permission, ditto for
exception-safe code, etc. Users can define their own partition boundaries (e.g.
Scott's code should not be able to call Jill's code) , and, this being C++, the
rules should, as much as possible, be enforced during compilation. The talk is
called "Red Code, Green Code: generalizing const."

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

Scott

Friday, March 16, 2007

Public Talks Scheduled for May and September

In May, I'll be speaking at the first Boost conference, to be held in Aspen.
I'll be giving a full-day tutorial on TR1 and some Boost libraries. The
conference site is http://www.boostcon.com/home .

In September, I'll be making my annual trip to Germany to speak on a variety of
C++ and software development topics. I'm especially excited about my seminar on
applying C++ in embedded systems, because this year it's two days long instead
of one.

You'll find details on these talks at the usual place:
http://www.aristeia.com/seminars_frames.html

I hope to see you at one of these events.

Scott

Thursday, January 11, 2007

Shakedown Webinar 2 Recording Now Available

The recording of today's webinar on the implementation of virtual functions
under multiple inheritance is now available. It's a little over an hour long.
There are two ways to view it. You can stream it from http://tinyurl.com/ydefmj
or you can download it (about 150MB) from http://www.aristeia.com/shakedown2.wrf
. The .wrf format requires the Webex player, which I believe will be
automatically downloaded and installed if you stream. If you choose to download
the file and play it locally, you may have to download and install the player
yourself; it's available at http://tinyurl.com/yk37c9 .

This recording is part of my webinar shakedown process, so I very much welcome
all comments. Good or bad, I'd like to know what you think about getting and
viewing the recording as well as about anything in the recording or the webinar
itself. I want to learn how to make webinars and their recordings as effective
and useful as possible, so the more information I get from you, the better job I
can do.

Thanks for your help.

Scott

Tuesday, January 9, 2007

Note about Thursday's VoIP-Based Webinar

This is a quick note for people who are interested in participating in
Thursday's VoIP-based webinar. I've just found out that Webex supports VoIP
audio *only on Windows*. You may be able to hear and/or speak using other OSes,
but for best results, please try to participate under Windows. (On an
experiment I performed recently with a colleague on a Mac, he was able to hear
me, but I could not hear him.)

I apologize for not knowing about this restriction earlier, but these are
shakedown webinars. This is one of the things that just got shaken loose.

Thanks,

Scott

Saturday, January 6, 2007

Signup Information for Shakedown Webinar #2 on Thursday

To register for the second shakedown webinar on January 11 (covering the
implementation of virtual functions under multiple inheritance) click on

https://eval.webex.com/eval/j.php?ED=89967787&RG=1

Fill out the required fields, and click "Register Now." Webex will
send you email telling you how to join the meeting when it starts.

Compared to the first webinar, I plan to make the following changes:
- Audio will be available only via VoIP. You'll need a headset or speakers
to hear the presentation and a microphone to speak.
- I'll record the webinar and make it available for viewing later.

A PDF copy of the materials I'll be presenting is available now at
https://eval.webex.com/meet/scott_meyers28 ; click on the "Files" tab.
You may wish to print a copy and have it available during the talk.

The presentation will start promptly at 10:00AM Pacific time on January 11.
Before you can join, you'll need to make sure that the Webex MeetingManager
software has been installed. This should happen automatically when you
join the meeting (nobody reported problems last week), but you may want to
install the software in advance by following this link:

https://eval.webex.com/eval/meetingcenter/mcsetup.php

I'll be in the virtual meeting room about 5 minutes before the presentation
starts to give a brief overview of the Webex features you're most likely to
find useful, e.g., how to raise your virtual hand, how to send text
messages during the talk, how to disable live video of me, etc.

I look forward to having you in the webinar on January 11 and getting your
feedback after it's over. If you have any problems or questions about
signing up for the webinar, let me know: smeyers@....

Thanks,

Scott

Friday, December 29, 2006

Signup Information for January 4 Shakedown Webinar

To register for the shakedown webinar on January 4 (covering the
implementation of virtual functions under single inheritance) click on
this link,

https://eval.webex.com/eval/j.php?ED=89939522&RG=1

fill out the required fields, then click "Register Now." Shortly
thereafter, Webex will send you email telling you how to join the
meeting when it starts.

The presentation itself will start promptly at 10:00AM Pacific time on
January 4, but before you can join, you'll need to make sure that the
Webex MeetingManager software has been installed. This is supposed to
happen automatically when you join the meeting, but I'm believer in
taking steps to thwart Murphy, so I encourage you to install the
software in advance by following this link:

https://eval.webex.com/eval/meetingcenter/mcsetup.php

Installing this software in advance will also speed your entry to the
meeting, because there will be no need to download and install the
MeetingManager at that time (unless they've done an upgrade in the
interim, which is always possible...).

My expectation is that many of you have never used Webex before, so
I'll be in the virtual meeting room about 10 minutes before the
presentation starts to give a brief overview of the Webex features
you're most likely to find useful, e.g., how to raise your virtual
hand, how to send text messages during the talk, how to modify the
Webex screen layout, etc. (Unbelievably, Webex has no canned video
explaining this stuff.)

My understanding is that there is no limit to the number of people who
can attend this webinar, but only the first 125 people to call in to
the meeting will be able to speak. Anybody beyond that will be able
to hear, but not speak, though everybody in the meeting will always be
able to use text messages to submit comments and questions during the
presentation. Calling in to the phone bridge (audio portion of the
webinar) should be toll-free from a variety of countries; a link to
country-specific situations will be included in the email you get
after you register.

I look forward to having you in the webinar on January 4. Please
remember to show up about 10 minutes early if you want to have me
explain the basics of the Webex client interface.

If you have any problems or questions about signing up for the
webinar, let me know: smeyers@....

Thanks,

Scott

Thursday, December 28, 2006

Free "Shakedown Webinars" on Implementing Virtual Functions

Executive Summary: I'll be holding free online webinars on January 4 and 11 to
evaluate webinar technology. The webinars will cover the implementation of
virtual functions under single and multiple inheritance.


"Webinars" are live seminars broadcast over the Internet. At their best,
webinars give me a way to offer an experience akin to a face-to-face seminar,
but without the need for us to be in the same place. Because the seminar is
live, you can still ask questions or make comments during the presentation. You
can still see the presentation materials as I display them, and you can still
see me point to and annotate specific parts of the materials as I speak. You
can even watch me during the presentation, though my current webcam provides
only low-qualify video. For my part, I can still whip up code examples, and I
can still bring up web sites and walk you through them. The experience can be
much as if I were there with you, except I'm not.

The foregoing assumes that everything goes well. That's quite an assumption.
Before I can embrace webinars, I need to have a better understanding of how they
really work for the kinds of things I want to use them for. That's where you
come in. I've done small-scale testing of webinar technology, but now I want to
see how well it works with more people in more places using a wider variety of
platforms. To that end, I'm scheduling a two-part webinar for the next two
Thursdays: January 4 and January 11. Part 1 will cover the implementation of
C++ virtual functions under single inheritance, while part 2 will extend the
treatment to multiple inheritance. Both seminars will be free, and both will
tentatively take place at 10:00 AM Pacific Time (GMT-8 hours). Each should run
no more than an hour. Because one of the things I want to examine is
telephone-based audio versus VOIP-based audio, part 1 will use a conventional
phone bridge (i.e., you call a toll-free number to connect to the audio part of
the webinar), while part 2 will use VOIP (i.e, you'll need audio capabilities in
your computer to hear the presentation or to speak during it).

Some of the details of the webinars are still undecided, so at this point, I
suggest you simply set aside the days/times (4 and 11 January at 10AM Pacific
time) if you want to participate.

These are "shakedown webinars," so a primary goal is to learn what doesn't work
as well as it should. To that end, after each webinar I'll explicitly ask for
suggestions on how I can make future webinars more effective. There is a school
of thought that lecture-based webinar presentations are inherently ineffective
-- that they are vastly worse than face-to-face versions of the same
presentations. I'm hoping that this is not the case, but I'm a guy who likes to
buttress his hopes with experience. In addition to testing the technology
behind webinars, then, we'll also be testing the practicality of moving my
face-to-face presentations to the web in the first place.

The webinars will use Webex, a browser-based system that runs on many platforms;
the full list is available at
http://support.webex.com/support/system-requirements.html . To use it, you'll
need to download and install some software, though this is normally handled
automatically. If this sounds intrusive or scary, please withhold judgement
until you've had a chance to see how things work on your platform.

I'll send out a more detailed description of how to sign up for the seminars
when I know them myself -- within the next few days. I hope you'll want to
participate in these shakedown events, because the more people who attend, the
better I'll be able to evaluate how well Webex is up to the tasks I have in mind
for it. Besides, the implementation of virtual functions is interesting stuff:
vptrs, vtbls, how vptrs get set, dealing with invocation of pure virtual
functions, object offset adjustments under single and multiple inheritance,
thunks, vtbl deltas, compiler options to let you know what's going on, etc. --
all this will be covered in the talks.

If you're interested in helping me evaluate webinars and webinar technology,
please set aside about an hour on January 4 and 11 at 10AM Pacific time, and
watch this mailing list for more information on how to participate.

Thanks,

Scott

Thursday, December 21, 2006

Upcoming Talks in 2007

The first half of 2007 is looking to be a busy set of conference months for me.
I'll be speaking at the new Software Development Best Practices India conference
in January (in Hyderabad, Chennai, and Bangalore); at Software Development in
Santa Clara in March; and at the Embedded Systems Conference in San Jose in
April. As always, details on my upcoming public talks are available at
http://www.aristeia.com/seminars_frames.html .

It's not quite official yet (so it's not yet at the page mentioned above), but
I'll almost certainly be giving a talk at the inaugural Boost Conference in
Aspen, Colorado, in May. You can read about that conference at
http://www.boost.org/more/BoostCon07.html . In fact, there still time to submit
talk proposals -- check out
http://www.boost.org/more/BoostCon07_session_call.html . FWIW, my talk there
will likely bear a close resemblance to the newest entry in my list of training
seminars: "An Introduction to TR1 and Boost." Details on that are at
http://www.aristeia.com/TR1andBoost_frames.html .

Whether at Hyderabad, Chennai, Bangalore, Santa Clara, San Jose, or Aspen, I
look forward to seeing you at one or more of these events in the first half of
2007.

Scott

Wednesday, October 4, 2006

New interview; upcoming conferences

There's a new interview with me available at my Articles and Interviews page.
The interview was done in English, then translated into German, and it's the
German version that was published. You'll find links to both versions at
http://www.aristeia.com/publications.html

I haven't added the information to my Upcoming Talks page yet, but in January
I'll be participating at a three-city conference in India. You can see a
marketing-heavy overview in the press release at
http://www.ddj.com/pressroom/090506.htm

I'm on the Organizing Committee for the first-ever Boost conference, to be held
next May in Aspen, Colorado. Details are available at
http://www.boost.org/more/BoostCon07.html. I currently plan to submit a talk
proposal or two, but the Call for Proposals isn't yet out, so whether I'll be
speaking there is unknown. If you're heavy into Boost, keep an eye out for the
Call for Proposals and make one or more submissions. Maybe you'll be the person
who bumps me out of a speaking spot!

Other talks in October and November I've already announced for Portland, Oregon,
and Frankfurt, Germany, continue to be listed on my Upcoming Talks page,
http://www.aristeia.com/seminars.html

Scott

Monday, October 2, 2006

Survey regarding new electronic version of my books

My publisher and I are planning to put together a new electronic version of my
books to replace the current CD version (which has only the second edition of
EC++ and no copy of ESTL). To that end, Addison-Wesley is soliciting input,
which their crack marketing team puts this way:

Help Addison-Wesley with NEW edition of C++ CD from Scott Meyers
With the successful publication of “Effective C++, Third Edition” Scott Meyers
and Addison-Wesley Professional are now planning to revise the CD based on that
work. To begin, we wish to survey both users and non-users to understand your
needs and desires for any new version.
User: If you are a current or past user of the CD, and you would like to help
guide its future development, we ask that you respond to the survey posted at
http://survey.pearsoncmg.com/MEYERSS6\
.htm.
Non-User: If you haven’t used this CD in the past and would like to help guide
the development of a publication you might well find useful in your work, we ask
that you respond to the survey posted at
http://survey.pearsoncmg.com/CPLUSNU6\
.htm.
Not only will you have the opportunity to influence our decisions, but, complete
the survey today and receive a 50% off coupon from awprofessional.com and enter
for the chance to win your choice of either a one-year subscription to a Safari
MAX 30-slot Bookshelf or 12 Pearson Technology Group books of your choice.
Surveys end, October 13, 2006

I'd be grateful if you would take whichever of these surveys is appropriate for
you. Both Addison-Wesley and I want to make sure we produce a product in
electronic form that will truly help you get the most out of the information in
my books.

Thanks,

Scott

Wednesday, September 6, 2006

Part 5 of "A Pause to Reflect" now up at TCS

This final list is a collection of my five personal most meaningful C++-related
"Aha!" moments. You can find it at
http://www.artima.com/cppsource/top_cpp_aha_moments.html.

Scott

Wednesday, August 30, 2006

Part 4 of "A Pause to Reflect" now up at TCS

This week's list is my picks for the five most important people in the history
of C++. You can find it at http://www.artima.com/cppsource/top_cpp_people.html.

Scott

Wednesday, August 23, 2006

Part 3 of "A Pause to Reflect" now up at TCS

This week's list is my picks for the five most pieces of software in the history
of C++. You can find it at
http://www.artima.com/cppsource/top_cpp_software.html .

Scott

Wednesday, August 16, 2006

Part 2 of "A Pause to Reflect" now up at TCS

This week's list is my picks for the five most important non-book publications
in the history of C++. You can find it at
http://www.artima.com/cppsource/top_cpp_publications.html .

Scott

Sunday, August 13, 2006

Two Changes to Mailing List Policy

Yesterday I updated the web page describing my mailing list polices
(http://www.aristeia.com/MailingList/) to reflect a couple of things I've been
doing for a while, anyway. First, I eliminated mention of "RFAs" (requests for
assistance), because I found that I could almost never bring myself to bother
you people with situations where I needed help. (I ended up bothering other
people.) Second, I no longer post to my mailing list when I make updates to my
publications' errata lists. I used to batch the updates and post to the list
when I did a batch, but now I put updates online as issues come to me. The
result is that there is no longer much of a delay between the time I know about
an issue and you can, but updates are now too frequent to fit into the
low-volume charter of this mailing list. Probably the proper solution to this
problem is to have my web site offer an RSS feed for errata updates, but I
currently have neither the knowledge nor the time to implement such a feed, so
for the foreseeable future, the best way to find out whether there are any new
updates for my books or my CD is to check the appropriate web pages from time to
time.

Scott

Wednesday, August 9, 2006

New series of articles now appearing at TCS

For the next five weeks, I'll have a short article at The C++ Source (TCS --
http://www.artima.com/cppsource ) listing the 5 most important C++ somethings in
each of 5 categories. The series is called "Five Lists of Five," and in Part 1,
I list what I consider to be the five most important C++ books of all time. You
can find it at http://www.artima.com/cppsource/top_cpp_books.html . Unlike most
of my writing on C++, this series isn't very technical, but I hope you find it
interesting enough to tune in each week to see what five things I've decided are
more important than all their peers.

Happy reading,

Scott

Thursday, August 3, 2006

Upcoming Talks Through Year-End

I've scheduled a number of talks on a variety of topics this fall near Portland,
Oregon and in Germany. The details are available at my Upcoming Talks Page
(http://www.aristeia.com/seminars_frames.html), but the overall summary is shown
below:

20 Sep Dresden, Germany Better Software -- No Matter What
21 Sep Dresden, Germany Designing & Implementing Effective C++ Classes
22 Sep Dresden, Germany High-Performance C++ Programming
25 Sep Stuttgart, Germany What's New in Effective C++?
26 Sep Stuttgart, Germany Effective C++ in an Embedded Environment
27 Sep Stuttgart, Germany Design Patterns, Templates, and Policy-Based
Design
11 Oct Portland, Oregon The Keyhole Problem
26 Oct Portland, Oregon An Introduction to C++ Library Functionality
in TR1 and Boost
9 Nov Beaverton, Oregon Effective C++ in an Embedded Environment
27 Nov Frankfurt/Main, Germany Concepts and Architecture of the STL
28 Nov Frankfurt/Main, Germany Programmer Discretion and Software Quality

Also, I have a five-part C++-related article that will start appearing soon (I'd
hoped it would have started appearing by now). I'll post details to this
mailing list when they are available, but I thought you might be interested to
know that I still do a little writing from time to time :-)

Scott