Leaving the Sinking Zazuko Ship

After almost 9 years, I left Zazuko, the company I co-founded, for good at the end of June. Like I share my open-source libraries with you, I was hoping you could benefit from the lesson I learned about how a dark triad personality ruined a company.

How it started

In 2014, I got contacted by the later CEO because of the work I did in the JavaScript RDF world. He was very charming and said many nice things about the projects I was working on. That was a good diversion from the job I was about to leave. The company I was working at that time was very conservative and not the best place for forward-thinking and creative people. He got straight to the point: He wanted to found a company and asked if I would be willing to co-found with him. As it would be only a side job, I thought I wouldn’t risk much. According to him, we would do some customer projects, but I could mainly work on my open-source projects.

The reality was a bit different. We didn’t have a product strategy, but as CTO, I took care that the tools developed in the projects were reusable, that they turned into a consistent toolchain, and that we could use them long-term for products. The tools were based on software I developed earlier or forged in my spare time. Maybe you have heard about some of them before:

  • Trifid was a SPARQL-optimized version of LDApp
  • Barnard59 was derived from the pipeline code I wrote for my protein binding machine learning project
  • And Hydra-Box continued the work on hydra-middleware.

The work on the tools was paid work, but without using them for my own projects in my spare time, they would not have reached the battle-tested state. I also continued the development of RDF-Ext and related packages in my spare time. Only now and then have I fixed small bugs as part of the paid projects. That was OK for me because I saw it as an investment in the company and brought us to a leading position from a technology perspective. And once we have made enough money, I would be able to work paid on research projects. I left my main job in 2018 to work full-time for Zazuko as we got a bigger contract and enough paid work. We continued like this, but in small steps, we made more money. During my Christmas holidays in 2020, I prepared a prototype of the stack I wanted to implement. I showed it to the CEO in early 2021 and asked to allocate some time for me to work on it as we finally had enough money to head toward a product strategy. And with around ten people, there were enough possibilities to shift project work to others. But 2021 became a very complicated year. I was by far too busy working on projects to work on the planned stack and even reduced the time I usually invested in RDF-Ext. Also, the absence of effective leadership at the CEO level presented challenges for my role as CTO. While most of the time, people in the company tried to pull together in the same direction, sometimes some ignored the bigger picture and created some island solution that didn’t fit the rest of the ecosystem. At some point, I was not able to do my job anymore, and I didn’t want to take responsibility for a role I couldn’t fulfill because the CEO didn’t do his job. I gave up the internal CTO role and only continued the role for external activities. That was around autumn 2021. During that time, we also discussed the product strategy and the company’s general direction. Cashflow issues emerged. That went so far that we had to warn the employees that it could be possible that salaries in December could not be paid. I felt ashamed because I thought it was also my responsibility. I was working overtime, going through all projects, looking for tasks that could be billed short-term or where I could help others remove any blockers. Luckily, the salaries could be paid. At the beginning of 2022, I told the CEO that I didn’t want to continue like this and that I would not work more than 10h per day anymore, and on average, it should be closer to the working hours in my contract. I didn’t get much of a response. But the big surprise came a few weeks later.

He and a colleague showed some kind of product strategy in an internal presentation. All employees attended, and the co-founders were not informed about any details beforehand. It was about the data catalog that was tailored for a customer and should now become a more generic product. I don’t remember if I didn’t say much or anything at all, but I was confused that they picked that piece of software. The company didn’t have the developer resources for it; it would require external funding, and I was totally not interested in that product idea. But I was really shocked by what he said when he ran out of arguments after some colleagues challenged the product idea: “I know it better than you because I was working on this project for 9 months.” We were almost not able to pay the salaries; I was working overtime; we had a product strategy discussion during that time, and he didn’t say anything? He only told us co-founders once that he would prepare a demo for the Estes Park Group two weeks before that presentation. I couldn’t believe what I had heard, so I started investigating. I found a weekly meeting in his calendar where two other colleagues participated. It started exactly 9 months earlier, and the description said that it was a sync call for a dogfooding initiative for the product inside Zazuko. I checked the billed hours for the two colleagues. Both were working about half a week on a customer project, but there was almost nothing for the rest. So, I had a look at the code repository and found many commits, mainly for the time they were not working on the customer project. Also, the code was more like a playground, not even a prototype state. It would have included some ideas that could be useful for other projects, but it was not implemented generically enough, and the code base was too monolithic. I asked the CEO if they were working on other projects, hoping that I got something wrong, but I only got a rude response that I should check the booking system myself. That’s what I did before. Realizing that I wasted a lot of time so he could finance a project behind the back of the co-founders was just too much for me. Normally, I know my limits when I work overtime, but this triggered a temporary hearing loss. Now, the money for a desperately needed and viable product strategy was gone, my personal investment into the company to do research projects was obsolete, and the trust in our CEO was lost.

