Year review, my ClojureScript pieces in 2018

I have too GitHub accounts, the first one is my personal account, which is mainly using ClojureScript in the 2018:

Image for post
Image for post
https://github.com/jiyinyiyong

The other one was used at work, in TypeScript and React. Sometimes I have chance to code my tools with ClojureScript so I can make my work a little more efficient:

Image for post
Image for post
https://github.com/chenyong (Mostly work commits)

There was a review in September when I listed some of the tools I created in the past months. It’s still useful.

For the rest part of the parts I going so sort my mind a list the ideas behind my work.

Long term projects

There are several important projects I’m maintaining,

Image for post
Image for post
https://github.com/Cirru/calcit-editor

Calcit Editor is my Clojure(Script) editor. Maybe I can call it code generator. It’s a GUI tree editor for S-Expressions, demonstrated at http://cirru.org. Almost all of the ClojureScript I wrote was using Calcit Editor, except for macros. The editor generates code with meta programming. It’s mainly work of maintaining in the past year.

Image for post
Image for post
https://github.com/mvc-works/calcit-workflow

Calcit Workflow is a project template for single page apps. I use it to create tiny tools that runs inside a web page. It’s like building GUI programs that without access to files or database. But in many cases it’s useful enough that I can interact with the power of data processing of computers, like data formatting, content managing, information displaying.

Image for post
Image for post
https://github.com/Cumulo/cumulo-workflow

Cumulo Workflow might be the most important piece of my projects. It contains the feature from Calcit Workflow, plus a Node.js backend running WebSocket. In this I can send message to Node.js and let it read files for me and push data changes to clients. It was designed to for small chatroom, but turned out to be a nice tool for myself to create apps with a server, such as Todolist and Diary.

Another important library I’m maintaining is Respo, which is my own virtual DOM library. Not much things changed for Respo itself. But I added/contributed the UI components that I need for my projects, like popups, icons, alerts, markdown support, etc. Mostly small changes.

The projects listed in this section are becoming stable, I was just trying to reduce the complexity in using them. Quite some changes had been made too Cumulo workflow in order that my new projects based on them can be easier to maintain and migrate.

Personal Toolings

Some of the tools I created with those library did bring me help in real life.

  • Woodenlist, a personal Todolist for my own case. It’s very simple by yet useful enough.
  • Timegrass, a Todolist tracking my tasks related to my job.
  • Clipboard, an online clipboard for myself to share link across my phone and the laptop.
  • Copycat, a snippets tool.
  • Calcit Snippets, this snippet tools is for Calcit Editor only.
  • Diary, a tiny diary app.
  • Neu Tab, this is start page added as a Chrome extension. Deadly simple but quite useful.

There are some others, which are less frequently used. I still feel good since I spent the time in the toolchains, UI components, building processes, documents, It’s not very touch work to try new ones. I don’t have very much time, but at least I still have the time to build some of the tools I wanted.

Community projects

I made and was maintaining several pages for the projects that helped a lot to my projects. Not much work required to program them. But hope they can do help for beginners who are considering whether or not trying them.

Plus I added several Medium posts and Tweets for spreading ClojureScript. However the account @scriptclojure was poorly maintained since I don’t have enough time. Not sure about what to do in the future.

Projects related to the job

Besides Timegrass, I made several attempts to make ClojureScript useful in the company. My workmates may never use ClojureScript, but I can at least build tools with it. So there are several tools:

  • locales-editor, for generating multi-languages locales files with help of a UI of web page,
  • rebase-hell, for triggering git rebase after clicking on a web page, since we are asked to rebase code after merging every PR.
  • fontawesome-finder, for quick search/copy/pasting icon names.

Besides the time saved, they also helped in reducing the pressure of writing TypeScript everyday.

Else…

For me ClojureScript is the tool that I can build prototypes of apps really fast. The language itself is extremely flexible. It may have problems in some aspects, but I can hardly find another language/tooling that I can explore the tiny tools running on browsers and Node.js this flexiblely. And big thanks to shadow-cljs.

The pity part is, I’m using ClojureScript as a tool but I barely have time to dig into knowledges like compilers, OS, types system, micro-services, etc. I’m not sure. Knowledges makes good programmers. But I’m not really learning knowledges in 2018. I did try immer and TypeScript a bit harder to make out workflow and products more robust, however that’s not knowledges.

My work on ClojureScript is less reusable, Respo, Cumulo, Calcit Editor, they all appear strange and not fit mainstreams developers. I can’t say I care about that issues currently. I will focus on building myself tools in these years. No other plans yet. If ReasonML or Nim becoming mature, I might want to try, but now yet.

FP, GUI & writing, tiye.me. Chinese Blog: https://segmentfault.com/blog/jiyinyiyong

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store