The Laravel Podcast brings you Laravel and PHP development news and discussion. Season 5 consists of Matt Stauffer interviewing the creators of the most popular packages in the Laravel ecosystem.
Interview: Abed Halawi, Tech Lead at Vinelab
An interview with Abed Halawi, Laracon EU speaker and Tech Lead at Vinelab
- Abed on twitter
- Abed's talk at Laracon EU 2016, "The lucid architecture for building scalable applications"
- VineLab
- Neo4j
- NeoEloquent
- Beirut
Transcription sponsored by Larajobs
Editing sponsored by Tighten
Matt Stauffer:
(music)
Hi-
Abed Halawi:
Abed.
Matt Stauffer:
Abed, hello. All right, ah dang it. Welcome back to Laravel podcast, season three where I mispronounce everybody's names. Today I'm talking to Abed Halawi. I think that's right. He did lots of great packages and stuff, you'll learn more soon, okay bye.
(music)
All right, welcome back to another episode of Laravel podcast, season three where I mispronounce people's names. I actually got it wrong right before the intro, but then he corrected me. So it's, so the syllable its the emphasis on the wrong syllable. I'm talking to Abed Halawi. And I'm going to let him introduce himself, where he's from and I tell you guys all this every single time when I do this, but I'd like to switch it up between people that you have heard of before.
You know, you know an Adam and you know a Taylor and you know whatever. And people who, within certain communities they're well known. They made an amazing package, they're a strong community leader or something, but the whole rest of the world might not know about them. So, the guy I'm talking to today, is a little more in that second one. So I want him to tell us a real quick bit about so who are you? Where do you live? Where do you work? And what are a few things that you are known for in your world?
Abed Halawi:
All right, so you got my name almost right, this time.
Matt Stauffer:
All most, I'll take it.
Abed Halawi:
It's Abed Halawi, in our language. In English usually it's Abed Halawi, so the emphasis is on the middle of that-
Matt Stauffer:
Wait so when you say it, the emphasis is on the last syllable of your last name, Halawi. Not Halawi.
Abed Halawi:
Yeah.
Matt Stauffer:
Oh, okay.
Abed Halawi:
Yeah.
Matt Stauffer:
All right, I'm getting there. Sorry, go ahead.
Abed Halawi:
So, I live in Beirut. I was born here and always been here. I currently work here as well at a company called Vinelab. What we do is, focus on the influencer marketing, building a SAS platform to provide influencer marketing to brands. Basically our website says it all, so if you'd like to know more about that, go to vinelab.com and that will tell you everything about that.
So I'm here because mainly about the Lucid Architecture which was first introduced in Laracon EU. The Lucid Architecture is about a collection of experiences that we went through, and we thought that certain ways would improve the ways we work together as a team. We thought that, well actually this is something very interesting and could help others solve their problems as well. The same problems that we've had and solved our way. So maybe our way could help others solve theirs as well.
That's one thing, and the other thing is Neo Eloquent, which is the package for Eloquent, and Neo4j. Neo4j is the graph database, and we use that library as the core storage library in our products, with which we bridge between Laravel project and graph databases.
Matt Stauffer:
So, there's a couple things you said there. If anybody was at Laracon EU, you would have seen Abed give his talk, was it two years ago? 2017? Or that was one year ago I guess-
Abed Halawi:
Yes.
Matt Stauffer:
... that and math is hard. But also make sure I put a link to that in the show notes. So you mentioned that and also you mentioned he maintains and created a package called Neo Eloquent which is kind of an Eloquent style wrap around types of Neo4j. If you ever heard anybody talk about graph databases, it's one of those things where, "Oh my gosh, graph databases are the new hotness." But I think a lot of people don't actually have a lot of experience working with them.
Real quick, before we get into your back story, I'd love for you to give me a tiny little pitch on each of those. I don't know if you're familiar with the phrase elevator pitch, but it basically means, imagine you have 30 seconds on an elevator ride to convince a potential user, or founder or funder or something like that, of why your thing's great. Can you give me the elevator pitch, the 30 second pitch on Lucid Architecture, why is it different, what does it help you with? And then I want to get the same one for Neo4j and graph databases.
Abed Halawi:
All right, no pressure.
Matt Stauffer:
None at all.
Abed Halawi:
Okay, so Lucid, it's about eliminating legacy projects completely. You would never have to move to a project that you've worked on three years ago, and say where does this go? Where is this piece of code that I'm looking for? Where do I find this happening? How is this feature implemented? What's the structure of the code? All of these are eliminated with the Lucid Architecture, which basically takes over from where MVC leaves off.
Matt Stauffer:
What's the one biggest difference with how Lucid Architecture organizes its code relative to your normal MVC project?
Abed Halawi:
It compliments MVC projects. So it's not a replacement MVC, but basically with MVC, and the controller, you almost have everything. This is where things get a little confusing in controllers, I mean, if you have a project A and you have a project B to each by a different separate team, in the controller if you go there you will find things written differently. And this is where Lucid comes in. What Lucid says that each controller method, only has one line, only. This line is to serve a specific feature. A feature, specifically, is a class by itself. And within that feature, you would define the sequence of steps that accomplishes this feature and we call them in Lucid, jobs.
So as each step in the feature is a job, and each job does only one things and is responsible for performing one thing only. You can share jobs between different features, but each job can do only one thing. And each feature serves one user story from the controller. That way you can achieve what we always dream about achieving with MVC, which is the thinnest controllers we can ever reach.
Matt Stauffer:
Is it similar to envocable controllers, or do your controllers have multiple methods but each of those methods only have one line?
Abed Halawi:
You can say it's close to what a command bus pattern is. So you can think of your controller as the command bus, and your just executing commands.
Matt Stauffer:
Got it.
Abed Halawi:
The commands take different forms. It could be a future or could be a job, so the same form repeats itself.
Matt Stauffer:
Got it. Okay, and if anybody wants to learn more, it's all written up in the, well it's both written up in the Github, which I'll link, but it's also in your Laracon EU talk, which is on YouTube, and I'll link that one as well.
But since this is not an architecture podcast at the moment, it's a person podcast, let's move on real quick to talk about Neo Eloquent. So, Neo Eloquent I understand gives an Eloquent style interface to Neo4j. Let's, if you had to give the elevator pitch again, this time, can you give me a quick elevator pitch for graph databases, and what makes them a little bit different from traditional relational databases?
Abed Halawi:
Sure. So, with the graph databases, the way we store the data, and visualize the data, and manipulate the data is the same way we think about the data. So the first thing we do when we start a new project, or data modeling for a project. What we do is draw circles and connections between these circles, which later on gets translated and transformed into tables and foreign keys et cetera.
But with graph databases, the way you draw the first data model with your hand, on a board, is the way it is stored right away. And you can manipulate that.
Matt Stauffer:
Okay.
Abed Halawi:
You can also implement traversal and all the graph algorithms that we study about through out our computer science journey. So, you can apply all of these to the data that is stored.
Matt Stauffer:
And if anybody, like me, does not have a computer science background, when we're talking about graphs, the easiest way to think about that is when people talk about a social graph. They think about everything being based on relationships, on relationships, on relationships.
Abed Halawi:
Exactly. And a relationship is what we call a first class citizen in the database.
Matt Stauffer:
Right, where as with relational databases it's a little more second class, essentially-
Abed Halawi:
Exactly.
Matt Stauffer:
... with foreign keys and everything. Okay cool. Well I'd love to talk more about those things, but today ain't the day for that. So, I want to know a little bit about you. So before we go into your backstory, I'd like to know, first of all, when you meet somebody at the supermarket and they ask you what you do, what do you tell them?
Abed Halawi:
These days I find it very easy to talk about these things, from how it used to be when I first started. Because, today, especially with today's generation, they take technology for granted. Right? They're born and growing up in the world where cloud is the normal. Right? So, if I were to explain this, I would maybe go to an example by saying, okay I'm a robot, and you tell me what to do. I will do everything you tell me.
So this is how it first starts. So when they tell me to do this and do that, I would do them. Then I would say, this is exactly what I do with machines. I will give instructions to machines so that they run them when I am not there. So they keep doing that.
Matt Stauffer:
Okay, so what is your actual role, are you a developer, are you a tech lead? What's your official title?
Abed Halawi:
My official title is tech lead.
Matt Stauffer:
Okay.
Abed Halawi:
But, we're a start up-
Matt Stauffer:
Okay, a little bit of everything.
Abed Halawi:
... this is where things ... yeah exactly.
Matt Stauffer:
You can call yourself CTO if you want, right?
Abed Halawi:
Yeah, yeah, exactly. The thing is, with start ups, mostly, we get the opportunity to wear different hats. Which is interesting, so that we can get horizontal and vertical expertise.
Matt Stauffer:
Yeah.
Abed Halawi:
So, by horizontal I mean, different technologies, different areas of technologies, say front end, back end, dev ops and everything related to that. And at each area we get to grow vertically where, we improve ourselves and our skills in each of these areas. This is the most interesting about being in a start up.
Matt Stauffer:
You mentioned having a computer science degree, so I want to hear a little bit later about the path you took from computer science degree up to being a part of a start up. Real quick, were you one of the founders of the start up or did you join in after it started?
Abed Halawi:
I'm not the founder, but I'm the first employee.
Matt Stauffer:
All right, so you're employee number one. So, we'll talk little bit later about your journey from graduating with a computer science degree to being employee number one of a start up. But real quick, when did you first get into computers?
Abed Halawi:
I was very young. Basically around, I was nine years old, maybe ten years old. And our neighbor had a computer, and I used to go there just to watch them play, they did not allow me to play. My brother used to play, he said. But later on I had my own computer at home, but with no internet, so encyclopedia was our way to go to search for information back then. And mostly gaming. So, we were kids, I enjoyed gaming mostly. [crosstalk 00:11:40]
Matt Stauffer:
What kind of games did you play?
Abed Halawi:
This was my introduction to ... mostly fight games, first person shooter.
Matt Stauffer:
Yeah.
Abed Halawi:
Delta Force and you know these games. Also strategy, like Edge of Vampires, Red Alert, you know the early versions of those. Yeah. But then, later, the reason why I joined or took the computer science path was a bit of a coincidence-
Matt Stauffer:
Okay.
Abed Halawi:
... kind of. Because at first, I was into medicine, so I wanted to be a doctor at first. I went to the university where I started studying that, for a year. But, after half of that year passed, I did not find myself there. I felt that I'm not doing what I'm supposed to be doing. And the thing is, I passed all my exams and passed everything, and I was doing good.
Matt Stauffer:
Sure.
Abed Halawi:
But then, later on, I couldn't feel it. It was just that thing you get at a later stage of doing a thing for a while. Then you say I don't feel like doing this my entire life.
Matt Stauffer:
Yeah.
Abed Halawi:
Mainly because I was interested in neurology and everything related to the human brain and human mind. It has kind of a minor to psychology, that's a side interest. But at some point, I decided to shift majors, and I was looking at what universities are in the area that are close by. Saw a software engineering class, by mistake, basically because I was looking at the different area of courses. There was software engineering and I was like, what is software engineering. And didn't know what that was. I went in, I saw a lot of things that had to do with computers, and I though, well that would tell me how these games have always worked.
What's interesting is that, I'm going to jump a little forward to say that, with computer science, I've found myself finding out about how humans operate, and psychology specifically. More than I think I could have with medicine, because the amount of people who are using technology today can tell you a lot about how it had changed the way we live. It's everywhere. And it has changed almost every industry.
So when you're in technology, it's not only about the code that we write, it's not only about having programs that are written just for the machine to work, but it's more about satisfying the human need. This is the essence of these things. One thing that I had recently a small chat about that has to do with how designers can get to know more about technology, and how technology or developers get to know more about design and maybe do it themselves.
The way I like to think about it is that, designers don't need to know technology or development, and developers don't really need to know design, and do it themselves. It's the bridge between them lies in a different area. It's philosophy, it's psychology, it's the bridge between those two. So if these two areas can learn more about these, I think this will close a huge gap between these two areas.
Matt Stauffer:
You're reminding me a lot of my favorite conference talk I've ever given, which was about empathy. And, I made a lot of the similar pitches, from a little bit different angle than you're talking about, but that understanding people and satisfying people is the best way to be a good programmer is not to know the code better than everybody else, it's to know the end user better than everybody else. And to empathize, both with end users and also, the other developers on your team and the designers and everything like that. I love where you're going there.
I moved from working at a non profit where my job was about people, and understanding people, and helping people grow, to running a company. There's a lot more similarity than I expected between the two, because I'm still working with people and helping people grown and helping people do a good ... so I couldn't agree with you more about that and I love hearing you say that.
Abed Halawi:
Exactly
Matt Stauffer:
So, you're not the first person to say this. One of my most recent interviews, I can't remember exactly who it was, said the same thing of, "You know what, I wanted to figure out how the games work." So that's really fascinating to me, so, you got in, did you find yourself in there saying, "Oh this is amazing. I love this, this is so great." Or, did you get in there and did you have a moment of being kind of dissatisfied where you said, "Oh I thought it was going to be fun and games all the time and all I'm learning is math." What was your actual experience in those computer science classes?
Abed Halawi:
At first, I didn't know what to expect. I did not know what computer science was all about. So, with that in mind, and I started learning by myself on the side. Besides what I was being taught at the university. I was very interested in the field. I did not expect to learn everything all in the first day, right?
So, with that expectation in mind, I started finding out that I'm good at this. It's all about recognizing patterns, right? I really did not care where I'm putting most of my effort, because I know that everything that is being taught and channeled to us as students is to orient us towards having a certain mindset, so that at some point in the future, we know where to use these techniques and methodologies.
It was a bit later in my studies, maybe it was the second year of university that I've discovered that university will not teach you everything. Right? Maybe it was a little late for that, but I knew then that this is not a place that will teach you everything. But what they will do, is teach you how to think about problem solving. How to think about the computer science. And how programming works.
It's just the basics and fundamentals, you don't really need to learn every computer language, and every technology out there from university. They just put you on the path and it's all up to you, in terms of where to go and how to take this further.
Matt Stauffer:
Yeah that's good. So, you did that. Were you having to choose to specialize in a particular type of programming and everything like that, or did you just you got a degree in software engineer or computer science and then you were out in the workplace and had to find something? What was the next big decision you had to make, after you'd made the decision to go into computer science?
Abed Halawi:
It was the second year also, where I joined the company where I used to work, as a support agent. You know, the regular things, tickets, answering tickets, forums and answering the phone and helping people get their job done on the platform. And at some point in there, as I was studying and working a full time job, the technical department had a certain problem they were trying to solve. I was overhearing, I wasn't very involved in their works, but as I was overhearing and it was in the kitchen where I spent most of my time-
Matt Stauffer:
Nice.
Abed Halawi:
... I overheard this problem they were having that had to do with data storage and transferring data from a place to another. I don't really remember the details of that problem, but I remember, throwing out a word that helped them solve it. And then they were interested. So I was working on this Java project for the university and the head of the developers came into the room and saw me coding at work, which I was not supposed to do. So he asked me, "Why are you coding? This is not your job here." And I said, "Well, I enjoy this. I like to do this when I don't have anything else to do." It was then, when he asked for me to join the development team and start learning web development.
It was kind of passive, the way I started learning about web development and the web technologies. But at the same time, I was enjoying doing it.
Matt Stauffer:
Yeah.
Abed Halawi:
I enjoyed programming on my free time. And after moving there, the kind of choice I had to make was which area to fill? Because they had an area that had to do with software programming, installed software programming. And they had a web application programming, which was a portal that involved all the areas of the company.
So this was the administration interface of everything that everyone does in the company. It was going through a revamp. And I had the chance to join the team who was doing this revamp, and I did not know anything about web development. So I started learning there. Right?
It was very tough. That's the least I can say, because back then, I don't remember, there wasn't much courses online to learn from. It was mostly either books or CDs that I'm not proud to say this, but we had to get the cracked version, or the pirated versions of those, so that we can learn.
This was basically my transition from being a support agent to starting to work in development. From there on, it was a regular journey where I continued exploring this realm of technologies. So sort of a front end development, doing a little bit of JavaScript here and there. It was, JQuery was booming, at the time. So I started learning that. I was very interested in animations, on ... so it was some kind of an interest between design and implementation of things. I like to see things move on an interface.
Matt Stauffer:
Yeah.
Abed Halawi:
With JQuery, I had the chance to do it with very easy instructions. That was the catch for me to say, "Well, I'm glad I chose this major. I'm glad that I'm here today. That's definitely how I'd like to spend my time."
Matt Stauffer:
Nice. That's very cool. So you were still in school when you were doing all this stuff? Wow.
Abed Halawi:
Yes. Basically I-
Matt Stauffer:
Did you sleep?
Abed Halawi:
... graduated ... I don't remember doing that no.
Matt Stauffer:
Sorry what were you saying about graduating?
Abed Halawi:
Yeah, so basically computer science to study it here, it takes three years, maybe four, with the regular courses. But it too me five plus, because I was working full time so I started understanding that work will teach me much more about practicality than the university will. But still, I was very interested in topics that were given at the university that had to do mostly with organizing work, anything that's related to diagrams, planning, software engineering, and how to organize the work.
There was many non tech courses that I was interested in as well, that has to do with management too. So I was learning a bit of both types of programming. It was high level where I learned the web stuff, and it was low level, where I learned the theories and everything that had to do with how a computer works, behind the curtains.
It was very interesting. And then I graduated after five years, with three years experience, full time. Which was at the time was, I was very happy to have done that. It was one of the best choices I've ever made.
Matt Stauffer:
Okay. And so, what was the road from there to being employee number one at your current start up? Was there a lot of different jobs in between there?
Abed Halawi:
No not much, actually. There was one failed start up that I founded in the university. They had this program where they opened what they called the innovation center. It was a room for people who would like to build their ideas in there. They bring some students together. And if one of these ideas make it, through certain specified competition that they do across universities here, you have to make it for at least the first three positions. If you did they would invest, not money, but they would invest in helping you push this further.
Matt Stauffer:
Cool.
Abed Halawi:
Which is what you need at the time, right? As a student that's all you need, a place to apply the work, and an idea to put all the code in place. And that's the first thing after the first job. Then there was a job for a year where I also did a lot of web programming. I learned a lot of Linux there, because I was handling also system administration.
Matt Stauffer:
Okay.
Abed Halawi:
And then, after that, I was here where I am today. It was interesting because when you're joining a start up, there's merely any guarantee that this is going to work.
Matt Stauffer:
Right.
Abed Halawi:
There's merely an idea based on a certain gap in the market. And I can easily say that this has been almost six years. It will be six years in October. And I can easily say that we've pivoted a lot through out these six years, and it's been the best six years I've ever had. From personal and technical, it wasn't only technical, because when I first started there I was the only developer, and most of my time I was just coding. But then things started to grow. And as a company it started to scale.
At the beginning we were doing services, so with services you get exposed to a variety of types of projects. There were mobile projects, there were web projects, and there were things in between as well. So this variety created a lot of needs for the team to grow.
As the team grew, my role expanded as well. So I had to occupy a larger gap in the team, and cover not only technical and coding, but it was mostly organization and management to take over. This was a real, I don't know what's the biggest word than challenge. I would say more than a challenge. Because, as a developer all you like to be doing and spending your time doing is coding. But then, if you code and not know where this code is going, at some point these things get lost. So we need to organize things.
And what's interesting is this led to creating the Lucid Architecture, because as much as there was chaos in the development process that we were implementing at the time, we had this huge need to organize things, not only from personal and communicational perspective, but also in the code itself. We had so many projects running at the same time and every time we switched between the project and another, it felt like going from one country to another. It felt like you were looking at something that's red and then you're looking at something that's yellow, and then that's white and then that's black. It's a huge difference between those.
So, this was the inception of Lucid, where it tries and makes sure that all these projects are normalized.
Matt Stauffer:
So you felt some kind of chaos, you're switching contexts a lot, and the contexts were different enough that it felt too chaotic and you had to relearn each one. So you created something that applies more of a standardization across projects than what MVC provides. You said, "Now when I entered a new project, and obviously it's much more complicated than this but, I know that every single web request will be serviced by a single feature or job, basically." And you were trying to make it such that on every project it uses the same architecture.
Abed Halawi:
Exactly.
Matt Stauffer:
Have you had the opportunity to use it on a pretty significant diversity of projects, or is it still something pretty new for you?
Abed Halawi:
We're currently using it, so we are implementing microservices, and with microservices, each service we have is a Laravel installation of the Lucid Architecture itself. We currently have around 48 services running at the same time, so you can easily say that we've implemented Lucid in 48 projects.
Matt Stauffer:
Right.
Abed Halawi:
So far and they're in production-
Matt Stauffer:
Are those 48 all serving the same primary product, which is the influencer related stuff, or is it a whole bunch of different products that are all offered to influencers?
Abed Halawi:
These 48 services are in the same product.
Matt Stauffer:
Okay.
Abed Halawi:
It's the SAS platform that we're building. On the side we have some side projects that we use internally, that they're also based on Lucid. I would count two or three are currently running, and they are all in production in life.
Matt Stauffer:
I am going to ask-
Abed Halawi:
So we're pretty confident-
Matt Stauffer:
No, no, you're good. It's a little bit of lag. I'm going to ask you a few questions about Lucid. I can tell you're confident, I can see it in your face and hear it in what you're saying.
So, since every single controller method, all it does is it just serves one of these features. A feature is then meant to specifically parse the request, which I assume it gets out of the application container, and also return results. Is it safe to say that a feature, or maybe a job, let's say a feature for now, is the same as a controller method in terms of its scope, in that it takes an HTTP request, and returns and HTTP response?
Abed Halawi:
It is exactly that.
Matt Stauffer:
Okay, so, it's obviously more complicated, but the simplest way to think about it is, when you're thinking about those 200 line long controller methods, pull that thing out and make it a class. That's the first step.
Abed Halawi:
One class.
Matt Stauffer:
Yeah, so it's very interesting because I gave a talk at Laracon US that talked about, among other things, quite a few code patterns for how to simplify your 200 line long controller methods. I didn't talk about Lucid, but I talked about things you can extract, so that those things in there are pulled out into individual classes. What I kind of recommended more at that point was, well here's a way to simplify the response part, using a custom HTTP response, or something like that. Here's a way to simplify the input part, by using custom HTTP requests, or something like that. Here's a way to customize the database queries, using repositories or whatever else.
So I'm super interested to take a look at this and try it out. Are there any open source projects that are using Lucid?
Abed Halawi:
I'm not aware of any. An open source project as in a full Lucid project that is currently operating and is online with it?
Matt Stauffer:
Yeah, like if somebody wanted to go see what it looked like, to use an actual functioning application using Lucid?
Abed Halawi:
There's definitely an example that is on the Github repo. There is work being put into having video tutorials that can teach Lucid in depth. But having a Lucid project online as an open source means, basically that you're exposing the whole project, so that's interesting thought. I'd definitely like to go in something like that.
Matt Stauffer:
At Titan, we have a whole bunch of ideas that would never make any money. But we just like to provide them as a service, and so we open source their code. So if you one say, "You know what I'd really like? I'd like a website that does X, Y, and Z for me." And you know only 500 people would use it. And those 500 people would never pay any money for it. Or, maybe they'd pay $10 a month for it, but it's not actually worth trying to do all the marketing. Maybe that might be an opportunity for you guys to actually have a real functioning website, that has real users, that has to service real user requests and everything is completely transparent.
Because I think that's one of the most interesting ways to have these conversations, and to expose our internal ideas to the world around us. And really let them up to the light of criticism outside of our own organization. We have some ideas at Titan that sound good, until they get exposed to the outside air. And I'm not saying that's going to happen with Lucid, but that is something that has been super valuable for us.
Abed Halawi:
I would love if that would happen, actually. That's a lovely idea. I'll definitely invest into that.
Matt Stauffer:
Cool. Well if I ever have an idea I'll throw one your way. But I would say that would be a good selling point for you guys in Lucid to be able to have something like that, that people can really see.
This isn't the Lucid interview, as much as I'm interested in these things, so tell me a little bit about your time working with start up. You said when you got started there, you did client services, what I assume by that is you were a consultancy, people hired you to build products for them.
So I have a couple questions. The first question I want to ask is, what changes happened to your text stack over the years? When did you come across Laravel? And what aspects of Laravel made you most interested in using Laravel when you decided to use it?
Abed Halawi:
I first started using Laravel when it was Laravel Three, version three-
Matt Stauffer:
That's been a while man.
Abed Halawi:
Yeah, that's a long while. What's interesting is that the project that we built back then was shot down a few months ago, so it was still running until today. That's what makes it, yeah, makes it very interesting. The thing that got me about Laravel was, I can easily say it's the documentation at the beginning. When you read the documentation, you literally understand how much potential this framework has, and how much you can open up and build on top of that. It's easy to start with. We started this project, it took us two, three months and we were up with an administration interface for multiple websites that we had for different clients.
That was when we first started Laravel. The text stack back then we Laravel, MySQL database with regular Apache web server, and later on we had this project where it was a publishing platform. This was the first pivot in the business model, so we stopped doing services and then we shifted into building our publishing platform.
And with that, there was also ideas about user generated content, and actions that users can take on content published by celebrities. From our services that we've done, we've built a lot of the user network of celebrities that are A class in our region. And from there, we thought, let's build a platform and join them all together where they can have official news and posts that can also integrate with social media, and have people join that platform as well.
This is where the first search for a database that can really mimic what the social network would be in data. That was where we discovered Neo4j. This is where we started building the outcome, so that we can build that platform, and we did, for a while and then we figured, that's not really the gap in the business. We were just doing that because we thought it was the point of entry into the entertainment business.
But then we also pivoted that into a SaaS, a platform where we can gather data from social media, because if it was for marketing it was booming these days. Especially in the region, it came a little late than we predicted. So we knew this was coming very soon. We thought why not build a platform that can bridge all of this.
This was the second shift. This was also the shift from a monolith, a single application, single code base, into microservices, which was a completely different set of challenges that we were facing. Things that we took for granted, like networks, and connections, and discovery services knowing about each other, and communicating between applications. This was taken for granted in a monolith because you don't really have these problems. But once we shifted to microservices, a huge new set of challenges just popped up. We never thought we would have these.
And we had a lot of trouble getting around with these tools because we were not experienced in that area. So we had to learn a lot before we could do it, as we do it today. I wouldn't say it's the right way-
Matt Stauffer:
Sure, sure.
Abed Halawi:
... it's just we're doing it and it's working right?
Matt Stauffer:
Yeah. I hear that. We're getting close to time and I want to make sure that I've asked all the questions I had. Oh, tell me a little bit about Lebanon, and tell me a little bit about Lebanon as a developers, and tell me about Lebanon as a Laravel developer.
Abed Halawi:
All right, so Lebanon in general, is this small country that you can barely see on the map, let alone Beirut, if you were able to spot that on the map. So it's a very small country, but it's faced a lot of political stuff happening, going around, wars and internal civil wars and then people not liking each other politically et cetera. So this is all going on, even though all of this is happening, the tech community managed to ... well the start up and entrepreneurship communities managed to rise from all of this that was happening.
There are certain areas in Beirut where they are dedicated to provide as much as they can, have the humanities to run any idea you have, you can rent, just like any accelerator, or an incubator program. There's plenty of these here today where we can rent a small desk and do whatever you have to do from there.
Internet connection was a huge problem, it's becoming much better now a days. If this was to happen a couple of years ago, we maybe couldn't have done this at all. Due to the internet connection, but now a days it's become much different. As a developer, there's plenty of talent in here. We enjoy sharing the knowledge, sharing everything we can get from abroad and from here, from each other.
The only problem is that there isn't much people in here. So, it's a double edged sword, right? Everyone knows everybody, but it's the same people that they always see at the events. You don't really get to ... you know this networking time, that you get in conferences, you don't really get to network. We know each other.
We try to go abroad for these, more than doing it locally. But at the same time, when we were first starting, there was no community. We did not feel that there's this connection, this circle of people that are trying to build something together. Build a hub of knowledge, hub of experience that they can share among each other.
But now, what we're trying to do is tighten the, or strengthen the connections between these people so we can build the more full circle that can incubate everyone in the community as much as possible. And show whoever is starting to get into the technology or development that there is a place for them here. We don't really need to go and work abroad, we can do it from here. We're trying our best to do that.
As a Laravel developer, there's plenty of people who are using Laravel nowadays.
Matt Stauffer:
Okay.
Abed Halawi:
We gather, we talk a lot about what we do, differently in Laravel, and we talk a lot about how eloquent it is ... exactly. And the way that we can write code and we exchange a lot. We try to provide a lot of open source to each other, open source libraries, and tell each other, well I've written this small script, why don't you use it? Because we know each other, we know what we're working on, right? If we find a common interest, one of us would contribute that and provide it to the rest.
So it's a very small community I would say, but it's very interesting because it's still sustaining. For almost six years now, it is sustaining and is growing.
Matt Stauffer:
That's really cool.
Abed Halawi:
So I find it, yeah, I find it really cool here to have, I mean for anyone who knows Lebanon and knows how many people there is here. To find this, that's amazing. That's all you need. You don't really need to have much more than this. The only issue in here, is scale. We cannot apply what we work on at scale.
Matt Stauffer:
Got it.
Abed Halawi:
And we cannot scale what we work on unless it's provided internationally. And to go international from here, it is really tough, unless it's a branch of an international company that is working here, but provides the business from abroad. It is really not much room for you to scale, compared to other places. That's the only drawback.
Matt Stauffer:
I did not realize how small it is, because Beirut has a similar population to the very small feeling town that I live in. And I used to live in Chicago, which has, I think it's two and a half million people. And Lebanon entirely has six million people. So I now understand what you're talking about, scale wise.
Abed Halawi:
Exactly.
Matt Stauffer:
How far of a drive ... I assume Beirut is kind of like the technical center. Are people coming into Beirut for a lot of meet ups and stuff like that? Is that even that far of a drive?
Abed Halawi:
It's not far. I mean, it's relatively far, because of the traffic, it is way too far man. But if you were to just measure the numbers you would say, well that's, to you, that's not even a drive. It's just a walk.
Matt Stauffer:
What's the furthest somebody comes into Beirut for a meet up or a conference who lives in Lebanon?
Abed Halawi:
No, they do. They do, they do come from-
Matt Stauffer:
Furthest drive, is it an hour, is it 30 minutes is it 5 hours? What's it look like?
Abed Halawi:
Five hours? You would be in a different country.
Matt Stauffer:
That's what I thought.
Abed Halawi:
But-
Matt Stauffer:
It's a couple hours max.
Abed Halawi:
... it's a couple of hours drive.
Matt Stauffer:
Okay.
Abed Halawi:
Well, what's interesting is that we have this, an institution, a small institution called SE Factory. SE standing for Software Engineering Factory, which where they teach Laravel to graduating students.
Matt Stauffer:
Really? That's really cool.
Abed Halawi:
Yeah. It is. The more interesting thing about this is that people come to Beirut to study this, on a daily basis from 9:00 in the morning until 7:00 at night, and going over two hours drive from their country towns.
Matt Stauffer:
Wow.
Abed Halawi:
Yeah, it's a long drive and you have no idea how draining to energy it is to go through all this traffic on a daily basis, to be able to learn this.
Matt Stauffer:
That's the first group I've ever heard of that is teaching Laravel as a part of a code school. I'll ask you for the link later and I'll put it in the show notes for everybody. SE Factory. That's really fascinating. Okay.
Abed Halawi:
It is.
Matt Stauffer:
I've one last question for you, and that is, what is the best book that you have ever read. It doesn't have to be about programming, just a book across the board.
Abed Halawi:
Oh yeah, that's a very interesting question because my favorite book is the one that was given to me by the Laravel community when I went to speak at Laracon, we had a dinner, before that. They gave us all books, and it was Godel Escher Bach, which is the book that bridges so many topics. It's between art, and science, mainly and music of course.
This is a book that really manifests how I like to think about technology nowadays. Again, it's not about just coding. It's more than that. It's about understanding, well there's a lot of creativity in there to be put. There's a lot of potential and opportunity for someone to expend and to put their all into this and make something out of it.
It's endless. The way that these areas were immersed together in this book is fascinating. You just get to see that philosophy, music, and science, they're all in the same place. And how they bridge and share the same fundamentals in terms of creativity, it was very interesting.
Matt Stauffer:
I'm reading through the preview on Amazon right now, and it's definitely triggering some ... I studied English Literature in school, there's a lot of philosophy in there, but I was as a technologist while I was there. It's definitely, just reading through some of the basic intro stuff here I'm going okay, this is both scary and exciting in seeing those things. But this is super intellectual though.
Abed Halawi:
It is.
Matt Stauffer:
At least it looks like it is, okay yeah.
Abed Halawi:
Yeah and you would feel, after you read this book you would feel like wow, that's a lot that's happening. I'm in a field that's much bigger than I thought it was. It's not the infinite statements that I've written. It's much more than that. That's what makes it more interesting.
Matt Stauffer:
This is fascinating. Okay, well I'm putting a link to the book in the show notes. It's Godel Escher Bach The Golden Braid, or A Golden Braid or something like that.
Abed Halawi:
Yes.
Matt Stauffer:
An Internal Golden Braid.
Abed Halawi:
An Internal Golden Braid.
Matt Stauffer:
I will link that in the show notes. Well thank you, I'm really happy. I'm very pleasantly surprised that it was not a programming book, and that was very good. Well we're past time, so I have to cut, which I hate doing, but I have to do. So if people want to follow you or if there's any other last thing you want to shout out or something like that, how do you want people to kind of, what's their one take away? Should they follow you on Twitter? Should they go try out some product? What do you want them to do?
Abed Halawi:
Sure, so on Twitter, that's one. On Github, that's two and it's the same identity all over the place. It's Mulkave, that's the username that I use everywhere. So if you look up Mulkave on Google, you'll get all my contact mediums and everywhere. There's also the tech blog of Vinelab, where you can find the introduction to also Lucid and stuff we do at work here. Which could be interesting also to look at.
Matt Stauffer:
Okay. And I'll link all those in the show notes. I do have to ask, what is Mulkave?
Abed Halawi:
Oh, well, I told you I was into gaming when I was young and there was this game, about vampires.
Matt Stauffer:
Okay.
Abed Halawi:
And there was this clan of vampires that are intellectual they're called the Malkavian. I found the introduction of this clan, and the people in this clan, to be very much matching my personality and character, so I thought well, I'll just choose that. One day I had to choose a user name, and so I was like Mulkave, whatever [crosstalk 00:51:18]-
Matt Stauffer:
The best user names are ones where you know that forever you're going to be able to get it on any social network no matter what. So I like it.
Abed Halawi:
Exactly.
Matt Stauffer:
Awesome. Well, I really appreciate you taking your time to talk to me.
Abed Halawi:
Thank you very much.
Matt Stauffer:
People who don't know, we have never met before, and I asked around, I said hey I want to meet people in different communities, so Abed was recommended to me and we had a chat a couple weeks ago. I said yeah, this is definitely someone I want to talk to, and it was a total pleasure. I really appreciate it and thanks for your time man.
Abed Halawi:
Thank you very much for having me on this podcast, I really appreciate your time as well. Thank you.
Matt Stauffer:
(music)