Dark Triad Personality

Before I continue the story, let’s go back. Early on, there have been problems. Once our projects got bigger, obviously, mistakes happened. I noticed very quickly that the CEO was not capable of admitting he made mistakes. And if one pointed him to a mistake he made, you could hear a list of fallacies, including those where he verbally attacked others. Constructive discussions were very difficult. The usual way to handle this was to generalize the problem to a point where he thought it didn’t refer to him anymore and frame it as improvements for the company. That was time and energy-consuming. Initially, that was only a problem inside the company, and the extra work was done unconsciously. But it also happened outside the company. But even worse, he is intensively seeking attention. Those factors combined are poisonous. When he picks up a very controversial opinion, he has no problem publicly saying it. If you think you heard this before, yes, this is a rough description of a narcissistic person. That can lead to a lot of problems.

I remember one incident very clearly. It was the first time I saw it happening in public: At the ISWC 2017 in Vienna, after a talk, some people had further discussions. He joined there and said that “Wikidata learned to use RDF the hard way.” He said this when right in front of him was an early member of the Wikidata developer team. That person was obviously not happy about that claim. I was standing next to our CEO and felt so ashamed. The German language has a special word for such a situation: Fremdschämen, which means that you feel ashamed for the behavior of another person. He could not say sorry or that he said something wrong. From his perspective, the Wikidata guy just got it wrong. I knew it better because earlier, we had a discussion where I mentioned Wikidata’s truthy vs. full statements and noticed that he didn’t get that full statements are also represented as RDF triples. Afterward, he didn’t have very nice words for the Wikidata guy.

In 2019, at the W3C Workshop on Web Standardization for Graph Data, there was a track for the EasierRDF initiative. A big part of it was about handling RDF data in JavaScript. That track was based on discussions that have happened before in the mailing list and on GitHub. I agreed on the main topic that there is a need to improve but disagreed on many details. Again, he picked up that opinion, made it his own, and articulated it in an inappropriate way. The final act of his show was leaving the room noticeably before the track was finished. He was very proud of this, and I was challenged again on how to act at such an event, participating together with the CEO and co-founder of my company.

Social media is also not safe from his attacks. In July 2022, he asked about the status of a paper he handed in for the Semantics conference. As it turned out, his submission ended up in the old system from the previous year. It was handed in via the same URL path as last year. Just the year in the subdomain was changed. But the URL path changed that year. His reaction to that: “…that’s where google lead me and it even says 2022. So I would say that’s an error on your side”. I got the hint to check the Google index for the page. The page was not indexed, and I could not find the URL on any search engine. After a few days, the page showed up in the index. The tweet probably triggered the crawler. I guess he actually visited the old page and just changed the subdomain. For sure, it was not that good that the link worked, but if there was an error, then it was on his side and not the organizers of the conference.

He did that not only outside the company, but he also showed such behavior inside the company. For example: We managed all our files in GitHub. Sometimes, that didn’t fit, and non-developers, like project managers, also preferred other ways to handle documents. Also, only email and calendar were integrated, but not the video conference and document system. It is worth mentioning that the email and calendar system had bugs with no workarounds available until I left the company. That’s why multiple people ask for a workspace solution like Google Workspace or Microsoft 365. He wanted to stick with the old and buggy solution. His response to that request was literally: “Only over my dead body.” I don’t need to explain how “fruitful” the further discussion was.

He also had a very strong opinion on how useless booking hours for non-billable hours is. He used all kinds of fallacies, arguing against it. That meant we could never know the full costs of a project, and obviously, creating offers was like walking in the dark.

There have also been intersections of internal and external issues. Once, he got an input file for a data pipeline, and his task was to finalize it. I implemented the data pipeline earlier in the project on a much smaller subset of the final data. We had weekly calls for that project, and for a month, he said he was working on it, but he had some small issues. Each time, I told him to come to me if he got stuck. One week before the planned test day by the customer, I got sick. While I was sick, he handed the project over to me. The customer shifted the planned test day. I don’t know what he communicated to the customer, but he said that it was postponed because of my sick leave. After I got back, multiple issues were reported, but no test data was provided. The first problem was something that looked like a memory leak. As there was only one input file, I removed the loop around the list of input files in the pipeline logic. A typical developer debugging process. Reduce the code to the minimum to narrow down the problem. And that fixed the problem already. Looks like he never tried that. The new data also required some updates in the mapping logic. I spent most of the time creating subsets of the input CSV we got for my tests. He could have prepared that, but it wasn’t. In total, it took me three days to get his work done. He claimed to have worked on it for more than a month. Based on what I got when he handed it over, I guess it was not even half a day of work he did. Obviously, I didn’t tell our customer what happened to avoid the impression that our company works unprofessionally.

How it ended

Now that you have an idea of his dark triad personality, we can go back to the story of the data catalog project he was running behind the back of the co-founders. After the all-hands call, we had a board meeting where he was confronted that the co-founders should have been informed about such activities. He didn’t know I was aware of the weekly meeting and the code commits. He said it was not 9 months but a shorter time. I think initially, he said 6 months; in the next call, 3 months, and then he denied that any work on that project had happened at all. But he wanted to look for funding. I was not very happy about it. The other co-founders wanted to let him try, also with the intention that if he failed outside the company, the project would hopefully also be dead for him. Luckily, it failed, not because the project would be dead for him, but when I looked into the document he handed out, it contained company numbers of which I was not aware. I asked him for the base of the numbers but didn’t get a response. I guess the numbers were totally made up and could have caused legal problems at some point. But the project was not dead for him. He just acted more irrationally and impulsively than before. At that point, I told the co-founders that I wanted to get rid of my shares because the CEO was just doing what he wanted to do, and it’s not worth the trouble.

We did not really move forward on that topic, but in the meantime, something else happened. While I was working on a project, I searched for an older project on GitHub that contained some similar logic that I needed to implement. I couldn’t find it, as well as some others, and I noticed that I was not able to access repositories, which were for sure not deleted. Other colleagues were able to access them. After some more investigations, I noticed I’m no longer owner of the company’s GitHub organization. I asked the CEO if he did that, and he confirmed it and justified it by saying that I had moved a repository from the company organization to my personal account. Remember that I gave up my internal CTO role about one year earlier? In that context, I also asked to move some repositories that I created in my spare time and also exclusively maintained in my spare time. That included the one he was referring to now. I got the OK from him a year ago and moved it months before he complained about it. The repository was not even created in the company’s GitHub organization. There was a separate organization for personal projects, and it was moved to the company’s organization later. Even without his OK, legally, it was always mine, and I never handed over any rights. He insisted that I had to move it back and didn’t want to give me back my rights. That meant that for many tasks, I had to ask colleagues to search and copy stuff for me. That caused a lot of extra hours my colleagues and I had to spend, which were not billable. At the time, cashflow issues emerged again. The employees had been warned, just like in the previous year, that it could be possible that the salaries in December could not be paid. But he didn’t care that I was not able to generate more billable hours. His ego was worth more to him than being able to pay salaries. At that time, I also requested multiple times to have a board meeting. As I was a shareholder who held more than 10% of the company, it would have been his legal duty to organize it.

At some point, I only wanted to leave all this behind. The other founders also wanted to get rid of their shares, no matter how. The story came to an end, just as it had been running for years: One week before my long-planned holiday, on Friday, he received the purchase agreement for the shares of the company from the notary. He wanted to have a look over the weekend and forwarded it on Monday and said everything looks good from his perspective. There was only a small amount of information that we gave him, like a bank account number, but he didn’t even check that, and obviously, there have been copy errors. There was also another obvious error in the contract that he missed. Our contact information was also missing, but he said on Monday that he would add that information, which was available in our HR data. But he didn’t update the incorrect numbers, he didn’t check the HR data, he did nothing. As I was the one with the time constraint, I added all the information and updated the contract. Leaving the company was just like working in the company: Doing the work he is responsible for.

The bottom line: In the first half of 2023, five out of twelve employees, including all co-founders except the CEO, left the company. One of the other two was a project manager, also doing all the administrative tasks and a driving force to get the company on a sustainable course for the future. The other one was the last developer who joined the company. He was the most innovative one. I would not be surprised if more people would leave in the second half.

For sure, I should have left earlier. He promised a lot. For many projects I worked on in my spare time, he said he would organize money so it could be paid work. All the promises he made were worth nothing. All the contracts he landed were low-hanging fruits in terms of acquisition. Technically, they were OK, but they didn’t put us in a leading position, which we could have had. He was always happy about my spare time projects because he could tweet about them. View counts on tweets have always been more important to him than a long-term strategy for the company. He didn’t have time or will to do the work required to fulfill his promises, but he was able to chair a W3C group. Attention is all he wants. I always felt responsible for our employees, which is surely a good thing, but trying to fix what such a person screws up is a Sisyphean.

Lesson Learned

I hope I was able to make clear through my experience how much time, money, and energy collaborating with individuals with a dark triad personality costs. If you consider working with one because you think they can be high achievers, don’t forget: If they have to make a business decision which could either be in favor of their ego or the company, they will always choose their ego. Don’t let them trick you if they act charming and friendly. They don’t have real friends. They are good at keeping people around them who are useful to them at the current point in time. But that may change anytime. They are impulsive and irrational, especially when they get busted.

As they are good at leaving a good first impression, it’s good to know how to recognize such a person. Xander Dunn wrote a very good blog post covering that. The title is On Dark Triads in Silicon Valley, but I can testify that it also works elsewhere.