Friendly Show
Yaro and Adrian are online and conference buddies that enjoy speaking about development, tech, SaaS, and product development.
Let's be friends!
Friendly Show
🇧🇬 BalkanRuby: Radoslav Stankov does not need Hotwire ⛔️
One more cool cat from BalkanRuby!
This time we talk to Rado ex-producthunt head of engineering, building his own product - AngryBuilding.
He is the only developer and has a team of non-devs doing business stuff.
He kindly reminds me that you don't always need reactivity, and full-page reloads are good. Enough for many B2B cases!
You can learn a lot from Rado about building businesses with Rails.
His new startup: https://angrybuilding.com
Slides from his conference talks: https://rstankov.com/appearances
P.S. Sorry for the sound quality on these - we are still experimenting with studio recording 🙃
hello friends. We are in sofia, bulgaria, visiting the belgium ruby conference, and today with us we have uh doslav stankov, who used to be the cto in product hunt and now he runs a company named angry angry buildings. So welcome to the show. Yeah, thanks for having me so tell us how.
Speaker 3:How was it at product hunt? What, what, what did you build there? How is it to be like that? Yeah, I mean.
Speaker 2:I was one of the early engineering guys. I spent eight years at Product Hunt and after our acquisition to AngelList, the team kind of some of the team went to AngelList and at some point they needed to rebuild the team. And that's the moment I become the head of engineering there and I started having the whole how to basically rebuild our engineering team, I mean not from scratch. We had like two, three people and for four years I was the one who was doing the all the technical management of the engineering team there, I know that AngelList uses Ruby.
Speaker 1:Yeah, and does ProductHunt still use Ruby?
Speaker 2:Oh yeah, so the architecture of ProductHunt was? It started as a traditional Rails app with Backbonejs in the frontend, but it still uses Rails, but it uses Rails for a GraphQL API server that powers Nextjs front-end application. And again, the architecture of Progvent evolved in the eight years I was there.
Speaker 1:Of course, okay, and now you're running Angry Buildings.
Speaker 2:What is this? So Angry Building is a facility management software. So this is the software where the people who manage the building so in Bulgaria we have this concept of domov pravytel. This means each building is like a small company and the building people pay taxes for living in that building and those taxes are actually, it's called like fees. Those fees are used to maintain the building and they have to say, oh, when with our roof starts leaking, okay, we are taking from these funds money to repair, the funds we are paying for cleaning. Uh, if an elevator breaks out, who is the person responsible for having the maintenance of this building? So I'm building, we are building the software for, uh, managing this process, because having individuals do that is doable, but to start to become the most hated neighbor and there is a lot of companies that can better do that for you and we are making the.
Speaker 2:Basically, there are ERP systems that they manage everything in those processes from one end and on the other end, everybody who lives in the building actually can download an app and actually can see, oh, who is not paying their fees, how much money is the building have, how much? Where are all those money going like? Because every person cares about saving money. Yeah, I mean, they're like why I'm paying this. Yeah, where are my money going? And the third thing is I have an issue who do they call? Yeah, what should I do? And we start from this problem to kind of build this system and our goal is, in couple of years, to rebrand as happy building, because to achieve the goal, and how big is the team?
Speaker 1:as I understand, you have just one engineer yeah, so it's me.
Speaker 2:Yeah, yeah, managing, managing, I'm gonna managing myself. Yeah, so it's me. Yeah, one CTO. Yeah, I mean, we have one CTO. Managing the Managing, I mean I'm managing myself.
Speaker 3:You have the best boss right?
Speaker 2:Yes, I mean, I actually have a lot of difficult conversation with me.
Speaker 2:But, yeah, the team we have right now five people. So we have one of my co-founders she is coming from sales and we have another salesperson. We have marketing and support person and we have like a visual director for like the branding and all that stuff and because of the business is very it turns out like we didn't plan it to be like that. I was dreaming onboarding like people filling up web forms and I never talked with customers, but it turns out because we're making a business software, we need a lot of in-hand experience all phone experience and support and sales, so it's a lot of b2b sales and we those people are very important for that part, and when would you consider hiring another developer?
Speaker 1:select your two engineer company when I can afford it.
Speaker 2:That's the simple answer when the business actually can afford another engineer. Uh, I once I actually hired the consultancy company to do a couple of integrations because I found out that if I needed to learn the things that we were integrating with, it would be more money and I'm going to lose clients maybe for this. So at that point I hired one help here and there. But yeah, the goal would be when I can afford it.
Speaker 3:One question I have like in your talk you speak about, you know some very cool things like. This is how we prioritize things and this is how we figured out that, the things that are important, that we fast track. This is how we figured out. Like you know, on Fridays you said that you're fixing bugs. Where do you get the time, or do you take some time, to analyze the processes like, and the things that are happening and like?
Speaker 3:okay, I should maybe think how did we? How did we work like this month I do, can we?
Speaker 2:improve something, or I do this all the time, like I'm constantly this is in the back, like this is a professional defect, or when I was a people account, yeah, one of my jobs was to find processes and kind of seeing patterns. I always said my job there was to remove friction and make the operation run smooth. And I just noticed stuff like that and I'm doing a lot of talks, I'm doing a lot of writing and I'm trying to see because, again, a lot of the time I'm working alone, I need to put stuff into words in order to have something feasible to think about. So I a lot of the things were happened naturally. A lot of the things happen because experience, some of those things are discovered and some of those, oh, I actually realized this is how I prioritized it.
Speaker 2:It's like like the Friday thing was it happened? Very naturally. We say, okay, I don't want we have an office, I don't go there. I work in the coworking upstairs, like actually, my desk is over there above us. I work here because I don't want to be disturbed if I'm in our company office where we have clients. When it says I would be like very unproductive. So I say, okay, every Friday I'm coming and let's have this meeting, and this meeting is not very structured, it's very messy and it's a lot around. What's the hottest thing on your mind, like, for example, somebody on our support was complaining oh man, this is so hard. It's so hard about that, okay.
Speaker 1:I would fix it.
Speaker 2:Or this is the moment when I'm talking with our salesperson and then he was like, okay, I will fix it. Or this is the moment when I'm talking with our salesperson and then he was like, okay, I cannot make a sale because those companies are having all their data with one of our competitors and they have like five fields of data. This is a big blocker for us to sell there. And I'm like, okay, let's rewrite the importer that can import. And he was like, is this possible? Yeah, and he was like jaw drop. And I was like, yeah, he's like why? And he was like, why don't you tell me earlier? I'm like I didn't know this was a problem and this is all those things we are kind of like doing in this part.
Speaker 2:And because Friday is not going to my productive day, this is the time all those maintenance things which I know them are very important. Like at product, we had something called bug duty. In the end, like we experimented a lot with things, but we had this process called bug duty where engineer on the team during the sprint work, one engineer would be basically the bug fixer. So we put them out. So they are if there's an emergency, if there was like a bug tracker and a lot and I noticed that a lot of stuff got accumulated. But if you just clean up time, that's time to time, it's easier over time yeah, I have a different question.
Speaker 1:Yeah, what is your front end stack?
Speaker 2:uh, angry building? Uh, all right, so the front end stack or angry building right now is I use the basic rails, or, at angry building right now is I use the basic rails, I use tailwind. I actually bought tailwind ui to style that. I don't have almost any custom css on the javascript front I don't use. The only javascript external library I use is the ugs rails and the ugs with zero dependency rails for, like post action lights, both submit and all of that data helpers, and I just have customly written javascript for the everything chaos. And everything chaos is not that much, it's like I show it in the slides, I just make a grip and it's like, uh, one thousand to twenty lines.
Speaker 1:It sounds like you're using the rails six and you don't use hotwire I'm.
Speaker 2:I'm with actually, I don't know what's the latest version of I'm with it. I'm like latest rails, but they don't use any hot wire, any stimulus, just because I actually don't need them. Like they add a lot more complexity to my problems, uh, complexity to my publication, which I don't need at this point in the moment. It's not something I'm saying no because they're bad technology for I don't like them. It's just because they won't add any value to my customers and my app looks like a single page app, like I was showing somebody oh, this is this. Oh yeah, that's not nice. Who use this? No, it's just full page reloads because I use Tailwind. Tailwind just gives you one small CSS file. I have a thousand line JavaScript. How fast is that? I actually don't even have, like, google Analytics in the main app. I don't need it. So it's actually really fast to actually render the data. So it looks like a single page app in a lot of places. And, yeah, I have one place.
Speaker 2:I actually use Ajax because we have one of our killer features. Surprisingly, none of our competitors have that. It's like only search field, where somebody is calling you on a phone. You enter a phone and you can see this is the customer, this is the apartment, this is what they own and this is the only more stuff I need. But it's like a simple only search and I use a lot of html. Uh, goodies like, for example, I'm very big master of the summary html tag where with summary, you can open, close it, you can style it like. My mobile version is like. It has this button and it's just a summary and styled with that. I don't need anything more and I use the dialogue and I use a lot of that. So that's the reason I my front-end stack there. It's very simplistic. In some ways it's not the best UI, but works.
Speaker 1:Great thanks for joining us for this mini episode and maybe someday you will join for a full episode sure, I'm always glad to talk about me friends, thanks for watching. Thank you see ya.