API design
This post serves as a walkthrough for noebs sdks. Noebs is an open source payment gateway with large support and adoption from many corporations in Sudan. Our goal is to make payments secure and simple, and we want to do that super fast. To this end, we started rolling out our sdks. SDKs are fancy way of saying libraries, a code that others can import to interact with our services. Noebs sdk is derived from our code, and it is being used in prod for a while now. The code for all of these sdks are available here ...
what is an api
So essentially your mobile is somewhere, with an ip address right? And we are pretty much familiar with ip addresses, domain names and stuff, we type in google.com and we are welcomed with google search, and so on. This process is technically called http request. Http cause is the protocol that was used to make the request happens, protocol is really just a fancy way of saying “hey dude, umm can you tell me how are you going to send me your bytes”–everythying is a byte. ...
The non-achievers
So it is a new year, huh? You suddenly find your friends achieving really cool things and you feel like you have not done any thing. This post is for you, for US. I don’t think life is a discrete function, and treating it that way might be the source of this optimizing for dopamine. Success is not linear, in the journey of your life you will have far more failures than your successes. ...
EEBAx: History
I surprisingly had a few jobs in my career. Beside my own startup, i only worked to Ashrafcom. EEBAx was my first startup that i build with Mohamed Jaafar, https://eebax.com. I’m going to go back to ~ 2013 and how it all started. This website was made by Mohamed Jaafar (the one on the left, obviously 😂), in 2015. In 2014, i had the shortest conversation with Mohamed. I told him i don’t think i can fit into Surveying and I want to shift career to software, in a professional way. So in order to do that, we had to build a portfolio, and in order to do that we have to have a domain name (duh!) so we can enlist our projects and show what we are capable off. So, at the end of 2014 school year, we decided to collect some money to make our company. My father secured me my first job at his company, he had me cut my hair as a precondition to get the job! I was Soo into getting the money that I sacrificed my hair. The job was quite simple, I just had to install windows on variety of company devices and install office products too. It didn’t take much and by afternoon I finished the job. There was the boss pc and i just couldn’t install windows in it, so I told them I’m gonna install linux here. They asked me if it runs word AND had Arabic keyboard. I made sure both were there. Now that I remembered it, they had really beautiful IT employee! She’s so beautiful I actually couldn’t focus on work, I asked her about her work and she said she’s a designer and she did various designs and stuff for the company, the weirdest thing is that she asked me whether I have Photoshop and actually told me she didn’t have any and asked for courses about it. You’d be wondering how a designer don’t have photoshop but she’s an exception 😂😂 ...
Capitalism, software and burnout
Or really, publish or perish. Let’s set the stage for this: you don’t have to learn a new thing every day. You don’t have to produce a fancy thing every day and you definitely don’t have to be at your best every day. People are humans, and humans by nature have their ups and downs. Chill, take some time off. Enjoy the little things, get away from your laptop. You are not a robot. God, even machines perform much better after a reboot. ...
Communications ettiqute
Text based communication is far more difficult than verbal one. Context is mostly missing, and conversations can get heated faster than in verbal ones. It makes sense to suggest readers to always assume the best intent and be explicit and ask if they didn’t get the intent. But I want also to focus on the writer part. How do you communicate with text in ways that is clear and not rude to your readers. ...
Building against interfaces
This post discusses technical details
What are you testing
Testing in EBS Ultimately security tests in EBS are meant to assess PCI compliance of an organization, to this end, PCI DSS requirements are: Install a firewall Change all default passwords on network-connected devices Protect stored cardholder data via encryption, hashing, or other data protection methods Encrypt cardholder data in transit Install malware protection Patch vulnerabilities in all systems and applications Restrict access to cardholder data to authorized personnel Control and restrict system access Control and restrict physical access to cardholder data Monitor access to data Test security systems regularly Maintain an information security policy Let us go through them one by one, they are not that hard eh? ...
Values and pointers: What could possibly go wrong?
This post highlights a weird and expected behavior we encountered while using Go’s encoding/json library. In go, we pass by value, that really means this: type User struct { Name string } func changeMe(u User) { u.Name = "New Name" } func main(){ u := User{Name: "mohamed"} changeMe(u) log.Printf("The user is: %s", u.Name) // mohamed } To change by value, we must pass a pointer, we can change the code to be something like this: func changeMe(u *User) { u.Name = "New Name" } // same code u := User{Name: "mohamed"} changeMe(&u) //<--- we made a change here! We should pass the memory address to user log.Printf("The user is: %s", u.Name) // New Name But in go, we slightly use a different syntax for this, we use a method receiver on the struct. More like method to classes on other languages. ...