296 karma · joined October 3, 2017
I would be curious to see what percent of the market is people that want their computer to be doing things powerful enough to justify a computer more powerful than an iPad pro is.
Disclaimer: Obviously a $300 chromebook destroys an iPad in price but you know so do a lot of Android phones and people still pay the premium for iPhones because they are sexy[1].
[1]https://www.recode.net/2017/9/12/16290910/apple-event-iphone...
https://www.amazon.com/Site-Reliability-Workbook-Practical-I...
If so, thanks for the link! Can't wait to pour through this bad boy.
I think to most people it would be negligible, but fb operates at a scale where these normally insignificant pieces matter. I would be interested to hear more about the _why_ of a system like this over containerization.
edit: rwmj's comment has a good discussion over the benefits of this over containerization.
> Rewriting SQLite in Rust, or some other trendy “safe” language, would not help. In fact it might hurt.
Prof. Regehr did not find problems with SQLite. He found constructs in the SQLite source code which under a strict reading of the C standards have “undefined behaviour”, which means that the compiler can generate whatever machine code it wants without it being called a compiler bug. That’s an important finding. But as it happens, no modern compilers that we know of actually interpret any of the SQLite source code in an unexpected or harmful way. We know this, because we have tested the SQLite machine code – every single instruction – using many different compilers, on many different CPU architectures and operating systems and with many different compile-time options. So there is nothing wrong with the sqlite3.so or sqlite3.dylib or winsqlite3.dll library that is happily running on your computer. Those files contain no source code, and hence no UB.
The point of Prof. Regehr’s post (as I understand it) is the the C programming language as evolved to contain such byzantine rules that even experts find it difficult to write complex programs that do not contain UB.
The rules of rust are less byzantine (so far – give it time :-)) and so in theory it should be easier to write programs in rust that do not contain UB. That’s all well and good. But it does not relieve the programmer of the responsibility of testing the machine code to make sure it really does work as intended. The rust compiler contains bugs. (I don’t know what they are but I feel sure there must be some.) Some well-formed rust programs will generate machine code that behaves differently from what the programmer expected. In the case of rust we get to call these “compiler bugs” whereas in the C-language world such occurrences are more often labeled “undefined behavior”. But whatever you call it, the outcome is the same: the program does not work. And the only way to find these problems is to thoroughly test the actual machine code.
And that is where rust falls down. Because it is a newer language, it does not have (afaik) tools like gcov that are so helpful for doing machine-code testing. Nor are there multiple independently-developed rust compilers for diversity testing. Perhaps that situation will change as rust becomes more popular, but that is the situation for now.
Unfortunately, team culture takes precedence over neat tools. It's just a common thing on my team to do take calls at your desk.
Does it not seem like open-office etiquette to take a phone call in a private space when other people are trying to work?
Proceeds to not touch upon a single way the Surface 2 is UNIX-y in any sort of way? I know the WSL is there but the biggest stop for me using anything other than a MBP is that I wouldn't be able to develop without a *nix environment.
For all of you developers/operations folks out there, I recommend reading his book The Checklist Manifesto. Every team can learn so much from that book about their everyday practices. We read it at our company book club, and began taking checklists and documentation much more seriously which I attribute too much better productivity, operations and less siloed dev.
I'm pretty sure YNAB (You Need a Budget) does not require cloud storage of personal information.
Great read.
“I bought a doughnut and they gave me a receipt for the doughtnut... I don't need a receipt for the doughnut. I give you money and you give me the doughnut, end of transaction. We don't need to bring ink and paper into this. I can't imagine a scenario that I would have to prove that I bought a doughnut. To some skeptical friend, 'Don't even act like I didn't get that doughnut, I've got the documentation right here... It's in my file at home. ...Under "D".'
Really funny when you think about how this joke aged in this era of rampant privacy abuse.
Here is a quick excerpt, this book is filled to the brim with these gems.
> The final twist of the Twitter anecdote: now that approach 2 is robustly implemented,Twitter is moving to a hybrid of both approaches. Most users’ tweets continue to be fanned out to home timelines at the time when they are posted, but a small number of users with a very large number of followers (i.e., celebrities) are excepted from this fan-out. Tweets from any celebrities that a user may follow are fetched separately and merged with that user’s home timeline when it is read, like in approach 1. This hybrid approach is able to deliver consistently good performance.
Approach 1 is a global collection of tweets, the tweets are discovered and merged in that order.
Approach 2 involves posting a tweet from each user into each follower's timeline, with a cache similar to how a mailbox would work.
[1] https://www.amazon.com/Designing-Data-Intensive-Applications...
At least compared to NYC, where I could hop on the subway to anywhere in the boroughs.
A lot of tools and patterns you don't see in school that describe how most of the "magic" behind high-powered software we use is implemented.
> 2017 Tax Cuts and Jobs Act
On December 22, 2017, the 2017 Tax Cuts and Jobs Act (the Tax Act) was enacted into law and the new legislation contains several key tax provisions that affected us, including a one-time mandatory transition tax on accumulated foreign earnings and a reduction of the corporate income tax rate to 21% effective January 1, 2018, among others. We are required to recognize the effect of the tax law changes in the period of enactment, such as determining the transition tax, remeasuring our U.S. deferred tax assets and liabilities, and reassessing the net realizability of our deferred tax assets and liabilities. In December 2017, the Securities and Exchange Commission (SEC) staff issued Staff Accounting Bulletin No. 118, Income Tax Accounting Implications of the Tax Cuts and Jobs Act (SAB 118), which allows us to record provisional amounts during a measurement period not to extend beyond one year of the enactment date. As a result, our provision for income taxes increased by $2.27 billion and our diluted EPS decreased by $0.77 for both the fourth quarter and full year 2017. Since the Tax Act was passed late in the fourth quarter of 2017, and ongoing guidance and accounting interpretation are expected over the next 12 months, we consider the accounting of the transition tax, deferred tax re-measurements, and other items to be provisional due to the forthcoming guidance and our ongoing analysis of final year-end data and tax positions. We expect to complete our analysis within the measurement period in accordance with SAB 118.
[link] https://investor.fb.com/investor-news/press-release-details/...
I work for a giant enterprise company and the range of programming talent that we have is incredible. I know some people that couldn't code there way out of fizbuzz. Unfortunately, getting these folks onboard to learn the functional abstractions doesn't always sell (especially to the biz folks).
One of Go's biggest strengths is that anyone can pick up the language and be somewhat productive in it after a week.
My 2 cents in the bottomless well of programming language opinions.
Thanks for the response, and hats off to you for making lemonade in that situation.
Really got me there, lol.
Engineer doesn't take the time for proper password management -> Password gets left in source -> Other engineer who does code review misses password -> this continues for several iterations -> product gets released.
Unfortunately this definitely happens more often than you would want to think.