Posts

  • GitPhoto

    What is:

    Initially this project started with a different idea, but at the core, an alternate cloud storage solution, then I settled on a Github storage but I kept some elements of previous design around. This is a proof of concept to see if Github could be used to store personal securely data such as photo and videos. I created this application for myself first, and I’m maintaining/adding features for it when they make sens, I’m using the application daily. The data is stored in private Github repositories, and for added security, the data in encrypted/decrypted on device. The repositories are created by the application when old ones are full, but the storage is managed by Github and not the application. If you delete the repository/files manually from your Github account, the data is lost.

  • How to push large projects to Github

    Recently, I’ve had to push a somewhat large project (~50 GB) to Github for the first time, the project was not tracked in Git, and hence trying a single commit with all the files failed with the following:

    remote: fatal: pack exceeds maximum allowed size (2.00 gib)
    

    Turns out (which I didn’t knew) that Github imposes a size limit per push. in this link, Github suggests certain solutions, which didn’t work out for me, so I was inspired by the push per commit idea, and came up with a shell script to push per 50 MB worth of files.

  • Massively scaling a web application

    As user demands grow, scaling becomes critical. Whether it’s handling a surge in traffic, managing increasing amounts of data, or ensuring high availability, scaling ensures that an application remains responsive and reliable under varying workloads. The process involves strategically optimizing and expanding the infrastructure to meet the demands. This can be done vertically by enhancing the capabilities of existing servers or horizontally by adding more machines or nodes to distribute the load.

  • SOLID

    SOLID

  • D from SOLID

    Dependency Inversion Principle (DIP) in Software Design

  • I from SOLID

    Interface Segregation Principle (ISP) in Java

  • L from SOLID

    The Liskov Substitution Principle (LSP) in Object-Oriented Design

  • O from SOLID

    Open/Closed Principle (OCP) in Software Design

  • S from SOLID

    Single Responsibility Principle (SRP) in Java

  • Full stack developers

    Full stack developer

  • Technical debt

    technical debt

  • Microservices vs Monoliths

    Microservices are an architectural style that splits a software to a collection of fine-grained services. Those services have to be:

  • Best Of: The Early History Of Smalltalk

    Smalltalk’s design–and existence–is due to the insight that everything we can describe can be represented by the recursive composition of a single kind of behavioral building block that hides its combination of state and process inside itself and can be dealt with only through the exchange of messages.

  • React Hooks: UseReducer Generics Params In Typescript

    The new React Hooks introduces a lot of functions to encourage the creation of function components.

  • Hexagonal Architecture

    The _ hexagonal architecture _, or _ ports and adapters architecture _, is an architectural pattern used in _ software design _. It aims at creating loosely coupled application components that can be easily connected to their software environment by means of ports and adapters. This makes components exchangeable at any level and facilitates test automation

  • Anemic vs Rich Domain Models

    technical debt

  • Domain Driven Design Core Concepts

  • Tell, Don’t Ask: Getters Are Evil

    tell dont ask

  • Speed Up Your Computations

    Speed Up Your Computations

subscribe via RSS