Julia frameworks to create desktop GUIs and web apps
I used Genie with PackageCompiler on AWS to host build a wedding website for some friends (features included personalized invites + custom photo uploads with filters directly to the bride and groom + live mini games during the wedding). The awesome part about this was that image processing in Julia was a joy to work with. And packaging and environment issues were non existent. I&#x27;ve spent A LOT of time dealing with those in Python, and having things almost always just work was really nice.<p>I had a few issues though,<p>0) I could not use the free tier in heroku because Julia + Genie would take too long to start up, and Heroku&#x27;s free tier will kill the VM if you don&#x27;t serve a response in 30 seconds. I was able to get it to work with PackageCompiler but even that was close when the VM booted up for the first time on Heroku. At the end I decided to use AWS instead.<p>1) None of my friends who wanted to contribute wanted to use Julia (they said if they were learning something new they&#x27;d prefer Go, Ruby or even just using C++).<p>2) Library support for Genie was just okay. Implementing Auth + Database support + dealing with cookies, sessions etc took waaayyy too long, when I just wanted to implement features for the website. I wanted to parse HTML from a custom calendar page and tried to use Gumbo, and it was slow and painful to work with. In the past when I did the same thing with Python, things just worked. Beautiful Soup 4 was SOOO much more productive for me than trying to do the same thing in Gumbo.<p>3) Development was SLOW. Julia + Genie takes forever to reload, even with live reload. And if you change one line in the HTML that you are about to generate, and you&#x27;ll have to wait 30 or more seconds to see the update in a local developent environment. This is PAINFUL. Once the size of the application grows or you add dependencies, it takes longer. The error messages aren&#x27;t too good either and don&#x27;t get me started on the usability of language server in vim&#x2F;neovim. The one other friend who actually downloaded Julia and installed every thing in order to contribute to the project instantly gave up on making any contributions just because of the development experience.<p>And, when I deployed it to AWS, even after using PackageCompiler I wasn&#x27;t getting instant server responses (I&#x27;m assuming I did something wrong here though). The final binaries that I was deploying to AWS were also huge (hundreds of megabytes).<p>On reflection, if I had implemented the same project in Python, I would have completed this maybe 10 times faster (based on past experience), and run time would be been as fast too (except for the image processing piece). Using Python + Flask and using a subprocess to call Julia would have been a better approach to solving this problem, instead of what I choose to do. I had stretch goals for this project (more mini games) that I wasn&#x27;t able to even attempt making, primarily because I was dealing with all the pain points of developing in Julia (I guess it was also my fault for trying to get all this done in a couple of weeks of my spare time).<p>I really like Julia as a language, but using it for anything other than scientific computing (more specifically using it as a general purpose programming language) seems to me as a recipe for pain at the moment. I would not recommend deploying production applications in Julia right now unless you HAVE to use it (because of some library that&#x27;s only available in Julia) or your development team is willing to put in work to write libraries from scratch + deal with slow start up.<p>Maybe in a few years when tree shaking is implemented and more latency issues are resolved and language server gets significantly better, it&#x27;ll be a competitive choice. Until then I&#x27;ll be curiously watching from a distance :)