Malte Ubl Profile Banner
Malte Ubl Profile
Malte Ubl

@cramforce

32,194
Followers
772
Following
2,552
Media
52,900
Statuses

Artificial General UI @Vercel CTO. he/him

San Francisco
Joined July 2008
Don't wanna be here? Send us removal request.
Pinned Tweet
@cramforce
Malte Ubl
6 years
// I was young and needed to ship.
31
68
561
@cramforce
Malte Ubl
1 year
Google's new CSS framework?
Tweet media one
129
320
7K
@cramforce
Malte Ubl
1 month
@ulricmusset There is an actual reason that nobody seems to mention here and it has to do with SMS pricing: - In the late 90s SMS became very popular in Europe and elsewhere while nobody in the US texted - It was also expensive - US mobile operators made it free cause nobody was using it -…
118
210
7K
@cramforce
Malte Ubl
3 years
As a web developer this is one of the happiest announcements in a while: Google Search ended support for IE11 in its main product 🎉 (you can still search but will get a fallback experience). I'm mostly posting this so you can send it to your boss 😛. We did the Math. It is time.
64
984
5K
@cramforce
Malte Ubl
6 years
Wells Fargo charges $15 for an incoming wire transfer because, as everyone knows, that is how much a database transaction costs if you use Oracle with more than 2 cores.
55
783
3K
@cramforce
Malte Ubl
9 months
Y'all realize that the GitHub contribution graph can be trivially "hacked" by a cron job, right? Right? I have made maybe 50 or 100 "real" contributions this year, but my account updates the sitemap.xml file every 30 minutes.
Tweet media one
@bahdcoder
Frantz Kati
9 months
You're job hunting in 2023 with this kind of Github profile ? Most newbies don't even understand how much work it'll take to actually succeed at this tech thin.
Tweet media one
805
178
2K
92
133
2K
@cramforce
Malte Ubl
7 years
Simultaneous walk out in 8 Google offices across entire US in support of #NoBanNoWall happening now. #GooglersUnite
Tweet media one
55
1K
2K
@cramforce
Malte Ubl
5 years
Yesterday I overheard "Easy-to-replace systems tend to get replaced with hard-to-replace systems." and now I can't stop thinking about whether this is just a restatement of the second law of thermodynamics in terms of systems design.
31
440
2K
@cramforce
Malte Ubl
5 years
Awesome, my dad's car has a GDPR popup every time you turn it on
45
254
2K
@cramforce
Malte Ubl
6 years
✨NEW✨ After wanting to have this for years, I just built this little app that will read you Wikipedia articles about the places you drive through on a road trip 🚗
48
438
2K
@cramforce
Malte Ubl
2 years
Shipping today: @Vercel has been giving you a dedicated Preview URL of your site for every PR you make. And now you can comment on those Previews just like you comment on a Google Doc or a Figma file
48
180
2K
@cramforce
Malte Ubl
1 month
@ulricmusset Phone calls (including often mobile calls to the same area code) were free while SMS cost money. People were calling each other like crazy
17
13
2K
@cramforce
Malte Ubl
7 months
Been there. Done that. Straight up does not work. In HTTP2 the per-request overhead is still very substantial and there are concurrency limits, plus you get waterfalls and inefficient compression. There is no way around bundling for high performance websites today.
@dhh
DHH
7 months
"The state of the art is no longer in finding more sophisticated ways to build JavaScript or CSS. It's not to build at all. To lean on HTTP/2 and the now universal support for import maps to avoid bundling."
Tweet media one
50
120
954
57
114
1K
@cramforce
Malte Ubl
3 months
When you `fetch` and don't read the response body (E.g. if you only care about the http status code): - Browser: It's fine - Node.js: Memory leak - Cloudflare worker: You hold on to one request-concurrency slot indefinitely and if you do it 6 times you are deadlocked How do Deno…
69
104
1K
@cramforce
Malte Ubl
5 years
According to the New York Times the average salary for Software Engineers in Silicon Valley is now $4.7 million per year. This is based on the observation that it was $100k in 2008 multiplied by industry revenue growth.
45
197
1K
@cramforce
Malte Ubl
6 years
💥 You don't like URLs? Neither do we👊 And so we are making the changes to no longer need them while retaining the performance & privacy benefits of AMP. Read this post for details & thanks so much for all the feedback! ❤️
35
428
1K
@cramforce
Malte Ubl
9 years
I only needed to change some CSS. http://t.co/LvjLbjgY9F
Tweet media one
16
1K
1K
@cramforce
Malte Ubl
2 years
Hello @Vercel
@cramforce
Malte Ubl
2 years
Today is my last day at Google.
130
66
1K
63
36
1K
@cramforce
Malte Ubl
1 year
@github Copilot training data honeypot
11
28
1K
@cramforce
Malte Ubl
1 year
As predicted, the primary impact of other browser engines being on the horizon of coming to iOS is that Apple would invest into Safari more. This release is maybe the most clear evidence of this happening. About a year ago Apple started hiring for the …
15
121
926
@cramforce
Malte Ubl
1 year
@MicrosoftEdge We can tell you're afraid of change when you don't let people change their default browser
7
13
879
@cramforce
Malte Ubl
11 months
Dogfooding is a super power. @vercel 's website is constantly automatically updated (with PR review) to run the latest canary of @nextjs . Not gonna lie, sometimes it hurts to run the cutting edge, but the payback is huge. E.g. yesterday I was like "Why is …
Tweet media one
15
40
887
@cramforce
Malte Ubl
7 years
Amazing and super hilarious post about web performance. The text is so good it doesn't even gzip to less bytes.
5
379
867
@cramforce
Malte Ubl
2 years
JSX should be part of JavaScript
128
59
858
@cramforce
Malte Ubl
3 years
When do we suspend accounts? Friday, after the stock market closed, duh
6
98
708
@cramforce
Malte Ubl
7 months
Next.js 14: No new APIs
Tweet media one
15
20
701
@cramforce
Malte Ubl
6 years
🚨 For those of y'all who prefer reading over watching videos I prepared a transcript of my @jsconfau talk "Designing very large (JS) applications" Topics: - careers beyond senior level - dependency tree shaping - 3 new hardest problems in computer science
13
205
669
@cramforce
Malte Ubl
6 months
Real artists copy. For example, @github took my slide/quote from July for their recent Universe conference and added a fancy gradient to the title 😊
Tweet media one
Tweet media two
@cramforce
Malte Ubl
10 months
I adopted this quote from @ericschmidt 's "Revenue solves all known problems". For the record: I think I'm right about iteration velocity and Eric is wrong about revenue.
2
3
49
26
33
657
@cramforce
Malte Ubl
2 years
I am once again reminded that `cache-control: no-cache` means: "Go ahead and cache this" and I am a little sad about the web platform
26
39
646
@cramforce
Malte Ubl
2 years
I've been at @vercel for 7 weeks now and shipped 59 PRs; which is ~59 more than in my last 3-4 years at Google. Honestly, I was a little afraid it wouldn't flow off my hands anymore, but seems to be like riding a bicycle 😅
13
5
613
@cramforce
Malte Ubl
4 years
10 years at Google today 🤯
33
2
608
@cramforce
Malte Ubl
1 year
Today is my 1 year anniversary at @vercel ! It took me 11 months to really grasp @rauchg ’s core idea behind our tech in a way that can be succinctly summarized. We’re calling it Framework-defined Infrastructure & it’s an evolution of infrastructure as code
24
60
598
@cramforce
Malte Ubl
3 years
🆕 blog post: Maximally optimizing image loading for the web in 2021 explained as an annotated HTML example - content-visibility for images - single HTML element blurry placeholders - lots of client CPU usage optimizations & lazy loading, etc.
8
157
593
@cramforce
Malte Ubl
6 years
Rest in peace
Tweet media one
5
144
575
@cramforce
Malte Ubl
6 years
Tweet media one
6
174
559
@cramforce
Malte Ubl
6 years
🚨 Try this one weird trick for web performance! No, seriously, there likely hasn’t been a safer & easier win in web perf than going to your CSS file, looking for @font -face & adding `font-display:optional` in a long time. Do this before you start that ServiceWorker project!
5
138
550
@cramforce
Malte Ubl
1 year
I know it's a hot topic, but it's Friday so let's talk about why, if you choose to write SQL by hand, the use of a "sql tagged template" is good for security: As attentive readers gathered the tagged template compiles to db.query('INSERT INTO products (name) VALUES ($1)',…
Tweet media one
29
23
543
@cramforce
Malte Ubl
1 year
I strongly disagree with this. I introduced coupling of components with data-fetching at Google in 2013ish, and it has proven extraordinarily successful. You probably used this today! Not leaking how to fetch data to the composing app is really a game-changer for composability.…
@rossipedia
rossipedia 🇺🇦
1 year
Application components should not handle data fetching. Yeah, I said it.
25
15
158
31
31
522
@cramforce
Malte Ubl
3 months
@acdlite Very happy with my investment decision to never learn what a forwardRef is
10
15
516
@cramforce
Malte Ubl
1 year
1
4
507
@cramforce
Malte Ubl
10 months
Latest iOS Safari release changed the floating point math of the JS engine. AMA
23
24
495
@cramforce
Malte Ubl
4 years
🚨 New 🚨 I released eleventy-high-performance-blog A blog template for @eleven_ty that implements a very wide range of performance best practices by default 🎉. 🖼 image lazy loading 🏘 srcsets � blurry placeholders 🎄 CSS tree shaking 😻 you name it!
18
82
486
@cramforce
Malte Ubl
2 years
citizenshipStatusUpdate(🇺🇸)
Tweet media one
59
2
485
@cramforce
Malte Ubl
9 months
Got hired as a designer. Casually slings out Rust PRs doing AST transforms
@shuding_
Shu
9 months
@justansub @vercel Initially as a designer, but since then I’m not sure
4
0
111
8
7
454
@cramforce
Malte Ubl
7 months
I'm all for specialization in software engineering, but client/server isn't a good boundary. As a frontend engineer you need to control the entire user experience, and that requires being empowered to program the frontend server.
@cramforce
Malte Ubl
7 months
@DanShappir It doesn't obfuscate the distinction, it eliminates the artificial distinction.
5
6
95
20
41
453
@cramforce
Malte Ubl
2 years
Successfully deployed the only sentence you need to be able to say to be a principal engineer: "What are you actually trying to do?"
5
42
447
@cramforce
Malte Ubl
4 months
Accept current change Accept incoming change
12
52
440
@cramforce
Malte Ubl
1 year
OK, OK, we need to talk about rewrites. In fact, I've been wanting to talk about rewrites. First of all @sarah_edo is 100% right. LOL @ rewriting on a regular basis. But just because you don't say "Oh, the system is now 3y old, time to rewrite" doesn't mean you never rewrite 🧵
@sarah_edo
Sarah Drasner
1 year
@BijanRahnema Hi 👋 I’m a Director of Engineering for Google, my org runs the infrastructure that powers Search, Gmail, YouTube, etc. I can absolutely guarantee you that we don’t do full rewrites of everything every few years.
90
252
4K
7
45
431
@cramforce
Malte Ubl
4 years
🚮
Tweet media one
29
30
418
@cramforce
Malte Ubl
1 month
@apandaontw @ulricmusset That's right, but there are markets with the same iPhone penetration (UK, Australia, Japan) and none of them use iMessage. I was trying to explain why they behave differently to the US.
16
9
418
@cramforce
Malte Ubl
3 years
The real story here is that WebKit is getting hardware accelerate SVG not because of the most valuable fruit company in the world but because of a German appliance maker who are apparently running SVG-heavy WebKit workloads on their vacuum cleaners.
@NikolasZimmerm1
Nikolas Zimmermann
3 years
I promised to write a technical document, covering the current SVG engine in WebKit and the new layer based SVG engine. Check it out here: Teaser: #igalia #vorwerk #thermomix #webkit
5
64
344
7
103
413
@cramforce
Malte Ubl
2 years
You say $8 prevents people from doing stupid shit and I show you the domain names I've purchased over the years
8
41
411
@cramforce
Malte Ubl
1 year
We're at it again
Tweet media one
@vercel_changes
Vercel Changelog
1 year
Inspect and validate Open Graph images and metadata from the Vercel dashboard.
12
28
378
6
28
403
@cramforce
Malte Ubl
5 years
Facebook recruiting went from "let's get coffee" over "let's get fancy steaks" to "join us on our 2 night luxury retreat". I wonder what's next on the escalation stage? "Fly our private jet to DC. 6 hour deposition in front of Congress is activity B".
8
18
399
@cramforce
Malte Ubl
2 years
Just a regular reminder that whatever the fuck document.querySelectorAll returns does not implement map
28
9
397
@cramforce
Malte Ubl
8 months
I was today-years-old when I learned that response.ok is false for 3XX status codes
19
6
393
@cramforce
Malte Ubl
3 months
We're all on the same page that running a sophisticated piece of business critical software with a database, exposure to the internet and stuff costs more than renting a single computer, right?
Tweet media one
124
18
390
@cramforce
Malte Ubl
6 years
Full disclosure: The exact "1 women applied" thing happened to @jsconfeu 7 years ago. This year it was well over 200. Lets just say the difference wasn't "thoughts and prayers". …and the lineup speaks for itself
@code_europe
Code Europe
6 years
@marcacohen Marc, we invite everybody to take part in the @code_europe conference - both as a speaker and as a participant. This season we received only one application from female speaker to our conference, but we hope that next season more women will apply to the speakers group.
12
1
8
8
111
367
@cramforce
Malte Ubl
6 years
💥 OMG biggest news in web performance in, like, a decade: Technology independent performance based ranking in Google Search. I've been waiting for this to be ready for such a long time. So happy to see it out there!!!
9
137
368
@cramforce
Malte Ubl
7 months
Barrel files are a heavy weight on the JS ecosystem. They - Make dev startup slower and use more RAM - They make builds slower - They increase cold start times in production Read this amazing blog post about how we are addressing the challenge in Next.js
12
45
367
@cramforce
Malte Ubl
5 years
Google's image serving system serves inverted images to internal IP addresses if they get requested without a max-size leading to potentially massive over-serving of bytes to the user. This confuses my colleagues very regularly–but then the bugs get fixed. WAI.
Tweet media one
7
65
363
@cramforce
Malte Ubl
5 months
Haha, I was waiting for his to happen. Not only did they get deranked, they also provided Google with substantial amounts of free pre-classified training data for low quality content
@RossHudgens
Ross Hudgens
6 months
Google has stolen this traffic back. According to Ahrefs, traffic is falling off a cliff. I do not see any rankings present, and using a site: search, only the homepage is currently indexed. Do not embarrass Google.
Tweet media one
53
77
880
6
28
347
@cramforce
Malte Ubl
2 years
Turn off those IE11 end-to-end tests and instead add a test running your page with an ad blocker turned on.
6
44
345
@cramforce
Malte Ubl
5 years
🤯 CSS is the most complicated API in wide use. Every selector is a function call receiving two args. One of them a string with complicated syntax & the other an object literal with 💯s of optional keys & values that are strings with magic syntax fn("selector", {color: "red"})
28
49
334
@cramforce
Malte Ubl
19 days
Inspired by @JeffDean 's seminal "Latency numbers every programmer should know" I collected and curated "Latency numbers every frontend developer should know" From 5G millimeter-wave internet connections to hot potato routing around the globe
12
82
338
@cramforce
Malte Ubl
4 months
The whole discourse of "does the web need to work without JavaScript?" makes no sense. JS is part of the web. It's like asking "does a car need to work without an engine?". Sure, push it with your own strength (mad esoteric CSS/HTML skillz) but you probably shouldn't regularly
40
16
328
@cramforce
Malte Ubl
2 years
GitHub copilot is incredible.
20
9
319
@cramforce
Malte Ubl
2 months
Malte from Team-SSR here: I looked into this and their website was robots.txt-blocking the JS necessary to render their content. Hence Google could not index it. Google exclusively indexes your content by rendering it, operating on the DOM post rendering–never just the HTML.
@jhooks
joel 🌦️
2 months
looks like fixing the SSR (because google absolutely does NOT index pages that load content via javascript) is starting to have tangible lift in daily traffic
Tweet media one
50
28
427
11
10
316
@cramforce
Malte Ubl
1 year
Trying to keep the negativity to a minimum, but, like, we tried this with CoffeeScript and it wasn't good
@Steve8708
Steve (Builder.io)
1 year
Civet ( @civetlang ) is a new alternative syntax for TypeScript Init flame war about syntax preferences:
53
99
863
23
10
313
@cramforce
Malte Ubl
5 months
is one of the largest next.js applications and we constantly dogfood the very latest canary of Next.js to ensure that it gets major production exposure before it gets released to our users. We have substantial test coverage but UI bugs like transitions can…
@thdxr
dax
5 months
we can talk or we can check the scoreboard quality comes from trying hard and attention to detail, not general statements like this
53
41
817
17
7
312
@cramforce
Malte Ubl
3 years
Congratulations to the European Union for winning against Great Britain.
7
13
309
@cramforce
Malte Ubl
6 years
2008 Ryan Dahl introduced Node.js at @jsconfeu because "making web servers is too hard" (The standing ovations was my favorite moment of JSConf ever!) This year he is returning because "machine learning is too hard". I cannot wait!!!
@jsconfeu
JSConf EU
6 years
#16 Ryan Dahl ( @ry ) introducing “Propel, a Machine Learning Framework for JavaScript” fast & developer-friendly machine learning in the Node.js and in the browser. —
5
100
261
3
114
304
@cramforce
Malte Ubl
4 months
The web changed today. Alternative browser engines on iOS
Tweet media one
16
41
307
@cramforce
Malte Ubl
7 months
New in Next.js 14: Automatic static optimization of fully dynamic pages with partial prerendering. This gives you guaranteed few-dozen millisecond response time for personalized pages on a single streaming response. I've rarely as excited about a new technology. This literally…
12
24
295
@cramforce
Malte Ubl
6 years
This was by far the best introduction to deep learning and AI I’ve ever seen. There probably won’t be a better use of 30 minutes today.
@jsconfeu
JSConf EU
6 years
🚨 And here is our first video from a talk of JSConf EU 2018! Deep Learning in JS by @rakshesha . Highly recommended for the mesmerizing slides and visualizations.
4
77
335
3
63
291
@cramforce
Malte Ubl
1 year
We’re introducing visual editing of content from headless CMSes bringing back one of the best features of monolithic CMSes for composable architectures–with no changes to your code! The key new technology: Content source maps. They allow your content to pass through N layers of…
10
19
286
@cramforce
Malte Ubl
4 years
My decade 👰 Got married 👨‍👨‍👧‍👦 Had 2 kids 👷‍♂️ Got hired by Google & got promoted 4 times 🇺🇸 Moved to the US 🟩 Got a green card 🏘️ Bought a house 💓 Helped run @jsconfeu 9 times 🥰 Made friends in my 30s 💪 Worked 100x fewer weekends 💔 Went to as many raves in total as in 2009
6
4
275
@cramforce
Malte Ubl
1 year
Post-Google cheat sheet: MoMA: @glean Buganizer: @linear Workday: Workday 😱 Blaze: @turborepo (you can do bazel but do yourself the favor) Rasta: @statsigio Gmail: Slack Google Docs: @NotionHQ Gaia: a world of painful disjoint identity models
17
9
265
@cramforce
Malte Ubl
3 months
My unpopular opinion: Every company has to decide if it is single or multi time zone company. And if the answer is multi, then the folks who live furthest west will have to do 8am meetings.
29
3
266
@cramforce
Malte Ubl
1 year
I disagree with this take. It's interesting to look at Java's history and how much the idea has won just not in the way the original designers intended. It failed hard for UI: users wanted native UI feel. But it also won extremely clearly on the server: It's now the absolute…
@mjackson
MJ
1 year
Can we all agree that “write once run anywhere” is a bad software design principle? Or are we still wondering about that one?
122
12
361
11
7
263
@cramforce
Malte Ubl
2 years
${jndi:ldap://do.a("barrel roll")}
2
61
261
@cramforce
Malte Ubl
3 years
@Carnage4Life Netflix must under no circumstances become bankrupt
3
9
257
@cramforce
Malte Ubl
3 years
My house is now a @vercel #nextjs application
Tweet media one
13
7
258
@cramforce
Malte Ubl
15 days
What could be a better phone for your kids? - It texts and calls - It takes photos - It plays audio books and is literally an e-reader - It really, really sucks for Tik-Tok, Youtube, and video games
@peer_rich
Peer Richelsen — oss/acc
15 days
really enjoying my BOOX “light phone” like a kindle on steroids (with full android) but phone sized great way to fight phone addiction without losing utility
61
51
2K
12
12
255
@cramforce
Malte Ubl
3 years
Wow, an artist group "founded" a printing "company" and offered really great deals to the Nazi AFD party in Germany for printing their election ads. And then, well, didn't print them.
@politicalbeauty
Zentrum für Politische Schönheit
3 years
Wir sind traurig und entsetzt: WER HAT DER AFD 5 MILLIONEN FLYER GEKLAUT? #neueAktion #FlyerserviceHahn
168
716
5K
5
40
244
@cramforce
Malte Ubl
2 years
The other day I set up a node.js project with TypeScript from scratch (but using a starter). It's incredible how difficult that was.
39
5
247
@cramforce
Malte Ubl
1 year
Wow, what a bug 🤯 A very interesting lesson that bundling server code can be dangerous. What happened is that multiple functions were bundled together before deployment into a single serverless function–and one of the original function called the other one as a global side…
@rauchg
Guillermo Rauch
1 year
@shoeboxdnb We've concluded our analysis. 1️⃣ We're refunding the overages 2️⃣ We identified the root cause The root cause is that the Astro bundle handed to the deployment process is monolithic. There was a top-level `await` for an RSS endpoint which called an API with `fetch`. The issue is…
58
78
2K
6
19
244
@cramforce
Malte Ubl
5 years
I wrote some production code
Tweet media one
12
34
243
@cramforce
Malte Ubl
2 months
As I'm reflecting work at Google and Vercel one interesting tidbit is that at Vercel we've been learning the hard way that not all decisions are considered equal. Some are easy to fix (just push another commit), some are hard to ever undo. You cannot use the same process for…
21
14
243
@cramforce
Malte Ubl
7 years
@jannis @speakeasyshe The majority of the literal Christian party voted against it.
2
51
210
@cramforce
Malte Ubl
11 months
At Google it sometimes felt like all we ever talked about was problems related to version skew. And then I Google the term & there isn't even really a definition, let alone much documentation. So, I wrote a basic blog post with examples & how to handle it
6
25
234
@cramforce
Malte Ubl
2 years
Me: "Team, if 100% of you fill out $companyWideSurvey you get to vote on my video conference background in February" Team:
Tweet media one
12
2
233
@cramforce
Malte Ubl
2 years
OMG, Google Meet is so much better than Zoom. How can the latter be such a bad piece of software after all this time?
31
9
235
@cramforce
Malte Ubl
2 years
So excited to be at #nextjsconf ! Follow along on this 🧵for some background technical info on the things being announced at the keynote today!
8
42
233
@cramforce
Malte Ubl
6 years
💥 Would you like your content to be integrated in Google Search features like the Top Stories carousel, but not use AMP? 👊 📋 Here is our plan to enable this based on future web standards, objective performance and user experience metrics
6
104
228