00:00:14.440
Hello everyone, I am Andy Maleh, a senior consultant. However, I usually consider myself more of a software craftsman.
00:00:21.140
How many of you here consider yourselves craftsmen? Show of hands, please.
00:00:29.690
Okay, it seems like quite a few. It appears that many people have embraced the idea of craftsmanship.
00:00:36.739
In my opinion, software craftsmanship is just an idea where people are devoted to learning and improving their skills.
00:00:41.930
We gain a lot of our knowledge and experience on the job every day, rather than just formal education.
00:00:49.070
While I do have two degrees from universities, it’s clear that real learning happens through practice.
00:00:55.220
So, today I want to talk about whatever happened to desktop development in Ruby.
00:01:06.170
I would like to see how many people here are currently doing desktop development.
00:01:14.450
It’s somewhat surprising, attending an event like this which is not strictly a Rails conference.
00:01:21.200
We’re all aware that the industry has shifted significantly towards web applications.
00:01:27.040
However, desktop applications continue to appear regularly. A prime example of this is the launch of the Mac App Store.
00:01:36.570
Apple has opened the Mac App Store for the Mac platform itself, rather than just focusing on iPad applications.
00:01:43.820
The truth is, many applications are being developed but surprisingly few are written using Ruby.
00:01:50.909
Most desktop applications are typically written with Objective-C, and there's not much utilizing Java-based technologies.
00:02:02.009
This has been my motivation to explore Ruby desktop development libraries and frameworks.
00:02:08.280
I want to highlight three specific frameworks: Shoes, Limelight, and Glimmer.
00:02:16.769
These frameworks take full advantage of Ruby for developing desktop applications.
00:02:22.680
Unlike other frameworks that build on top of existing C libraries, these are more Ruby-focused.
00:02:31.050
Let’s begin by discussing what a desktop application is so we’re all on the same page.
00:02:41.459
Typically, desktop applications consist of widgets such as buttons and text fields.
00:02:51.959
These applications can be maximized, minimized, and can have multiple windows open.
00:02:57.480
I want to explore full-screen 3D applications and how they differ from simple gadgets.
00:03:03.060
So, what has shaped the evolution of desktop applications in recent years?
00:03:08.070
I have about four years of experience with office automation in Java, having previously dabbled in C++.
00:03:15.150
Let me show you an example of Java syntax with a 'Hello World' program.
00:03:20.340
As you can see, the syntax can be quite verbose, and there is a lot to learn since it is not as straightforward.
00:03:26.940
In contrast to Java, web development typically employs a hierarchical syntax with HTML and CSS.
00:03:31.940
An example of a Ruby framework is Glimmer, which builds on top of wxRuby.
00:03:39.750
This framework allows you to build applications with more ease and a clearer syntax.
00:03:46.740
An example of code using Glimmer simplifies the creation of a user interface.
00:03:53.190
In this example, we create a window and add labels and text boxes to the layout.
00:04:01.350
This demonstrates a minimal basic syntax that is easy to work with.
00:04:06.660
I want to open people's minds to the possibilities Ruby provides for desktop applications compared to Objective-C.
00:04:13.410
Additionally, I will discuss various frameworks and how they differ from one another.
00:04:19.680
This is just a brief overview of what is out there, including the three frameworks we've covered.
00:04:27.120
I want to begin with Shoes, which is one of the oldest frameworks available.
00:04:36.570
Shoes was designed to enable developers to create desktop applications easily, without the complexity that other libraries impose.
00:04:54.800
It was built to support drawing and animations and is known for its user-friendly interface.
00:05:01.660
Shoes comes with its own runtime environment, making it easier to deploy applications.
00:05:07.020
To create an application with Shoes, you declare the application, followed by the UI components.
00:05:14.120
For example, you can create labels, text boxes, and buttons seamlessly using a straightforward syntax.
00:05:20.340
However, while Shoes supports many UI components, it lacks advanced features required for modern applications.
00:05:29.060
I'll highlight that although Shoes is functional, it is missing some supporting elements for business applications.
00:05:35.000
The next framework I want to discuss is Limelight, which I find fascinating.
00:05:40.680
Limelight was conceived to focus on performance and enabling richer user interactions.
00:05:46.680
It provides a way to build applications like those seen in multimedia platforms, ideal for games and animations.
00:05:53.190
Limelight also allows better integration with existing Java libraries for even more functionalities.
00:06:02.940
As we continue, I’ll share how Limelight can be leveraged for animation in development.
00:06:09.620
Next is Glimmer, which offers a DSL for a smoother experience compared to traditional GUI approaches.
00:06:17.760
The architecture lets you build GUIs easier and focuses on a declarative approach.
00:06:24.110
For example, with Glimmer, you define components in code that create a visual representation of your application.
00:06:30.830
This makes it highly intuitive, providing an elegant way to manage the user interface elements.
00:06:37.130
Glimmer provides various components from simple buttons to complex grids, making it highly flexible.
00:06:45.220
Despite its strengths, Glimmer still requires significant setup before starting, particularly regarding dependencies.
00:06:52.000
It's important to weigh the pros and cons when choosing a framework for your next project.
00:06:59.560
In summary, Shoes is the easiest to start with, while Limelight offers animation.
00:07:07.519
Glimmer facilitates data binding and more flexibility but requires more initial configuration.
00:07:14.919
As we consider these frameworks, let’s also look at their potential for building data-driven applications.
00:07:21.150
Data binding is crucial for modern applications, especially in business contexts.
00:07:27.330
We must ensure that input fields maintain a live connection to the underlying data models.
00:07:34.950
With that in mind, let’s explore how we can keep components synchronized with models.
00:07:41.210
This allows user inputs to directly reflect changes in the data model in real-time.
00:07:48.630
In conclusion, each of these frameworks has its strengths and weaknesses.
00:07:55.940
Choosing the right tool depends on your specific project requirements and personal preferences.
00:08:02.120
I hope this presentation helps you understand the current landscape of Ruby desktop development.
00:08:09.690
Thank you for your attention. I am open to any questions you may have.
00:08:16.470
Let’s discuss your thoughts on the frameworks and their applicability to your projects.
00:08:22.610
Feel free to share your experiences and any challenges you've faced with desktop development.
00:08:29.790
It's always enlightening to hear different perspectives in our community.
00:08:36.900
Thank you again for your time today. Let’s keep the conversation going!