This document discusses using FXML for building desktop applications in Clojure. It explores different options for the controller in FXML, including regular maps, defrecord, gen-class, and deftype. It also mentions virtual DOM approaches. The document dives into how deftype and gen-class are implemented in Clojure using ASM and bytecode generation. It proposes macros like fxml and fxml-controller that could generate the necessary classes to support FXML in Clojure.
SpringOne Platform 2017
Ryan Baxter, Pivotal
You have heard and seen great things about Spring Cloud and you decide it is time to dive in and try it out yourself. You fire up your browser head to Google and land on the Spring Cloud homepage. Then it hits you, where do you begin? What do each of these projects do? Do you need to use all of them or can you be selective? The number of projects under the Spring Cloud umbrella has grown immensely over the past couple of years and if you are a newcomer to the Spring Cloud ecosystem it can be quite daunting to sift through the projects to find what you need. By the end of this talk you will leave with a solid understanding of the Spring Cloud projects, how to use them to build cloud native apps, and the confidence to get started!
Design patterns là một đề tài "khó nuốt" với đa số lập trình viên ở buổi đầu tìm hiểu. Lý do là vì design patterns được xây dựng trên những khái niệm trừu tượng cũng như phải tuân thủ các nguyên tắc lập trình hướng đối tượng.
Đến với TechTalk #32: SOLID & Design Patterns, các bạn sẽ được giới thiệu những nguyên tắc cần phải tuân thủ này và cách thức áp dụng những design patterns quen thuộc vào giải quyết các bài toán một các ngắn gọn, xúc tích và hiệu quả thông qua các ví dụ thực tế.
Speaker: Khôi Nguyễn - Senior Software Engineer @ KMS Technology
SpringOne Platform 2017
Ryan Baxter, Pivotal
You have heard and seen great things about Spring Cloud and you decide it is time to dive in and try it out yourself. You fire up your browser head to Google and land on the Spring Cloud homepage. Then it hits you, where do you begin? What do each of these projects do? Do you need to use all of them or can you be selective? The number of projects under the Spring Cloud umbrella has grown immensely over the past couple of years and if you are a newcomer to the Spring Cloud ecosystem it can be quite daunting to sift through the projects to find what you need. By the end of this talk you will leave with a solid understanding of the Spring Cloud projects, how to use them to build cloud native apps, and the confidence to get started!
Design patterns là một đề tài "khó nuốt" với đa số lập trình viên ở buổi đầu tìm hiểu. Lý do là vì design patterns được xây dựng trên những khái niệm trừu tượng cũng như phải tuân thủ các nguyên tắc lập trình hướng đối tượng.
Đến với TechTalk #32: SOLID & Design Patterns, các bạn sẽ được giới thiệu những nguyên tắc cần phải tuân thủ này và cách thức áp dụng những design patterns quen thuộc vào giải quyết các bài toán một các ngắn gọn, xúc tích và hiệu quả thông qua các ví dụ thực tế.
Speaker: Khôi Nguyễn - Senior Software Engineer @ KMS Technology
https://github.com/FinanceData/Life-is-short
(github 페이지: 데이터세트, 동영상)
https://fb.com/financedata/posts/2170185529937113
(페이스북 페이지: 주피터 노트북 및 동영상)
파이썬으로 도전하는 업무자동화와 RPA(로봇프로세스자동화)
* 엑셀 노가다를 파이썬으로 자동화 할 수 있는 방법들
* 데스크탑 자동화(단순 반복 업무 자동화)에 필요한 라이브러리들과 사용 예
* RPA (상용 솔루션)과 파이썬 (무료 오픈소스)의 장점과 단점
* 파이썬을 활용한 업무 자동화 구체적인 방법
Nicky Bloor - BaRMIe - Poking Java's Back Door - 44CON 2017Nicky Bloor
Slightly altered slides from my 44CON 2017 talk titled "BaRMIe - Poking Java's Back Door". The talk looks at the security of Java RMI and attacks against software using the Java RMI protocol, including a recently patched unauthenticated remote command execution vulnerability against Adobe ColdFusion (CVE-2017-11283 and CVE-2017-11284).
As the popularity of Git grows, questions around security and code quality are moving center stage. Learn why the combination of Git/Gerrit and TeamForge form the industry’s leading enterprise-grade solution to manage Git based development programs, both on-premises and in the cloud.
In this webinar, Johannes Nicolai will provide an overview of Git/Gerrit- and why enterprises choose to use the Git-TeamForge integration for unmatched security, scalability and compliance, as well as introduce and demonstrate the power of Gerrit 2.8 with TeamForge:
How you can ensure meeting regulatory and corporate compliance mandates with TeamForge’s tamper-proof audit trails.
How TeamForge provides 100% history protection for accidentally deleted branches and helps you meet the most stringent compliance standards.
How Git, Gerrit and Jenkins reduces the number of manual code reviews by automatically pre-validating builds via Jenkins.
How to graphically design your own review workflows using CollabNet’s Quality Gate Wizard for Gerrit
Create your React 18 / TS bundle using esbuildFabio Biondi
#esbuild is a fast javascript bundler that is 10-100x faster than webpack, rollup or parcel and it is used by tools like #ViteJS.
It supports features such as:
• ES6 and CommonJS modules
• Tree shaking of ES6 modules
• An API for JavaScript and Go
• TypeScript and JSX syntax
• Source maps
• Minification
• Plugins
• and more....
So I share a quick (and simplified) summary to create a bundle for a #React 18 / #TypeScript project.
JavascriptMVC: Another choice of web frameworkAlive Kuo
JavascriptMVC is another client side web MVC framework based on jQuery. It has totally solution to build a web application. This slide will introduce basic features of JavascriptMVC3.2
Joomla architecture - what happened behind the scenes.
Did you always wanted to know what happened behind the scenes of Joomla code? Come and find what triggered down to up with real life scenarios, like MVC architecture, Plugin design pattern, how getDBO bring me the database instance and much more.
https://github.com/FinanceData/Life-is-short
(github 페이지: 데이터세트, 동영상)
https://fb.com/financedata/posts/2170185529937113
(페이스북 페이지: 주피터 노트북 및 동영상)
파이썬으로 도전하는 업무자동화와 RPA(로봇프로세스자동화)
* 엑셀 노가다를 파이썬으로 자동화 할 수 있는 방법들
* 데스크탑 자동화(단순 반복 업무 자동화)에 필요한 라이브러리들과 사용 예
* RPA (상용 솔루션)과 파이썬 (무료 오픈소스)의 장점과 단점
* 파이썬을 활용한 업무 자동화 구체적인 방법
Nicky Bloor - BaRMIe - Poking Java's Back Door - 44CON 2017Nicky Bloor
Slightly altered slides from my 44CON 2017 talk titled "BaRMIe - Poking Java's Back Door". The talk looks at the security of Java RMI and attacks against software using the Java RMI protocol, including a recently patched unauthenticated remote command execution vulnerability against Adobe ColdFusion (CVE-2017-11283 and CVE-2017-11284).
As the popularity of Git grows, questions around security and code quality are moving center stage. Learn why the combination of Git/Gerrit and TeamForge form the industry’s leading enterprise-grade solution to manage Git based development programs, both on-premises and in the cloud.
In this webinar, Johannes Nicolai will provide an overview of Git/Gerrit- and why enterprises choose to use the Git-TeamForge integration for unmatched security, scalability and compliance, as well as introduce and demonstrate the power of Gerrit 2.8 with TeamForge:
How you can ensure meeting regulatory and corporate compliance mandates with TeamForge’s tamper-proof audit trails.
How TeamForge provides 100% history protection for accidentally deleted branches and helps you meet the most stringent compliance standards.
How Git, Gerrit and Jenkins reduces the number of manual code reviews by automatically pre-validating builds via Jenkins.
How to graphically design your own review workflows using CollabNet’s Quality Gate Wizard for Gerrit
Create your React 18 / TS bundle using esbuildFabio Biondi
#esbuild is a fast javascript bundler that is 10-100x faster than webpack, rollup or parcel and it is used by tools like #ViteJS.
It supports features such as:
• ES6 and CommonJS modules
• Tree shaking of ES6 modules
• An API for JavaScript and Go
• TypeScript and JSX syntax
• Source maps
• Minification
• Plugins
• and more....
So I share a quick (and simplified) summary to create a bundle for a #React 18 / #TypeScript project.
JavascriptMVC: Another choice of web frameworkAlive Kuo
JavascriptMVC is another client side web MVC framework based on jQuery. It has totally solution to build a web application. This slide will introduce basic features of JavascriptMVC3.2
Joomla architecture - what happened behind the scenes.
Did you always wanted to know what happened behind the scenes of Joomla code? Come and find what triggered down to up with real life scenarios, like MVC architecture, Plugin design pattern, how getDBO bring me the database instance and much more.
Java 9/10/11 - What's new and why you should upgradeSimone Bordet
Java 11 is the new Java release and, differently from Java 9 and Java 10, it is a "Long Term Support" release - we will see what that means exactly.
This presentation details the main new features of Java 11, starting from licensing (where there are important changes - in particular the Oracle JDK may only be used in production if you have a support contract with Oracle), to arrive to the new Java 11 features, with a quick peek back at what was introduced in Java 9 and Java 10.
The main Java 11 arguments are:
• Two new garbage collectors: EpsilonGC e ZGC
• Support for TLS 1.3
• Possibility to execute a single source file
• New HTTP client based on the Flow API
• Removal of modules (CORBA, JTA, @Inject, ecc.)
• Bytecode news (nest-mates, dynamic constants)
Webbisauna - ClojureScript for Javascript DevelopersJuho Teperi
Web development is nowadays dominated by many compile to JS languages. ClojureScript is one of such languages. This talk will give overview of ClojureScript language and its ecosystem, and attempts to answer following questions:
- Why to use ClojureScript?
- Is ClojureScript production ready?
- How is the build tooling?
Dart is a new language for the web, enabling you to write JavaScript on a secure and manageable way. No need to worry about "JavaScript: The bad parts".
This presentation concentrates on the developer experience converting from the Java based GWT to Dart.
Java Colombo Meetup on 22nd March 2018
Speaker: Isuru Perera, Technical Lead at WSO2
Flame graphs are a visualization of profiled software and it was developed by Brendan Gregg, an industry expert in computing performance and cloud computing. Finding out why CPUs are busy is an important task when troubleshooting performance issues and we often use a sampling profiler to see which code-paths are hot. However, a profiler will dump a lot of data with thousands of lines and it is not easy to go through all data. With Flame Graphs, we can identify the most frequent code-paths quickly and accurately. Basically, a Flame Graph can simply visualize the stack traces output of a sampling profiler.
There are many ways to profile Java applications and Java Flight Recorder (JFR) is a really good tool to profile a Java application with a very low overhead. I will show how we can generate a Flame Graph from a Java Flight Recording using the JFR Flame Graph tool (https://github.com/chrishantha/jfr-flame-graph) I developed.
Since Flame Graphs can visualize any stack profiles, we can also use a Linux system profiler (perf) and create a Java Mixed-Mode Flame Graph, which will show how much CPU time is spent in Java methods, system libraries and the kernel. We can troubleshoot performance issues related to high CPU usage easily with a flame graph showing profile information from both system code paths and Java code paths. I will discuss how we can use the -XX:+PreserveFramePointer option in JDK and the perf system profiler to generate a Java Mixed-mode flame graph.
HelsinkiJS - Clojurescript for Javascript DevelopersJuho Teperi
Web development is nowadays dominated by many compile to JS languages. ClojureScript is one of such languages. This talk will give overview of ClojureScript ecosystem.
Making sense of the front-end, for PHP developersLewiz
The complexity of frontend web development has increased measurably. Gone are the days of jQuery. New frameworks like React and Vue and tools like Webpack are the new deal.
In this talk, we will try to make sense of the current state of front-end development and how it changes how we write backend code. More specifically, we will see how Symfony and Laravel help us in that regard.
Do you want to upgrade your GWT application or write a sizable web application? Dart is the efficient choice.
As a brief example, check out http://lightningdart.com
This presentation is updated October 2015 for Silicon Valley Code Camp
PyConUK2013 - Validated documents on MongoDB with MingAlessandro Molina
Ming is a SQLAlchemy-inspired object-document mapper (ODM) for MongoDB developed at SourceForge which is also used by the TurboGears2 web framework to provide mongodb support.
After a short introduction to the basic Ming layer we will cover the Ming Object Document Mapper layer to show how to take advantage of its Unit Of Work to avoid performing incomplete changes and achieve relations between collections.
The last part of the talk will show how to use Ming to perform lazy migration of data when your schema changes and how to drop below the ODM layer to achieve maximum speed.
BKK16-302: Android Optimizing Compiler: New Member Assimilation GuideLinaro
A tour of essential topics for working on the Android Optimizing Compiler, with a special emphasis on helping new engineers integrate and hit the ground running. Learn how to work on intrinsics, instruction simplification, platform specific optimizations, how to submit good patches, write Checker tests, analyse IR, take boot.oat measurements, and debug performance and execution issues with Streamline and GDB.
Clojure development environment
The 3rd Lisp Seminar in Korea
제 3회 리스프 세미나 발표자료.
ppt, pdf, 소스코드, 세미나용 셋팅 자료는 다음 dropbox링크를 열어두었습니다.
https://www.dropbox.com/sh/bt2ij5ucrr8vgj5/oH7seofBKk
상기 링크는 언제든지 지워질 수 있습니다.
저의 vim설정과, emacs설정은 다음과 같습니다.
- https://github.com/netpyoung/netpyoung.vim
- https://github.com/netpyoung/netpyoung.emacs.d
Check out the webinar slides to learn more about how XfilesPro transforms Salesforce document management by leveraging its world-class applications. For more details, please connect with sales@xfilespro.com
If you want to watch the on-demand webinar, please click here: https://www.xfilespro.com/webinars/salesforce-document-management-2-0-smarter-faster-better/
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Globus
The Earth System Grid Federation (ESGF) is a global network of data servers that archives and distributes the planet’s largest collection of Earth system model output for thousands of climate and environmental scientists worldwide. Many of these petabyte-scale data archives are located in proximity to large high-performance computing (HPC) or cloud computing resources, but the primary workflow for data users consists of transferring data, and applying computations on a different system. As a part of the ESGF 2.0 US project (funded by the United States Department of Energy Office of Science), we developed pre-defined data workflows, which can be run on-demand, capable of applying many data reduction and data analysis to the large ESGF data archives, transferring only the resultant analysis (ex. visualizations, smaller data files). In this talk, we will showcase a few of these workflows, highlighting how Globus Flows can be used for petabyte-scale climate analysis.
Enhancing Research Orchestration Capabilities at ORNL.pdfGlobus
Cross-facility research orchestration comes with ever-changing constraints regarding the availability and suitability of various compute and data resources. In short, a flexible data and processing fabric is needed to enable the dynamic redirection of data and compute tasks throughout the lifecycle of an experiment. In this talk, we illustrate how we easily leveraged Globus services to instrument the ACE research testbed at the Oak Ridge Leadership Computing Facility with flexible data and task orchestration capabilities.
Large Language Models and the End of ProgrammingMatt Welsh
Talk by Matt Welsh at Craft Conference 2024 on the impact that Large Language Models will have on the future of software development. In this talk, I discuss the ways in which LLMs will impact the software industry, from replacing human software developers with AI, to replacing conventional software with models that perform reasoning, computation, and problem-solving.
Globus Connect Server Deep Dive - GlobusWorld 2024Globus
We explore the Globus Connect Server (GCS) architecture and experiment with advanced configuration options and use cases. This content is targeted at system administrators who are familiar with GCS and currently operate—or are planning to operate—broader deployments at their institution.
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppGoogle
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
👉👉 Click Here To Get More Info 👇👇
https://sumonreview.com/ai-fusion-buddy-review
AI Fusion Buddy Review: Key Features
✅Create Stunning AI App Suite Fully Powered By Google's Latest AI technology, Gemini
✅Use Gemini to Build high-converting Converting Sales Video Scripts, ad copies, Trending Articles, blogs, etc.100% unique!
✅Create Ultra-HD graphics with a single keyword or phrase that commands 10x eyeballs!
✅Fully automated AI articles bulk generation!
✅Auto-post or schedule stunning AI content across all your accounts at once—WordPress, Facebook, LinkedIn, Blogger, and more.
✅With one keyword or URL, generate complete websites, landing pages, and more…
✅Automatically create & sell AI content, graphics, websites, landing pages, & all that gets you paid non-stop 24*7.
✅Pre-built High-Converting 100+ website Templates and 2000+ graphic templates logos, banners, and thumbnail images in Trending Niches.
✅Say goodbye to wasting time logging into multiple Chat GPT & AI Apps once & for all!
✅Save over $5000 per year and kick out dependency on third parties completely!
✅Brand New App: Not available anywhere else!
✅ Beginner-friendly!
✅ZERO upfront cost or any extra expenses
✅Risk-Free: 30-Day Money-Back Guarantee!
✅Commercial License included!
See My Other Reviews Article:
(1) AI Genie Review: https://sumonreview.com/ai-genie-review
(2) SocioWave Review: https://sumonreview.com/sociowave-review
(3) AI Partner & Profit Review: https://sumonreview.com/ai-partner-profit-review
(4) AI Ebook Suite Review: https://sumonreview.com/ai-ebook-suite-review
#AIFusionBuddyReview,
#AIFusionBuddyFeatures,
#AIFusionBuddyPricing,
#AIFusionBuddyProsandCons,
#AIFusionBuddyTutorial,
#AIFusionBuddyUserExperience
#AIFusionBuddyforBeginners,
#AIFusionBuddyBenefits,
#AIFusionBuddyComparison,
#AIFusionBuddyInstallation,
#AIFusionBuddyRefundPolicy,
#AIFusionBuddyDemo,
#AIFusionBuddyMaintenanceFees,
#AIFusionBuddyNewbieFriendly,
#WhatIsAIFusionBuddy?,
#HowDoesAIFusionBuddyWorks
We describe the deployment and use of Globus Compute for remote computation. This content is aimed at researchers who wish to compute on remote resources using a unified programming interface, as well as system administrators who will deploy and operate Globus Compute services on their research computing infrastructure.
GraphSummit Paris - The art of the possible with Graph TechnologyNeo4j
Sudhir Hasbe, Chief Product Officer, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
Utilocate offers a comprehensive solution for locate ticket management by automating and streamlining the entire process. By integrating with Geospatial Information Systems (GIS), it provides accurate mapping and visualization of utility locations, enhancing decision-making and reducing the risk of errors. The system's advanced data analytics tools help identify trends, predict potential issues, and optimize resource allocation, making the locate ticket management process smarter and more efficient. Additionally, automated ticket management ensures consistency and reduces human error, while real-time notifications keep all relevant personnel informed and ready to respond promptly.
The system's ability to streamline workflows and automate ticket routing significantly reduces the time taken to process each ticket, making the process faster and more efficient. Mobile access allows field technicians to update ticket information on the go, ensuring that the latest information is always available and accelerating the locate process. Overall, Utilocate not only enhances the efficiency and accuracy of locate ticket management but also improves safety by minimizing the risk of utility damage through precise and timely locates.
Quarkus Hidden and Forbidden ExtensionsMax Andersen
Quarkus has a vast extension ecosystem and is known for its subsonic and subatomic feature set. Some of these features are not as well known, and some extensions are less talked about, but that does not make them less interesting - quite the opposite.
Come join this talk to see some tips and tricks for using Quarkus and some of the lesser known features, extensions and development techniques.
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisGlobus
JASMIN is the UK’s high-performance data analysis platform for environmental science, operated by STFC on behalf of the UK Natural Environment Research Council (NERC). In addition to its role in hosting the CEDA Archive (NERC’s long-term repository for climate, atmospheric science & Earth observation data in the UK), JASMIN provides a collaborative platform to a community of around 2,000 scientists in the UK and beyond, providing nearly 400 environmental science projects with working space, compute resources and tools to facilitate their work. High-performance data transfer into and out of JASMIN has always been a key feature, with many scientists bringing model outputs from supercomputers elsewhere in the UK, to analyse against observational or other model data in the CEDA Archive. A growing number of JASMIN users are now realising the benefits of using the Globus service to provide reliable and efficient data movement and other tasks in this and other contexts. Further use cases involve long-distance (intercontinental) transfers to and from JASMIN, and collecting results from a mobile atmospheric radar system, pushing data to JASMIN via a lightweight Globus deployment. We provide details of how Globus fits into our current infrastructure, our experience of the recent migration to GCSv5.4, and of our interest in developing use of the wider ecosystem of Globus services for the benefit of our user community.
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteGoogle
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
👉👉 Click Here To Get More Info 👇👇
https://sumonreview.com/ai-pilot-review/
AI Pilot Review: Key Features
✅Deploy AI expert bots in Any Niche With Just A Click
✅With one keyword, generate complete funnels, websites, landing pages, and more.
✅More than 85 AI features are included in the AI pilot.
✅No setup or configuration; use your voice (like Siri) to do whatever you want.
✅You Can Use AI Pilot To Create your version of AI Pilot And Charge People For It…
✅ZERO Manual Work With AI Pilot. Never write, Design, Or Code Again.
✅ZERO Limits On Features Or Usages
✅Use Our AI-powered Traffic To Get Hundreds Of Customers
✅No Complicated Setup: Get Up And Running In 2 Minutes
✅99.99% Up-Time Guaranteed
✅30 Days Money-Back Guarantee
✅ZERO Upfront Cost
See My Other Reviews Article:
(1) TubeTrivia AI Review: https://sumonreview.com/tubetrivia-ai-review
(2) SocioWave Review: https://sumonreview.com/sociowave-review
(3) AI Partner & Profit Review: https://sumonreview.com/ai-partner-profit-review
(4) AI Ebook Suite Review: https://sumonreview.com/ai-ebook-suite-review
First Steps with Globus Compute Multi-User EndpointsGlobus
In this presentation we will share our experiences around getting started with the Globus Compute multi-user endpoint. Working with the Pharmacology group at the University of Auckland, we have previously written an application using Globus Compute that can offload computationally expensive steps in the researcher's workflows, which they wish to manage from their familiar Windows environments, onto the NeSI (New Zealand eScience Infrastructure) cluster. Some of the challenges we have encountered were that each researcher had to set up and manage their own single-user globus compute endpoint and that the workloads had varying resource requirements (CPUs, memory and wall time) between different runs. We hope that the multi-user endpoint will help to address these challenges and share an update on our progress here.
Software Engineering, Software Consulting, Tech Lead, Spring Boot, Spring Cloud, Spring Core, Spring JDBC, Spring Transaction, Spring MVC, OpenShift Cloud Platform, Kafka, REST, SOAP, LLD & HLD.
Enterprise Resource Planning System includes various modules that reduce any business's workload. Additionally, it organizes the workflows, which drives towards enhancing productivity. Here are a detailed explanation of the ERP modules. Going through the points will help you understand how the software is changing the work dynamics.
To know more details here: https://blogs.nyggs.com/nyggs/enterprise-resource-planning-erp-system-modules/
May Marketo Masterclass, London MUG May 22 2024.pdfAdele Miller
Can't make Adobe Summit in Vegas? No sweat because the EMEA Marketo Engage Champions are coming to London to share their Summit sessions, insights and more!
This is a MUG with a twist you don't want to miss.
May Marketo Masterclass, London MUG May 22 2024.pdf
Using FXML on Clojure
1. Using FXML on Clojure
(fxml helloworld)
netpyoung@gmail.com
July 2018
#1
2. Do you have any Questions?
- If you have questions, during presentation.
- message on slack #clojure-sg with page #numer.
- https://clojurians.slack.com/messages/clojure-sg
- ex) #10 - what is blabla?
- I will answer after presentation.(for keep time)
- so, I can polish this slide from your feedbacks.
#2
3. ● EunPyoung Kim
● KOR -> JPN -> SGP-> ???
● Game Client Programmer. (since 2012.04 ~ )
● I like Lisp (not only clojure)
● I’m Lazy
○ because of that I like automatation (code generate also)
○ I like macro (but don't abuse)
● I like Emacs
○ Cursive
○ (Neo)Vim….?
● https://netpyoung.github.io/
#3
4. What I want & What I did.
● I want editor for future when I making game.
○ Cross platform desktop application
○ GUI designer.
● I didn’t make library.
● I just share other’s approach and my experience.
#4
5. Wait but why Clojure? (java,scala,kotlin...)
● I'm Game Client Programmer. I prefer typed language rather than dynamic.
● No Clojure? No Problem to me.
● But I just feel fun when I play with REPL.
● I love Lisp not only Clojure.
○ They Also love(?) Lisp.
■ https://www.slideshare.net/naughty_dog/statebased-scripting-in-uncharted-2-among-
thieves
■ https://www.youtube.com/watch?v=Hbexh-Jutvs
● I also like person who love Lisp, they's way of thinking is so flexible and
amazing, like language itself.
● I just choose Clojure compare each other Lisp directs.
#5
6. Desktop Application
● WPF
○ C#(ClojureCRL)
○ Windows only (but I like XAML. I hope it will be ported on dotnet core)
● JavaFX
○ Java(Clojure)
○ Cross Platform
○ SceneBuilder - GUI Editor
● Electron
○ Javascript(Clojurescript)
○ Cross Platform
○ gui editor??
● qt, wxwidgets, ...
#6
7. JavaFX
● Sun announces JavaOne 2007
● Open-sourced 2011
○ http://openjdk.java.net/projects/openjfx/
● August 2018
○ JDK 11, Oracle is making JavaFX easier to adopt by making the technology available as a
separate download, decoupled from the JDK.
○ https://blogs.oracle.com/java-platform-group/the-future-of-javafx-and-other-java-client-
roadmap-updates
● I’m not sure JavaFX will be popular or not.
○ If is it possible using WPF on osx - dotnet core, I will choose ClojureCLR.
#7
13. I Need Controller
but there are some issue.
● controller - @FXML attribute binding
○ binding Method
○ binding Field
○ binding initialize
● REPL driven developing
○ need to solving AOT problem
#13
25. It’s works
● But……. It looks so weird.
● definterface only used one per deftype
● Code structure also Dirty
○ we can avoid this problem using macro… but… Is this really valuable??
#25
26. What’s the Next
● regular map
● defrecord
● rerify
● proxy
● gen-class
● deftype
#26
27. FTW! Virtual Dom
● regular map
● defrecord
● rerify
● proxy
● gen-class
● deftype
● Virtual DOM
#27
Virtual DOM
31. Wait…. I want to use FXML
● I’m tired to write UI code……
● I want that take over this task to UI designer.
#31
32. ● regular map
● defrecord
● rerify
● proxy
● gen-class
● deftype
● Virtual DOM
● Custom Type
Controller
#32
Custom Type
33. How to implement gen-class in Clojure.
https://github.com/clojure/clojure/blob/master/src/clj/clojure/genclass.clj
(defmacro gen-class
(generate-class options-map)
(defn- generate-class [options-map]
(let [cv (clojure.lang.Compiler/classWriter)
#33
34. How to implement deftype in clojure
https://github.com/clojure/clojure/blob/master/src/clj/clojure/core_deftype.clj
(defmacro deftype
(emit-deftype*
(defn- emit-deftype*
`(deftype*
#34
35. How to implement deftype in clojure
https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/Compiler.java
static final Symbol DEFTYPE = Symbol.intern("deftype*");
ClassWriter cw
ClassVisiter cv = cw;
#35
37. ASM
● https://asm.ow2.io/
● ASM is an all purpose Java bytecode manipulation and analysis framework. It
can be used to modify existing classes or to dynamically generate classes,
directly in binary form.
● It can be used to modify existing classes or to dynamically generate classes,
directly in binary form
● ref:
○ https://www.infoq.com/presentations/asm-cglib-javassist-2
○ https://www.slideshare.net/ashleypuls/bytecode-manipulation
#37
38. bytecode
● JVM Bytecode for Dummies (and the Rest of Us Too)
○ https://www.youtube.com/watch?v=rPyqB1l4gko
#38