Brian Goetz Profile Banner
Brian Goetz Profile
Brian Goetz

@BrianGoetz

Followers
66,470
Following
221
Media
460
Statuses
16,449

Java Language Architect at Oracle. Author, Java Concurrency in Practice (). Also, cats.

Williston, VT
Joined May 2008
Don't wanna be here? Send us removal request.
Explore trending content on Musk Viewer
@BrianGoetz
Brian Goetz
6 years
Dear Recruiters: Yes, my job title has "Java" and "Architect" in it. No, that doesn't mean the the "Java Architect" position you are trying to fill is "a great fit for my experience."
29
109
677
@BrianGoetz
Brian Goetz
2 years
@scrumtuous To explain API to a non-programmer, first explain "interface". Everything we use in the real world has an interface; a car's interface includes steering wheel and pedals. An API is the interface to a software library: code packaged for reuse, such as manipulating audio files.
17
51
541
@BrianGoetz
Brian Goetz
5 years
Java 13 is live:
8
228
537
@BrianGoetz
Brian Goetz
6 years
@peterseibel Why sharpen the axe when you can biuild a sharpening framework?
7
34
469
@BrianGoetz
Brian Goetz
3 years
I despise the hellscape of no-name, low-price, low-quality items that Amazon has become. Any search is overwhelmed with garbage, and they crowd out higher-quality goods.
15
29
428
@BrianGoetz
Brian Goetz
4 years
@pchiusano Every "declarative" language eventually becomes a (terrible) programming language, just without the aid of actual language design. We learned this with XML 20y ago; it astounds me that people seem to think the lesson of that age was that we used the wrong shape brackets.
23
138
413
@BrianGoetz
Brian Goetz
3 years
I hate nulls.
64
39
405
@BrianGoetz
Brian Goetz
3 years
The Java Language and Tools team at Oracle is hiring! We are looking for programming language and compiler experts to help build the future of the Java Language. Come join a fantastic team with tremendous impact. DMs open. No recruiters please.
13
123
396
@BrianGoetz
Brian Goetz
2 years
@AlyssaJoyJaffee Serious Q: do you routinely send *them* a thank-you note for taking the time to learn about your company? Seems that politeness and attention to detail cut both ways here. (Plus: you were just doing your job, and were paid; if anything, their action is more thank-worthy.)
5
9
383
@BrianGoetz
Brian Goetz
4 years
Time for ... State of the Loom!
16
174
388
@BrianGoetz
Brian Goetz
2 years
@norootcause They hit the sweet spot of a truly excellent product, a culture of "it's never good enough" and continuous improvement, and a very reasonable price. When they started selling IJ for 300-400, other tools were selling for 1000-2000.
10
5
358
@BrianGoetz
Brian Goetz
2 years
A long-awaited JEP: Classfile Processing API
10
89
344
@BrianGoetz
Brian Goetz
5 years
Every time someone says "Just add a flag for that" I'm going to show them this picture.
@kenshirriff
Ken Shirriff
5 years
Back when there were 12 pence in a shilling and 20 shilings in a pound, the IBM 1401 computer had optional hardware (i.e. transistors) to do arithmetic on pounds/shillings/pence. Of course, there were two incompatible data standards—BSI and IBM—so this knob selected the format.
Tweet media one
23
376
1K
8
91
331
@BrianGoetz
Brian Goetz
2 years
@mariofusco @smdiehl But but ... it's a means of payment. Wait, no, its a store of value. Wait, no, its an inflation hedge. Wait, no, its creating entire new forms of digital ownership. Wait, no, its creating play-to-earn ecosystems. Wait, no, its a proxy for tech stocks. Wait, no...
13
18
319
@BrianGoetz
Brian Goetz
1 year
RIP Crazy Bob. I will miss your energy, your kindness, your smile, and that intense stare that earned you your nickname. Rest In Peace brother.
Tweet media one
21
50
310
@BrianGoetz
Brian Goetz
3 years
@debugagent @heinzkabutz Tip: don’t obsess over micro performance details. They generally matter way less than you think, way less often. Write clear correct code. Optimize when strictly necessary. Free up brain cycles for actual value-creating activity.
7
60
302
@BrianGoetz
Brian Goetz
3 years
Wow are these new AMD chips impressive. Just upgraded my dev workstation from an 8th gen i7 to a Ryzen 9 5900x; building OpenJDK went from 4m to 1m.
10
24
280
@BrianGoetz
Brian Goetz
2 years
@tagir_valeev Performance tip: don't let performance tips skew your development! Write clear, correct code. Its probably already fast enough. If it's not, start measuring before randomly applying performance tips. Then measure after applying the tip, and if it doesn't help, roll back.
9
57
278
@BrianGoetz
Brian Goetz
2 years
@guimonz @amyngyn You’ve got your cause and effect backwards.
3
0
263
@BrianGoetz
Brian Goetz
8 years
Most devs think language design is basically the same as programming. It's not. It's more like writing all possible programs simultaneously.
11
140
249
@BrianGoetz
Brian Goetz
2 months
Allen has said some pretty stupid things in the pursuit of engagement, but this takes the cake. You can’t be a team if you are not colocated or won’t mob? There are great teams that don’t work your favorite way. Saying those aren’t teams is disqualifyingly stupid. And insulting.
@allenholub
Allen Holub @allenholub.bsky.social
2 months
Teams vs. Slack? How about neither? Async written communication is probably the worst possible way to work. Let's replace that with actually talking to each other. Ensemble/Mob programming for the win! (And to head of the inevitable. No, you can't do that if your team is
47
14
111
13
25
251
@BrianGoetz
Brian Goetz
2 years
@martinbonnin Zero. None of those are part of Java.
9
5
247
@BrianGoetz
Brian Goetz
7 years
Highly recommended: an authoritative and unopinionated review of concepts, tradeoffs, and tools for building data-driven applications.
1
62
230
@BrianGoetz
Brian Goetz
1 year
Viktor Klang has done some righteous work here in adding principled extensibility for the API. Draft design document here , discussion at corelibs-dev @openjdk .
3
56
223
@BrianGoetz
Brian Goetz
6 years
Project Loom — Continuations for the JVM - at #jvmls
7
91
225
@BrianGoetz
Brian Goetz
2 years
@pickover Sorry, this is not mathematics, it is behavioral finance. Different people are going to have different points at which their utility metric goes nonlinear. Sure, "expected value", a math concept, may be involved. But it's not helpful to confuse people about what mathematics is.
6
1
217
@BrianGoetz
Brian Goetz
6 years
Interested in Java-Native interop? Check out this early-adopters guide for using Project Panama to access TensorFlow, BLAS, OpenGL, and others (and add your own):
3
103
220
@BrianGoetz
Brian Goetz
4 years
@engineeringvids Depends on the relative size of the bottle and tube apertures. If the bottle aperture is big enough, 1 will fill first.
13
1
210
@BrianGoetz
Brian Goetz
5 years
@stuarthalloway Semicolons are useful. They serve as detectors for people who focus excessively on the wrong things; complaints about them are a very reliable indicator of not having useful things to say about language design.
10
50
206
@BrianGoetz
Brian Goetz
2 years
@mariofusco If anything, the problem with this book is that it was taken too literally, like a set of wrenches to be issued to every new programmer (& the training industry was happy to oblige.) It was meant as a vocabulary for experienced programmers to refer to, and succeeded at that.
8
6
192
@BrianGoetz
Brian Goetz
1 year
Periodic reminder: nearly everyone in tech should probably read this piece:
14
51
178
@BrianGoetz
Brian Goetz
3 years
@searls @tastapod Every project is different, but: too often, code reviews become post-hoc stand-ins for design reviews. If we bring code for "final review" without buy-in on the problem it solves and the merit of the approach, there's almost no way a constructive conversation ensues.
4
39
183
@BrianGoetz
Brian Goetz
4 years
@OliverCarl @38percentsure And if you scan it, it takes you to a Rick Astley video?
7
0
176
@BrianGoetz
Brian Goetz
3 years
At last.
Tweet media one
11
2
181
@BrianGoetz
Brian Goetz
6 years
var jdk10ReleaseDate = ()
5
107
176
@BrianGoetz
Brian Goetz
2 years
After almost two years of planning and every imaginable delay (materials, labor, customs, freight, weather, etc), the sauna is now operational! Just in time for VT winter. Framing & exterior by a local builder; everything internal was DIY with help from my boys.
Tweet media one
Tweet media two
Tweet media three
15
1
171
@BrianGoetz
Brian Goetz
4 months
The Java team at Oracle just gets better and better.
@kevinb9n
Kevin Bourrillion
4 months
Chilling post-Google was nice, but I'm elated to tell y'all that I've accepted a position in the @java Platform Group at Oracle! In the libraries team I'll be working with people like @stuartmarks @viktorklang @PaulSandoz @biboudis @jddarcy @PMinborg and the list goes on...
47
14
401
2
8
175
@BrianGoetz
Brian Goetz
6 years
Once again, Java Concurrency in Practice is on ridiculous discount at Amazon ... good time to pick up a copy!
13
65
168
@BrianGoetz
Brian Goetz
5 years
Garbage-collecting the garbage collectors!
@OpenJDK
OpenJDK
5 years
New candidate JEP: 366: Deprecate the ParallelScavenge + SerialOld GC Combination:
0
6
30
3
34
170
@BrianGoetz
Brian Goetz
7 years
For some reason known only to the algorithm, JCiP is on massive discount at Amazon. If you don't have a copy, now's a good time!
29
92
170
@BrianGoetz
Brian Goetz
7 years
My friend @heinzkabutz has produced an excellent self-study course based on Java Concurrency in Practice (with some updates for Java 8 and 9). JCiP fans can get 20% off through Jan 9 with this link:
Tweet media one
4
60
169
@BrianGoetz
Brian Goetz
4 years
@Pixel_duck @heinzkabutz Write clean, readable code. Worry about performance when you have an actual performance problem; 99% of the time, the clean code is fine. It’s easy to refactor clean code to something dirty if you need to.
4
51
166
@BrianGoetz
Brian Goetz
2 years
For all the folks who love to perpetuate the myth that its only the LTS releases that count, this is an excellent reminder that every Java release is a full-feature release, packed with hundreds of small improvements and fixes. #MovingForwardFaster
@seanjmullan
Sean Mullan
2 years
JDK 19 Security Enhancements: #jdk19 #java #security #openjdk
1
76
196
5
47
163
@BrianGoetz
Brian Goetz
2 years
@starbuxman @java Both answers are terrible! Because they both imply you should either use it all the time, or never. Both answers are wrong. Programming is an activity that requires judgment.
8
8
158
@BrianGoetz
Brian Goetz
7 years
Effective Java 3/e now available
2
83
158
@BrianGoetz
Brian Goetz
3 years
@BillyKorando Field should be private and final. Constructor should accept List, not ArrayList. Constructor should do defensive copy with .copyOf(). toString should use String::format.
16
3
160
@BrianGoetz
Brian Goetz
8 months
@Brayanmnz_ @NiestrojRobert @java But in general, "so people can type fewer keystrokes" is almost always the wrong criteria to prioritize when making decisions. Reading code is more important than writing code; we should optimize for the clarity of the resulting code, not how many keystrokes it took.
9
22
160
@BrianGoetz
Brian Goetz
4 years
@tagir_valeev These are the ones left after everyone had their chance at the plate?
2
2
157
@BrianGoetz
Brian Goetz
7 years
I’m not sure I want to shop here. The prices might change from the shelves to the cashier!
Tweet media one
14
41
153
@BrianGoetz
Brian Goetz
9 months
Periodic reminder: "The Error Model" by @funcOfJoe is required reading for all developers
4
33
154
@BrianGoetz
Brian Goetz
9 years
#jvmls keynote is online. Martin Odersky "compilers are databases" http://t.co/Xcr8YHuSCK
3
92
151
@BrianGoetz
Brian Goetz
2 years
@debugagent @_JamesWard The irony of this statement is overwhelming. Spring was born of the YAGNI belief that J2EE was over engineered. Then, as it discovered the infinite sequence of “and you also need”, it accreted them bit by bit, recreating the monster of it’s origin myth. Like a Greek tragedy.
14
24
149
@BrianGoetz
Brian Goetz
7 years
Periodic plug: my favorite computer science book.
6
37
152
@BrianGoetz
Brian Goetz
9 years
New JEP: Local Variable Type Inference for Java.
14
183
145
@BrianGoetz
Brian Goetz
6 years
Brilliant nudge: @intellijidea now underlines non-effectively-final locals. A nice, but unobtrusive nudge to squeeze gratuitous mutability out of your code.
8
38
147
@BrianGoetz
Brian Goetz
5 years
My friend @heinzkabutz has produced an excellent self-study course based on Java Concurrency in Practice (with some updates for Java 8 and 9.) . JCiP fans can get 25% off through the end of April with this link:
Tweet media one
2
51
140
@BrianGoetz
Brian Goetz
2 years
@gunnarmorling For more reasons than you might think, including lots of developers think their code is "good" when it is just OK. Bad code needs more documentation because it has to explain how it works. Good code needs less explanation of how, which makes more room for *why*.
3
11
140
@BrianGoetz
Brian Goetz
2 years
Sweet null discount....
Tweet media one
18
9
139
@BrianGoetz
Brian Goetz
2 years
Lots of people talking about My feed today: "this is great, but why didn't you idiots do X at the same time, its so easy" Also my feed today: "this is so dumb, why are you idiots wasting your time with stuff like this"
30
11
139
@BrianGoetz
Brian Goetz
2 years
@DThompsonDev Humility. Empathy. Respect. Clear communication. Curiosity. Selflessness. Teamwork. Critical thinking. Coincidentally, these will also make you a better person.
1
14
138
@BrianGoetz
Brian Goetz
5 years
@vmbrasseur Don't EVER ask a speaker to use your slide format, unless you're paying them a market rate to create content for you and only you.
3
14
135
@BrianGoetz
Brian Goetz
1 year
@biancoresearch Pretty misleading Y axis; the real story is how little QT there has actually been.
7
0
134
@BrianGoetz
Brian Goetz
6 years
@practicingdev More important than any of those things: - communicating clearly - listening to others - empathy - realizing that not everyone thinks like you do - valuing things you're not good at (sales, management, etc)
6
31
132
@BrianGoetz
Brian Goetz
2 years
@triketora Slowly and continuously. This has been happening for at least the last 30 years, just getting progressively worse bit by bit. The obvious reason would be: we perceive titles to be cheaper to give than salary or stock.
5
6
131
@BrianGoetz
Brian Goetz
8 years
@mubay @jamesiry IT NEVER ENDS
0
6
115
@BrianGoetz
Brian Goetz
7 years
Project Amber (Local Variable Type Inference, and more, for Java) is open:
1
110
130
@BrianGoetz
Brian Goetz
2 years
RIP Fred Brooks. I read MMM in 1988 and it was eye opening. Many of the lessons still ring true today.
5
30
126
@BrianGoetz
Brian Goetz
4 years
@moxie Reading code is unquestionably more important than writing code; less readable code depreciates faster. But not all concision affects readability the same. Some are just about fewer keystrokes, but others remove noise so you can see the more important stuff. Judgment is needed!
5
18
127
@BrianGoetz
Brian Goetz
11 months
This one was a long time coming, but it was worth the wait.
@OpenJDK
OpenJDK
11 months
New candidate JEP: JEP 457: Class-File API (Preview): #openjdk #java
2
26
123
6
18
126
@BrianGoetz
Brian Goetz
2 years
@d_feldman @smdiehl It's more than terrible. It's so painfully naive (about both code *and* law) that it's hard to even start enumerating what is wrong. It's like "legislate pi = 3" and "just write code without bugs" got drunk and had a baby; it wishes away all the complexity of the real world.
4
33
123
@BrianGoetz
Brian Goetz
3 years
@CedricChampeau Sometimes Java developers insist on whining when the glass is only 99% full, for no apparent reason.
3
1
125
@BrianGoetz
Brian Goetz
4 years
I see a lot of conferences reformatting as virtual events, but are attendees actually motivated to participate in virtual conferences, or is YouTube already a good enough alternative? To me, conferences are more about f2f interactions, since I can get the info elsewhere already.
19
11
125
@BrianGoetz
Brian Goetz
3 years
Dear @Zoom : please give me the ability to adjust the volume *individually* for each meeting participant.
5
0
123
@BrianGoetz
Brian Goetz
5 years
@skirani “You keep using that word. I don’t think it means what you think it means.”
1
1
121
@BrianGoetz
Brian Goetz
4 years
The reports of "mild symptoms" are clearly fake news. He would only have the best symptoms.
12
3
121
@BrianGoetz
Brian Goetz
6 years
My friend @heinzkabutz has produced an excellent self-study course based on Java Concurrency in Practice (with some updates for Java 8 and 9). JCiP fans can get 20% off with this link:
Tweet media one
3
24
120
@BrianGoetz
Brian Goetz
2 years
@GergelyOrosz It's also a gateway drug into deeper understanding of computing. Databases have been solving impossibly hard problems for way longer than most developers have been alive, and SQL is an excellent jumping-off point for learning from accumulated experience.
3
8
119
@BrianGoetz
Brian Goetz
2 years
@vzverovich Unfortunately, due to a timing error, the books were shipped anyway.
2
3
118
@BrianGoetz
Brian Goetz
6 years
Periodic shilling: Java Concurrency in Practice again on super discount at Amazon
10
32
110
@BrianGoetz
Brian Goetz
3 years
It's hard to get rid of books, even when clearly obsolete. Trawling for candidates yesterday, I found a JSP book from 2000. Toss, right? But the intro was so deliciously naive about "today's problems come from yesterday's solutions" that I needed to keep it as a cautionary tale.
16
10
114
@BrianGoetz
Brian Goetz
3 years
@AndrewCMyers @_joemag_ There is a reason languages are designed so that not every input string is a valid program.
5
2
113
@BrianGoetz
Brian Goetz
7 years
Things to love about #curryon : giving a provocative talk called "FP is dead" and the first at the mic for questions is Simon PJ...
4
27
114
@BrianGoetz
Brian Goetz
2 years
@redrapids View code as a liability, not an asset.
1
13
113
@BrianGoetz
Brian Goetz
5 years
I am so tired of hardware that is dependent on (and cannot be separated from) its proprietary bad software. That includes my car, every scanner ever built, Sonos, ...
9
17
108
@BrianGoetz
Brian Goetz
5 years
@SusanPotter @_JamesWard The problem is not that a given set of concurrency facilities are imperfect or that concurrency is hard. The schadenfreude is coming out of the woodwork because a simplistic, mediocre set of mechanisms have been held up as a silver bullet, but the emperor has no gun.
5
36
112
@BrianGoetz
Brian Goetz
3 years
I am such a huge fan of Grant Sanderson's "3 Blue, 1 Brown" series of math videos. I love the teaching of math as much as I love math itself, and Sanderson is a phenomenal teacher, who clearly loves what he is doing.
4
13
109
@BrianGoetz
Brian Goetz
9 years
My non-manifesto: Valuing clear analysis about tradeoffs, priorities, goals, and business value over manifestos.
9
105
109
@BrianGoetz
Brian Goetz
8 years
@RVAwonk and if "stupid" doesn't work, apparently the move is to crank it up to "stupid stupid". That'll do it for sure!
2
3
102
@BrianGoetz
Brian Goetz
3 years
@trisha_gee I can recommend a book.
7
0
107
@BrianGoetz
Brian Goetz
5 years
@daveadams @ArcusCoTangens @philspitler @mhartl And if you do, you're probably doing it wrong. It's pretty hard to out-code libraries written by world-class experts, who surely had the books open at their desks when writing them. That's why we have libraries; to reuse the expertise of specialists.
1
5
107
@BrianGoetz
Brian Goetz
5 years
Every time I click on a YouTube link, it pollutes my recommendation profile. Then I have to watch like ten cat videos to get it back to normal. Can we just have a button for this? #kthxbye
8
11
105
@BrianGoetz
Brian Goetz
7 years
Just another day at the bike shed.
Tweet media one
7
12
104
@BrianGoetz
Brian Goetz
4 years
@lukaseder @tagir_valeev Software is never finished, only abandoned.
3
18
103
@BrianGoetz
Brian Goetz
8 years
All JVMLS videos now up:
2
78
98
@BrianGoetz
Brian Goetz
4 years
Every day on Twitter, I feel like I'm living in the modern version of the Monty Python "I'd like to buy an argument" sketch. Except no one is paying. Clearly this is a market failure. I should launch an Argument-as-a-Service (AaaS) platform.
6
13
101
@BrianGoetz
Brian Goetz
5 years
@MichelSchudel You’re thinking about this as “just one more method”. But, this line of thinking really is “a million more methods”. And if we did this, that just makes a million “you added this trivial method, why not that one” questions. Let’s focus on actually important stuff.
5
3
102
@BrianGoetz
Brian Goetz
7 years
@editoremilye Sounds like she is ready for the Scientific Method talk. "When a hypothesis and an experiment love each other very much ...."
0
6
100
@BrianGoetz
Brian Goetz
2 years
@vlad_mihalcea They were being proven wrong even in 2002. The "C is the speed of light" crowd are only slightly more sophisticated in their understanding of performance than the "MongoDB is web scale" crowd.
9
13
102
@BrianGoetz
Brian Goetz
7 years
Quick one-question survey on a minor Java feature idea:
23
133
98