Recent research has demonstrated that binary optimization is important for achieving peak performance for various applications. For instance, the state-of-the-art BOLT binary optimizer developed at Meta, which is part of the LLVM Compiler Project, significantly improves the performance of highly optimized binaries produced using compilers’ most aggressive optimizations, such as profile-guided and link-time optimizations.
In this research, we propose a novel approach to apply binary optimization without the need to profile the application. Our technique, called Vintage ESP Amended (VESPA), builds on top of a previous technique called evidence-based static prediction (ESP), which applies machine learning techniques to statically infer the direction of branch instructions in a program.
VESPA expands on ESP in several ways to make it useful in the context of binary optimizers. VESPA increases the scope where binary optimizers can be used, thus enhancing the range of applications that can leverage these tools to improve their performance. Our work also enables higher performance and better user experience for many software applications that were out of the reach of binary optimizers, such as end-user mobile applications.
How it works:
VESPA is useful for obtaining profile information to feed binary optimizers like BOLT statically, i.e., with no need to execute the target application to produce profile data. To achieve this, VESPA employs machine learning techniques. First, during a training phase, VESPA is provided with a set of applications and corresponding dynamic profiles. Using these, VESPA trains a neural network model that learns the probability that branch instructions in the programs will be taken based on various program characteristics (e.g., the condition code of the branch or whether the target block is a loop header).
After this model is produced, it can be used to infer the probability that branches from other programs will be taken. VESPA then transforms these probabilities into code frequencies, or estimates of how often each individual piece of the program will execute, similar to the information that a binary optimizer normally requires from dynamic profiles obtained by executing an application. Once the static profile data produced by VESPA is injected into a binary optimizer, this tool can proceed with its optimization steps as usual, completely oblivious to how the profile data was computed. VESPA, therefore, can very easily be integrated into existing binary optimizers, which we demonstrated by integrating it into Meta’s BOLT binary optimizer.
Compared to the seminal ESP technique that inspired our work, VESPA provides three main improvements:
An enhanced neural-network model
New program features to improve the model’s accuracy
A technique to derive code frequencies required for binary optimizations instead of simply branch directions
Why it matters:
BOLT can provide performance speedups of about 20 percent not only for many of Meta’s widely deployed server workloads, but also for other widely used open source applications such as compilers (e.g., GCC and Clang) and database systems (e.g., MySQL and PostgreSQL). To achieve these results, BOLT relies on very accurate dynamic profile data collected from executing the target applications on representative inputs. Unfortunately, collecting these profile data adds complexity and overheads to applications’ build processes, and sometimes it is not even possible — for example, in the case of mobile applications executing on user devices.
Using VESPA to derive static profiles for the BOLT binary optimizer, our work demonstrates that a 6 percent speedup can be achieved on top of highly optimized binaries built with Clang -O3 without the need for dynamic profiling the application. As such, our research demonstrates that binary optimizations can be beneficial even in scenarios where dynamic profiling is prohibitive or impossible, thus opening new opportunities for binary optimizers, such as end-user mobile applications.
Here are some of the answers I got. Not all of them are equally “easy”, but I
found reading the list really fun and it gave me some ideas for things to
learn. Maybe it’ll give you some ideas too.
SSL certificates, with Let’s Encrypt
Concurrency, with async/await (in several languages)
Centering in CSS, with flexbox/grid
Building fast programs, with Go
Image recognition, with transfer learning (someone pointed out that the joke in this XKCD doesn’t make sense anymore)
Building cross-platform GUIs, with Electron
VPNs, with Wireguard
Running your own code inside the Linux kernel, with eBPF
Cross-compilation (Go and Rust ship with cross-compilation support out of the box)
Configuring cloud infrastructure, with Terraform
Setting up a dev environment, with Docker
Sharing memory safely with threads, with Rust
Things that involve hosted services:
CI/CD, with GitHub Actions/CircleCI/GitLab etc
Making useful websites by only writing frontend code, with a variety of “serverless” backend services
Training neural networks, with Colab
Deploying a website to a server, with Netlify/Heroku etc
Running a database, with hosted services like RDS
Realtime web applications, with Firebase
Image recognition, with hosted ML services like Teachable Machine
Things that I haven’t done myself but that sound cool:
Cryptography, with opinionated crypto primitives like libsodium
Live updates to web pages pushed by the web server, with LiveView/Hotwire
Embedded programming, with MicroPython
Building videogames, with Roblox / Unity
Writing code that runs on GPU in the browser (maybe with Unity?)
Building IDE tooling with LSP (the language server protocol)
Interactive theorem provers (not sure with what)
NLP, with HuggingFace
Parsing, with PEG or parser combinator libraries
ESP microcontrollers
Batch data processing, with Spark
Language specific things people mentioned:
Rust, with non-lexical lifetimes
IE support for CSS/JS
what else?
I’d love more examples of things that have become easier over the years.
Cleaning out the fridge after a power failure, I found three half-empty containers of anchovies. Because they magically migrate to the back of the fridge, every time I had needed some, I ended up opening a new jar, because the old ones were invisible. Not just invisible if I had looked for them, but so invisible that it never even occurred to me to look for them.
And this is even more likely to happen with the data on your hard drive. If you don’t know to look for it, if you don’t believe it’s there, it might as well be deleted.
And of course, this applies to our lost skills, confidence and experience as well.
It’s worth putting in regular effort to remind ourselves of what we’ve already got and how it has served us in the past.
Sumana Harihareswara wrote an interesting blog post Plain Language
Choices recently, about
writing about complicated topics using simple language and how it can sometimes
come off as condescending.
I really like explaining complicated topics while trying to avoid
unnecessary jargon, and I realized that I’ve thought a lot about how to do it
well. So here are a bunch of things I try to do when I use simple language to
avoid coming off as condescending.
use some jargon to give the reader search terms
Sometimes I see writing that completely avoids all jargon and instead
substitutes simple language for all “jargon”-y words.
I like to include some jargon in my explanations because otherwise it’s
impossible for the reader to search & learn more about the concept they’re
trying to learn about.
write (mostly) true explanations
Something else I see sometimes in ELI5-type explanations is an explanation in
plain language that’s not actually true in a useful way. I’m pretty sympathetic
to why people do this – it’s super hard to write simple explanations that are
also true!
And actually sometimes when I’m trying to write down a simple/clear explanation
for a concept, I realize that I don’t actually understand the concept as well
as I thought and that I’m not able to explain it. That’s okay!
I think there are a few options here:
try to say only things that are true (or at least which are a useful
model for how the world works even if they’re not 100% true)
write things that are not really true / that you’re not sure of, but point
out that they may not be true (“I think it works like X, but I realize now
that it might be Y instead, I’m not sure!“)
only use “fun” visual elements on explanations that are actually well written & easy to understand
This happens more with visual aids than with simple language but I’ll include
it anyway. Sometimes I see explanations which have “fun” elements to it to make it
them seem more approachable where the explanation itself is still pretty unclear.
I try to be careful about this in my own work – I try to only attach “fun”
elements (like a fun illustrated cover) to explanations that I’ve spent a lot
of time on making really clear. Basically to me “fun” things are a signal that
the content itself is really clear/accessible, and I try to not misuse that
signal.
I think why’s poignant guide to ruby is a nice
example of something that’s fun and clear and which has helped a lot of people learn Ruby.
Another nice example of this is: I know someone who got her master’s thesis
printed as a paperback book and illustrated with some great drawings related to
the topic of her thesis (trans represensentation in media).
It’s called “I’m supposed to relate to this?”, here’s the paperback.
I ended up reading
the whole thing because, in addition to having the fun illustrations, her
master’s thesis was really well written and interesting! The fact that she did
the work to print a paperback book of her thesis and get it illustrated was a
sign that she’d worked on making the writing accessible to a non-academic
audience, and it was true!
tell a relevant story
Stories can really help people learn! For example, something I’ve
done a lot on this blog is talk about a problem I ran into in the course of my
job and what I did to solve that problem.
Some kinds of stories that I think work well:
a real problem that someone ran into, to motivate why the concept is
interesting / important to learn
something that’s happening on a computer, framed as a “story” (for
example https://howdns.works/ tells a story about how DNS works. Everything
in the story literally corresponds to exactly what happens when you make a
DNS query)
Sometimes I see stories used to explain concepts that don’t fit into either of
these and feel kind of pasted on, like they’re there to help the concept seem
“fun” but don’t actually illustrate the concept or motivate why it might be
useful to learn it.
have a specific audience in mind
I try to write relatively simple explanations, but when I write I also
generally assume a lot of knowledge on the part of my audience.
Sometimes I see explanations of complicated concepts that start with explaining
the very basics of the topic. This usually isn’t that effective: if someone is
trying to understand some super technical aspect of containers, they probably
understand the basics of containers already!
“Have an audience” is more of a general writing tip so I’ll leave it at that.
on using simple language as a joke for people who already understand the idea
On one hand, this is fun! I enjoyed reading it. On the other hand, I think the
main audience for this is probably people who already more or less understand
Gödel’s Second Incompleteness Theorem.
For example, someone pointed out that “if math is a not a load of bunk” in this
text is code for “Peano arithmetic is consistent” with (“math” being “Peano
arithmetic” and “not a load of bunk” meaning “consistent”). Which I find very
charming, but also I found it a little hard to decode when reading it.
(I’m also reminded here of the XKCD up goer five,
which is very delightful, but I don’t think I learned anything about spaceships
from reading it)
that’s all!
I’d love to hear more thoughts on this – I think there are probably more ways
that simple explanations can feel condescending that I’ve missed!
I really don’t think they need to feel condescending though – to me the
point of writing a clear/simple explanation is usually that I think the idea is
not actually fundamentally that complicated and so I’m just explaining it in
a way that’s exactly as complicated as it needs to be.
Last year we introduced the developer preview of the Local Home SDK, a suite of local technologies to enhance your smart home integration with Google Assistant by adding local fulfillment. Since then, we've been hard at work incorporating your feedback and getting the experience ready for production. Starting today, we're exiting developer preview and allowing you to submit local fulfillment apps along with your smart home Action through the Actions console using Local Home SDK v1.0.
Adding local fulfillment for your smart home Action.
As part of the Smart Home platform, local fulfillment extends your smart home Action and routes commands to devices through the local network, benefitting users with reduced latency and higher reliability. If a local path cannot be successfully established, commands fall back to your cloud fulfillment.
The Local Home SDK v1.0 supports discovery of local devices over Wi-Fi using the mDNS, UDP, or UPnP protocols. Once a local path is established, apps can send commands to devices using TCP, UDP, or HTTP. For more details on the API changes in SDK v1.0, check out the changelog.
Multi-scan configurations
Along with this release, we've also improved the scan configurations in the Actions console based on your feedback. You can now enter multiple scan configurations for a given project, enabling your local fulfillment app to handle multiple device families that may be using different discovery protocols.
New multi-scan configuration UI.
The new interface groups scan attributes by protocol and highlights required fields, making it clearer how to properly configure your project.
Submit your app
The Local Home SDK configuration page in the Actions console now accepts JavaScript bundles for your local fulfillment app. When you are ready to publish your app, upload your JavaScript files to the console and submit your Action. For more details on submitting your smart home Action for review, see the smart home launch guide.
Upload your local fulfillment app.
We've updated the test suite for smart home to support local fulfillment as well. Be sure to self-test your local fulfillment before submitting your updated smart home Action for review. You must provide updated test suite results with your certification request when you submit.
We want to hear from you, so continue sharing your feedback with us through the issue tracker, and engage with other smart home developers in the /r/GoogleAssistantDev community. Follow @ActionsOnGoogle on Twitter for more of our team's updates, and tweet using #AoGDevs to share what you’re working on. We can’t wait to see what you build!
Apple released a new flagship iPhone yesterday, the iPhone XS. This isn’t exactly ground-breaking news: it is exactly what the company has done for eleven years now (matching the 11-year run of non-iOS iPods, by the way1). To that end, what has always interested me more are new-to-the-world non-flagship models: the iPhone 5C in 2013, the iPhone 8 last year (or was it the iPhone X?), and the iPhone XR yesterday. Each, I think, highlights critical junctions not only in how Apple thinks about the iPhone strategically, but also about how Apple thinks about itself.
The iPhone 5C
It’s hard to remember now, but the dominant Apple narrative in 2013, after a five-year iPhone run that saw the company’s stock price increase around 700%, was that the company was at risk of low-end disruption from Android and high-end saturation now that smartphone technology was “good enough”.
This was, for me, rather fortuitous: Stratechery launched in the middle of the Apple-needs-a-cheap-iPhone era, providing plenty of fodder not only for articles defending Apple’s competitive position,2 but also multiple articles speculating on what the iPhone 5C would cost and how it would be positioned.
It was at two minutes, fifty-six seconds that Tim Cook said there would be a video – a video! – about the iTunes Festival.
And it was awesome.
In case you didn’t watch the whole video (and you really should – it’s only a couple of minutes; due to a copyright claim I had to embed Apple’s full-length keynote), this clip of the ending captures why it matters:
Message: Apple is cool.
This was Apple, standing up and saying to all the pundits, to all the analysts, to everyone demanding a low price iPhone:
NO!
No, we will NOT compete on price, we will offer something our competitors can’t match.
No, we are NOT selling a phone, we are selling an experience.
No, we will NOT be cheap, but we will be cool.
No, you in the tech press and on Wall Street do NOT understand Apple, but we believe that normal people love us, love our products, and will continue to buy, start to buy, or aspire to buy.
Oh, and Samsung? Damn straight people line up for us. 20 million for a concert. “It’s like a product launch.”
Apple’s iTunes Festival video on the left, Samsung’s Galaxy SIII commercial mocking those standing in line on the right
This attitude and emphasis on higher-order differentiation — the experience of using an iPhone — dominated the entire keynote and the presentation of features, with particularly emphasis throughout on the interplay between software and hardware.
In fact, that understated Apple’s position in the market: as I discussed last year the iPhone 5C — which in retrospect, was really just an iPhone 5 replacement in Apple’s trickle-down approach to serving more price-sensitive customers — was a bit of a failure: Apple customers only wanted the best iPhone, and those that couldn’t afford the current flagship preferred a former flagship, not one that was “unapologetically plastic”.
Thus the first lesson: Apple wouldn’t go down-market, nor did its customers want it to.
The iPhone X
Last year, meanwhile, was in many respects the opposite of the iPhone 5S and 5C launch, at least from a framing perspective. The iPhone 8 was the next in line after the iPhone 7 and all of the iPhones before it; it was the iPhone X that was presented as being out-of-band — “one more thing”, to use the company’s famous phrase. The iPhone X was the “future of the smartphone”, with a $999 price tag to match.
A year on, it is quite clear that the future is very much here. CEO Tim Cook bragged during yesterday’s keynote that the iPhone X was the best-selling phone in the world, something that was readily apparent in Apple’s financial results. iPhone revenue was again up-and-to-the-right, not because Apple was selling more iPhones — unit growth was flat — but because the iPhone X grew ASP so dramatically:
This was the second lesson: for Apple’s best customers, price was no object.
The iPhone XR
To be clear, the overall strategy and pricing of the iPhones XS and XR were planned out two to three years ago; that’s how long product cycles take when it comes to high-end smartphones. Perhaps that is why the lessons of the iPhone 5C seem so readily apparent in the iPhone XR in particular.
First off, while the XR does not have stainless steel edges like the iPhones X or XS, it is a far cry from plastic: the back is glass, like the high end phones, and the aluminum sides not only look premium but will be hidden when the phone is in a case, as most will be. What really matters is that the front looks the same, with that notch: this looks like a high-end iPhone, with all of the status that implies.
Second, the iPhone XR is big — bigger than the XS (and smaller than the XS Max, and yes, that is its real name). This matters less for 2018 and more for 2020 and beyond: presuming Apple follows its trickle-down strategy for serving more price-sensitive markets, that means in two years its lowest-end offering will not be a small phone that the vast majority of the market rejected years ago, particularly customers for whom their phone is their only computing device, but one that is far more attractive and useful for far more people.
Third, that 2020 iPhone XR is going to be remarkably well-specced. Indeed, probably the biggest surprise from these announcements (well, other than the name “XS Max”) is just how good of a smartphone the XR is.
The XR has Apple’s industry-leading A12 chip, which is so far ahead of the industry that it will still be competitive with the best Android smartphones in two years, and massively more powerful than lower-end phones.
The XR has the same wide-angle camera as the XS, and the same iteration of Face ID. Both, again, are industry-leading and will be more than competitive two years from now.
The biggest differences from the XS are the aforementioned case materials, an LCD screen, and the lack of 3D Touch. Again, though, aluminum is still a premium material, Apple’s LCD screens are — and yes there is a theme here — the best in the industry, and 3D Touch is a feature that is so fiddly and undiscoverable that one could make the case XR owners are actually better off.
There really is no other way to put it: the XR is a fantastic phone, one that would be more than sufficient to maintain Apple’s position atop the industry were it the flagship. And yet, in the context of Apple’s strategy, it is best thought of as being quite literally ahead of its time.
The iPhone XS
There is, of course, the question of cannibalism: if the XR is so great, why spend $250 more on an XS, or $350 more for the giant XS Max?
This is where the iPhone X lesson matters. Last year’s iPhone 8 was a great phone too, with the same A11 processor as the iPhone X, a high quality LCD screen like the iPhone XR, and a premium aluminum-and-glass case (and 3D Touch!). It also had Touch ID and a more familiar interface, both arguably advantages in their own right, and the Plus size that so many people preferred.
It didn’t matter: Apple’s best customers, not just those who buy an iPhone every year, but also those whose only two alternatives are “my current once-flagship iPhone” or “the new flagship iPhone” are motivated first-and-foremost by having the best; price is a secondary concern. That is why the iPhone X was the best-selling smartphone, and the iPhone 8 — which launched two months before the iPhone X — a footnote.
To be sure, the iPhone X had the advantage of being something truly new, not just the hardware but also the accompanying software. It was the sort of phone an Apple fan might buy a year sooner than they had planned, or that someone more price sensitive might choose over a cheaper option. The XS will face headwinds in both regards: it is faster than the iPhone X, has a better camera, comes in gold — it’s an S-model, in other words — but it’s hard to see it pulling forward upgrades; it’s more likely natural XS buyers were pulled forward by the X. And, as noted above, the XR is a much more attractive alternative to the X than the 8 was to the X; most Apple fans may want the best, but some just want a deal, and the XR is a great one.
Apple should be fine though: overall unit sales may fall slightly, but the $1,099 XS Max will push the average selling price even higher. Note, too, that the XR is only available starting at $749; the longstanding $650 iPhone price point was bumped up to $699 last year, and is now a distant memory.3
To put it another way, to the extent the XR cannibalizes the XS, it cannibalizes them with an average selling price equal to Apple’s top-of-the-line iPhone from two years ago; the iPhone 8 is $50 higher than the former $550 price point as well.
Mission Impossible iPhone
This is what I meant when I said Apple’s second iPhone models capture how the company has changed not only its strategy but how the company seems to view itself:
2013 was a time of uncertainty, with a sliding stock price and a steadily building clamor heralding Apple doom via low-end disruption; the company, though, found its voice with the 5C and declared its intentions to be unapologetically high-end; the 5C’s failure, such that it was, only cemented the rightness of that decision.
In 2017 the company, for the first time in ten years, started to truly test the price elasticity of demand for the iPhone: given its commitment to being the best, just how much could Apple charge for an iPhone X?
This year, then, comes the fully-formed iPhone juggernaut: an even more expensive phone, with arguably one of the weaker feature-driven reasons-to-buy to date, but for the fact it is Apple’s newest, and best, iPhone. And below that, a cheaper iPhone XR that is nearly as good, but neatly segmented primarily by virtue of not being the best, yet close enough to be a force in the market for years to come.
The strategy is, dare I say, bordering on over-confidence. Apple is raising prices on its best product even as that product’s relative differentiation from the company’s next best model is the smallest it has ever been.
Here, though, I thought the keynote’s “Mission: Impossible”-themed opening really hit the mark: the reason why franchises rule Hollywood is their dependability. Sure, they cost a fortune to make and to market, but they are known quantities that sell all over the world — $735 million-to-date for the latest Tom Cruise thriller, to take a pertinent example.
That is the iPhone: it is a franchise, the closest thing to a hardware annuity stream tech has ever seen. Some people buy an iPhone every year; some are on a two-year cycle; others wait for screens to crack, batteries to die, or apps to slow. Nearly all, though, buy another iPhone, making the purpose of yesterday’s keynote less an exercise in selling a device and more a matter of informing self-selected segments which device they will ultimately buy, and for what price.
Specifically, the original iPod was released in October, 2001, and the 7th generation iPod Nano in September, 2012; the last iPod Touch was released in July, 2015
Hilariously, Senior Vice President of Worldwide Marketing Phil Schiller said in reference to the $749 price point, “That’s less than the iPhone 8 Plus. I’m really proud of the work the team has done on that”; Apple shareholders are surely proud that the price is $50 higher than the iPhone 8!
[This is the second in a series of posts about Stack Overflow. The first one is The Stack Overflow Age.]
Around 2010 the success of Stack Overflow had led us into some conversations with VCs, who wanted to invest.
The firm that eventually invested in us, Union Square Ventures, told us that they were so excited by the power of gamification that they were only investing in companies that incorporated some kind of game play.
For example, Foursquare. Remember Foursquare? It was all about making your normal post-NYU life of going to ramen noodle places and dive bars into a fun game that incidentally generated wads of data for marketers. Or Duolingo, which is a fun app with flash cards that teaches you foreign languages. Those were other USV investments from that time period.
At the time, I had to think for a minute to realize that Stack Overflow has “gamification” too. Not a ton. Maybe a dusting of gamification, most of it around reputation.
Stack Overflow reputation started as a very simple score. The original idea was just that you would get 10 points when your answers were upvoted. Upvotes do two things. They get the most useful answers to the top, signaling that other developers who saw this answer thought it was good. They also send the person who wrote the answer a real signal that their efforts helped someone. This can be incredibly motivating.
You would lose points if your questions were downvoted, but you actually only lose 2 points. We didn’t want to punish you so much as we wanted to show other people that your answer was wrong. And to avoid abuse, we actually make you pay one reputation point to downvote somebody, so you better really mean it. That was pretty much the whole system.
Now, this wasn’t an original idea. It was originally inspired by Reddit Karma, which started out as an integer that appeared in parentheses after your handle. If you posted something that got upvoted, your karma went up as a “reward.” That was it. Karma didn’t do a single thing but still served as a system for reward and punishment.
What reputation and karma do is send a message that this is a community with norms, it’s not just a place to type words onto the internet. (That would be 4chan.) We don’t really exist for the purpose of letting you exercise your freedom of speech. You can get your freedom of speech somewhere else. Our goal is to get the best answers to questions. All the voting makes it clear that we have standards, that some posts are better than others, and that the community itself has some norms about what’s good and bad that they express through the vote.
It’s not a perfect system (more on the problems in a minute), but it’s a reasonable first approximation.
By the way, Alexis Ohanian and Steve Huffman, the creators of Reddit, were themselves inspired by a more primitive karma system, on Slashdot. This system had real-world implications. You didn’t get karma so that other people could see your karma; you got karma so that the system knew you weren’t a spammer. If a lot of your posts had been flagged for abuse, your karma would go down and you might lose posting or moderation privileges. But you weren’t really supposed to show off your high karma. “Don’t worry too much about it; it’s just an integer in a database,” Slashdot told us.
To be honest, it was initially surprising to me that you could just print a number after people’s handles and they would feel rewarded. Look at me! Look at my four digit number! But it does drive a tremendous amount of good behavior. Even people who aren’t participating in the system (by working to earn reputation) buy into it (e.g., by respecting high-reputation users for their demonstrated knowledge and helpfulness).
But there’s still something of a mystery here, which is why earning “magic internet points” is appealing to anyone.
I think the answer is that it’s nice to know that you’ve made a difference. You toil away in the hot kitchen all day and when you serve dinner it’s nice to hear a compliment or two. If somebody compliments you on the extra effort you put into making radish roses, you’re going to be very happy.
This is a part of a greater human need: to make an impact on the world, and to know that you’re contributing and being appreciated for it. Stack Overflow’s reputation system serves to recognize that you’re a human being and we are super thankful for your contribution.
That said, there is a dark side to gamification. It’s not 100% awesome.
The first problem we noticed is that it’s very nice to get an upvote, but getting a downvote feels like a slap in the face. Especially if you don’t understand why you got the downvote, or if you don’t agree. Stack Overflow’s voting has made many people unhappy over the years, and there are probably loads of people who felt unwelcome and who don’t participate in Stack Overflow as a result. (Here’s an old blog post explaining why we didn’t just eliminate downvotes).
There’s another problem, which is that, to the extent that the gamification in Stack Overflow makes the site feel less inclusive and welcoming to many people, it is disproportionately off-putting to programmers from underrepresented groups. While Stack Overflow does have many amazing, high reputation contributors who are women or minorities, we’ve also heard from too many who were apprehensive about participating.
These are big problems. There’s a lot more we can and will say about that over the next few months, and we’ve got a lot of work ahead of us trying to make Stack Overflow a more inclusive and diverse place so we can improve the important service that it provides to developers everywhere.
Gamification can shape behavior. It can guide you to do certain things in certain ways, and it can encourage certain behaviors. But it’s a very weak force. You can’t do that much with gamification. You certainly can’t get people to do something that they’re not interested in doing, anyway. I’ve heard a lot of crazy business plans that are pinning rather too high hopes on gamification as a way of getting people to go along with some crazy scheme that the people won’t want to go along with. Nobody’s going to learn French just to get the Duolingo points. But if you are learning French, and you are using Duolingo, you might make an effort to open the app every day just to keep your streak going.
I’ve got more posts coming! The next one will be about the obsessive way Stack Overflow was designed for the artifact, in other words, we optimized everything to create amazing results for developers with problems arriving from Google, not just to answer questions that people typed into our site.
IMDB Rating: 5.5/10 Genre: Drama / Mystery / Thriller Size: 853.54 MB Runtime: 1hr 40 min
Evan Birch is a family man and esteemed professor at a distinguished college, where his charm and reputation have made his philosophy class very popular. When a female student named Joyce goes missing, Evan's previous off-campus dalliances make his wife question his alibi. Gruff police Detective Malloy has even more reason to be suspicious when crucial evidence makes Evan the prime suspect in Joyce's disappearance. Suddenly, the questions Evan faces aren't merely academic - they're a matter of life or death.
[But selling projects well isn't. There are five things every project organizer can learn from the stadium builders...]
The Timesreports that the people of Minnesota spent half a billion dollars (more accurately written as $500,000,000.00) to build a stadium and make concessions that led to being able to host the big game today. And, like every other city that has invested heavily in the NFL over the last decade or more, they will certainly lose money, probably a lot of money. More money than we can easily visualize.
So why does it keep happening?
Why, despite volumes of documented evidence, do well-intentioned people spearhead new projects like this? There's a valuable set of lessons here about human behavior:
The project is now. It's imminent. It's yes or no. You can't study it for a year or a decade and come back to it. The team creates a forcing function, one that turns apathy into support or opposition.
The project is specific. Are there other ways that Minneapolis could have effectively invested five hundred million dollars? Could they have created access, improved education, invested in technology, primed the job market? Without a doubt. But there's an infinite number of alternatives vs. just one specific.
The end is in sight. When you build a stadium, you get a stadium. When you host a game, you get a game. That's rarely true for the more important (but less visually urgent) alternatives.
People in power and people with power will benefit. High profile projects attract vendors, businesses and politicians that seek high profile outcomes. And these folks often have experience doing this, which means that they're better at pulling levers that lead to forward motion.
There's a tribal patriotism at work. "What do you mean you don't support our city?"
For me, the biggest takeaway is to realize that in the face of human emotions and energy, a loose-leaf binder from an economist has no chance. If you want to get something done, you can learn a lot from the power of the stadium builders. They often win.
[Update: I heard from some kind readers in MN who shared numbers that show that the state was very careful with their investment, and it might be one of the better long-term stadium bets on record. Well done. If you have to do a giant stadium project like this one, it sounds like this is the way to do it...]
I’ve been on a cut-wayyyyy-back-on-the-carbs food plan lately, which is a pretty big change from how I was eating during the holidays (“holidays” meaning the entire chocolate-smeared section of the calendar from Halloween to New Year’s, mind you) and for the frillionth time I am faced with the undeniable evidence that I just plain feel better when my diet doesn’t revolve around tortilla chips and frosting. Physically, mentally (like: bigtime), energy-wise, headache-wise, stomach-wise: better.
Now what would be great is if I would take this information, which I have experienced many many times, and commit to a self-care-focused long-term lifestyle which involves fueling my body in a way I know for a fact results in a healthier happier me as opposed to repeatedly having to course-correct after an uncontrollable downward slide into the land of Can Cookies Be Pulverized and Placed in an IV Bag? Let’s Find Out but 1) history does not indicate a high chance of success in this department, and 2) even in my most motivated state of being I cannot, repeat, cannot step away from the Splenda.
You know: Splenda. Sucralose. Those little yellow packets of PURE FUCKING HEAVEN.
Most current dietary advice now positions artificial sweeteners as The Absolute Worst, for a myriad of reasons ranging from toxicity to triggering spikes in blood sugar to being evil on account of synthetic things = bad. I’ve read all the suggestions to switch to things like Stevia, Truvia, Eryth … erythit … ritol, Swerve, monk fruit, and of course “a hint of honey.”
First, just stop it right there with your hint of anything. I’m not overly fond of honey but if I’m going to eat it I’m going to want an entire glorp, not a hint. If I were the sort of person who could be satisfied by a hint of anything I wouldn’t have half the problems I do, okay? As for the other sweeteners, I’ve tried them all and they run the spectrum from disappointing to downright hostile.
Nothing is as wonderful as Splenda, which I consider one of mankind’s greatest achievements. It elevates my coffee, it transforms my berries, it can be eaten directly out of a small prep bowl via moistened fingertip, not that I have ever done such a thing (OMG TRY IT WITH SEA SALT).
I feel like my devotion to Splenda, and its freakish effect on taste receptors — what is it, 600 times sweeter than sugar? — is indicative of a basic psychological makeup that probably can’t be altered at this point without trepanation. I like sweet stuff and I cannot lie.
Real sugar and processed carbs legitimately make me feel awful in a variety of ways and I have a terrible time staying away from them, which is why I’m always somewhere on the battle map with how I eat: either gathering forces and holding strong, or in full surrender.
But Splenda? Oh, man. When I’m feeling like this about cookies: