HNHacker News
TopNewBestAskShowJobs

jeffreportmill1

731 karma · joined July 13, 2016

I am a former Apple and NeXT software engineer, working for my own developer tools and educational software and consulting company for 25 years. I love to hear from other software developers and technology enthusiasts, feel free to contact me.

Jeff Martin jeff@reportmill.com http://reportmill.com

submissionscomments
jeffreportmill1··on Ask HN: Does Java need a modern Java UI toolkit for desktop/web?
Thanks! It took me a long time to figure out I needed this - now I can’t live without it!
jeffreportmill1··on Ask HN: Does Java need a modern Java UI toolkit for desktop/web?
TeaVM compiles to JS and includes the basic JRE runtime. Still very lightweight!
jeffreportmill1··on Ask HN: Does Java need a modern Java UI toolkit for desktop/web?
It’s a huge priority, but I’d need help.
jeffreportmill1··on Ask HN: Does Java need a modern Java UI toolkit for desktop/web?
Thanks! The ReportMill design app was the major driver of this.
jeffreportmill1··on Ask HN: Does Java need a modern Java UI toolkit for desktop/web?
Thank you for that - that's why my promising career in graphics design went kaput. I'll hire a professional for version X.

:-)

jeffreportmill1··on Ask HN: Does Java need a modern Java UI toolkit for desktop/web?
Yes! TeaVM is an under appreciated absolute jewel!

The big challenge was having to write most of a UI kit to basically abstract Swing. But there is a surprising symmetry between basic Swing+Java2D and HTML 5.

jeffreportmill1··on Ask HN: Does Java need a modern Java UI toolkit for desktop/web?
GitHub: https://github.com/reportmill/SnapKit

Demos: https://www.reportmill.com/snaptea/

jeffreportmill1··on The Decline and Fall of Java on the Desktop Part 2 (2004-2007)
Nice article! I remember being stunned by Google Maps when it came out, though I never made the connection that it changed what it meant to be a web app, helping displace Java (though it makes total sense now). I was equally distracted by Flash, though that seems rather funny now.
jeffreportmill1··on Ask HN: Remote Unix CLI on local files?
Interesting - thanks for the links! I suppose now I need a fully configured remote-server to use it with.
jeffreportmill1··on JDeploy – Deploy desktop Java apps as native bundles on Mac, Linux, and Windows
This is so nice - it solves the biggest problem of Java desktop deployment in a very elegant way! I have wasted so much time figuring out native app packaging and code signing (not to mention figuring it out on different platforms). I was able to get this to work in about 30 minutes.

You are a hero - I hope this project really takes off! I dare say this is even better than Java Web Start (before it became hopelessly broken).

jeffreportmill1··on Ask HN: Who wants to collaborate?
I am working on a Java UI kit that works on both desktop and browser:

Demos: https://www.reportmill.com/snaptea/

Repo: https://github.com/reportmill/SnapKit

There is a lot of benefit to this - fast, traditional desktop development with great deployment. It also has built-in developer tools and online access to a UI Builder. I hope this could make Java Client development interesting again.

I need collaborators to help write demos and improve the kit.

Jeff at ReportMill dot com

jeffreportmill1··on “Work will never love you back”
Thank you for sharing this. I am in my mid 50's and have done well in my software career, mostly as a solo artist, but I have never really achieved a good work-life balance (I have my wife to thank for any evidence to the contrary). I tend to ride my own hero-sh*thead roller coaster - I'm only as good as my last month of work. If I've done well I use it as motivation to double down. If I've sucked, I panic and double down.

I think some of the reason for this is because I succumb to some of what makes me a better software dev: ADD/OCD. I prioritize my life like I clear my plate: one item at a time. But work is a never ending task, so somehow I never get to priority number 2.

I will try to internalize the idea of work being a rubber ball - I hope that image will stick with me for those times I need to remember to let that ball drop.

jeffreportmill1··on Ask HN: How do you force yourself to do boring tasks?
Many people think I'm a work-a-holic. My dirty little secret is that I'm actually very lazy (my wife knows :-). I can't say I have a good strategy, it's just that when I do get into a rare flow state (a few times a week) I can stay there for quite a while and little can distract me (thank you ADD!).

But here is what I would say: pick the smallest of tasks that is part of the larger work and convince yourself it's okay to only get that part done today. Also convince yourself that it's okay to do a 'Mad Dash' on it - focus on making progress, not making perfect. Save the edits and polishing for when you are in the zone.

This is how I get myself to the gym a few times a week. So many times I've told myself it's okay to just go for 10 minutes (and then sit in the hot tub :-). But once I'm there I almost always do my full regimen (which is only 45 mins).

So maybe that is my strategy: only focus on 'getting started', not on getting done.

jeffreportmill1··on Tesla’s V11 UI changes are receiving strong critical feedback from drivers
I am a Tesla fan. We have a model Y - so much fun to drive, simple elegant design. I appreciate the tradeoff of the large central screen in place of conventional gauges and controls. It's nice to have the view surrounding the car and large map view.

