Posts

Showing posts with the label Java

[Event] JManc 2026

Image
Yesterday I was so delighted to attend JManc 2026, hosted at AutoTrader's fantastic new office at No. 3 Circle Square . I started the day with breakfast on the rooftop alongside Lorenzo and Bruce. We had great conversations, enjoyed the beautiful views over Manchester, and it was the perfect way to begin an inspiring day. Keynote The event opened with an inspiring keynote by Clare Sudbery , " The Power of Craft : Staying in the Driver's Seat of AI-Assisted Development" She focused on how software engineers should work with AI while continuing to apply professional judgement and craftsmanship. One statement particularly resonated with me: AI has a planetary brain, but it lacks real-world wisdom. LLMs have effectively absorbed an enormous amount of human knowledge. They can perform many tasks remarkably well, especially when given the right prompts. However, real wisdom comes from experience and context, something today's AI still cannot truly possess or connect to...

S3Mate

Image
When working with AWS S3, I often receive S3 URLs that are not publicly accessible. These links can't be opened directly in a web browser, and they come in many different formats. For example: https://bucket.s3.amazonaws.com/key or https://s3.region.amazonaws.com/bucket/key Each time, I had to manually: 1) Figure out which format it was. 2) Extract the bucket and key. 3) Open the AWS Console. 4) Navigate to the correct object. This routine was repetitive and time-consuming. So I built S3Mate . It's a small desktop gadget that lets me paste any S3 URL, automatically resolves the bucket and key, and quickly shows or operates on the object without switching tools. The application detail, source code and releases can be found at the repository of the gadget at  https://github.com/tekichan/s3mate Even though S3Mate is a small project, I picked up a few useful lessons along the way. 1. Building Native Desktop Apps with jpackage I learned how to use jpackage to turn a Java applicat...

[Event] JManc 2025

Image
I had the opportunity to attend JManc again this year—and once more, it was fabulous. The sessions were organic, deeply technical, and full of insights shared by developers across different domains. Here's my wrap-up from the day, highlighting a few memorable sessions and conversations. 1 Tony Wilson, Manchester 30 Years of Java — Jim Gough’s Retrospective Jim Gough delivered a fantastic keynote on the evolution of Java over three decades. As a Java Champion, his perspective mixed historical insight with a touch of humor and lived experience. Here are some of the milestones he covered: Applets & Early UI: Java’s original fame came from applets—tiny applications that ran inside web browsers.  AWT & Swing: Early GUI development in Java involved the AWT toolkit, later replaced by the more versatile Swing. JavaFX: The modern Java UI framework that succeeded Swing. It was eventually removed from the JDK and spun out as an open-source project. While less commonly used in modern ...

[Event] JManc (28th June 2024)

Image
My Sharing about JavaFX Attending JManc , an unconference organised by Manchester Java Community and hosted at Auto Trader 's offices, was an exciting experience. This unique event demonstrating the essence of participant-driven learning and collaboration, set the stage for a series of engaging and enlightening sessions. Propose and vote for topics In the morning, we proposed topics using sticky notes. Afterward, we voted on these topics with dots, shaping the day's agenda based on collective interest. This process itself was a testament to the community's diverse interests and expertise. Breakfast Keynote by Helen Scott Keynote by Helen Scott The unconference kicked off with a keynote by Helen Scott from JetBrains . Helen's talk centered on AI, a topic so crucial and timely that, as she humorously noted, audience would have thrown her out of the window if she did not speak of AI. Her insights into AI's impact on development and the future of programming set a tho...

Stable Diffusion User Interface for Java

Image
Happy to share my recently developed GUI application built entirely in Java! The app, called SDUI4J , serves as an intuitive platform for Text-To-Image and Image-To-Image generation, seamlessly integrated with Stable Diffusion APIs .  Using JavaFX along with FXML , I've crafted a modern and structured GUI, ensuring a user-friendly experience while tapping into Java's full potential in the realm of Generative AI. I'm passionate about discovering Java's capabilities in the field of AI, and this project is a testament to that. I'm excited to continue exploring the convergence of Java and AI. If you're interested in learning more about this project or exploring potential collaborations, feel free to reach out. Let's drive Java forward in Generative AI together! 

[Event] Live Coding: Functional Refactoring in Java

Image
Just experienced a fantastic moment at the deep-dive live coding session hosted by Matias Salerno at Auto Trader UK this evening. We were watching the live transformation of imperative legacy Java code into a concise and declarative Functional Programming style. Another interesting thing is how participants with background of JS and Python grasped more OOP concepts in Java during the session.  Matias Salerno (right) Kudos to Manchester Java Community for organising such a hands-on session, and not to mention, the delicious refreshments!

