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
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
Domain Driven Design Core Concepts
Tell, Don’t Ask: Getters Are Evil
Speed Up Your Computations
subscribe via RSS