As a sometime UI designer, I think I understand the goal of the update: Elegance, simplicity, a less cluttered design. I do think this is at odds with functionality, however. Being a side screen without conventional tactile controls, it is important that essential functionality not be buried under multiple levels of clicks/menus, to limit the distraction time.

So while it looks cleaner now that the seat warmer control is tucked away, it is also more dangerous. I suppose this is balanced by the new feature that I can no longer be tempted to play video games while I drive, though.

On the subject of Elon, I bemoan that celebrity has been detrimental to him and the company. He clearly enjoys the spotlight and has an elevated sense of worth, which shouldn't even be possible. Shove enough microphones and cameras in a person's face and ask them enough questions outside their area of expertise, and it's almost impossible to keep them from thinking they are the most amazing person who as ever lived, "EVERY THING I SAY MUST BE GOLD!".

jeffreportmill1··on Midwest Developer
Thank you for sharing your experience. I recently became a midwest developer myself having moved to Chicago 2 years ago and I've wondered about the lives of colleagues in this part of the country as we've explored a little of Wisconsin and Indiana. They warned me that 6 weeks of the year I would wish to be anywhere else. 2019 was fine - I found the cold invigorating, and with like more than a few inches of accumulated snow, I thought reports had been exaggerated. The winter of 2020-2021, disabused me of that - 3 feet of snow piled outside for 2-3 months has humbled me.

I started as a southern developer 30 years ago, but in Texas I was considered a hippie. When I moved to Silicon Valley to fix that, I was considered too much of a Texan. After 10 years in CA we went back to Texas which felt more like home, but paradoxically was more isolating, because I knew very few software developers (working for myself). I must have thought this adventure in Chicago was going to be my happy medium.