Event: Developer Productivity Engineering: What's in it for me?

Image
Manchester Java Community hosted another great session in Thoughtworks . The speaker is Trisha Gee , co-author of the renowned book Head First Java .  The speaker pointed out that the productivity of developers did not mainly come from individual developer themselves but from the organisation which offers productive environments or not. The factor includes work space size, quietness, privateness, any diversion or needless interruption. On technology side, productivity can be improved by consistency and reliability of builds. Very fast feedback can improve productivity and quality, thus increase revenue, reduce cost and improve brand. References: DEVELOPER PRODUCTIVITY ENGINEERING: WHAT’S IN IT FOR ME? The 2019 Tidelift managed open source survey results Peopleware: Productive Projects and Teams Software Productivity   The Goal: A Process of Ongoing Improvement Improve the Performance of Gradle Builds CI fanout Netflix Pursues Soft DevEx Goals with Hard DevProd Metrics using Te...

Event: Be a better Java developer, learn faster and get more results!

Image
I joined a meetup brought by Manchester Java Community at Roku 's office. The topic is  Be a better Java developer, learn faster and get more results! The speech started with the dynamic trios: Fire your neurons: learn by doing Force to practise Frequent action The captivating speaker also shared back stories of recruitment and his own secret of Reputation Formula, i.e., Career Reputation = (Focus * Visibility * Action * Skill [XP] * Giver * Responsibility * Consistency) / ((Me-me-me) * Lies^2 * Difficult) In Q&A session, we delved into burning questions like the future of AI in developer jobs and whether Java will be the next COBOL.  Thank you very much to  Bruno Souza for his fascinating speech and inspirational career advice.

Event: Comparing Native Java REST API Frameworks with Matt Raible

Image
Manchester Java Community hosted a meetup with a fantastic speaker Matt Raible in Infinity Works 's office. Matt compared the startup performance and memory usage of Spring Boot , Micronaut , Quarkus and Helidon frameworks. He built a REST API application secured by OAuth 2.0 and ran the application in Docker with the four frameworks respectively. His slides and related resources can be found at Comparing Native Java REST API Frameworks - Manchester JUG 2022 . Here is my thought after the talk: Java is still hugely popular and widely used ( Yay! ). The community should contribute to the language to encourage more younger generation to adopt it. Use SDKMAN to manage multiple JDK in a local computer Use HTTPie which is better than cURL for testing API Test OpenID Connect requests and debug responses with OpenID Connect debugger Build optimized Docker images for your Java applications with Jib Compare with startup time which does matter for Serverless Tak...

Unique Random Numbers

Thanking Java's stream feature, it is easy to generate a list of unique random numbers. For example, we want to pick up 6 lucky numbers for Lotto which ranges from 1 to 59. new Random().ints(1, 59+1).distinct().limit(6).sorted().boxed().collect(Collectors.toList());

J Forum

I joined an online conference called J Forum which explored the current state of Java ecosystem, ahead of this September's release of Java 19. Here are some takeaways: Garbage Collector Ergonomics . There are several GC selections for various situations. Here are the recommendations: Serial: single core, smal heaps Parallel: multi-core small heaps; batch jobs with any heap size G1: responsive in medium to large heaps (request-response/DB interactions); only when processors 2+ and memory 1728MB+ Z: responsive in medium to large heaps (request-response/DB interactions); JDK 17+; Pause < 1ms Shenandoah: responsive in medium to large heaps (request-response/DB interactions); JDK 17+; Pause <10ms GC Tuning does not only rely on setting heap size ( -Xmx for well-sized workloads,  -XX:MaxRAMPercentage for workloads to be scaled along container memory limits, -XX:ActiveProcessorCount ), but also understanding the workload. You should select appropriate GC and have enough...

YFinance4J and Java 17 New Features

Java 17 as LTS has been released since Sep 2021 while Java 8 remains widely used. I have prepared a Java library for Yahoo! Finance called YFinance4J to demonstrate some new features after Java 8. Hopefully the new features may tempt you to switch.

Event: Deploy to the cloud with Github Actions

Image
Manchester Java Community hosted an event in a dog friendly office of Kin + Carta . We learnt about digital transformation experience as well as Brian Benz live coding with Github and Azure new features.  Digital Transformation experience is about to transform an enterprise to agilely adapt the digital technology, such as API Gateway and Cloud Routing, to bring better user experience. Thanking the cloud advocate Brian, he brought us Octoverse Report about better performance and well being for developers. He also showed us a fun feature of Github Co-pilot as an AI pair programmer as well as more practical features in Github: Github Codespaces and Github-hosted runners . Certainly the key topic Brian demonstrated is Feature Filters in Azure App. This new feature is helpful for A/B Testing and Blue-Green Deployment. I was feeling chilled when I had a chat with participants in person. We shared our struggles in WFH and our daily coding works.

