[-] yourstruly@dataterm.digital 4 points 1 year ago* (last edited 1 year ago)

Hello. Appreciate your question. I think that this is a good use case for the Repository Pattern.

Image describing the Repository Pattern

In your case, this might look something like this:

  • TicketRepository, ScheduleRepository and TimerRepository interfaces which have their functions like create(), read(), update(), delete(), complexQueryByManyParams() etc. All your domain code should expect and operate on these interfaces.
  • FirebaseTicketStore, FirebaseScheduleStore, FirebaseTimerStore classes which implement the respective interfaces. All your logic that relates to Firebase should be encapsulated here.
  • You can later safely do things like swap out a FirebaseTicketStore with a MysqlTicketStore

You can consult the Design Patterns / Gang of Four book for more details

Off topic, but personally I don't feel you should worry too much about having to change the database in the future. I have rarely seen it happen in my career.

[-] yourstruly@dataterm.digital 13 points 1 year ago* (last edited 1 year ago)

2007 - Rob Pike and Ken Thompson think it would be really cool if C was more like Java, and that it would be even more cool if it used the Pascal-style "x := 5" syntax. They lock themselves in a dark room over the winter and create Go. People criticize it for not being more like Rust, despite Rust not having been invented yet.

2009 - After an airplane crash leaves Graydon Hoare stranded in the middle of the Arabian desert, a mysterious camel appears and saves his life. He creates Rust, and adds obtuse syntax and a merciless compiler to mimic the feeling of being stranded in the desert. Masochists worldwide rejoice.

2012 - Anders Hejlsberg discovers some mushrooms growing from the base of his bathtub. After consuming them, he has a revelation that C# needs more Javascript. He invents Typescript. Typescript is a relatively verbose, garbage collected, class based, statically typed, single dispatch, object oriented language with single implementation inheritance and multiple interface inheritance. Microsoft loudly heralds Typescript's novelty.

[-] yourstruly@dataterm.digital 8 points 1 year ago

Extra fun fact for comment reading friends: This post is the origin of the meme "Monads are just monoids in the category of endofunctors. What's the problem?" Source

43

An absolute classic. One of my favourite parts:

1987 - Larry Wall falls asleep and hits Larry Wall's forehead on the keyboard. Upon waking Larry Wall decides that the string of characters on Larry Wall's monitor isn't random but an example program in a programming language that God wants His prophet, Larry Wall, to design. Perl is born.

[-] yourstruly@dataterm.digital 10 points 1 year ago* (last edited 1 year ago)

Hear me out, but I believe that using Rust holds Lemmy back.

Writing Rust code is difficult, and fairly time consuming. It's difficult to get right, and as other commenters have noted, Lemmy code seems to do a lot of things for the "hype factor" (like Websockets). It's difficult to find enough devs as well.

The article about Discord switching to Rust from Go in the top comment is misleading in my opinion. They totally rearchitected their service while rewriting it, so it's an apples to oranges comparision.

6
[-] yourstruly@dataterm.digital 2 points 1 year ago

Caddy is great, I've been using it for all greenfield projects.

P. S. Have you checked out the Caddy API?

[-] yourstruly@dataterm.digital 1 points 1 year ago

You must be a fan of the primeagen

[-] yourstruly@dataterm.digital 3 points 1 year ago

This is really nice! You might also enjoy: Select Star SQL and SQL Murder Mystery

2

An insightful article about the internals of nginx, and how it works.

[-] yourstruly@dataterm.digital 4 points 1 year ago

I came today from Reddit. Think i'm here for good. This feels magical.

[-] yourstruly@dataterm.digital 2 points 1 year ago

Back in the day, we used to have "post2host" forums, where you could get VPS servers for free just by being active in the forum. That's where I cut my teeth on Linux!

Without that, 10 years ago, I would not have my career today. I am thankful.

[-] yourstruly@dataterm.digital 2 points 1 year ago

This! Selfhosting your own small apps is the best way to get practical, hands on experience with Linux administration.

yourstruly

joined 1 year ago