5 ms·
AOLserver was originally NaviServer, before AOL bought it. That’s why all of its API identifiers have the prefix `Ns_` (or `NS_` or `ns`, depending on the kind
by mayoff 3y ago
AOLserver was originally NaviServer, before AOL bought it. That’s why all of its API identifiers have the prefix `Ns_` (or `NS_` or `ns`, depending on the kind of identifier). Kind of like how (coincidentally) Apple’s Foundation and AppKit frameworks use the prefix `NS`, because those came from Nextstep.
In 1999, I was hired by ArsDigita, a web startup that used AOLserver, mainly to provide internal development and support for AOLserver. ArsDigita used big multi-CPU Sun servers (this was long before Oracle bought Sun) and I ended up diagnosing several race conditions in AOLserver that the AOL developers had trouble reproducing because they did their dev work on single-CPU boxes.
Fun fact, ArsDigita founder Philip Greenspun (of Greenspun’s Tenth Rule) knew Robert Thau from their shared alma mater MIT. Robert Thau (rst) designed and implemented Apache’s original module API. So ArsDigita hired rst to write mod_aolserver, an Apache module that provided enough of AOLserver’s API to allow running ArsDigita’s codebase (ACS) under Apache.
- silisili 3y agoInteresting. I always assumed it was Netscape, seeing as they'd purchased the company rather publicly.
- talloo 3y agoAOLserver ate the Netscape server for lunch
- duderoso 3y agoha. totally forgot about Philip Greenspun. He also started photo.net which was basically the most prolific online community for photography back in mid 90s/early 2000's. spent majority of my high school / college years browsing that site.
- davidw 3y agoI created, with some other people, what went on to become Apache Rivet: https://tcl.apache.org/rivet/ https://tcl.apache.org/rivet/ It did less than AOLserver, but was also very lightweight and easy to integrate with Apache. For a long time, https://flightaware.com/ https://flightaware.com/ used Rivet under the hood. Tcl was... is a fantastic language for doing web development. Its flexible nature made it really good for doing template/PHP type stuff, and being pretty string friendly, you had a lot of what you needed out of the box.
- systems 3y agowhat are they (flightaware) using now
- evilotto 3y agoThere's still a few .rvt links on the site, so they may still be using a fair bit of rivet.
- networked 3y agoThanks for creating Rivet! I use it for several separate pieces of interactive functionality on my home server, the way some may use PHP. The API is simple enough, and if you already know Tcl it doesn't take you long to get started. I like how easy it is to add file uploading to an existing form with ::rivet::upload. > Tcl was... is a fantastic language for doing web development. Except for JSON. You can't round-trip JSON through Tcl because dicts are lists are strings. There are solutions out there (https://wiki.tcl-lang.org/page/JSON https://wiki.tcl-lang.org/page/JSON), I even wrote a few of them, but in the end there is a fundamental impedance mismatch. It gets in the way of emitting JSON from quick hacks or the REPL because you essentially need an explicit schema. For text-based templates, Tcl is good. I have written code to generate CSS in Tcl and loved how well the language fit the task. (I found this out for CSS when I contributed a responsive stylesheet for https://www.tcl-lang.org/ https://www.tcl-lang.org/. I wanted a CSS preprocessor to avoid repetition, and one that would never break, at least not before Tcl did. I think it worked well. The template uses subst and some variables. It is Tcl 9-ready. :-) I recommend trying it if you do web development in Tcl.)
- mintplant 3y ago> That’s why all of its API identifiers have the prefix `Ns_` (or `NS_` or `ns`, depending on the kind of identifier). Kind of like how (coincidentally) Apple’s Foundation and AppKit frameworks use the prefix `NS`, because those came from Nextstep. Also lots of stuff at Mozilla, because of Netscape. Usually signifies an older part of the Firefox codebase.
- toyg 3y agoIronically, all of these are NameSpaces (NS!) that... end up basically sharing the same namespace.
- santoshalper 3y agoI always thought they meant namespace. In a weird, indirect way, they did!
- pjmlp 3y agoThis was Rails, years before Ruby mattered at all. Back in 1999 I joined a startup (Intervento) that had a product based on the same ideas, we created our own Tcl module that could be plugged into either Apache or IIS, had a DB abstraction layer that would generate all CRUD stuff for each table for Informix, MSSQL, Sybase SQL, DB2, Access, Oracle, targeting Aix, HP-UX, Solaris, Windows NT/2000, (we also had Linux but it wasn't considered production ready), extensions could be furter coded in either Tcl or C, and we had an IDE written in VB 6. We got acquired and became part of Altitude Software, eventually as MSFT partners we got early access to .NET and decided to port the same ideas into .NET, this gave us the performance that Tcl/C didn't deliver under very heavy loads, and Visual Studio.NET was better that what we managed to have with our in-house IDE. Eventually some of Intervento founders left, and created what is nowadays known as OutSytems, one of the few successful low code companies. It was a great experience, however as one the persons responsible to optimize Tcl code into C modules, and part of the .NET migration team, I learned to never consider languages without a JIT/AOT compiler for nothing serious beyond OS scripting tasks.
- TranquilMarmot 3y agoI've written a lot of code in my life. It's fun to think about how much of it gave me a lot of grief when I was writing it and it's not even running anymore haha. On the flip side, it's a bit existential to think about code I've written outliving me and running on peoples' machines long after I'm gone...
- xattt 3y agoYour first part really speaks to life in general about things that suck away life-force, like arguing or being petty.
- jabl 3y ago> It was a great experience, however as one the persons responsible to optimize Tcl code into C modules, and part of the .NET migration team, I learned to never consider languages without a JIT/AOT compiler for nothing serious beyond OS scripting tasks. As a slight aside, I once worked on a molecular dynamics simulation program which used Tcl for the basic setup, and then performance critical parts were done in C. A fine enough approach, except that the original authors had decided that the one hammer to get good performance out of C was inlining. And they used this everywhere. Literally everywhere. Everything except for main() and some I/O functions was defined in "static inline" functions in header files.
- justinator 3y agoBecause I read Greenspun's website so much, I was sure I would be writing Tcl for a career. Turned out I did far more photography (still don't own a plane).
- deleted 3y ago[deleted]
- varjag 3y ago[flagged]
- eduction 3y agoHe still writes about planes! To me he doesn’t seem so much pro Trump as skeptical of certain thinking within the current left (and many Covid policies, though general opinion has shifted in his direction somewhat).
- varjag 3y agoI mean he painted his chopper into Trump livery and flew it around to "trigger the libs", so…
- justinator 3y ago[flagged]
- Paul-Craft 3y ago> That’s why all of its API identifiers have the prefix `Ns_` (or `NS_` or `ns`, depending on the kind of identifier). Kind of like how (coincidentally) Apple’s Foundation and AppKit frameworks use the prefix `NS`, because those came from Nextstep. I've always hated when APIs and types are prefixed like this. It doesn't play very well with autocompete.
- Macha 3y agoIt largely came about at a time where autocomplete was not a widespread concern but C's lack of namespaces was.
- Paul-Craft 3y agoTell that to the company I worked for 5 years ago. People are still doing it for some reason.
- viraptor 3y agoIt makes sense in C, doesn't it? You want your or some library's string abstraction available separately and not a bunch of errors because you both defined a different `struct string`.
- Paul-Craft 3y agoWe didn't use C.
- gadders 3y agoMan, those heady pre-dotcom crash days. I remember reading his blog, and all the drama when the VCs took over and kicked him out.
- roel_v 3y agoI was cleaning out my old books just a few weeks ago and put 'Alex and Philip's guide to web publishing' in the 'can't justify to keep, feel bad to throw away' pile. I've been trying to give it away on our local ebay but doesn't seem anyone still remembers the cultural significance, or cares about a book on it...
- eduction 3y agoGlad to see another fan of that book here :) That book is a “definite keep” for me, although chunks are coming out of the binding. The parts that retain the most significance to me are the amount of thought and design he put into web communities. I think this was because he was operating in an era (and coming from an era) where putting a community online in a “scalable” way was expensive and time consuming, so he thought through his goals and the potential ways to achieve them and the corner cases very thoroughly before coding. It also came from a time when, due to the newness of the medium and a shortage of expertise, there was an ethos of democratic education — the idea that anyone can learn this stuff. Even the ways he thought of web communities tended to involve peer education instead of just publishing for clicks.
- xattt 3y agoThis might be searching for patterns where there are none, but is there any relation of ArsDigita to ArsTechnica? Are the names some sort of cyberpunk in-joke?
- marcellus23 3y ago"ars [some adjective]" is a not-uncommon construction for a name — you see other examples around like "ars mathematica".
- WorldMaker 3y ago"Ars" is Latin for "art". Can be read as things like: "Art digital", "Art technical", "Art mathematical"
- marcellus23 3y ago"art" is a valid translation in certain contexts, but a more accurate general one might be "skill" or "craft". And noun-adjective is a typical word order in Latin, so you can just translate into English using a grammatical word order ("technical craft", not "craft technical"*).