So I wish you continued good luck in Minnesota. Say hello to Al Franken and Garrison Keillor for me (two Minnesotans I've enjoyed listening to for years).

jeffreportmill1··on Ask HN: At what age is “too old” to work in tech as a software engineer?
Several years into my aerospace engineering degree (age 21) I realized I had little interest in my chosen discipline (I'm 54 now). I was spending much of my free time on the computer and when I started to flounder someone I loved and respected pointed out the obvious, and I changed majors.

Admittedly it would be harder for you. But I would point out that CS has the most value when paired with real knowledge in another discipline. At Texas A & M in the 80's, CS was one of the only disciplines to have a minor - I assume because they, too, realized it needed good pairing. I got my CS degree in 2 years by doubling up the required classes (and by already having sufficient electives).

My first job further makes this point. I was fortunate to sneak into Steve Jobs NeXT Computer. I was surprised that CS majors were actually in the minority. The head of software at NeXT (and Apple before), Bud Tribble, was a former MD (his wiki is sparse, unfortunately - otherwise might have helped). My best friend in engineering was a biology major.

A final source of inspiration might be the "Sunscreen Song (everybody's free)" with the lyrics, "The most interesting people I know didn't know at 22 what they wanted to do with their lives. Some of the most interesting 40-year-olds I know still don't".

I think there is time for you, and if you focus on embracing your gained education instead of replacing it, you could have a very interesting career.

As for young engineers, they are overrated. I was terrible (though prolific) at 30. At NeXT I had several mentors in their 40s and 50s. For most of us proficiency has to be earned. I feel like I'm finally there (with maybe 5-10 years to spare). Ageism does exist though - I do think it's hard to change jobs at this age. Mostly because I think hiring managers are confused when interviewing people with more years and experience than themselves.

Having said all that, I do feel like a long career focused on engineering has been a little dehumanizing. I sometimes wonder if I had satisfied my logical brain with something like a medical career, maybe I would feel a stronger connection to my fellow humans. But there again, maybe you can find a great balance by straddling the fence.

In any case, good luck!

jeffreportmill1··on Ask HN: How much do you read and what do you get from it?
I am a bit of an introvert, even though I know from common sense and past experience that it is good to exercise the social muscle. Two years ago I got the idea that if I read out loud, it would be great practice for socializing. I have been doing it steadily for 30 mins each morning and I think it has helped in many ways.

The first is that I have learned how to read again. It is amazing how much the iPhone, internet, youtube and binge TV has wrecked my attention span. I'm not back to my old ability to spend hours with a book, but I'm much improved. I think the 'win-win' nature of being entertained while practicing a skill has upped my perceived value of spending time this way.

The second is that I feel much more confident in social situations now, because I know I am at least adept at using my vocal cords to communicate complete sentences. My vocabulary has also improved - I think for years there have been plenty of words that I knew but was subconsciously afraid to use. Now that so many advanced words feel more comfortable coming out of my mouth, I find they come to me easier in conversation.

Another thing is that I feel smarter and sharper. That is probably because I am back to reading books again. I also feel like this is a virtuous loop, reenforcing the other benefits and the overall habit.

jeffreportmill1··on TeaVM: Build Fast, Modern Web Apps in Java
I have had great experience bringing my desktop apps to the browser with TeaVM. The performance is great, the generated JS is small (usually about 1mb gzip for my midsized apps).

I do have the benefit of a UI abstraction - my UI kit runs on Swing/JavaFX on the desktop, and on HTML/DOM (canvas based) in the browser.

https://reportmill.com/snaptea

jeffreportmill1··on AdoptOpenJDK: Open-source, prebuilt OpenJDK binaries
Please add an option for JRE in the browser - JRE compiled to JavaScript or WASM (like CheerpJ or TeaVM).
jeffreportmill1··on A Boost for Java on the Client
Very cool! A couple questions: Is Swing supported? Also, how does this compare to javapackager which has been shipping with the JDK since 1.6 (I think).
jeffreportmill1··on Show HN: 300k lines of Java UI code running native in browser at desktop speed
Nope - it works everywhere: https://github.com/reportmill/SnapKit
jeffreportmill1··on Show HN: 300k lines of Java UI code running native in browser at desktop speed
I've done both CheerpJ and TeaVM. CheerpJ is awesome - it's a complete port of the JVM to JS and apps often work with no modification. However, the app + runtime is about 75mb (uncompressed) and can take minutes to load from a cold start.

This post links to the TeaVM version. TeaVM is also awesome - but it has a reduced runtime, conditional compilation and better built-in DOM support. The whole app + runtime is 1.2mb (compressed) and loads in seconds (instantly once cached).

jeffreportmill1··on Show HN: 300k lines of Java UI code running native in browser at desktop speed
No - this app uses a UI kit called SnapKit (available on GitHub). It's kind of a composite of Swing and JavaFX. Like those, it abstracts drawing and user input, so that on the JVM it uses Java2D/Swing and in the browser it uses DOM.

There's a product called CheerpJ that compiles Swing apps to the browser. I'm not sure when/if we'll see JavaFX.

jeffreportmill1··on Show HN: 300k lines of Java UI code running native in browser at desktop speed
I use something called SnapKit (available on GitHub). It's like Swing and JavaFX had a baby, except that it has an abstraction layer that lets it compile to either JVM or JavaScript.
jeffreportmill1··on Show HN: 300k lines of Java UI code running native in browser at desktop speed
There are a few people working on similar projects, which I can use if absolutely needed (CheerpJ, JSweet). But you're right. It makes me sad that Oracle doesn't do something like this - ideally by bringing some of these people in.
jeffreportmill1··on Show HN: 300k lines of Java UI code running native in browser at desktop speed
I think the big win is that TeaVM has a lighter runtime and conditionally compiles only what is needed into the final JavaScript. There are tools that let Java do this now, but I think the standard runtime has more cross dependencies.

My app cross compiles to JVM and browser easily now, but I did a lot of work on the SnapKit UI framework, which is like Swing but abstracts out graphics and user input. My app used to be all Swing - that would be almost impossible with TeaVM. There is product called CheerpJ which does Swing with almost no modification, but it has a larger runtime.

jeffreportmill1··on Show HN: 300k lines of Java UI code running native in browser at desktop speed
If you really use an app all day long, you're going to want a dedicated desktop version. The browser app-in-an-app model is convenient for casual use, but not optimal for long stretches and doesn't integrate as well with the desktop for real workflow.

When you think about it, iOS and Android apps are desktop apps (in full screen mode), not browser apps. And they may be more popular than web apps, for now (though I hate the toll imposed on them).

Maybe someday soon, you'll be able to click on a web app and turn it into a desktop app, with better native platform integration. That might be a reason to stop desktop development.

jeffreportmill1··on Show HN: 300k lines of Java UI code running native in browser at desktop speed
Like you say, WASM should enable many more solutions to target the browser, breaking JavaScript's monopoly. There are still good desktop developer tools out there.

And I agree: if your app only needs to run in the browser - use browser tools. But if you really use an app all day long, you're going to want a dedicated desktop version. The browser app-in-an-app model is convenient for casual use, but not optimal for long stretches and doesn't integrate as well with the desktop for real workflow.

Also, if your app exceeds 100k lines of code, there are some languages that might be better than JavaScript.

jeffreportmill1··on Show HN: 300k lines of Java UI code running native in browser at desktop speed
With TeaVM, I can do all my iterative development on the JVM (instant compile time). Compiling to the browser is usually just a one time thing for deployment. Although, TeaVM also have a "dev-server" mode that does iterative compiles, which is apparently much faster for iterative development.
jeffreportmill1··on Show HN: 300k lines of Java UI code running native in browser at desktop speed
I suppose the plug-in/Applet approach is why it didn't fly - same reason Flash has gone away.

It's unfortunate Oracle hasn't adopted the approach of treating the browser as a target platform. TeaVM and CheerpJ have just a couple engineers working on this and they've done great things. A fully supported effort could really make this take off.

← PreviousPage 4 of 5Next →