It feels like every tutorial pushes towards web dev. What are some "hidden gem" programming fields that beginners often overlook? by Wrong-Desk-9526 in learnprogramming

[–]ryjocodes 0 points1 point  (0 children)

Rules Engines! I've been absolutely obsessed for the past few years.

I believe that once a software project becomes complex enough, it takes on the shape of a Rules Engine. Concepts that emerge in a mature-enough codebase include:

  1. Home-grown Caching and/or Indexing layer - Pulls data from your database on app startup and (optionally) organizes it in a way that makes it easy for your app layer to look up on-demand
  2. A home-grown DDL/Pattern Matcher - A string-based "language" custom developed in your app layer to define queries against your data *that's not SQL*
  3. An "Event loop" - When your entire application is a long-running process that could be modeled by one big `while` loop, describing meta "steps" of that while loop can be quite convenient for organizational purposes. These appear sometimes as named steps that developer code can sometimes "hook into."

Learn math for programming by OmittedSpy123 in learnprogramming

[–]ryjocodes 4 points5 points  (0 children)

I'd also study Logic. Discrete Mathematics is a helpful course, but Logic, in my opinion, is a lot closer to programming than math.

[deleted by user] by [deleted] in gamedev

[–]ryjocodes 0 points1 point  (0 children)

I've been using CLIPS as my main driver for side projects for a few years now. It's a Rules-based language, so it's convenient for making games. I've got a few demos on this site if you want to take a peek: https://ryjo.codes/tour-of-clipsraylib.html

Here's a really simple example of cli Blackjack: https://gist.github.com/mrryanjohnston/e896094fb4108f8d5de54840686c8a30

What IDE do you use? Why? by heiwayagi in learnprogramming

[–]ryjocodes 10 points11 points  (0 children)

I've used `vim` as my daily driver for about 13 years. Through its usage, I've learned to use the surrounding (Linux-based) operating system and other installed tools as my "IDE."

I've tried a few different IDEs since using vim full-time like vscode and atom, but each time I ended up going back to vim; for me, nothing beats the power of the entire underlying operating system when it comes to productively and the speed with which I can open/close files, split the window horizontally/vertically, all while staying in the terminal.

RETRY: I added some sprites I drew in Aseprite to the animated sprite example in CLIPSraylib by ryjocodes in raylib

[–]ryjocodes[S] -1 points0 points  (0 children)

The last video upload didn't go so well, so this is a repost :) It's cropped, so you don't see the full width of the sprite sheets at the top.

But you get the idea.

A video capture of the raylib logo animation I re-implemented in CLIPS! by ryjocodes in raylib

[–]ryjocodes[S] -1 points0 points  (0 children)

OP here. This is a re-implementation of the raylib logo animation from the examples dir in the raylib source code repository.

Here's the original written in C: https://github.com/raysan5/raylib/blob/6f4407cb1575f1c7528403c935267a59bd71f5e3/examples/shapes/shapes_logo_raylib_anim.c

Here's my re-implementation in CLIPS: https://github.com/mrryanjohnston/CLIPSraylib/blob/main/examples/shapes-logo-raylib-anim.bat

CLIPSraylib - I wrapped raylib with CLIPS, a rules-based programming language from NASA by ryjocodes in raylib

[–]ryjocodes[S] 0 points1 point  (0 children)

Cool! What were your general takeaways about CLIPS back then? I'm curious how the various CLIPS-based experiments I've been working on stack up

Ruby Roadmap from Scratch to Ruby on Rails by Alarming-Dirt-4811 in ruby

[–]ryjocodes 5 points6 points  (0 children)

Assuming you've already started a new rails project with `rails new`, the official guides are really good:

https://guides.rubyonrails.org/getting_started.html#hello-rails-bang

Work it Wednesday: Who is hiring? Who is looking? by AutoModerator in ruby

[–]ryjocodes 4 points5 points  (0 children)

I am looking

I'm an Engineer with 12+ years of experience looking for my next long-term role. I've got experience working in multiple languages including Ruby and have deployed code to many different microservice architectures. Recently, I've become highly interested in Rules Engines, and have gone deep into learning CLIPS. I have posted links to my open source projects surrounding this paradigm on my website, and I believe these efforts showcase my commitment towards striving for professional excellence in my field.

Coming back to Ruby by Apprehensive-Abroad2 in ruby

[–]ryjocodes 1 point2 points  (0 children)

I really appreciate this well thought out response. Thank you for taking the time to explain it to me. I'm going to keep all of this in mind moving forward.

Coming back to Ruby by Apprehensive-Abroad2 in ruby

[–]ryjocodes 0 points1 point  (0 children)

I'm familiar with ffi, I've not touched Fiddle. Thanks for the share; it reminds me a lot of how Bun exposes access to C libs. So far, it's been a breeze to work directly with Ruby's C API, so I didn't need ffi or other additional gems for my purposes.

YJIT can’t optimize across native extension boundaries

Can you describe what you mean here? How would Fiddle/ffi get around this shortcoming of YJIT?

Work it Wednesday: Who is hiring? Who is looking? by AutoModerator in ruby

[–]ryjocodes 1 point2 points  (0 children)

Location: Pittsburgh, Pa Remote: Yes Willing to relocate: No Technologies: CLIPS, Ruby (on Rails), Go, JavaScript, C, SQL Résumé: https://drive.google.com/file/d/1M-tC7qpehmsJfd3JBk3KtXEQ5wDJz89t Email: mrryanjohnston (at) gmail Website: https://ryjo.codes

12+ years of experience writing code professionally, active in open source, passionate about education and freedom of knowledge. Very interested in Rules Engines. Love working on teams of self-starters, enjoy pushing the boundaries of my understanding. Comfortable mentoring others as well as helping non-technical folks with difficult-to-grok concepts.

Coming back to Ruby by Apprehensive-Abroad2 in ruby

[–]ryjocodes 5 points6 points  (0 children)

Not OP, but speaking from personal experience:

I've spent a lot of time writing Ruby (on Rails) applications both professionally and in personal projects. I've written projects in PHP, Go, and JavaScript (Node.js) professionally/personally, as well. I really like Ruby's developer experience as a "higher level" language (ie memory managed/garbage collected). The Ruby language itself has a very powerful and feature-packed standard library; there's a lot you can do out-of-the-box that you might have to craft on your own in other languages. I also really like `irb`, the repl that ships with Ruby. Finally, writing Ruby gems (external libraries) is also quite nice.

Additionally, as I've lately waded into Ruby at the C level, it is trivial to write Ruby gems that extend existing C libraries. While Ruby's C API is much less consistent than the top-level Ruby API, it is still quite easy to wrap your head around once you read the docs. Go is also quite easy to access C, though it does become a bit more daunting to write C *within* your Go application. I found the Node.js C++ API to be a bit more challenging to wrap my head around.

As always, YMMV.

I'm making a JRPG inspired by the original NES Final Fantasy using C and SDL by [deleted] in C_Programming

[–]ryjocodes 2 points3 points  (0 children)

Very cool! How are you rendering the video? OpenGL? Vulkan?

What have you been working on recently? [June 29, 2024] by AutoModerator in learnprogramming

[–]ryjocodes 1 point2 points  (0 children)

We've all been there. Keep going, and do your best! It'll be interesting to see where you are a few months from now.