Programmers at work maintaining a Ruby on Rails application
Tag: programming
Facebook Lite
We rolled out Facebook Lite, our version of Facebook for Android built for emerging markets, in June of 2015. The app has hit 100M monthly active users. It’s the fastest-growing version of Facebook to reach 100M users in under 9 months. It has an APK that is less than 1 MB in size, meaning people can download it in seconds on slow connections.
To reach the APK size target, the Lite APK doesn’t have the product code and resources found in a typical Android app. The Lite client is a simple VM that provides various capabilities to interact with the OS (such as read a file, open the camera, create an SQLite database, and so on) and a rendering engine to drive the Android UI. Product code is written on the server and is expressed in terms of the capabilities the client has. Resources are sent down from the server as needed and cached. So it has infinite scalability for building additional product without bloating the APK.
Subtleties of C
everything is broken.
the C standard does not allow Turing complete implementations, and its evaluation semantics does not preserve typing. There is no C program for which the standard can guarantee that it will not crash.
What is code?
This is highly amusing and you can send it to your tech-illiterate friends.
You consult a spreadsheet and remind him that the Oracle contract was renewed a few months ago. So, no, actually, at least for now, you’ll keep eating that cost. Sigh. This man makes a third less than you, and his education ended with a B.S. from a large, perfectly fine state university. But he has 500+ connections on LinkedIn. That plus sign after the “500” bothers you. How many more than 500 people does he know? 5? 5000?
In some mysterious way, he outranks you. Not within the company, not in restaurant reservations, not around lawyers. Still: He strokes his short beard; his hands are tanned; he hikes; his socks are embroidered with little ninja.
“Don’t forget, we’ve got to budget for apps.” This is real. A Scrum Master in ninja socks has come into your office and said, “We’ve got to budget for apps.” Should it all go pear-shaped, his career will be just fine.
You keep your work in perspective by thinking about barrels of cash. You once heard that a US dry barrel can hold about $100K worth of singles. Next year, you’ll burn a little under 1 barrel of cash on Oracle. 1 barrel isn’t that bad. But it’s never 1 barrel. Is this a 5-barrel project or a 10-barreler? More? Too soon to tell. But you can definitely smell money burning.
At this stage in the meeting, you like to look supplicants in the eye and say, OK, you’ve given me a date and a budget. But when will it be done? Really, truly, top-line-revenue-reporting finished? Come to confession; unburden your soul.
This time you stop yourself. You don’t want your inquiry to be met by a patronizing sigh of impatience or another explanation about ship dates, Agile cycles, and continuous delivery. Better for now to hide your ignorance. When will it be done? You are learning to accept that the answer for software projects is never.
RNN unreasonable effectiveness
I took all 474MB of Linux C code and trained several LSTMs. The code looks really quite great overall. Of course, I don’t think it compiles but when you scroll through it feels very much like a giant C code base. Notice that the RNN peppers its code with comments here and there at random. It is also very good at making very few syntactic errors
Full Stack
Bazel
hermetic builds are a thing. that’s one puzzle piece how you keep a code base with mumble millions of LOC healthy. One of the best perks of being an engineer at Google is now open source. Our build system is just awesome.
What is UML good for?
are there non-enterprisey uses of UML that actually matter? anything that benefits from these diagrams? i’m really curious.
Zip Files All The Way Down
this is fun. download it and then double click on it on a mac.
It’s zip files all the way down, each one contains another zip file under the name r/r.zip. (For the die-hard Unix fans, r.tar.gz is gzipped tar files all the way down.) Like the line of shopping carts, it never ends, because it loops back onto itself: the zip file contains itself!
my favorite js framework
H9RBS.js (v0.0001) is a flexible, dependency-free, lightweight, device-agnostic, modular, baked-in, component framework MVC library shoelacestrap to help you kickstart your responsive CSS-based app architecture backbone kitchensink tweetybirds.