Because though there might be building trades conferences, there are no hammer conferences. Oh, there will be tool vendors at the building trades conferences, there might be sessions on "Efficient Hammering Techniques Using Machine Learning", but there are no conferences about hammers. Don't forget about the blacksmith conference next week, they'll have hammer vendors, too.
I dunno, a Ruby conference kinda makes sense because one will mostly build web sites with it, so it's really going to be a "Building $FOO with $TOOL" kind of thing. But C is so widely used, it's like having that HammerFest 2019 with everyone from people splitting wood with a sledghammer to jewelers with their teensy little tapping tools. I just don't see the diamond workers drinking with the lumberjacks at the hotel bar after hours. :-) I jest, but it's mostly about networking anyway, otherwise just watch the videos online.
To find the answer, I would ask, Why are there conferences for other technologies? What are they for?
And I think the answer is probably 1) get useful news about recent and upcoming changes and 2) to socialize. I'm going to guess--possibly just projecting--that most C developers are older and not terribly interested in meeting new "C friends" or jumping into some hot, new "C startup".
That leaves #1. Web/AI-ML/cloud/mobile tech conferences feature speakers from the big tech companies that might reveal, in a talk or a hallway chat, info about which of your problems they are about to solve or to cause. Independent speakers serve a sort of journalist role of gathering intel from the big companies, organizing it, and revealing their findings. It's all about "tell me what I need to know so I can decide what to do".
But there isn't much news about C that most C programmers will want to know in order to make decisions. It's almost like news about algebra or, yes, hammers: mature, slow-changing technologies whose changes seldom impact more than a small percentage of users.
So without reasons 1 or 2, the answer to why aren't there C conferences is basic and boring: what important purpose would they serve?
> I'm going to guess--possibly just projecting--that most C developers are older and not terribly interested in meeting new "C friends" or jumping into some hot, new "C startup".
Unfortunately that doesn't explain why there are not only aren't C conferences today, but there weren't C conferences 15, 20, 30 years ago.
Exactly. C programmers don't define themselves as C programmers mainly. They are firmware developers, game developers or something else. That's where their real interest is.
It's like how they have hamburger restaurants, where you can ask for a hamburger without the pickle, instead of having hamburger without pickle restaurants. C is the burger, bacon, bun, lettuce, tomato, onions and sauces, and ++ is the pickle.
I dunno- I just got back from rubyconf where I both gave and watched talks on metaprogramming with no web focus at all. There was a great illustrated talk featuring lemurs that was just a walkthrough of rebuilding various enumerable methods with reduce. Other ones that I went to:
- a "how ruby's GC works" talk
- A deep dive into how a core dev found + fixed memory usage in ruby
- The unexpected pitfalls of sublassing certain std lib classes
- A new desktop graphics library
- Using ruby to operate an automatic wafflemaker
And these are just the ones I attended. I imagine railsconf is more web focused, but rubyconf doesn't seem like that at all.
A couple members of my team attended and we made a friendly wager before they attended: how many conference attendees would be primarily Rails developers?
We guessed respectively 25%, 50%, 75% (my guess).
Based on some very, very, very fuzzy sampling, they estimated it was somewhere around 50%.
Offtopic: The waffle talk is listed at https://rubyconf.org/program#session-697 and it may have been recorded. These are my favourite kinds of talks at conferences.
I get your analogy, but I think there are tons of hammer conferences.
There are conferences for most any language with wide adoption. There's also a Slack conference (not "TeamChatConf," but a "Slack Frontiers"). There's a GitHub conf (not "OpenSourceDevCon," but "GitHub Universe"). There is a Datadog conference, and so on and so on.
Maybe C just doesn't have one big company, or an ecosystem of smaller ones, that stand to benefit from gathering a bunch of C devs in one place.
I think the core distinction is business-centric conferences vs developer-centric conferences. You've entirely named the former. Those are geared towards using platforms, and while developers are welcome, they aren't the entirety of the target audience, business professionals (eg MBAs) are just as first-class at those. But Ruby and Python and Swift conferences are going to entirely be geared towards developers.
I think the hammer analogy works better as conferences for building houses (business conferences) vs power tools (developer conferences) vs hand tools (no conferences), the distinction being how quickly can you get to a finished house. A power tool is something that can make houses quickly. A hand tool can be used quickly and efficiently by someone very experienced with them, but power tools can be used by almost anyone.
I agree. I'm mostly a C coder but I've been on the Rust train since pretty early and I remember being pretty confused when they started putting emphasis on the Rust branding with logos, the whole "rustacean" thing, conferences, forums etc... In hindsight I get it but originally there was a bit of a culture shock. I mean I don't wear C T-shirts and as far as I can tell there's not really a standard C logo either.
Maybe we should find a cool demonym like "c-lions" or "c-weeds" or whatever. Then we'll be able to ask the real questions like "is C webscale?".
Now I'm being a bit snarky but I genuinely understand why newer languages need branding nowadays, but in the case of C that ship has sailed long ago, you don't really need to introduce it, it's just C.
In order to avoid becoming a niche language nobody uses due to the network effects of C's ubiquity, and to achieve its goal of completely replacing C as much as is practically feasible, Rust needs buy-in and what economists call pre-committing. That is to say, it needs thought leaders to accept that Rust is the future and commit to building things in Rust, even when it doesn't make sense to do so in the current climate. Hence the heavy emphasis on marketing and RESF psyops.
> "c-lions"
C-lioning - n. Derailing a discussion by "politely" demanding evidence that obviously unsafe programming practices are unsafe and should never be used. E.g., "Can you tell me, exactly, why aliased pointers are bad?"
I wish people would stop comparing programming languages to Hammers. It's a meaningless meme. Yes, they are tools, but comparing them to Hammers is 100% ridiculous.
A language is not a hammer. It is a tool. You know what else are tools? Chainsaws, databases, lasers, and tunnel boring machines that cost tens of millions of dollars.
Of the ones you list, only one has a wide focus, IMO. Three of those will essentially be web development conferences, and I don't know what the hell people do with Go these days, but I'll bet it's mostly a handful of things. Python probably has broad enough usage and scope to counter what I said. The exception proves the rule. :-)
I've been to JSConf EU a couple of times and it's certainly not a JavaScript conference "about building web sites".
Aside from the non-technical talks there were talks like
* how concurrency works in modern JS engines
* a talk about the upcoming BigInt type
* how fingerprinting attacks can circumvent privacy measures
* HTTP/2 Push
* a look at upcoming language proposals
* a retrospective on the JS build tool for React Native
* a talk about versioning
* experimental time travel debugging support in Firefox
* a talk about error handling
* a talk about module systems in JS
Etc etc.
Sure, many talks are either about general web technologies or about new APIs of the web platform, but there is usually also significantly overlap with backend or native mobile and IOT.
When I worked with Python I also went to meetups and followed conferences which always had a wide range of talks from web frameworks to automation, data science and system administration.
Likewise at a Ruby conference I'd also expect talks about tools like Chef or Puppet, which are only tangentially related to web development specifically.
So I don't think your portrayal of conferences is fair at all. "Why aren't there ${language} conferences?" seems like a very sound question, even if ${language} is used in a wide range of industries for very different purposes.
I very much like your answer. And I now realize why disliked PyCon that much. There are so much things that can be done in python that I don't necessarily care about. Language is not the most important thing, what I do with it is.
I much more prefer going to a conference about let's say, web dev or machine learning. Once at the conference, I might prefer going to a talk that use python because I know this language better.
C conference: Address is past the end of the street.
C++ conference: Reading the address requires working out an elaborate series of compile-time templates that finally resolves to the actual address. You go there to find that it's past the end of the street.
JS conference: The address is "the last place we held it". You attempt to figure out what that means, but you didn't attend last year. After some research, you find a copy of last year's invitation. Its address reads "the place where we always hold the conference". After more research and a bit of guess work, you finally arrive, but nobody else is there. You have a sinking feeling the conference wasn't in Uzbekistan after all.
TS conference: As JS, but the invitation includes a helpful explanation of how to find where "the last place we held the conference" is. Unfortunately, one of the explanations is wrong, and you arrive in Uzbekistan.
Java conference: To calculate this year's address, you must first go to a JavaConferenceFactory on the outskirts of town. Talk to the JavaConferenceFactoryManagerSingleton, and give him your JavaConferenceConfiguration. He can give you a JavaConference, which you can cast to a JavaConferenceImpl. The JavaConferenceImpl contains a JavaConferenceAddressLocator, which when passed a WorldMappingSystem can give you a JavaConferenceAddress.
Haskell conference: There is no conference. Holding one could cause side effects.
Go conference: The address is given in a simple, predictable format: interface{}.
Apparently there's not enough interest among those who write C. Back in 2012, Brandon Philips (CoreOS CTO & kernel contributor) tried valiantly to organize a C conference, but there weren't enough speakers and presentations.[1]
Good question, but a majority of this post is links to cppcon videos. (I do appreciate the shoutout to LLVM).
I think the C community:
* Should have a C conference.
* Actually be more aggressive in adding features to the language. For example, there are some really great GNU C extensions that are long overdue be added to the standard. Compiler vendors should work with the standards bodies more, rather than shipping language extensions, compiler builtins, and various compiler plugins in isolation outside of standards bodies (because then codebases become tightly coupled to the compiler; ie. the Linux kernel).
I strongly disagree. C should is adding langauge features at a pace other languages could stand to emulate. C is stable, trusted, and supported everywhere for this very reason. Codebases should not be using extensions, and Linux is wrong to do so.
> Codebases should not be using extensions, and Linux is wrong to do so.
Poppycock. Codebases should use any and all tools available to them to accomplish their goals, given the tradeoffs. Using non-standard language extensions is a tradeoff, and if it suits the Linux community and their goals, there's nothing wrong with that.
The problem with not allowing language extensions to be used is that it promotes the staleness of the language.
Just as human languages evolve as people use and adjust it, programming languages evolve as people start trying to change it to better suit their needs.
The difference with human languages and programming ones is that there's a relatively easy process to get everyone in sync on how it changes for programming languages. :)
I also agree with the grandparent comment that more features should be specified and incorporated into the C standard. The fact they exist and are in wide use says a lot all by itself.
> C should is adding langauge features at a pace other languages could stand to emulate.
Remember the Vasa! ;)
> C is stable, trusted, and supported everywhere for this very reason.
See the sibling comment about C not being fully supported everywhere. As long as people continue to make proprietary compilers, there will be implementation deficiencies. That's orthogonal to the language itself.
> Codebases should not be using extensions,
Agree and disagree. Maybe "codebases should only use extensions when it's feasible to provide fallbacks" or something.
> and Linux is wrong to do so.
I'm not sure I agree. There are some worthwhile extensions IMO, which is why I made the point earlier that I think it's time to standardize them.
>> Codebases should not be using extensions, and Linux is wrong to do so.
Why? If you can improve the performance/security/stability of Linux by re-writing functionality without extensions, by all means do so(and send in a patch). Why is Linux "wrong" for this?
Nonsense, that is the C community. They need to be put in a room together to sort out their differences. The differences exist due to communication breakdown which leads to divergence over time.
C is effectively frozen in time, thanks largely to Microsoft's decision to deprioritize C support in favor of C++.
C99 is almost 20 years old and MSVC still doesn't fully support it. Forget about C11. If you're a C programmer who cares about portability, you stick with C89.
There's not a lot of point to having a conference about something that is stuck on a 30 year old standard.
I think this is a very debatable claim. MSVC is an insignificant compiler in a lot of industries. In something like scientific computing, everything is written with gcc, clang and Intel on mind. Sure, you'll find some companies still using MSVC, but it's not industry standard any more and it's very unclear how an insignificant, outdated compiler can stop the progress of world's most fundamental programming language.
C's strength is being the lingua franca of the bottom of the stack. I can believe that there are some applications that know a priori that they will never need to be portable to MSVC. But for any foundational open-source library, closing the door to MSVC is a high price to pay. Someone, sooner or later, will want to use the code on Windows. If you are zlib, ffmpeg, freetype, Lua, LuaJIT, sqlite, libpng, c-ares, OpenSSL, PostgreSQL, glib, gtk, or anything that aspires to be as widely used as these, you stay C89-compatible to support MSVC.
MSVC is becoming less and less relevant. People are writing C99 and C11 and MSVC's insistence on breaking portability with modern codebases is incrementally marginalizing it as people switch to compilers that understand their standard compliant code.
Observation: Before 2014, iOS conferences were iOS conferences and was mostly about how to use the frameworks. After 2014, iOS conferences renamed to Swift conferences and everyone tries to figure out how to use Swift - like this is the main pain point or what?
In my experience, they're still about frameworks mostly, they just brand themselves as Swift conferences to indicate there isn't going to be any Objective-C oriented content presented, so people don't attend with the wrong expectation.
Swift-oriented content at a conference is also going to be popular, as unlike frameworks, it affects every developer, as compared to frameworks where only a percentage may use each one.
Swift is a complex language, and this allows for a lot more people to talk about how their programming paradigm is the best way to write Swift. It’s the same reason we often see articles like “extending Optionals” or “AutoLayout with a DSL” on Hacker News: Swift is so overwhelmingly used for iOS development that people seem to find it useful to specialize it in places where it designed to be general, and they love to tell other people about it.
Probably useful for justifying costs to managers if your company is currently migrating to Swift, which is pretty common in iOS shops at the time (and now?)
It's interesting that many of the comments here (7 of 9 top-level comments currently) answer the question in the title, rather than respond to the blog post (which has some interesting points and a great list of relevant talks from conferences... starting to watch some of them right away).
I believe it's mentioned, but BSD conferences are often a great place to find presentations that typically gravitate towards low level systems C programming.
OpenBSD has an events page with a list of past talks given by developers, along with slides, and if it exists, any video.
I dunno, a Ruby conference kinda makes sense because one will mostly build web sites with it, so it's really going to be a "Building $FOO with $TOOL" kind of thing. But C is so widely used, it's like having that HammerFest 2019 with everyone from people splitting wood with a sledghammer to jewelers with their teensy little tapping tools. I just don't see the diamond workers drinking with the lumberjacks at the hotel bar after hours. :-) I jest, but it's mostly about networking anyway, otherwise just watch the videos online.
And I think the answer is probably 1) get useful news about recent and upcoming changes and 2) to socialize. I'm going to guess--possibly just projecting--that most C developers are older and not terribly interested in meeting new "C friends" or jumping into some hot, new "C startup".
That leaves #1. Web/AI-ML/cloud/mobile tech conferences feature speakers from the big tech companies that might reveal, in a talk or a hallway chat, info about which of your problems they are about to solve or to cause. Independent speakers serve a sort of journalist role of gathering intel from the big companies, organizing it, and revealing their findings. It's all about "tell me what I need to know so I can decide what to do".
But there isn't much news about C that most C programmers will want to know in order to make decisions. It's almost like news about algebra or, yes, hammers: mature, slow-changing technologies whose changes seldom impact more than a small percentage of users.
So without reasons 1 or 2, the answer to why aren't there C conferences is basic and boring: what important purpose would they serve?
There are plenty of algebra conferences, though. I’ve been to several. :-)
I agree with your general point, but algebra isn’t quite as slow-moving as you seem to believe.
Unfortunately that doesn't explain why there are not only aren't C conferences today, but there weren't C conferences 15, 20, 30 years ago.
To spread the knowledge how to actually write C code that meets a certain quality level regarding security and safety.
And not that writing C89 without any sort of static analyzers is still acceptable practice.
There will be Hammer conferences if there are companies that make "handle grips" or "hand hammer protectors" who are willing to sponsor such events.
- a "how ruby's GC works" talk
- A deep dive into how a core dev found + fixed memory usage in ruby
- The unexpected pitfalls of sublassing certain std lib classes
- A new desktop graphics library
- Using ruby to operate an automatic wafflemaker
And these are just the ones I attended. I imagine railsconf is more web focused, but rubyconf doesn't seem like that at all.
We guessed respectively 25%, 50%, 75% (my guess).
Based on some very, very, very fuzzy sampling, they estimated it was somewhere around 50%.
Any guess yourself? Are you a Rails dev?
There are conferences for most any language with wide adoption. There's also a Slack conference (not "TeamChatConf," but a "Slack Frontiers"). There's a GitHub conf (not "OpenSourceDevCon," but "GitHub Universe"). There is a Datadog conference, and so on and so on.
Maybe C just doesn't have one big company, or an ecosystem of smaller ones, that stand to benefit from gathering a bunch of C devs in one place.
I think the hammer analogy works better as conferences for building houses (business conferences) vs power tools (developer conferences) vs hand tools (no conferences), the distinction being how quickly can you get to a finished house. A power tool is something that can make houses quickly. A hand tool can be used quickly and efficiently by someone very experienced with them, but power tools can be used by almost anyone.
http://www.hammerfest.co.uk/
It was a blast! And C actually came up in one conversation...
Maybe we should find a cool demonym like "c-lions" or "c-weeds" or whatever. Then we'll be able to ask the real questions like "is C webscale?".
Now I'm being a bit snarky but I genuinely understand why newer languages need branding nowadays, but in the case of C that ship has sailed long ago, you don't really need to introduce it, it's just C.
> "c-lions"
C-lioning - n. Derailing a discussion by "politely" demanding evidence that obviously unsafe programming practices are unsafe and should never be used. E.g., "Can you tell me, exactly, why aliased pointers are bad?"
https://upload.wikimedia.org/wikipedia/en/5/5e/The_C_Program...
A language is not a hammer. It is a tool. You know what else are tools? Chainsaws, databases, lasers, and tunnel boring machines that cost tens of millions of dollars.
There are plenty of conferences about tools.
http://www.european-athletics.org/athletics-community/coache...
Aside from the non-technical talks there were talks like
* how concurrency works in modern JS engines
* a talk about the upcoming BigInt type
* how fingerprinting attacks can circumvent privacy measures
* HTTP/2 Push
* a look at upcoming language proposals
* a retrospective on the JS build tool for React Native
* a talk about versioning
* experimental time travel debugging support in Firefox
* a talk about error handling
* a talk about module systems in JS
Etc etc.
Sure, many talks are either about general web technologies or about new APIs of the web platform, but there is usually also significantly overlap with backend or native mobile and IOT.
When I worked with Python I also went to meetups and followed conferences which always had a wide range of talks from web frameworks to automation, data science and system administration.
Likewise at a Ruby conference I'd also expect talks about tools like Chef or Puppet, which are only tangentially related to web development specifically.
So I don't think your portrayal of conferences is fair at all. "Why aren't there ${language} conferences?" seems like a very sound question, even if ${language} is used in a wide range of industries for very different purposes.
I much more prefer going to a conference about let's say, web dev or machine learning. Once at the conference, I might prefer going to a talk that use python because I know this language better.
Deleted Comment
The address is legal, just don't try to go there.
C conference: Address is past the end of the street.
C++ conference: Reading the address requires working out an elaborate series of compile-time templates that finally resolves to the actual address. You go there to find that it's past the end of the street.
JS conference: The address is "the last place we held it". You attempt to figure out what that means, but you didn't attend last year. After some research, you find a copy of last year's invitation. Its address reads "the place where we always hold the conference". After more research and a bit of guess work, you finally arrive, but nobody else is there. You have a sinking feeling the conference wasn't in Uzbekistan after all.
TS conference: As JS, but the invitation includes a helpful explanation of how to find where "the last place we held the conference" is. Unfortunately, one of the explanations is wrong, and you arrive in Uzbekistan.
Java conference: To calculate this year's address, you must first go to a JavaConferenceFactory on the outskirts of town. Talk to the JavaConferenceFactoryManagerSingleton, and give him your JavaConferenceConfiguration. He can give you a JavaConference, which you can cast to a JavaConferenceImpl. The JavaConferenceImpl contains a JavaConferenceAddressLocator, which when passed a WorldMappingSystem can give you a JavaConferenceAddress.
Haskell conference: There is no conference. Holding one could cause side effects.
Go conference: The address is given in a simple, predictable format: interface{}.
1. https://web.archive.org/web/20160304013703/http://www.cconf....
I think the C community:
* Should have a C conference.
* Actually be more aggressive in adding features to the language. For example, there are some really great GNU C extensions that are long overdue be added to the standard. Compiler vendors should work with the standards bodies more, rather than shipping language extensions, compiler builtins, and various compiler plugins in isolation outside of standards bodies (because then codebases become tightly coupled to the compiler; ie. the Linux kernel).
Poppycock. Codebases should use any and all tools available to them to accomplish their goals, given the tradeoffs. Using non-standard language extensions is a tradeoff, and if it suits the Linux community and their goals, there's nothing wrong with that.
Just as human languages evolve as people use and adjust it, programming languages evolve as people start trying to change it to better suit their needs.
The difference with human languages and programming ones is that there's a relatively easy process to get everyone in sync on how it changes for programming languages. :)
I also agree with the grandparent comment that more features should be specified and incorporated into the C standard. The fact they exist and are in wide use says a lot all by itself.
Remember the Vasa! ;)
> C is stable, trusted, and supported everywhere for this very reason.
See the sibling comment about C not being fully supported everywhere. As long as people continue to make proprietary compilers, there will be implementation deficiencies. That's orthogonal to the language itself.
> Codebases should not be using extensions,
Agree and disagree. Maybe "codebases should only use extensions when it's feasible to provide fallbacks" or something.
> and Linux is wrong to do so.
I'm not sure I agree. There are some worthwhile extensions IMO, which is why I made the point earlier that I think it's time to standardize them.
Why? If you can improve the performance/security/stability of Linux by re-writing functionality without extensions, by all means do so(and send in a patch). Why is Linux "wrong" for this?
Imagine trying to get ANSI C, Win32 C, GNU C and every flavor of embedded C together.
The main problem with that is there is no single JavaScript/HTML community.
Imagine trying to get IE, Netscape, Opera and every flavor of embedded HTML viewer together.
Deleted Comment
C99 is almost 20 years old and MSVC still doesn't fully support it. Forget about C11. If you're a C programmer who cares about portability, you stick with C89.
There's not a lot of point to having a conference about something that is stuck on a 30 year old standard.
It is called MSVC++ for a reason.
Deleted Comment
Heck, if you have a C app and want to port it to windows, you are probably better of just using WSL.
Observation: Before 2014, iOS conferences were iOS conferences and was mostly about how to use the frameworks. After 2014, iOS conferences renamed to Swift conferences and everyone tries to figure out how to use Swift - like this is the main pain point or what?
Swift-oriented content at a conference is also going to be popular, as unlike frameworks, it affects every developer, as compared to frameworks where only a percentage may use each one.
OpenBSD has an events page with a list of past talks given by developers, along with slides, and if it exists, any video.
https://www.openbsd.org/events.html