Effective Java

Image
Effective Java is one of must-read books for every Java programmer. Certainly this book does not introduce Java syntax, it does not instruct what Java libraries or frameworks are popular. Instead it explains best practices of Java programming in detail. This book makes you how to code in Java like an expert. This book covers 11 topics as the following: Creating and Destroying Objects Methods Common to All Objects Classes and Interfaces Generics Enums and Annotations Lambda and Streams Methods General Programming Exceptions Concurrency Serialization The first three chapters talks about how to start Java code designs. Instead of constructors, you should consider other methods like factory and builder. Which and how you should implement common methods like toString, equals, hashCode. Some rules are actually parts of Object-Oriented Design principles. The next three chapters involves some key usages of Java: Generics, primitive types, auto-unboxing and Collections are commonly used and yo...

Java and I

Along the release of Java 18, dev.java published an article about Java Platform Revolution . Truly Java 8 is still one of the most popular and widely used Java version. It is not only because of the great features the article mentioned, but also the new commercial scheme has been introduced since Java 8. Anyway, Java 8 is an unforgetable milestone of Java history. Another unforgettable Java version is, in my opinion, 1.4, which came with many features, such as Regular Expression, Cryptography, Logging, Non-blocking I/O, XML, etc, to modernise the programming language. I made my first application - Secure Chatbox Server-Client in Java twenty years ago. I posted a few articles to Tech Republic for Java 1.4. Running a Java application was a nightmare at that moment. I remember that starting an Oracle application built in Java allowed me to take a nap. Running a Java applet could use up memory of your computer. It has taken a long time to rebuild its image. Nowadays Java has been wi...

Happy Programmers Day

public class HappyProgrammersDay { public static void main(String[] args) { System.out.println("Today is 12 Sep 2020. Happy Programmers' Day."); } }

10 OOP Design Principles used in Stock Manager

Image
Inspired by the article "10 OOP Design Principles Every Programmer Should Know" which was written by @javinpaul, I built this project repository to implement the top Object Oriented Design principles in Java.  The top Object Oriented Design principles in Java, which are: Don't Repeat Yourself ( DRY ) Encapsulation S  ingle Responsibility Principle ( SRP ) O  pen Close Design Principle L  iskov Substitution Principle ( LSP ) I  nterface Segregation Principle ( ISP ) D  ependency Injection Favor Composition over Inheritance Programming for Interface not Implementation Delegation Principle The implementation is about Stock Price Quote which sounds like interesting and practical.

Mark Six Analyst 2

Image
Mark Six Analyst version 1 was released one year and a half ago. And the version 2 is released today. You can download it at the same website: http://sourceforge.net/projects/marksixanalyst/ Source: http://sourceforge.net/projects/marksixanalyst/files/src/marksixanalyst2-web.zip/download The version 2 does not change too much on basic functions, i.e. Lottery Record Management and Analysis & Prediction. However, the whole architecture is changed at all. First, the version 1 is a standalone application while the version 2 is a web-based application. I went to the totally different architecture design because of the efficiency of web-based application development. In term of User Interface, you can freely place UI components and define their behaviors in Swing but it is too free, although NetBeans may help you build a UI quickly, you still have to spend a lot of times to move and click your mouse. On the other hand, web-based applications are under web framework, that is HTML output....

World Clock Application

I have created a simple Java Swing application called World Clock in SourceForge.net . You can download the application at https://sourceforge.net/projects/worldclockapp/ By the simple application, users can check the foreign date/time at once without calculating by brain challengingly.

Mark Six Analyst

Open Source in the world of software is amazing. Developers share and distribute source codes with each other. SourceForge is one of the well-known platforms. I have registered my first Open Source project in SourceForge. The project is called Mark Six Analyst at https://sourceforge.net/projects/marksixanalyst/ . It is a simple tool to forecast the result of Hong Kong lottery or so-called Mark Six by various statistics methods. For the success of the project, I would like to thank Java, JavaDB (Apache Derby), Java Swing, Java Persistence API, TopLink, Hibernate Entity Manager, NetBeans and CsvReader. Because of them, developing a software application becomes rapidly quicker and the developed application becomes more stable and much easily maintained. Especially for Java Persistence API or called JPA, developers are less annoyed to handle entity EJBs and Object-Relational Mapping. It is helpful for developing an application with a database of complicated entity relationships. On the ot...