Dan Heidinga Profile
Dan Heidinga

@DanHeidinga

1,597
Followers
577
Following
57
Media
2,365
Statuses

Husband & father. Java Champion. JVM developer

Ottawa, ON, Canada
Joined July 2014
Don't wanna be here? Send us removal request.
@DanHeidinga
Dan Heidinga
4 years
Today was my first day as a @RedHat employee after almost 14 years with IBM. Still working on @java & @openj9 but now with a new email address
29
9
260
@DanHeidinga
Dan Heidinga
7 months
New adventure starting Oct 10....
Tweet media one
41
2
240
@DanHeidinga
Dan Heidinga
1 year
A big thanks to @Oracle for the awesome new @Java_Champions coat and shirt!
Tweet media one
7
1
93
@DanHeidinga
Dan Heidinga
1 year
Thank you! I'm honoured to join such a great group!
@Java_Champions
Java Champions
1 year
Congratulations to new #Java Champion @DanHeidinga
Tweet media one
30
17
219
12
6
80
@DanHeidinga
Dan Heidinga
8 years
Great post on what makes a good software architect:
1
41
55
@DanHeidinga
Dan Heidinga
5 years
Today's public service announcement: Java's Object #hashCode () method returns an int which allows for negative hashcodes. Don't use the hashcode % array length to calculate an array index
1
16
52
@DanHeidinga
Dan Heidinga
3 years
I wrote about the snapshot+restore work happening in the @openj9 project - bringing the equivalent of Linux's CRIU to the JVM itself:
2
19
49
@DanHeidinga
Dan Heidinga
2 years
Java needs to change to become "phase aware". Native images and checkpoint/restore use cases require a better ways to "say what you mean" to enable fast(er) startup.
1
12
38
@DanHeidinga
Dan Heidinga
6 years
First @openj9 JDK 11 Mac OS X nightly build now on the @adoptopenjdk website! Exciting times!
Tweet media one
6
24
38
@DanHeidinga
Dan Heidinga
5 years
. Great to hear that @openj9 's -Xshareclasses cache brings @micronautfw startup "down to 400ms" out of the box and without restrictions on library, reflection, or dynamic loading, etc. Mentioned the benefits of OpenJ9 @ 43:50 in reesponse to questions:
0
14
30
@DanHeidinga
Dan Heidinga
3 years
"As part of our continuing commitment to Eclipse Adoptium and the Eclipse OpenJ9 Java Virtual Machine, IBM will build and publish Java SE TCK-certified JDK binaries with OpenJ9 at no cost." Great news for @openj9 users from our friends at @IBM
@christo4ferris
Howard Beale
3 years
IBM joins Eclipse Adoptium and offers free certified JDKs with Eclipse OpenJ9
0
5
15
2
9
28
@DanHeidinga
Dan Heidinga
2 years
New t-shirt arrived today. Thanks @QuarkusIO ! It's awesome the ways that @QuarkusIO recognizes contributors - even those (like me!) with minor contributions.
Tweet media one
2
2
28
@DanHeidinga
Dan Heidinga
5 years
Heading to the airport for #jokerconf in St.Petersburg. If you're there checkout my talk:
0
13
26
@DanHeidinga
Dan Heidinga
1 year
That feeling when you recoil during a reviewing code, spend an hour investigating, and come to the conclusion "yup, that's the best this code can be without rewriting massive areas"
1
3
22
@DanHeidinga
Dan Heidinga
6 years
Answer: a resounding no! Never been a better time to choose java. Language improvements, #eclipse foundation as new JavaEE / JakartaEE steward, microprofile innovation, and the amazing @openj9 JVM. Plus binaries from @adoptopenjdk Ecosystem had never been stronger!
@myfear
Markus Eisele
6 years
Is #Java in Jeopardy?
4
11
22
1
11
22
@DanHeidinga
Dan Heidinga
7 years
And now that I can talk about it - check out IBM's "pause-less" GC tech on Z systems: /cc @crgracie
@giltene
Gil Tene
7 years
JVM Death Match recording. And no, I didn’t #micdrop at the end. I just set it down gently. @NYJavaSIG
0
12
41
2
7
23
@DanHeidinga
Dan Heidinga
6 years
. @mstoodle demoing @openj9 jit as a service #JITaaS
Tweet media one
0
6
23
@DanHeidinga
Dan Heidinga
4 years
Really excited for @devnexus next week! If you're interested in hearing more about @openj9 , find me at my talk "It's always sunny with OpenJ9", at the IBM booth, or during the "Open JDK Panel"
0
8
23
@DanHeidinga
Dan Heidinga
2 years
Starting my trip to @Devoxx . First in-person conference in a few years. So excited to see people again! Unfortunately conflicts with Canadian Thanksgiving. Good thing my family's forgiving ;)
3
0
21
@DanHeidinga
Dan Heidinga
4 years
Having multiple implementations is critical to prove the spec is actually implementable and doesn't implicitly rely on the RI's behavior.
@BrianGoetz
Brian Goetz
4 years
@cpurdy Some languages don't even have specifications. And most that do, merely document what the "official" implementation does. But the true value of a specification is the discipline it enforces -- but only if you take seriously the idea that others will implement from the spec alone.
0
15
79
1
3
22
@DanHeidinga
Dan Heidinga
4 years
My son, flying into the room: "We're having popcorn and watching a movie! Too bad you have to work. Bye." Now I have to plot a popcorn heist. So much for getting anything done this afternoon ;)
2
0
20
@DanHeidinga
Dan Heidinga
3 years
OH: you want your private fields to be vampires... to have no reflection.
0
2
21
@DanHeidinga
Dan Heidinga
5 years
Wondering how to tune OpenJ9's GCs? Check out this great new article on Memory management in Eclipse OpenJ9
1
14
20
@DanHeidinga
Dan Heidinga
3 years
I fixed a bike gear shifter today resulting in a happy kid. The real heroes though are people who put up how-to-video's on youtube. It's incredible the detailed walkthroughs of just about everything. Really makes DIY of random tasks approachable
0
0
20
@DanHeidinga
Dan Heidinga
5 years
Really excited to see this PR to optimize @openj9 's startup by changing how verification works - Run with `-XX:+ClassRelationshipVerifier` to try it out on tonight's nightly builds! Awesome work from Sharon to get this implemented!
0
6
19
@DanHeidinga
Dan Heidinga
4 years
Really enjoying @crgracie 's escape analysis talk @Jfokus #vmtechsummit . Notice that @openj9 does 0 allocations as it stack allocates the object!
Tweet media one
0
3
18
@DanHeidinga
Dan Heidinga
6 years
Just received this email and am honoured to be a #CodeOne Star. Many thanks to everyone who enjoyed my talk last year on @openj9 ! Hope we can connect again this year at my sessions or at the IBM booth. Congrats, fellow CodeOne Stars!
Tweet media one
0
0
19
@DanHeidinga
Dan Heidinga
5 years
My kids have learned the best way to delay bedtime is to pull out the Legos. 2 space ships later they're now in bed.
1
0
19
@DanHeidinga
Dan Heidinga
4 years
MethodHandles are an under appreciated piece of tech in Java. Really glad I got to be a part of bringing them to the platform.
@cl4es
Claes Redestad 💙💛
4 years
MethodHandles can be used in much the same ways as reflection - but has tiny overhead in comparison. This means you could build performant JDK 8-compatible libraries that pick up and use newer APIs if you run on a later JDK.
4
3
12
0
2
18
@DanHeidinga
Dan Heidinga
3 years
In java, we call that switch -Xverify:none and curse everytime it appears in a bug report
@omniprof
Ken Fogel - Transitioning to Java from Packt
3 years
Have you ever written a program with a God switch? This is a command that allows a user to bypass certain rules such as in accountancy or security.
2
1
0
4
4
17
@DanHeidinga
Dan Heidinga
6 years
Got to spend all day helping users work through ways to make the @openj9 jvm better for their use cases. I love being open source!
2
3
17
@DanHeidinga
Dan Heidinga
1 year
@heinzkabutz @Java_Champions @crazybob String result = "Bear"; Too direct? :)
0
0
17
@DanHeidinga
Dan Heidinga
2 years
I've written up some thoughts on phase-aware source code and a couple of different execution patterns that are possible with checkpoint/restore and potentially native Java.
2
7
15
@DanHeidinga
Dan Heidinga
5 years
Loving the discussions at @JCreteUnconf ! Especially when they spill out into the hall after the session for the another hour.
0
2
15
@DanHeidinga
Dan Heidinga
3 years
@Gilad_Bracha @RealGeneKim @ericnormand @mtnygard @girba The J9 (now @openj9 ) JVM grew out of the envy smalltalk VM. There's still a couple if ES* constants still lurking in the modern code base
1
4
16
@DanHeidinga
Dan Heidinga
2 years
@SamuelHulick @poiThePoi @patio11 Decisions get made before they are communicated to 40+ person meetings (think all hands for a team). The time to call the decision wrong is when its being made, or in a smaller, private discussion afterwards. That level of callout in such a large meeting is very disruptive
1
0
16
@DanHeidinga
Dan Heidinga
5 years
Off to #CodeOne . Looking forward to seeing everyone and hearing some great talks. Interested in NestMates, Condy, & Constable, check out my talk on Wed 11:30am - Moscone South - Room 205. Or if ML is more your thing, join the panel Thur 12:15am - Moscone South - Room 201.
2
1
15
@DanHeidinga
Dan Heidinga
7 years
Finally uploaded my #javaone slides for the #eclipse #openj9 deep dive: An updated version of an earlier talk
4
5
14
@DanHeidinga
Dan Heidinga
4 years
I still miss writing smalltalk. Nothing like coding away, adding "self halt", executing your code and then continuing to develop in the debugger. Adding methods and classes as needed.
@TheDonRaab
Donald Raab
4 years
Building @EclipseCollect with many amazing developers in the open source community has rekindled the joy of programming I first learned with Smalltalk. Experience the power of Java with the wisdom of Smalltalk. You will be surprised by what is possible.
2
24
83
4
1
15
@DanHeidinga
Dan Heidinga
5 years
Excited to see this focus on startup and footprint! @openj9 's -Xshareclasses option and dynamic AOT play well in this world! Here's to fast #JVM startup and small footprint.
0
8
15
@DanHeidinga
Dan Heidinga
8 years
#J9 Project Panama "Layouts" early prototype now available on github: Interested in #Java & #offheap ? Check it out
2
17
12
@DanHeidinga
Dan Heidinga
2 years
#devoxxBE recording of my "Fast startup landscape is expanding" talk is now on youtube. Links to the recording and slides are available from
1
3
12
@DanHeidinga
Dan Heidinga
3 years
Missing #jfokus so I made cardamom buns today. Not as good as the ones at the conference but my kids rate them "edible".
Tweet media one
1
0
13
@DanHeidinga
Dan Heidinga
8 years
If you ever wondered how a JVM interpreter executes your code and the data structures needed do this, come today
@StevenMJohnston
Steve Johnston
8 years
Interesting session coming up at 2:30pm today - J9: Under the Hood of the Next Open Source JVM w/ @DanHeidinga #JavaOne
0
0
1
1
11
13
@DanHeidinga
Dan Heidinga
3 years
Reviewing @openj9 's MethodHandle code as part of the move to #OpenJDK 's MH impl. We did some neat things with our approach, like allowing MH's to hold onto J9Method* while still avoiding full heap walks to on hot code replace:
3
2
12
@DanHeidinga
Dan Heidinga
2 years
Calling .getClass() any time I need to nullcheck a parameter.... /s
@OliverLibutzki
Oliver Libutzki
2 years
NullPointerException vs. IllegalArgumentException for unexpected null parameters is one of my favorite @java discussions. What do you prefer? Feel free to retweet for reach.
24
5
13
5
3
12
@DanHeidinga
Dan Heidinga
5 years
Back home after my first @JCreteUnconf . What an amazing group of people. Great discussion, great food, and lots of new friends! Big thanks to all the disorganizers for all you do to make this happen!
0
3
13
@DanHeidinga
Dan Heidinga
9 years
UnwarrantedOptimismException - still my favourite java exception. #nashorn #jfokus
1
5
11
@DanHeidinga
Dan Heidinga
4 years
Really surprised by the number of recent issues where I find -Xverify:none in the command line. If your app doesn't run with the verifier enabled, it shouldn't run at all.
3
1
13
@DanHeidinga
Dan Heidinga
6 years
First time in Brussels for #FOSDEM2018 . Braved the rain to get the mandatory waffle
Tweet media one
3
1
11
@DanHeidinga
Dan Heidinga
4 years
YOW -> YUL -> BRU for #FOSDEM ! Then on to ARN for @Jfokus Looking forward to seeing old and new friends
3
0
12
@DanHeidinga
Dan Heidinga
6 years
Super excited my talk on #openj9 was accepted to @Jfokus ! Looking forward to my second Jfokus and more time in Stockholm! If you're in the area and want to talk JVMs, hit me up.
1
7
12
@DanHeidinga
Dan Heidinga
6 years
Tweet media one
0
6
12
@DanHeidinga
Dan Heidinga
7 months
@BrianGoetz Thanks Brian! Coffee and cookies? What more could anyone want! :)
0
0
9
@DanHeidinga
Dan Heidinga
5 years
Awesome work @Jelastic ! Looks like another great place to run @openj9
@Jelastic
Jelastic Multi-Cloud PaaS
5 years
Jelastic introduced support of #AdoptOpenJDK , #Liberica , #Zulu , #Corretto , #OpenJ9 and #GraalVM . Explore a variety of OpenJDK distributions consolidated within a single Platform-as-a-Service
Tweet media one
1
16
26
0
5
12
@DanHeidinga
Dan Heidinga
2 years
Listening to @t_mammarella and @KadiGrigg talk about how to expect the unexpected. Pandemic wedding planning as a metaphor for software disaster planning. #Devoxx
Tweet media one
2
2
10
@DanHeidinga
Dan Heidinga
5 years
That's an awesome book shelf. Smalltalk with style is a great intro to get new devs thinking in smalltalk. Still grumpy someone took off with my copy of the #bluebook .
@sethloco78
Seth Berman
5 years
@emaringolo @CampSmalltalkNA Meanwhile, you’ve given @MartinezPeck an idea since I caught him at the @instantiations office trying to steal the #BlueBook . Thanks a lot!:)
Tweet media one
1
0
9
1
2
11
@DanHeidinga
Dan Heidinga
6 years
Newly updated article on eclipse openj9's shared classes feature. One command line option to get dynamic AOT and class sharing for core class loaders and all urlclassloader subclasses
@IBMDeveloper
IBM Developer
6 years
New tutorial- Reduce your memory footprint and improve startup performance with the shared class feature.
0
1
2
1
7
10
@DanHeidinga
Dan Heidinga
2 years
Filling out #Concur expense reports - I need a receipt for my $12.90 lunch? And for my $2.50 train tickets? Kill me now.
8
0
10
@DanHeidinga
Dan Heidinga
8 years
Did not expect to be debugging JNI code written in Cobol today....
3
3
10
@DanHeidinga
Dan Heidinga
3 years
Classfile version 48? That's java 1.4 ...sometimes legacy behaviours need to just go away, especially for an almost 20 year old release
1
0
11
@DanHeidinga
Dan Heidinga
3 years
Important lesson: Add the **why** for subtle changes directly in the code. That's what comments are for! Otherwise, reviewers need to reverse engineer the context and that takes way longer. Plus 6 months down the road you'll thank yourself when you have debug it.
0
1
10
@DanHeidinga
Dan Heidinga
2 years
Check out @mreinhold 's "Selectively Shifting and Constraining Computation" Leyden design document: For more on where the JDK is going in this space!
@DanHeidinga
Dan Heidinga
2 years
#devoxxBE recording of my "Fast startup landscape is expanding" talk is now on youtube. Links to the recording and slides are available from
1
3
12
0
2
10
@DanHeidinga
Dan Heidinga
6 years
Excited to be going to Detroit to talk about #openj9 , #adoptOpenJDK , and JVM startup with the DJUG. #Meetup #Southfield
2
3
9
@DanHeidinga
Dan Heidinga
6 years
. @tpellison presenting @adoptopenjdk at the #ocw Best place to get your openjdk binaries!
Tweet media one
0
3
11
@DanHeidinga
Dan Heidinga
4 years
It's 3am, I have to be up at a reasonable time tomorrow, and all I want to do is keep reading my book. Books, especially good ones I haven't reread for years and years, are worth losing some sleep over 🙂
2
0
10
@DanHeidinga
Dan Heidinga
3 years
Time to get busy in adding lazy static finals to the language (aka expose constant_dynamic) and allow them to be looked up lazily with all the perf warm fuzzies.
@ijuma
Ismael Juma
3 years
"JEP 416: Reimplement Core Reflection with Method Handles" was integrated into JDK 18. A few useful bits from the JEP follow: "Method, Constructor, and Field instances should be held in static final fields so that they can be constant-folded by the JIT." (1/4)
2
10
41
0
0
9
@DanHeidinga
Dan Heidinga
3 years
So I made cardamom buns again. They worked out way better this time and were a big hit with kids for family game night snacks.
Tweet media one
0
0
9
@DanHeidinga
Dan Heidinga
3 years
My 5th gr teacher gave me an old TRS-80 she didn't want anymore. Started with Logo and moved to basic. Eventually split on the cost of a used 386 with my parents and started with those "type in the game" books.
1
1
10
@DanHeidinga
Dan Heidinga
3 years
@maxandersen JDK 9 added a new "JDK_JAVA_OPTIONS" env var to allow specifying these kinds of options in a way that won't break 8 (which doesn't process this env var)
2
0
10
@DanHeidinga
Dan Heidinga
5 years
Took the day off to think thru some things and in the process, cleaned the entire house. Now my wife is suggesting I should do this every week.
3
0
10
@DanHeidinga
Dan Heidinga
3 years
It's interesting how divided users are on the importance of startup time. For some, it's critical. Others just don't care. It makes finding the tradeoffs in this space incredibly difficult. See reddit discussion:
1
1
10
@DanHeidinga
Dan Heidinga
2 years
"... but what about JVMTI?" Sometimes it feels like my role is mostly reminding people of the jvmti spec and the challenges it brings to our nice clean designs
2
0
9
@DanHeidinga
Dan Heidinga
4 years
Helped my kids make paper ninja stars today. After they started hitting each other in the face with them, I used my stellar parenting ... and had them wear sunglasses to protect their eyes.
0
0
10
@DanHeidinga
Dan Heidinga
4 years
My son has discovered my Calvin and Hobbes. Awesome! He's now reading me the "best ones" from across the room... Less awesome.
2
1
10
@DanHeidinga
Dan Heidinga
6 years
Awesome birthday present from my wife. Something relaxing to sip while reviewing pull requests.
Tweet media one
1
0
10
@DanHeidinga
Dan Heidinga
4 years
Start testing your eclipse plugins now so you're ready. And while you're at it, update any apps you develop to run on JDK 11 now. Need a JDK 11 to test with? Grab it from @adoptopenjdk (and pick the @openj9 variant, it's the best 🙂)
@EclipseJavaIDE
🌒 Eclipse Java IDE
4 years
Plan ahead: in 6 months I'll require Java 11 to run (but will still support development of your project targeting an older version of Java, of course)!
7
34
66
1
3
9
@DanHeidinga
Dan Heidinga
2 years
@kcpeppe Time to first request is definitely more interesting than JVM startup time. I think that's what most people mean when they say "startup". Finding ways to shift deployment & app init work out of the critical deployment path (ie: scaling out) is the area to improve.
1
0
10
@DanHeidinga
Dan Heidinga
5 years
Many thanks to the @adoptopenjdk community for another way to get your @openj9 binaries!
@adoptium
Eclipse Adoptium
5 years
Official AdoptOpenJDK RPM and DEB files are now ready! Give them a try and let us know how you get on! Massive thank you to @jfrog for providing us with the Artifactory instance to host these! #openjdk #linux #adoptopenjdk
9
71
125
0
2
9
@DanHeidinga
Dan Heidinga
2 years
If you're at @devoxx and interested in the current options for faster startup then join me for this talk.
@kevindubois
Kevin Dubois 🇧🇪🇪🇺🇺🇲
2 years
@DanHeidinga "The fast startup landscape is expanding!" Wednesday 12 October 12:00-12:50
1
0
0
1
0
8
@DanHeidinga
Dan Heidinga
5 years
Great write-up on "What a Senior Staff Software Engineer Actually Does" by @jkebertz . Well worth reading this and her follow-on post as well
0
1
9
@DanHeidinga
Dan Heidinga
6 years
Now in SFO for #CodeOne . Looking forward to seeing old friends and meeting new friends again this year!
1
0
9
@DanHeidinga
Dan Heidinga
4 years
Need to pick a #jdk distribution? Great article explains why @adoptopenjdk should be the first choice. "... every AdoptOpenJDK build runs through a ‘we test the hell out of it’ job ;)"
@hendrikEbbers
Hendrik Ebbers 👾
4 years
How @adoptopenjdk provides enterprise ready OpenJDK builds #Java #OpenJDK
0
17
49
0
2
9
@DanHeidinga
Dan Heidinga
2 years
Love seeing `-XX:+ClassRelationshipVerifier` show up in lists of JVM options on unrelated github issues. A great way to boost startup by loading fewer classes. fyi @openj9
Tweet media one
1
2
9
@DanHeidinga
Dan Heidinga
7 years
Lots of angst about Java 9... Will it be Java's "Python 3" moment?
@jtgreene
Jason Greene
7 years
Indeed. Jigsaw isn't an improvement to #Java , rather a bunch of unnecessary restrictions that make Java less interesting and harder to use.
2
19
16
2
5
9
@DanHeidinga
Dan Heidinga
7 years
Interested in #OpenJ9 aka #OpenJDK on the #J9 vm? Find me to chat or come to my session Thurs 13:00 room 12 @ #geecon
1
6
7
@DanHeidinga
Dan Heidinga
6 years
Like it or not, memory matters and will continue to change the way aid are written and run. It's part of why we're so proud of @openj9 's memory footprint advantages.
@headius
Charles Oliver Nutter @[email protected]
6 years
I find it fascinating that "memory is cheap" has now become "memory is expensive" based solely on the fact that cloud providers charge too much to rent RAM. We're mutilating solid apps into microservices and functions just so we can fit into Amazon's pricing models.
10
81
209
1
2
8
@DanHeidinga
Dan Heidinga
2 years
@guizmaii @strokyl For JDK17 and later, both Hotspot and OpenJ9 use the same MethodHandle implementation (which is used by Lambdas). The extra frame in the stack trace is due to different rules for hiding implementation stack frames. Good news - it's been fixed. Next release will match Hotspot
1
2
8
@DanHeidinga
Dan Heidinga
4 years
Interesting results using CRIU to optimize startup. If only we had that capability at the VM level....
@OpenLibertyIO
openlibertyio
4 years
Faster start-up for Java applications on Open Liberty with CRIU snapshots - a new blog post on the potential of CRIU for Java apps in serverless environments:
Tweet media one
0
23
31
3
1
7
@DanHeidinga
Dan Heidinga
3 years
Excited for today's Java track. Great speakers and interesting topics. Hope to see lots of you there for the discussions after the sessions!
@QCon
QCon Software Development Conferences
4 years
Join Java Champion, Author of "Java in a Nutshell", @kittylyst in the “ @Java : Delivering Continuous Innovation in a Mature Software Ecosystem” track at #QConPlus . Find out more: @mon_beck @DanHeidinga Tobi Ajila
Tweet media one
0
5
5
0
4
8
@DanHeidinga
Dan Heidinga
2 years
#Devoxx keynote filling up!
Tweet media one
0
3
7
@DanHeidinga
Dan Heidinga
1 year
@jerrinot Hotspot has both C1 and C2. @openj9 's jit is called Testarossa. Trade-offs tend to be about the whole runtime's characteristics, not just the JIT.
1
2
8
@DanHeidinga
Dan Heidinga
2 years
Had an discussion today about container startup time. Not time to first request, but time to get the container started to execute your code. Is anyone measuring that these days? Working to optimize the container engines for startup?
4
1
8
@DanHeidinga
Dan Heidinga
6 years
@crgracie @rednaxelafx @openj9 @mstoodle We're on track to have basic mac support in the 0.11.0 release scheduled for October
0
3
8
@DanHeidinga
Dan Heidinga
3 years
It's incredible how many simple straightforward ideas become complicated when you remember that every obj store needs GC barriers
2
0
7
@DanHeidinga
Dan Heidinga
2 years
Learning about #rust at #devoxx with Alex Snaps
Tweet media one
0
1
7
@DanHeidinga
Dan Heidinga
4 years
Ok that's it. Put the debugger down and back away from the laptop. Time to sleep.
0
0
8