• 0 Posts
  • 30 Comments
Joined 1 year ago
cake
Cake day: June 22nd, 2024

help-circle

  • I have read about this related to how FB does it. In general this means that fetching from the DB and keep it in memory to work with right? So we assume that the cached data is outdated to some extend?

    correct, introducing caching can result in returning outdated data for awhile, which is usually not a huge deal. those caches can get tricky, but they should take pressure from your db, if you’re scenario is read heavy, which is often the case. Research existing caching solutions before running ahead and implementing something from scratch, especially if you need a cache distirbuted between multiple instances of your service. In the Java world that would be something like Infinispan, but your ecosystem might over better integration with other solutions.

    I was able to convince management to put money into a new server (SSD thank god). So thank you for your emphasizes. We are also migrating to PostgreSQL from SQL server, and refactor the whole approach and design in general.

    having management on board is great and the new hardware should help a lot, migrating to another RDBMS sounds scary, but probably worth it if your organisation has more expertise with it.

    generate indexes

    they won’t help you with your duplicates, they will help speed up your reads but could slow down writes. building a good index is not trivial, but nothing is when it comes to performance tuning a database, it’s tradeoff after tradeoff. The best way to handle identical rows of data is to not write them usually, but i don’t know your system nor its history, maybe there is or was a good reason for its current state.



    • spent time to generate/optomize your indexes.
    • faster storage/cpu/ram for your rdbms
    • get the data needed by specific services into the service, only get the data from a central place if you have to (spinning up a new instance, another service changes state of data you need, which is a warning sign in itself that your architecture is brittle…)
    • faster storage/cpu/ram
    • generate indexes
    • 2nd level cache shared between services
    • establish a faster datastore for often requested data thats used by multiple services (that might be something like redis, or another rdbms on beefier hardware)
    • optimize queries
    • generate indexes
    • faster storage/cpu/ram


    • Refactoring by Martin Fowler, having patterns to help identify parts of code that could be changed for the better helps a lot.
    • Test-Driven Development with Python, because testing is important and you should atleast have tests in mind when writing you code, even if you dont write them first. I like this one, because it’s very hands-on.
    • Head first java by Sierra and Bates, good introduction to programming with languages that offer object orientation and not as dry as the gang of four book, but definitely aimed at beginners
    • Fundamentals of Software Architecture by Richards and Ford, working as a programmer often means talking with big picture people or being one yourself, and they have their own strange language.
    • Domain Driven Design by Evans, for a similiar reason as Fundamentals of Software Architecture.
    • Neuromancer by William Gibson, because fun is important ;)



  • bring your decks into the same WLAN-network to play games that don’t rely on online servers.

    a possible game could be “Alien Swarm: reactive drop”, a so called twin stick shooter , the top down perspective helps too keep your orientation and the stressful sequences are often telegraphed.

    “towerfall ascension” is a 2d action game that can be played in coop, which is easy to pickup (but it does get difficult)




  • it would be a good start to include a link to a git repo in your posts, when you share your blog posts.

    if your code is hosted somewhere where you can create issues and tag them, create issues and tag them as “contribution welcome” or “good first issue”.

    github is probably the best plattform to get contributions, simply because it’s the biggest and so many people already have an account there.

    but complex reworks or new features are probably nothing a random contributor will provide, but you or close collaborators.







  • “logs show a reoccuring error in layer 8 everytime a subset of users engages with the system, reassigning this to the service desk to gather more information.”

    i’ve read that on real ticket, i’ve laughed about it. it also makes me glad that i don’t do customer support, i don’t have the patience to keep explaining the same people that they keep doing something wrong and i lack the diplomacy skills to engage with devs that believe to be infallible and pretend that bug reports are personal insults against them.


  • I’d Agree in most cases, but not in this one.

    Rigor in definitions allows us to express a lot of complex things in a compact form. this allows us to treat “Cars” as something different than “Motorcycles” while both a motorized vehicles.

    the same is true for REST-API and other API-Types, while all of them are just a means to allow services to exchange data, they tell us a lot about how this exchange happens and what to expect, but only if we use the words in a way that they represent the concept they were meant to represent. Otherwise we end up with meaningless buzz words like “rest”, “agile”, “scrum”, “artificial intelligence” and so forth, instead of meaningful terms found in the jargon of other engineering disciplines like “magnetism”, “gravity” or “motor”.