Hello Crystal community.
I am Jimmie from Texas, USA. I am not a professional programmer, but have been programming for over 25 years. So yes, I am toward the older side of this group.
Husband, father, grandfather of a big family.
I am a long time Linux user. My first programming language was Prograph CPX. My first Python was 1.6. But for most of my time I was comfortably using Squeak/Pharo for 20 or so years. If Pharo performed as well as Crystal, I would still be there. But I need very good performance and do not want the trouble of Pharo + FFI. That is beyond the level of skill and learning that I have time for.
I never used Ruby because I never saw an advantage over Pharo.
I have done numerous language micro-benchmarks for the sweet spot of my app which is heavy in large arrays, array access and math. C was generally the winner. But I do not want to write C. Java was close. Python/Numpy performed admirably. But I just struggle greatly with Python. I bang my head to often in what seem to me from an OO side to be inconsistencies in the language. Strong contenders also were Nim and Julia.
I have written a fair portion of my app in both Pharo, Nim, Julia and Python. I have been exploring languages for years looking for the one that hits the sweet spot. Comfortable to think in and write in. Good performance. Reasonable file and memory sizes. Ability to create nice binaries and deploy is a big win.
I had somewhat been watching Crystal for a few years. I had tried it out a few years ago. But Crystals maturity at that time and my skill set did not work out. I recently saw Crystal reach the 1.0 status and decided to give it a try again.
I most recently been porting my Pharo app (the most mature version of it in any language) to Julia. Julia is an interesting language and hits many sweet spots. But also fails on a few.
Julia has an amazing REPL. One of the best I am familiar with. Nice experience with Codium (VS Code). But the repl starts out with 200mb of ram. Ugh! Julia likes its memory. Julia does not currently compile to nice reasonable sized binaries. It isn’t quite as deployable. But for many situations that doesn’t matter. As I was doing a server side app, those are niceties but not requirements.
But the biggest reason for me to switch to Crystal is that I have spent years thinking in a more object oriented manner. And just never liked the idea of I have an object I want to operate on, so I need to figure out the function to call and then pass this object. I have read all of their reasoning behind what they do, but it fails to convince me that it is a better way.
As for me and the way I think, Crystal just seemed like it would bring much more joy to the programming experience. Since I am in complete control of the languages I use and the projects I use them for. I have the option to have programming joy as a priority.
While Crystal is not a perfect language. And I have not found one. It is a very good language. It offers great potential in the present and increasingly so in the future as it grows and matures. I do not see any deficiencies in Crystal that can’t be overcome with growing the community, time, and money. And I believe as it matures and the developer experience improves. The community will grow as will corporate sponsors.
I like the videos in the Crystal 1.0 conference. It was encouraging to see the science guys who choose Crystal as opposed to Julia. Julia tries to position itself as the language for those people. And for many it might be a great choice. But if you think in a more OO way and enjoy doing so. Crystal is a comfortable place to call home.
I am in the early stages of porting my app from Julia and Pharo. Time will tell. Still much Crystal for me to learn before it just flows from my thoughts.
Thanks for this beautiful language, welcoming community and an opportunity to have joy in the development experience.
Jimmie Houchin
jlhouchin (Jimmie Houchin) · GitHub (no public projects yet)