7 ms·
I created the most popular Turkish social platform, Eksi Sozluk, using a single plaintext file as its content database back in 1999. It had taken me only three
by sedatk 3y ago
I created the most popular Turkish social platform, Eksi Sozluk, using a single plaintext file as its content database back in 1999. It had taken me only three hours to get it up and running without any web frameworks or anything. It was just an EXE written in Delphi. The platform's still up albeit running on .NET/MySQL now and getting banned by Erdogan government for baseless or false reasons (like "national security"). Despite being banned, it was the seventh most popular web site in Turkey two weeks ago, and the second most popular Turkish web site in the same list: https://x.com/ocalozyavuz/status/1735084095821000710?s=20 https://x.com/ocalozyavuz/status/1735084095821000710?s=20
You can find its ancient source code from 1999 here: https://github.com/ssg/sozluk-cgi https://github.com/ssg/sozluk-cgi
The platform is currently at https://eksisozluk1999.com https://eksisozluk1999.com because its canonincal domain (https://eksisozluk.com https://eksisozluk.com) got banned. Any visitors from outside Turkey should get redirected anyway.
Since it's still a legal business entity in Turkey, it keeps paying taxes to Turkish government, and even honors content removal requests despite being banned. Its appeals for the bans are in the hands of The Consitutional Court to be reviewed for almost a year now.
A newspiece from when it was banned the first time this year: https://www.theguardian.com/world/2023/mar/01/eksi-sozluk-why-turkey-blocked-its-most-popular-social-site https://www.theguardian.com/world/2023/mar/01/eksi-sozluk-wh...
Its Wikipedia page: https://en.wikipedia.org/wiki/Ek%C5%9Fi_S%C3%B6zl%C3%BCk https://en.wikipedia.org/wiki/Ek%C5%9Fi_S%C3%B6zl%C3%BCk
- mattl 3y agoHow did you make a Windows executable work on the web?
- franzb 3y agoI imagine it ran server-side (on Windows).
- bruce511 3y agoIndeed. I think it's worth going a little deeper for those who perhaps aren't familiar with some of the underlying principles of the Web. For starters, all the program does is receive requests (as text) over a TCP/IP connection. It replies over the same connection. So writing a Web server in any language, on any OS is a trivial exercise. (Once you have the ability to read or write TCP/IP. The program has to accept the input, calculate the output, and send the output. If the input is just file names, then the program just reads the file and sends it. (Think static site). The program may parse the file, and process it some more. It "interprets" code inside the file, executes it, and thus transforms the output. Think PHP. In these cases a generic server fits the bill. Think Apache, IIS, nginx and so on. The next level up are programs that are compiled. They generate the output on the fly, often with no, or little, disk interaction. This sort of program often uses a database, but might not. (An online Soduku game for example might do everything in memory.) Again, any if the above can be built on any OS and written in any language with TCP support.
- sedatk 3y agoUsing CGI protocol on a Windows server. IIS (Windows' own web server) basically interfaces with executables by running them, feeding them HTTP headers, and server variables through environment variables, and gets the response HTTP headers and the body from their STDOUT. It's very inefficient, of course, since every request requires spawning a new copy of the executable, but it had worked fine in its first months :) Here is a very simple example from the original sources: https://github.com/ssg/sozluk-cgi/blob/master/hede.pas https://github.com/ssg/sozluk-cgi/blob/master/hede.pas
- dijit 3y agoDon't sell yourself too short here, that's exactly how Perl/PHP works and that was defacto standard around the same vintage (and for a decade more).
- KronisLV 3y agoHonestly, there's a lot of beauty in that simplicity, I can definitely imagine someone also wanting to work with mod_php in Apache as well (just a module for the web server). That said, FastCGI and similar technologies were inevitable and something like PHP-FPM isn't much more difficult to actually run in practice. Still, having a clearly defined request lifecycle in wonderful, especially when compared to something how Java application servers like Tomcat/Glassfish used to work with Servlets - things there have gotten better and easier too, but still...
- whstl 3y agoAgree. I also loved the simplicity. It’s not that different from Serverless, if you look at it. There is an HTTP server handling all the HTTP stuff and process launching (which is handled by API Gateway in AWS, for example), and the communication between it and the “script” just uses language or OS primitives instead of more complex APIs. The 2000s were quite wild in how things changed… suddenly you have giant frameworks that also parse HTTP, a reverse proxy. At some point even PHP became all about frameworks. I wonder if we wouldn’t have a more open, standardized and mature version of CGI/Serverless if it had been a more gradual transition rather than a couple of very abrupt paradigm shifts.
- pjot 3y agoUsing Apple’s translate function I was able to read many of the posts - very interesting to see the differences between American and Turkish social media. There were many posts about cats and their livelihoods and protection. Love that
- sedatk 3y agoI'm very glad to hear that it's readable using a translator! In fact, the community dynamics resemble Reddit a lot despite having significant differences in layout and format. Irony, sarcasm, harsh criticism are common yet tolerance of differing viewpoints is relatively high compared to other platforms where people just flock to their own bubble or just block everyone else who they don't agree with. It's fun too, has a rich history spanning a quarter century, and has been quite influential.
- prox 3y agoDon’t forget to archive it with responsible parties, like for future history and anthropological research. It would be a shame to loose so much of public discourse, especially if it’s so influential.
- sedatk 3y agoIt's been subject to many academical research projects[1], I lost count now. It even made it into books[2][3]. We used to provide raw text dumps to researchers, or they would crawl the site themselves. One interesting paper claimed that Eksi Sozluk users were able to detect earthquakes very early and reliably[4]. Internet Archive also hangs around the site, archiving here and there. But a proper and full archive should be preserved, I agree. [1] https://scholar.google.com/scholar?lr=lang_en&q=eksi+sozluk&hl=en&as_sdt=0,5 https://scholar.google.com/scholar?lr=lang_en&q=eksi+sozluk&... [2] https://www.routledge.com/The-Routledge-Companion-to-Global-Internet-Histories/Goggin-McLelland/p/book/9780367870751 https://www.routledge.com/The-Routledge-Companion-to-Global-... [3] https://www.twitterandteargas.org/ https://www.twitterandteargas.org/ [4] https://gc.copernicus.org/articles/4/69/2021/ https://gc.copernicus.org/articles/4/69/2021/
- HaZeust 3y agoCrazy to see you! Some time ago, I was actually looking to add Eksi to Touchbase (www.touchbase.id) since several users reached out and wanted to add it alongside their other platforms to share on their profile, but we couldn't find out the URL convention for user profile feeds! It seemed to be "https://eksisozluk1999.com/{{username}}--{{7 https://eksisozluk1999.com/{{username}}--{{7 digit value}}", but we couldn't find any rhyme or reason to the 7 digits. Are the integers random, or do they even go back to stemming from a convention from the previous codebase?
- sedatk 3y agoUser profiles are actually stored like https://eksisozluk1999.com/biri/{{username} https://eksisozluk1999.com/biri/{{username}}. "/@{{username}}" also redirects to "/biri/{{username}}". You shouldn't need numbers at all. The numbers are only at the end of topic titles. They are title id's (sequential integers assigned when they're created) to disambiguate conflicting Latinized forms of Turkish words.
- noduerme 3y agoback in 1999 or so, I wrote an online shopping site this way, all the data stored as text files (one per category, with many items in my case ... I was 18 years old and had no idea about databases). The site ran smoothly for almost a year until the customer used "*" in the name of a product... which was the character by which all the product data in the text files data was split...
- isoprophlex 3y agoThat's why you always delimit your data fields in a text file with a unicode snowman Surely noone will ever use that character!
- noduerme 3y agolive and learn. It was the re-split when they saved the new products through my brilliant parser that royally fucked it all up. Genius that I was, I used "|" to separate attributes, but I also definitely used a double asterisk to mean something else. Nothing teaches you not to get clever better than screaming customers and abject failure. And having to find/replace a thousand asterisks to figure out which ones were making the file unreadable. Falling on my face made me the careful coder I am today.
- whstl 3y agoOh, I did something similar. I built quite popular local (non-english language) gaming forum with an Access file hosted in a Windows server and a VBScript ASP file, which had just been released. That's the original version, before ASP.NET. I was 13 or 14 years old at the time and didn't know better. It was no SQLite, so I had some weird concurrency problems. On top of that I ran into the some size limit (was it 2GB?) pretty quickly, but at this point it was time to look for a bigger server and figure out real databases anyway. It eventually stopped being popular under my administration, so I transferred the domain to some people around 1999. It was rebuilt with PHPBB or something and got a new life. It's still on, surprisingly.
- sedatk 3y agoFascinating that our stories intersect so much. I later converted that Delphi code to ASP/VBScript because native Delphi code ran really slow on a new DEC Alpha AXP server because of emulation on the RISC architecture. ASP code was much faster despite being interpreted :) I found ASP way more practical too. Access was also my native next choice of database. Not very scalable, but day and night difference compared to a text file :)
- whstl 3y agoI never really stopped to think about it, but ASP was indeed quite performant, considering it was all interpreted, running in late 90s shared-hosting hardware with very little RAM and super slow hard disks. The site got a few thousand active users and worked quite well, apart from the DB size limits. Fast forward 10, 20, almost 30 years and I frequently encounter websites that struggle to work under the same load, even with expensive AWS bills, especially when working with Rails. Perhaps ASP was performant because the site was a few orders of magnitudes smaller than anything you'd see today, even though it was full featured. Probably 1000x or 10000x smaller if I also include third-party libraries in the count. It was quite comparable to serverless/edge computing actually.
- system2 3y agoIs there a reason why they are not taking the 1999 version of the domain down?
- sedatk 3y agoBecause the platform switched to it only last week, no other reason. It was on eksisozluk1923.com before that. The moment this new domain catches up on popularity, they would find an arbitrary reason to ban that too.
- mavili 3y ago[flagged]
- sedatk 3y agoAmong the millions of entries on the platform, not one single piece of content on the platform was presented as evidence for the ban decisions. Just ambiguous words or false claims. Shouldn't it be straightforward to prove that Eksi Sozluk lacks "meaningful moderation"? Shouldn't it be a requirement for such a drastic action like banning the whole web site? Twitter produces orders of magnitude more disinformation in volume, amplified way faster and way broader too, yet they don't get any ban from Turkey whatsoever. How do you explain this kind of double standard?
- mavili 3y agoIt should be pretty straightforward for you to show you have any moderation whatsoever, I dont believe you do. The whole of the site is full of rubbish. If I were the Turkish government I would never even do the favour by banning the site, cause that draws attention the site doesn't deserve. I dont care if it's most visited site whatever, it's just useless.
- wholinator2 3y agoWell, whenever we enter an evidence war like this we must go back to the old standard. The burden of proof is on the accuser. It has to be. If the burden of proof is always on the defendant, all you need is 30 people making accusations and it becomes impossible to defend against. It's basically a legal DDOS. Also, i think every logical person can see that its much much easier to provide a single example of a lack of moderation than it is nebulous "prove you have moderation". What kind of standard do you have for that and how do we know you're not going to shift the goalpost the moment they bring you what you ask for. An example is an example is an example. Provide your proof or cease accusations. I've seen this argument many times in my country, always used to shut down free expression and enforce repression. There's great books and videos on logical fallacies out there
- pektezol 3y agoÇok iyi :)
- yard2010 3y agoWhy do dictators love to ruin old stuff?
- weinzierl 3y agoIt should not have to be said, but (especially in in the West) we tend to forget about it: Turkey has more inhabitants than the most populous country in western Europe (Germany). Turkey is also significantly larger than the largest country in western Europe (France). When it comes to the number of Internet users it is on par with Germany and beats all other western European countries.
- sedatk 3y agoTrue. I think the number of Internet users in Turkey has surpassed 70 million. Eksi Sozluk used to receive 30+ million unique visitors monthly before it got banned.
- LeonB 3y agoSedat, you’re a legend, and a machine, great to see you here or anywhere. Good luck with the legal challenges.
- sedatk 3y agoThank you, Leon! <3
- huseyinkilic 3y agoI hope things go back to normal soon. Good to see you here, Sedat. Cheers.
- sedatk 3y agoThanks, Huseyin! <3
- deleted 3y ago[deleted]