<feed xmlns="http://www.w3.org/2005/Atom"> <id>https://ennerf.github.io/</id><title>Software for Robots</title><subtitle>Real-Time Control, Networking, Operating Systems, Languages</subtitle> <updated>2026-08-27T08:02:57-04:00</updated> <author> <name>Florian Enner</name> <uri>https://ennerf.github.io/</uri> </author><link rel="self" type="application/atom+xml" href="https://ennerf.github.io/feed.xml"/><link rel="alternate" type="text/html" hreflang="en" href="https://ennerf.github.io/"/> <generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator> <rights> © 2026 Florian Enner </rights> <icon>/assets/img/favicons/favicon.ico</icon> <logo>/assets/img/favicons/favicon-96x96.png</logo> <entry><title>Lessons learned using JavaFX and FXML</title><link href="https://ennerf.github.io/2022/05/28/Lessons-learned-using-JavaFX-and-FXML.html" rel="alternate" type="text/html" title="Lessons learned using JavaFX and FXML" /><published>2022-05-28T00:00:00-04:00</published> <updated>2022-05-28T00:00:00-04:00</updated> <id>https://ennerf.github.io/2022/05/28/Lessons-learned-using-JavaFX-and-FXML.html</id> <content type="text/html" src="https://ennerf.github.io/2022/05/28/Lessons-learned-using-JavaFX-and-FXML.html" /> <author> <name>Florian Enner</name> </author> <summary>I am personally a big proponent of JavaFX&amp;#8217;s combination of FXML + CSS + Java for GUI development. When used appropriately it results in a clean separation of concerns that allows designers and developers to collaborate together without stepping on each other&amp;#8217;s toes. However, there are some use cases that have non-obvious solutions, and self-discovered hacks often result in code th...</summary> </entry> <entry><title>JDK 15: A world beyond Nashorn</title><link href="https://ennerf.github.io/2021/03/07/JDK-15-A-world-beyond-Nashorn.html" rel="alternate" type="text/html" title="JDK 15: A world beyond Nashorn" /><published>2021-03-07T00:00:00-05:00</published> <updated>2021-03-07T00:00:00-05:00</updated> <id>https://ennerf.github.io/2021/03/07/JDK-15-A-world-beyond-Nashorn.html</id> <content type="text/html" src="https://ennerf.github.io/2021/03/07/JDK-15-A-world-beyond-Nashorn.html" /> <author> <name>Florian Enner</name> </author> <summary>Figure 1. A migrating Nashorn. Photo by Wolfgang Hasselmann Update: Nashorn was made available as a standalone dependency. Nashorn is a JavaScript engine that compiles JavaScript into bytecode that runs on the Java Virtual Machine (JVM). It was added in Java 8 and replaced the outdated Rhino engine ("Nashorn" is the German word for "Rhino"). One of its common use cases is to serve as ...</summary> </entry> <entry><title>Efficient Data Acquisition in MATLAB: Streaming HD Video in Real-Time</title><link href="https://ennerf.github.io/2017/10/14/Efficient-Data-Acquisition-in-MATLAB-Streaming-HD-Video-in-Real-Time.html" rel="alternate" type="text/html" title="Efficient Data Acquisition in MATLAB: Streaming HD Video in Real-Time" /><published>2017-10-14T00:00:00-04:00</published> <updated>2017-10-14T00:00:00-04:00</updated> <id>https://ennerf.github.io/2017/10/14/Efficient-Data-Acquisition-in-MATLAB-Streaming-HD-Video-in-Real-Time.html</id> <content type="text/html" src="https://ennerf.github.io/2017/10/14/Efficient-Data-Acquisition-in-MATLAB-Streaming-HD-Video-in-Real-Time.html" /> <author> <name>Florian Enner</name> </author> <summary>The acquisition and processing of a video stream can be very computationally expensive. Typical image processing applications split the work across multiple threads, one acquiring the images, and another one running the actual algorithms. In MATLAB we can get multi-threading by interfacing with other languages, but there is a significant cost associated with exchanging data across the resulting...</summary> </entry> <entry><title>Using MATLAB for hardware-in-the-loop prototyping #1 : Message Passing Systems</title><link href="https://ennerf.github.io/2017/06/25/Using-MATLAB-for-hardware-in-the-loop-prototyping-1-Message-Passing-Systems.html" rel="alternate" type="text/html" title="Using MATLAB for hardware-in-the-loop prototyping #1 : Message Passing Systems" /><published>2017-06-25T00:00:00-04:00</published> <updated>2017-06-25T00:00:00-04:00</updated> <id>https://ennerf.github.io/2017/06/25/Using-MATLAB-for-hardware-in-the-loop-prototyping-1-Message-Passing-Systems.html</id> <content type="text/html" src="https://ennerf.github.io/2017/06/25/Using-MATLAB-for-hardware-in-the-loop-prototyping-1-Message-Passing-Systems.html" /> <author> <name>Florian Enner</name> </author> <summary>MATLAB&amp;#169; is a programming language and environment designed for scientific computing. It is one of the best languages for developing robot control algorithms and is widely used in the research community. While it is often thought of as an offline programming language, there are several ways to interface with it to control robotic hardware 'in the loop'. As part of our own development we sur...</summary> </entry> <entry><title>Analyzing the viability of Ethernet and UDP for robot control</title><link href="https://ennerf.github.io/2016/11/23/Analyzing-the-viability-of-Ethernet-and-UDP-for-robot-control.html" rel="alternate" type="text/html" title="Analyzing the viability of Ethernet and UDP for robot control" /><published>2016-11-23T00:00:00-05:00</published> <updated>2016-11-23T00:00:00-05:00</updated> <id>https://ennerf.github.io/2016/11/23/Analyzing-the-viability-of-Ethernet-and-UDP-for-robot-control.html</id> <content type="text/html" src="https://ennerf.github.io/2016/11/23/Analyzing-the-viability-of-Ethernet-and-UDP-for-robot-control.html" /> <author> <name>Florian Enner</name> </author> <summary>Ethernet is the most pervasive communication standard in the world. However, it is often dismissed for robotics applications because of its presumed non-deterministic behavior. In this article, we show that in practice Ethernet can be made to be extremely deterministic and provide a flexible and reliable solution for robot communication. The network topologies and traffic patterns used to con...</summary> </entry> </feed>
