From Zero to Jelly: My One-Month Journey Coding Jellycuts on Mobile

After writing for Jellycuts.com, I believe I can teach you Jelly Lang in just a few tutorials. Learn about my first-month journey of mastering Jellycuts on mobile.

From Zero to Jelly: My One-Month Journey Coding Jellycuts on Mobile
One Month Journey Coding Jellycuts on Mobile

In May, RoutineHub and Jellycuts teamed up to explore a fascinating challenge within the Shortcut community: What if you could write code using Jellycuts, publish the Shortcut on RoutineHub, promote it through social media, and repeat the process continuously? What would this complete cycle of mobile coding and promotion look like? Could it lead to mastering mobile software development? Do we have enough tools today to innovate solely using a mobile phone?

Through this partnership, we aimed to address these questions and reinvigorate interest while fostering innovation.

Our first step was the launch of OpenJelly, a milestone initiative. OpenJelly made the Jelly Lang compiler and Jellycuts IDE open-source. Since its release, OpenJelly has garnered over 100 stars on GitHub, with a visual brand overhaul currently underway. Concurrently, Jellycuts.com has experienced increased traffic to its website and a rise in downloads.

Before this partnership, I had never written a single Jellycut or used Jelly Lang meaningfully. Now, I've written over 20 Jellycut files, many of which are available on Jellycuts.com. I'm excited to share my experience of writing code strictly from a mobile phone.

Mobile-first Coding is Possible

It is entirely possible to write high-quality Jellycuts code using only your mobile phone. I mention this because many developers have been requesting more support for desktop support. We agree that this is certainly a path forward (and we will get there), but at the same time, RoutineHub has always aimed to support developers who want to build using only a mobile device. Developers who would rather not spend hundreds of dollars on import taxes for a MacBook Pro or those who just prefer to code while on on a train or waiting at a bus stop.

What worked best for me was writing code on the bus. For those familiar with LA, the bus system isn't the most reliable. However, a 40min metro ride from Downtown Los Angeles to Santa Monica doesn't bother me when I'm completely absorbed in solving coding problems. I find it more engaging than watching a Netflix show. Plus, I can enjoy listening to my favorite music. I've jokingly dubbed this experience "Time Blindness Gone Right." LOL

Learning Jelly Lang Will Make You a Better Coder

It took about two days to understand the Jelly Language. When learning a new language, I often default to first understanding these tasks:

  1. How do I send a POST request?
  2. How do I send a GET request?
  3. How do I capture and parse the results from my URL requests?
  4. How do I save and publish my work?

Sending a POST Request

This is super easy. You only need to learn downloadURL(). I ended up creating an article about it: How to Create a POST Request in Jellycuts.

Sending a GET Request

Again, super easy. Just learn downloadURL(). I wrote another article on this: Send a GET Request Tutorial.

Capturing and Parsing URL Request Results

This task required some extra effort, largely due to my coding biases. With 20 years of experience writing JavaScript, eight years of learning jQuery, and Swift since 2016, I found Jelly Lang to be a unique blend of JavaScript and Swift, yet distinctly its own language.

The crucial realization was this: Jelly isn't attempting to replace JavaScript or Swift. It's specifically tailored for Shortcut development. To succeed, I needed to embrace it as the right tool for the job, rather than trying to force fit it into my existing knowledge base.

Once I accepted this and stopped trying to force Jelly to be either JS or Swift, my coding velocity increased. The main hurdle was understanding that for parsing Dictionaries, the two easiest approaches are either valueFor(key: "variableWithQuotes", dictionary: json) or .key(variableWithNoQuotes) and then assigning it >> to a magic variable.

The magic variable is powerful because they are immutable, meaning the compiler does a better job checking your work and reducing the potential for errors or leaks.

Same as points 1 and 2, I've taken a stab at showing how to extract variables from JSON in this article: Working with Nested Dictionaries in Jellycuts.

Saving and Publishing Work

To Taylor Lineman credit, the author of Jellycuts, when you create a Jellycut file it will automagically save to iCloud. This is awesome because there were many times when I would mess up yet still elegantly recover. Currently, the Jellycuts IDE uses "last write wins" for conflict resolution, which is good enough for now but I might consider giving this more thought in the future.

Writing Jellycuts Is Fun

After writing Jellycuts for over a month, I prefer it over drag-and-drop Apple Shortcuts development, especially for applications requiring more than 20 actions. Part of the magic has to do with code re-usability. For example, here is a Jellycut that captures any URL in your clipboard and instantly turns it into a QR code in just two lines of code:

text(text: "${Clipboard}") >> originalString
createQR(text: originalString) >> originalQR
quicklook(input: originalQR)

Capture any string from Clipboard and convert it into a QR Code using Jellycuts.

Two lines of code! I mean, come on! That's incredible!

Moving Forward

I’m excited to continue pushing the boundaries between front-end and back-end coding for mobile. I am also excited to work with other teams, products, and platforms to expand this incredible Shortcut ecosystem. In the meantime, I'll keep writing more Jellycut files and sharing them with you all.

If you are interested in supporting our efforts, here are a few ways you can help: