Ever since my father introduced me to programming in the 1990s, I always followed my entrepreneurial beliefs. But when my conviction was strongest and stakes were highest, I let others sway me.
Early Years
I was always the entrepreneurial type. I liked building things with my computer skills. My interest in computers started early; my father was an IT admin. We had a computer at home since I was born, which can be considered unusual in Turkey in the early 1990s. It was a 386DX with 4MB of RAM, barely playing Doom. My father prepared around 15 games for me, in the DOS prompt with .bat shortcuts named game{1..15}.bat. He also used QBasic occasionally to pique my interest in programming. I always admired his work. The company he used to work for ran everything on an HP-Unix mainframe that ran Oracle, and he somehow used reverse dial-up (our phone rang?) to connect to the company network. He was writing hundreds of lines of SQL through SQL Plus. That was addictive for me. Some queries used to run for hours. That machine was on tape. He occasionally took me to work on weekends, where there was broadband, and I could access lots of information on the web. It was really nice. When I was around 9, when my father finally bought me a new Visual Basic book, and I used to type every program there on the computer, customize it, and have fun. One summer, my mother and sister went on vacation, and my grandma stayed with us. I used this opportunity to spend 12 hours per day both playing Tony Hawk’s Pro Skater 2 and finishing that book in a hot summer. I was living my life. Besides the usual games, the ability to command a computer was amazing to me. And the drag-and-drop nature and easy OnClick handlers of VB5 programs made experimentation much easier.
Press enter or click to view image in full size
My slightly unusual approach to things and utilizing programming started early in my life. My sister was a genius in Microsoft Publisher, and her high school was full of English-taught classes. (It was a thing in Turkey back then for select public high schools.) I watched her doing amazing things and printing out eye-candy books and magazines for her homeworks. She was also playing The Curse of Monkey Island and describing to me what was happening. I had played a lot of games with great single player stories, browsed the web, downloaded custom furniture for The Sims (first one!), and all of them helped learning English at an early age. Whatever I can do on computers were always amazing to me. They were like magic. I had really enjoyed it.
When I started high school, along with access to a broader internet with ADSL and Fiber, my interest in multiplayer games and entrepreneurship started. I got a really bad grade in Turkish Literature. I hate non-direct things. The only way to fix it was by participating in extracurricular activities. I volunteered to work at my high school’s library with my trusted friend, Burak. The library was poorly maintained, and I offered to create a program backed with an MS Access database. I had no idea how to design an eye-candy UI, so I designed the UI in the newly released Office 2007 as a PowerPoint and extracted all the buttons as layers. It worked great. They used it for years. Then, for my term homework for the biology class, I made a PC game titled “Who Wants to Get 100 on Biology?” and let all my classmates play. The teacher was not expecting this, but it also fixed my bad grades. In 2008, I was participating in other extracurricular activities because I called my Chemistry teacher “an old lady”. With my friend Burak again, we joined some international activities, and we created a short movie about global warming and won an award in China. Lots of video shots in low resolution and hours of editing in After Effects. I didn’t care how cringey the final resulting movie was and we were quite happy with the result.
I also put my After Effects skills to good use and made some lightsaber videos with my father (huge Star Wars fan), especially getting inspired by Ryan and Dorkman’s video series. The guy who made those videos went to ILM, LucasArts. I convinced my high school friends to make a Star Wars short movie, even wrote the script and screenplay for it, but the fear of the university entrance exam and fear of retaking the exam one year later prevented it, so in summer, I had to start studying for that exam. I had to shelve my computer.
In the following summer after the exam, I rebuilt my PC, my father got me a 1TB HDD, upgraded our ADSL connection, I got my sister’s HP iPaq 6815, discovering it could run Doom with a stylus. I also discovered it could be programmed in a flavor of VB.NET, and I made some basic apps there to just have fun. I started publicly blogging about things, even though it was stupid. I got a Twitter account in 2009 and started publishing things there as well.
University Years
I was not expecting to win Bilkent University with a full scholarship. It was a surprise to me and also my family. It was the first time I had to live in a different city (Ankara) than my parents (İzmir). I still live in Ankara. I already had access to fiber internet since 2006 thanks to my home being in a pilot zone, but at university, with access to unlimited gigabit internet and a bunch of free time, the rate of learning and scope of exposure changed. Living in a dormitory and having a lot of free time, along with excessive gaming, of course, led me to different things. I was really bored after hours of gaming, and RTS was dying, being replaced by stupid games like League of Legends, and I decided to learn Linux. I installed Ubuntu on my computer, then tried different window managers like xmonad. Our 2nd-semester CS-102 Java class asked us to do Swing UIs, but I negotiated whether we could have JSP+MySQL since web services were becoming more important in 2010, and both my teammates and our instructor at that time, David Davenport (RIP), agreed to that. We were the only ones making a JSP service, and it was a great exercise for all of us. We made an application to reserve bookings.
Then I realized building a course schedule was a very time-consuming task. I also wanted to free my Friday afternoons or Monday mornings so I could travel to my hometown, İzmir, on a more relaxed schedule. Then, I went ahead and made Scheduler with my friend Semih as a standalone Java Swing app. I made another utility to fetch course data and save it as data.bkt files and regularly update it. The file extension, bkt, is the name of my now-wife, then-girlfriend’s name: Buket. Hehe. I don’t care. I joined an IEEE branch and became the webmaster and designer, where I also met my wife by making another movie for another contest, where people used to make fun of it, but I didn’t care.
Press enter or click to view image in full size
I created several more tiny SaaS services for Bilkent folk, one service where I generated iCal for course schedules, and another service for analyzing the courses and teachers over 20 years of time, the average grades, etc. (StarStat). People used to tease me that I collected their passwords for my nefarious purposes. However, everyone, and I mean even the teachers at Bilkent, used Scheduler and continued using it for more than 15 years now. I negotiated computer center to make us an API by asking the Chairman to intervene. You can just ask people things. I transferred its ownership to IEEE in 2016 and had to rewrite it from scratch in 2021 myself. It has served more than 100k people over the years. All because I wanted to have a free half-day, find good blocks, and avoid some stupid instructors. Throughout my CS classes, I always tried to pursue different and exciting things; for instance, our Database class project asked us to use PHP+MySQL, and I negotiated to use NodeJS because it was more hip back then. I almost never got rejected by just asking things of my instructors. Half of it was they didn’t really care, and half of it was they were supportive, like David, again rest-in-peace.
My favorite classes were Operating Systems (CS342), Computer Architecture (CS224), and Computer Networks (CS421). I already knew programming, at least the basics, but not algorithms. These “how computers and the internet work” classes were much more enlightening to me, and they changed me internally. I really connected to them. We built a processor on Verilog, and I understood every part of it back then. Now, just the concepts. But the foundation of these classes still holds dear to me. Yeah, some of the algorithm classes were a bit demanding, like I still hate writing code for weird trees. Even my 2nd-year internship interview with Facebook asked about balancing an AVL tree, and I failed spectacularly, but most of the CS classes were really enjoyable for me, and I had a good time. The rest, like Differential Equations, probably didn’t click so much for me. I’d not consider myself stupid in Math, but I wasn’t doing well in those classes at university as I did in high-school. I loved the humanities classes, not that I was doing great, but reading about all the classics was refreshing. We had one class, ENG400, where we learned about conducting surveys and preparing research papers. My topic was “Low participation of student surveys of ENG400 course,” which was a recursive joke, and again, the instructor went along, and I got an A.
I also tagged along with Ahmet Alp Balkan, who introduced me to the Play framework back then, Y Combinator, startups and other cool things, occasionally. I even wrote a small part of his startup, Ollaa, for fetching data from IMDb and putting it into Mongo. It felt great. I know it sounds silly, but it was kind of a mini Social Network movie for me at that time. Social media and big data were becoming very big; things were getting heated, and being part of something felt great, especially around 2012–2013.
At my senior year project, we could select a full CS student team of 5–6, focused only on software or research, CS491, or a multi-disciplinary GE401 one, where you work with EE and IE students to build a real product. CS ones had made mobile apps. Ours was Robandroid, a robot that roamed around a house for security. It ran on a NodeJS server and a cheap China tablet, with an IOIO board that I used to Java to run PWM for our motors, where my wife designed the circuitry of it (yeah, we did it together, it was really fun). It was selected as the best project. We used image processing, SIFT, the skills I got from my Image Processing class, so it knew the paths it was supposed to patrol in the house. Sure, it took a few seconds to process each image, but it was more like a primitive feedback loop back then (You can call it agentic AI nowadays); it took a picture, compared it with the existing path, found the delta vector, and moved in that direction for 5 seconds. It was primitive, but it worked. Since the IOIO board worked on hacking the ADB (Android Debugging Protocol), there was no means to actually debug it when it was connected as it was moving, and I just used text-to-speech APIs to make up for print-debugging; instead it was shouting “i equals 5,” “turning right 2 seconds,” and sometimes “fuck” for assertion failures. It was my final project, a really nice and enjoyable one, and getting a chance to do it with my wife was really nice and I was proud of the end result.
Becoming a Teaching Assistant
All of my classmates found great jobs. It was 2013. A considerable chunk went on to master’s programs abroad, jobs at FAANG, and the rest landed very good jobs in Turkey. I was a bit confused during that time about what I wanted to do with my life. All my interviews with FAANG failed at that point, and I sure didn’t want an abroad master’s either. We continued with a handful of classmates as master’s students at Bilkent. Liking Operating Systems, I started to work with my advisor, İbrahim Körpeoğlu. I was excited because he was a very bright person, and his area of expertise was exciting for me. However, as I discovered later, he was just starting to work in Cloud Computing, and I was one of the first students focusing on that area and it was challenging. However, I had to take 8 courses in 2 semesters and also be a full-time Teaching Assistant for the Operating Systems course. That course had the hardest assignments and caused a lot of people to change majors (along with CS224, Computer Architecture). But I enjoyed it a lot, by a margin.
Then came my first assignment to grade. There were around 150 students in 3 sections. Our assignments always took around a month to grade. And I understood why. Assignments asked us to create files, use SystemV queues, run multi-threads, and as you can imagine, most of the student code, not just being far from perfect but being ugly, was either in a deadlock or leaving the system in a very bad state. As soon as I realized I couldn’t run each of them properly one after another, I created a virtual machine and started to grade there. I used VirtualBox first, then I moved on to automating it through Vagrant. It was helpful. I could finish in a week. But I also read about Docker; it was near the autumn of 2013, where Docker was only around 0.4 or 0.6. I thought, why not, and for the 2nd assignment, I ran the assignments with Docker. It was a superb experience.
PAGS: Programming Assignment Grading System
It just clicked back then. Docker was the answer to all my pains. Knowing NodeJS from my earlier projects, I made a basic UI and asked the students to try that instead of submitting the assignments through Moodle. It was a very basic integration; I had to solve many Docker-related problems that are out of the box today, but not 11 years ago. I made a very efficient server and a nice UI where I supplied a script, a bunch of files, and students just uploaded their code. I called this PAGS, Programming Assignment Grading System. (Not good with names, huh.) The feedback to students was instant. They were really happy. I was really happy. It ran on a 4-core server with a local SSD, all submissions run by Docker, thousands of invocations per hour. I sometimes traveled to my office to restart the server because it was just the desktop I used daily for my research, and it got loaded in the midnights because damn students work best at midnight.
I iterated on PAGS 2 times more and made a nice UI based on AceEditor, xterm.js (term.js back then) with a NodeJS backend with Jade templates, Bootstrap, and MongoDB backend. I also made a really nice teacher’s view where I could quickly switch to each submission and give feedback to them before the deadline. That was the changing point for most of the students. They had an early chance at getting feedback. Students really loved it. At least the ones who were invested in the class.
Grading 150 submissions took 1 hour. I even integrated GNU Octave for MATLAB assignments to run MATLAB scripts and generate graphs. On one of the disk algorithm OS assignments, I supplied simple code for them to visualize disk head movements and render it as a GIF so they could debug it. I was really enjoying this. I was loving it. I had really high hopes for this. I made an integration with Stanford’s MOSS to detect plagiarism automatically. I put the lines of similarity between submissions and found out about organized crimes in an instant, traced how the code was shared, the cliques, etc.
I joined a local startup competition, 6th Ankara Startup Zirvesi, with PAGS. I got 2nd place. My prize was an Opsgenie subscription, where I ended up joining as an SRE 3 years later. I followed up with a few investors there, I applied to Tubitak (a kind of incubator), and got approved. The ProductHunt was just becoming a thing, Ryan was personally commenting on every launch.
Then I gave up. I misjudged the product-market fit because a few reluctant people near me swayed my conviction, and even though I believed in it with more passion than anything in my life, as I had with many things before, but this time I let my environment get to me. My mistake was thinking that failing wider adoption at my university one of the best in Turkey, meant it would fail everywhere. This is my biggest regret. I’m not saying it would have been very successful or become another HackerRank; also, building a startup from Turkey around 2015 would have been nearly impossible, but it was worth a shot to chase it. It was finally something solid.
Regret of listening to professors that doesn’t even like to teach
I shouldn’t have listened to my professors. After running PAGS on my own CS342 course for a while and winning the heart of almost every student, saving myself a lot of time, do you know what my own professor said?
“You should do research. Not waste time on (useless) things like this.” — My Advisor
He was partly right. I should have focused more on my research. To his surprise, my research was about optimizing load on container systems. It was not the greatest master’s thesis, but at its time, it was different and novel enough. But the first two years of being a TA were always about courses, and we had to be a full-time TA to continue our scholarship. Spending a month grading an assignment in a soul-crushing way was not doing anything nice for either my grades or my research.
My advisor came to the realization, even if it was late, it was welcome, that PAGS saved a lot of time, and even after I was done with my master’s and started working in the industry, he asked for support for PAGS, and I let other TAs for the OS course use PAGS.
But during my master’s at Bilkent, I begged all the other professors to use PAGS in their classes. I offered my full-time support. All I asked from them was to give the assignment to me one day earlier so that I could prepare the scripts and environment. And I told them they could use PAGS in conjunction with what they already did. Only two of them agreed, one being David. The problem with David was he requested a lot of things from me, like the ability to import/export grades and many minor things. At that time, having only one customer, I became his client and did whatever he asked. It was my first mistake. I couldn’t focus on what I wanted to do. He asked all of this in good heart; may he rest in peace, but I should not have listened to all of them. I should have chased more customers, but I was young. The other was Selim Aksoy, where he ran the CS201 course, Data Structures with C++, and we ran it in a summer class, and it was productive.
However, the others ignored me even though I asked multiple times. The one final one that put all my hopes in the ground was one professor saying:
“We employ graders and TAs for a reason. Their job is to grade programming assignments.” — A short-sighted professor
I had really high hopes for PAGS; I was preparing my YC application, but I couldn’t even convince my own university to adopt this. This shouldn’t have been an excuse for me back then, but it made me question what I had done a lot. To be fair, I really tried hard for my university. But I didn’t try hard enough to reach other universities at same city. I did find some, but definitely not enough. PAGS was featured in the Docker blog in 2014. I had no idea how to market it further. I was stuck and belived it was not worth pursuing it.
Now, this is my greatest regret. Up to this point in my life, I always pursued what I believed in, ignored what people thought about it if I truly believed in it. I was passionate. I am really passionate. This was something I truly believed in. The economy was in good shape, I was younger, I could have pursued this much further. But I let the lack of interest by a bunch of old people who didn’t even want to teach at all get to me and demotivated myself. This was around near the end of 2014. I started interviewing for jobs; I interviewed with Google and Dropbox, where I eventually failed. I learned through my advisor that one of the local companies was working directly on LXC, and it piqued a lot of my interest since I was already invested in Docker, and I joined that company and did some [REDACTED] work. Afterwards, I joined Opsgenie as an SRE as an early employee, where it was acquired by Atlassian. Then, following my dreams of building a startup, I co-founded Resmo with Serhat in 2021 and exited it to JumpCloud in 2024.
Press enter or click to view image in full size
At least, at every job since PAGS, I have never held myself back and stood up for what I believed in, pushed my ideas if I could feel it. My time at Opsgenie was also determinant in developing that skill. I worked directly with one of the co-founders of Opsgenie, Abdurrahim Eke, who taught me how to properly defend the things I believe in by pushing me to the limits. As I got older and more experienced, I learned to be more subtle, sometimes more political about it, because being right doesn’t always get you what you want, but I have never let my entrepreneurial spirit die. That regret with PAGS and others affected me one time, but I learned from it and moved forward.
I don’t just rebel because I like to do it or for the sake of conversation, but I do it because I believe in it, and I can usually convince people. I’m not a bully or someone who talks people to boredom into submission; I want to have good discussions and chase meaningful things. Behaving that way always benefited me in my active career, at every job, in my own startup, and now in my latest endeavors.