> I have yet to see a real use case for Mongo unless you are building a Facebook clone
People seem to keep making the mistake of building a social network in mongo. It's entirely unsuitable for that.
Source: I've helped 3 companies move their social networks from MongoDB to OrientDB when they figured out that MongoDB prevents them from shipping features that users expect, e.g. friend-of-a-friend style queries
What has your experience been like in deploying and working with OrientDB? This is a bit of really cool tech that I've been keeping an eye on for some time but haven't gotten around to really playing with it.
What server language were you using and where were you deploying?
OrientDB is very cool software, I find it pretty hard to go back to traditional databases now that I've seen how powerful graphs are, but the cool thing about it is that it's still a document store at heart, so you get all the same advantages of mongo, but with the graph awesomeness on top. It's a fantastic tool, but there are a few quirks that can catch beginners out and the documentation is not stellar. It also requires some configuration tweaking to get the best performance for your workload.
I've been using node.js (I develop the official driver - https://github.com/codemix/oriento), but there's pretty good libraries emerging for other languages too. Most people I've worked with are deploying to AWS, one company was running on the bare metal.
I actually JUST discovered oriento and was absolutely delighted to see a bluebird promise-based api. API looks fantastic. Thanks a ton for creating the lib.
Do you have any advise for someone thinking of deploying on GCE?
My use-case would be for an online code editor (Plunker, if you've heard of it) with users, projects, packages, collections (of projects), comments and project versions (stored as content-addressable git-compatible objects).
I'm also interested in understanding if there is any built-in compression mechanism because I will be storing a large volume of very similar text files. Any hints?
Have you used the lucene indexes much? If so, can you do any of the crazy faceting delivered by ElasticSearch?
> Do you have any advise for someone thinking of deploying on GCE?
No, sorry, I've never used that. However, generally - like all dbs, Orient is happiest when it has access to a lot of RAM. Also the Write Ahead Log can take up a significant amount of disk space, those are two things to be immediately aware of.
> I'm also interested in understanding if there is any built-in compression mechanism because I will be storing a large volume of very similar text files. Any hints?
Sadly it doesn't yet do leveldb style document compression, and I've seen no hints that it's on the horizon, but the OrientDB guys are pretty responsive and would probably be open to the suggestion.
> Have you used the lucene indexes much? If so, can you do any of the crazy faceting delivered by ElasticSearch?
I'm just starting to use the lucene indexes now so I can't give much feedback on those yet. It should be possible to do faceting using SQL to a limited degree, but I don't think there's native support for it yet. I think that will get improved in the next few versions because people are crying out for it.
actually both in many cases, Neo4j does have quite a hostile license, but its biggest downside is that it is graph only, whereas OrientDB (and ArangoDB which is also worth looking at) are "multi-model" - you can use them as pure document (or even key / value) stores, and the graph is just another way of viewing / representing that data. This is really powerful and means that you don't have the problem of duplicating data between different database systems or needing to do cross-data-store joins in your application.
ugh, really sick of this meme. OO is a tool in the box, it's useful a lot of the time, sometimes it isn't. The reason ES6 introduces the `class` keyword is that people are doing that already.
I somewhat agree, but "adding tools" at the language level doesn't come for free: it causes an explosion in the number of interactions to keep track of. How do classes interact with prototypes? How do they interact with lexical scope? How do they interact with exceptions? etc.
The egregious part is that, by turning something into a language feature, those who don't use it are often forced to take it into account in their code; especially library authors.
About the only thing that might be interesting to see is how constructor parameters are handled. With the prototyping system, I consider it to be a bug to initialize members in the constructor - if you always just call an 'init' method straight after construction (typically chained, much like in Objective C - var thing = new Thing().init(param); ) then protyping is very simple and does nothing surprising. It's only if you really really really want to have RAII that things become complicated...
Just because a tool is in a box doesn't mean its useful. Considering the relative cleanliness, refactorability of code coming from the functional world (see Haskell and the like), it is debatable whether OOP is a "good" style to develop at all!
If I look at most of the libraries commonly used in production JS, pretty much none of them apply classic OOP principles.
> it is debatable whether OOP is a "good" style to develop at all!
You've drank way too much Kool-Aid here.
First of all: there are many different styles of OO, some more cumbersome than others, some so far removed from "classic OOP principles" that it takes effort to see how are they related. It's utterly useless to talk about "OOP style" as if it was a well defined, canonical set of rules - because it's not.
Second: there's nothing that makes OOP and FP be in opposition to each other. You should be aware - and if you're not, you should feel ashamed - that closures, one of basic FP tools, were supported in Smalltalk 20 years before Haskell.
Third: just as with OOP, things coming from FP are not uniformly "better" in any sense. Just as with every other paradigm, FP languages frequently have features needed only because they are FP. It makes very little sense to adopt those. Many really interesting features meant for solving real problems (and not for solving problems with a paradigm) are steadily coming to non-FP languages anyway.
> If I look at most of the libraries commonly used in production JS, pretty much none of them apply classic OOP principles.
Once again: either you have no idea what OOP is or you have no idea how JS libraries look like. For every http://ramdajs.com/docs/ you get hundreds libraries which implement their own kind of OO, starting from jQuery and Backbone.
To be clear, "closures" are merely an implementation of lamdbas which were invented in the 30s. I wouldn't mention it except you're trying to shame someone for not "knowing" that Smalltalk beat Haskell to the punch despite both of them borrowing from a much richer history.
To drive the point home, you can implement lamdbas (and thus Haskell) without using closures. In fact, this is easy in a pure language since bindings are static. One way to do this is to compile the language into a basis of combinators like SKI. These no longer have any notion of binding so we don't need closures. Likewise, you could compile it into a categorical semantics and maybe implement this on FPGAs—again, no need for closures.
Lamdbas are merely a syntax and theory. Closures are merely one interpretation given a Von Neumann machine.
I happen to know all this; what I wanted to stress is not the nature of closures, which is exactly as you say, but that they were used since long ago in a "purely object oriented" languages, which - AFAIK - are not meant to implement lambda calculus in any shape or form.
GP wrote that - in short "everything in OOP is bad, let's use FP only". I responded with an argument that, in fact, certain OOP languages used FP features long before Haskell (because that's the example GP provided). I don't think the fact that closures are just one interpretation of an abstract concept of "lambda" is very relevant to this argument.
And about "shaming" people: I meant to gently point out that advocates for some cause should at the very least get their facts straight. Bashing some concept without knowing it well is the thing I objected to, a "not knowing it well" part by itself wouldn't be anything one should feel ashamed of.
I suppose I read it overly antagonistically then. Honestly, the entire FP/OO thing is so draining. I wish we'd all just start talking about Church/Curry debates instead. It's dispense with most of the marketing mumbo jumbo.
Just because it's possible to write a program without a tool, doesn't mean it's more productive. Functional programming doesn't even directly oppose OOP, it opposes imperative. It is absolute basics of CS that there is data and logic and many problems are easy to reason about as logic modifying data (state). OOP is a tool that allows to encapsulate some data and logic that go together. Functional programming doesn't allow you much more than that. Just because you may (or may not) end up decomposing a program into the smallest units of logic, doesn't mean you've done something useful, or clean.
* FP as I understand it doesn't much oppose imperative or even most of OO. It opposes non-composability using discipline from pure/total languages.
* Even if you want to encapsulate data and logic together like you suggest, you only need to buy 10% of OO to get that (ADTs, existential types, modules, what-have-you do it fine if not far better). The remaining 90% may be a waste or actively harmful.
* FP, as I practice it, means using the simplest possible thing in a world where simple things compose nicely. This may end up being some kind of full-scale OO, I'm eager to try to find places where it does, but so far it hasn't ever.
As a meta note, "my kind of FP" is the Haskell type of purity and other such nonsense.
>FP as I understand it doesn't much oppose imperative or even most of OO
I think this is definitely true, if you take 'oppose' as 'incompatible'. If we look the design concept and plot them, there will be axes, and I think this is what we'll see.
>* Even if you want to encapsulate data and logic together like you suggest, you only need to buy 10% of OO to get that
That's also true, but it's not an argument against the seed of usefulness of the 10%. We have kitchen sinks because people pick and choose features at will.
>* FP, as I practice it, means using the simplest possible thing in a world where simple things compose nicely.
Same here, and everyone should practice this when they look at any function, or object method, trying to make it as atomic as possible.
> This may end up being some kind of full-scale OO
I don't think it's any more useful shoehorning a program into "everything objects" more than "everything is functions".
My point was to say that the core goal of OOP is a great one, it simply codifies something that people have done in C when they put structs and procedures in the same header file. Let's not throw the baby out with the bath water.
My point is merely that the benefits of are gained using essentially nothing more than real ADTs and yet are almost always bundled with harmful other things in practice. FP can include these core ideas nicely, much like how monads include imperative ideas nicely, by focusing on what composes well.
As long as I'm not using C++ I don't feel harmed by any OOP features I don't have to use. I don't feel being restricted. I'm curious, what are these commonly harmful things you're talking about?
On the other hand, most FP languages I tried feel very restrictive. The only language that is inclusive of all good ideas, seems to be F#.
I'm not a big fan of languages allowing mutability anywhere. You can use it, sure, but advertise in big bold letters as to where. This plays out repeatedly for any side effect.
There are some OO systems with effect types I suppose. Those would be interesting.
There are also OO systems that don't have mutability. But I think that it you remove mutation, all that class nonsense, and are careful with subtyping (since it breaks things badly often) then you basically have (badly typed) ML modules with open recursion.
The open recursion (a.k.a. late binding) bit is probably the most interesting thing but you can play with it in Typed LC just fine. It's just another form of recursion.
> Functional programming doesn't even directly oppose OOP, it opposes imperative.
Just to be pedantic, OOP is (a kind of) imperative programming: goals are achieved by performing a sequence of actions in the world. In functional programming, goals are achieved by defining values; the evaluation order is an implementation detail.
It could be argued that OOP is "more imperative" than, for example, procedural programming, since in an OOP approach, "the outside world" includes everything other than the current object (due to dynamic dispatch).
You're not being logical, you're just parroting anti-anti-copying propaganda.
> If the 12 yr old pirates $17,000 (retail price) of music, this does not mean the record companies are out $17,000... 12 yr olds don't have $17,000 to spend even if they are prevented from pirating.
Right, but it does not mean that the record companies are out $0 either. They are probably missing out on at least several hundred dollars worth of revenue for that particular person.
> Right, but it does not mean that the record companies are out $0 either.
I might concede that this is the case, but only if we first agree that this doesn't mean you get to choose some arbitrary number in the middle and pretend that this is the "average loss".
I know of no economic science that can provide a reasonable number, either. You'd be lying if you claimed you knew of one.
> They are probably missing out on at least several hundred dollars worth of revenue
This would be the very extreme edge of the maximum. They're probably missing out on several tens of dollars.
And for this, they've hijacked the criminal justice system with bribes to congresses and parliaments, extended copyright protection so much that it now lasts a duration best measured in centuries, bankrupted innocent people with million dollar judgements, and sent people to prison for what shouldn't even be misdemeanors.
They want us to all pay, through our tax funding of the criminal justice system, for these minor theoretical losses. Why should I have sympathy for that?
Games companies specifically have broken their own works so thoroughly that it's difficult or impossible to get games just a few decades old to run. This is stealing from the public domain. It'd be like burning down your apartment just before the lease runs out, to make sure the landlord doesn't get it back.
As you say, it's very hard to know how much companies are out.
I would guess it was at least $40, else why pay $40 for a flashcart? A new gateway (the only 3DS card I'm aware of) costs $80.
People who buy 3DS flash carts never buy a game again (in my experience), mainly because new non-pirated games require upgrading the firmware, which they can't do if they want their flash carts to keep working (this may have been improved, I haven't looked in a while). Also because they 'paid for piracy' (unlike on PC), they (I believe) feel happier not paying for games in future.
> I would guess it was at least $40, else why pay $40 for a flashcart?
I will concede that this is reasonable for a lower boundary.
However, it's not that simple. Human psychology being what it is, if he couldn't buy the $40 flashcart it's not certain that he would buy say, two $20 games that he ended up putting on that flash cart. Maybe instead he orders pizza. Being blocked from the flashcart alters decision paths that don't always lead back to video games or even entertainment in general. But with that said, again, I'll accept $40 as a rough lower boundary.
> People who buy 3DS flash carts never buy a game again (in my experience),
Anecdotal, of course, but this seems reasonable. I don't dispute it.
In my own personal experience, people who start downloading movies never buy DVDs again. So not only do I agree, I think we can generalize it either to most entertainment, or all entertainment.
> Also because they 'paid for piracy' (unlike on PC), they (I believe) feel happier not paying for games in future.
Morally, they bought physical goods that employed other people and let those people earn a living. Additionally, those claiming to have been wronged here still earned millions and billions in profit.
Who can fault them for feeling as if no bad outcomes occurred?
As someone who actually works in the game industry - I feel like making an emotional argument. If I write a game, it's released in stores, and then I see someone playing a pirated copy, how should I feel? Elated that they are playing it? Or am I allowed to be upset that they are playing my game without paying for it?
And how is being unable to run games designed for a different system and different time stealing from public domain? Just because tape players are not common today doesn't mean that people who made tapes 20 years ago have somehow stolen from a public domain - you just have to get a tape player. If a game was written for Dos, then well, you have to get a dos system or an emulator. If a game was written for DirectX 7, how can you blame developers that it doesn't run on the latest DirectX 11 system, with the operating system 5 generations ahead? If you are a software developer - how could you predict and counteract this?
Can I claim that you've hurt me? After all, you've never bought any. (I can show you my bank account balance, I really am hurting).
The sticking point, the part that will make it feel to you as if my statement above is non-sensical, is somehow you've managed to attach the idea that they're selling something to the idea that other people have a (very) similar something but haven't paid. So to you that feels like "theft". But it wasn't always this way.
The way you feel has been cultivated, just in the last few decades. And though they've cultivated it for music and movies and video games, I haven't (bothered, been able to, had enough influence) to cultivate the idea that if you haven't bought doodads from me that you've stolen from me.
Let's say I stand in front of your doodad store (imagining you only sell it in a store, for whatever reason) with a megaphone, repeatedly giving an extremely convincing speech about why people shouldn't buy your doodads. Can you claim that I've hurt you then?
Many of the people I talk to would never buy a doodad anyway. Those result in zero harm. Some of them were going to buy a doodad, were non convinced, and bought anyway. Those also result in zero harm. But some were going to buy a doodad and then decided not to. That's harm.
Piracy is the same. Many pirates were never going to buy the thing anyway. Many people purchase anyway. But some non-zero number of people would have purchased but now don't.
Strawman: by not buying doodads from you, I'm not getting the value provided by the doodads either. That is not the case with digital goods.
Say you created those doodads using your time, efforts and resources. Your doodads provide people some value. People usually buy doodads as recompense for that value. But if someone "pirates" your doodads, it means they acquired the value without fairly compensating you.
So you: invested time, effort and resources to provide value to others. The pirates: benefited from that value and gave nothing back. Is that not unfair?
What if those pirates further shared your doodads with their friends (or, you know, random people on the Internet) further depriving you of people who should be paying you for the value your doodads provided. Now can you not claim that the pirates are hurting you?
You may focus on the zero marginal cost of copying digital music and movies and video games. However, observe that the value is not in the bits you copy but the experiences they provide to your mind. If they are truly worth zero to you, I don't see why you should be wasting your time experiencing them in the first place.
If I were to guess, you have not "cultivated that idea" because you've never created something that people found useful, something which you'd think you deserved compensation for, but which was taken without giving anything in return.
> Say you created those doodads using your time, efforts and resources. Your doodads provide people some value. People usually buy doodads as recompense for that value. But if someone "pirates" your doodads, it means they acquired the value without fairly compensating you.
Like if they make their own doodad, after seeing mine?
I'm not entitled to compensation for being the first to do something. A society that sets itself up such that people who do something first are entitled to become rent-seekers for all eternity is dysfunctional.
> What if those pirates further shared your doodads with their friends
That'd be awesome. Unless they did a half-assed job of the sharing. I reserve the right to beat them bloody if they release the music as 32k VBR mp3s. I may murder if they're wma format.
No jury in the world could convict me.
Copyright used to encourage the creation of more works that would enter the public domain in less than three decades.
Now it's used to fund bribing Congress to get longer copyrights.
> If I were to guess, you have not "cultivated that idea" because you've never created something that people found useful,
Yeh. You'd like to believe that, because it's easier to see me as some filthy thief than as someone whose ideas might be correct. The former lets you just call me names and move on, the latter would mean changing your mind and thinking about issues like this critically.
Someday I hope that people like myself strip you of all political influence and make this part of the world a better place. You can go live in Singapore with its thousand year copyright durations and felony download laws.
>>Like if they make their own doodad, after seeing mine?
That's fine. You can make a car that looks like a Mercedes and no one will bat an eyelid, if you really made it with your own hands.
If you look at a game, and make your own that looks similar(or even exactly the same) - again, no one will bat an eyelid. But if you pirate the CAD files used to make said Mercedes and produce it using that then yeah, you stole their work without paying for it. If you pirate the game someone made without paying for it, you are also a scum. Whoever made it is not entitled to compensation, but you are not entitled to use other people's products for free.
Ok, do I really need to spell everything out?
You can make yourself, for yourself, literally anything. You can make a pair of shoes that look like Adidas shoes, and you can stick an Adidas logo on them and absolutely no one will object. The same principle applies to everything else. BUT - if you start selling your product pretending it's original, then you are absolutely breaking a number of laws. How is that not obvious?
>Like if they make their own doodad, after seeing mine?
Copying bits verbatim is not "making" anything. Also we are now conflating patents and copyright, but...
>A society that sets itself up such that people who do something first are entitled to become rent-seekers for all eternity is dysfunctional.
That may be a valid concern in theory, but current and historical evidence overwhelmingly prove this wrong. The most technical innovation has been happening in countries with stronger IP laws, as opposed to, say BRIC. It's not a coincidence.
>If I were to guess, you have not "cultivated that idea" because you've never created something that people found useful...
Way to quote incompletely. Also, nice dodge. Have you created something valuable only to have it ripped off?
>Yeh. You'd like to believe that, because it's easier to see me as some filthy thief than as someone whose ideas might be correct. The former lets you just call me names and move on, the latter would mean changing your mind and thinking about issues like this critically.
Conversely it's easier for you to rationalize your piracy than to acknowledge that your actions could be harmful. I have no stake in this issue, since my livelihood does not depend on copyright. I have been thinking critically and looking at the evidence. Have you?
If I really want or need to acquire your doodad then I am a potential customer and I have three choices. 1) buy your doodad. 2) acquire it without paying money. 3) go without using your doodad.
As a business owner, which would you prefer I do? Would option 2 not result in a loss of potential revenue? Would it not be super-harmful if everyone who wanted to use your product chose option 2?
> If I really want or need to acquire your doodad then I am a potential customer
But are you a promised customer, one that I own as some sort of cow to be milked when I see fit?
Certainly if I repair cars, you don't claim that I get to do all your car work and be paid for it, nor could I sue if you did it yourself. But this is what you're claiming with entertainment...
Think about it. I might make the claim that if you know about how to fix an engine, it was only because I discovered those ideas first. Therefor, even if you fix the engine (or arrange little magnetic islands on a hard drive in a particular sequence), you're still stealing from me.
If you fix the engine the same way I'd fix it, you're just copying my motions and actions.
These are highly comparable, but most people now balk at the idea (even though such absurd restrictions have existed in various times and places throughout history).
Copyright isn't some fundamental human right (time for the weenies to point out that the UN thinks it is). Its formulation was originally a practical matter, so now that it's become impractical it should be abolished or once more limited to reasonable terms.
For the vast majority of ordinary people, entertainment dollars are fixed. People have what they have to spend on entertainment, and when it's gone that month, it's gone.
What happens is the various content producers compete for their share of those dollars.
There just aren't billions out there for entertainment purposes. Wages being flat in the US speaks right to that. People don't have it.
In a perfect no piracy world, people would just consume much less, not spend billions more. Again, because they just don't have it. The money doesn't exist.
So that person pirating a lot of music might spend real dollars on video games instead, much more than they would just spend more on the music.
I doubt there's a fixed entertainment budget. I could see a fixed maximum, but past a certain threshold of being able to obtain things for free, people will spend less.
Even if it was a completely fixed budget, "entertainment" is a diverse category. Movies aren't just competing with other movies, or even just with TV and books and music, but also with things like cake and vodka. Even if the pie is fixed, is it unreasonable for a movie company to try to take some of vodka's pie?
The idea that piracy causes zero lost sales as is ridiculous as the idea that every act of piracy is a lost sale. At best you could make the argument that piracy is a net zero (or gain) because the advertising aspects of piracy match (or outweigh) the losses. But to just declare that piracy does nothing at all is crazy. It may be small, it may be negligible, but it's not zero unless your product is so unpopular that nobody was going to buy it anyway.
Those dollars do vary, and yes a movie company will absolutely compete with vodka and cake.
But there aren't the billions of dollars out there claimed as losses.
And yes, fixed maximum, though there are a lot of options, so people do hit that maximum fairly often.
A quick look through the majority of my peers shows this. They make trade-offs each month. The ones who are better off can flex their entertainment budget considerably. Those who are not, center in on a fairly modest amount, and when it's spent, it's spent. They do other things.
I agree with you about it being equally wrong. It's not zero lost sales, and it's not all lost sales.
However, one must also factor in the network effects of sharing. Mindshare is worth something, and those who have it sell more, and getting it happens through sharing and piracy as much as it does other efforts.
And the opportunity to sell continues to exist despite the piracy too. A few are out there working on that premise.
I don't think it's accurate to say that the vast majority have a fixed entertainment budget.
But even assuming it's true, piracy would still hurt individual companies or even entire industries. Industries you can't pirate so easily would see a disproportionate share of the spending.
DRM would still be very important. People would pirate the stuff that is easy to pirate, and buy the DRM stuff.
This varies some, but most people are locked in for most of their dollars. They may have savings, and can vary that budget some, but there just aren't the billions of dollars out there often cited.
There is a delta from what is being sold now. But it's not multiples. Perhaps additional fractions.
As for the hard to pirate industries, who says?
They must compete with easier, more flexible options. They might actually get less spending than they would otherwise with a more flexible and accessible scheme.
Apple showed this with iTunes and the removal of DRM actually drove more sales. Why? Sharing.
Something about this story does not sound quite right to me. If I were essentially locked up in that scenario, I would at least be confident of the names of the 3 games which were installed, since they'd inevitably be played to death, regardless of how good they were. Also there's this http://www.reddit.com/r/australia/comments/2p63rv/australian...
OP here; Technically, I had already played them to death over the 1990s. Dad used to bring home multiple shareware games: Xargon, Jill of the Jungle, Wacky Wheels, Skunny Kart, you name it. I played them until I became tired of them, although I never got sick of Rise of the Triad.
I had a few floppy disks with these titles on them, but again, having played them for so long, I chose to start my own little endeavour to create games instead of playing them, so I eventually removed everything but ROTT for as much disk space as I could get (being my first computer and such, I believed it might've helped performance, was still learning at this point). When I wasn't writing crappy interactive textventures, I was writing up stories in general in EDIT. My reasoning was also that when my stepdad would come into the room, he could never say I was "off playing those bloody games" again in an argument, and that I could argue that I was studying the books I'd picked up from the library.
I did play a lot of ROTT in my spare time. It was an early copy (1.0) which had some features removed from the final game such as alternatively coloured pushpillars and the such, but as my system had no speakers, the pc speaker became more and more annoying over time as well. That much I definitely remember, but since we went through so many shareware games in the 1990s, I don't remember what was ultimately on the system when it was given to me (nor when it was thrown away). I would give everything I owned to get it back, but unless someone chose to salvage and restore it, that system is long gone and crushed up.
>If I were essentially locked up in that scenario, I would at least be confident of the names of the 3 games which were installed, since they'd inevitably be played to death, regardless of how good they were. Also there's this
You'd be surprised what happens after 10 years or so. There are games I played as a kid countless times, in arcardes and on my PC, and yet I coulnd't remember their titles at all when I was at university age and such.
I only rediscovered some of their titles with luck and queries on Google later (in my 30's).
E.g.:
"game where a frog tries to cross the road" was apparently Frogger.
"game where you have a crosshair and hit people" is Prohibition.
"pc game where a cat jumps in an neighborhood" is Alley Cat, etc.
This is absolutely true. One of my favorite arcade games from the 80's where I've spent countless hours and played it to death and I can't remember the name of it. To this day the quest to find it again continues. It's like an adventure or something.
You could try it here too, what do you remember about it? What country were you playing it in? What were the controls? Joystick, trackball, one giant button, several buttons? What year did you first play it? Any memories at all about what the gameplay was like or the overall quality of the graphics?
The other game I can't remember was contra/turrican like game with main character like a robot and you could go in all directions on a map. I remember there were egyptian motifs around levels and I vaguely remember that game had a name Phoenix or something similar. Same time period, same nondescript arcade cabinet. Both in Europe / Croatia.
Also, "Osborne 486, with about 64k of RAM if memory serves me correctly. "
First, a 486 with 64K RAM is ridiculous as they typically had multiple megabytes of memory.
Second, he worked with that PC for 7 years and isn't quite confident of how much memory it had? This doesn't sound quite right either. I can clearly remember the amounts of RAM my first few PCs had, starting from 1999.
I know it had 640k extended memory via the startup memory check.
I don't know how much processing power nor memory it had. I had never owned a computer, and my dad left it behind for me after the divorce so I had something to use. I had no idea what was inside.
I'd agree that this would be a very relevant factor if I had programmed a "true" operating system (since most true programmers would probably be knowledgeable with the amount of memory usage going on etc), but to take things a bit more indepth, I suppose I haved't actually coded an operating system, but rather a dos Shell of sorts that is a facsimile of an 80s-style operating system. It merely uses the same commands as dos and interprets them into a visually descriptive feature on the screen (such as a split-screen with directory and file listings for example), as well as a few commands of my own that I added in. My terminology is not fantastic, but I suppose indicative of what I considered to be an OS. A Graphical shell might have been a more accurate term.
I remember the specs of all the systems I've had since then, but with the 486, I didn't spec it out myself, and was merely a kid with a computer at that point.
Incidentally if you ever find you miss coding, there are plenty of modern languages that are much easier than C++, which is pretty much the most complicated one you could have picked.
I'd like to add: a language that may be more up the OP's alley is Blitz3D, a BASIC dialect for games that's recently become free and open source: http://www.blitzbasic.com
Why are we trying to insinuate they're lying? Either there's evidence or there's not, and without some pretty strong evidence, this is just depressing. Especially from the point of view of someone who might like to one day present a project they've been working on to "the internet."
I'm close to someone who I've been watching slowly discover their passion for programming over the last six months or so. They never realized they'd care so much, or be any good at it. I've been giving consistent positive reinforcement, and I dread the day that they roll out their first real achievement to the masses. They might just throw their hands up in the air and give up entirely, judging by how people usually act.
I totally hear you and understand. However, two points to consider.
One, nobody's forced to share their project/efforts on the Internet, which is essentially the entire planet, all of humanity, 24x7 for all the rest of time (info wants to live forever, etc.) We are all free to keep our things private, off-line, just among friends, etc. You're free to approach people in real life you know for feedback, tips, encouragement. They're more likely to be polite, and also you're not asking something of a total stranger.
Second, there's been a cultural change that a lot of younger people or newbs may not be aware of. For folks of the pre-Internet, "first with computers" generation, that's precisely the standard operating environment when we we learning, just starting out, taking those early baby steps. When we were first scribbling out our first programs, however naive or full of bugs or flaws, we didn't immediately go push it in the faces of millions of strangers across the world (ala Show HN, GitHub, blogs, etc), a good portion of whom would be professionals alot further along, and say "omg look at this isn't it amazing I'm a hacker now please hire me k thx" -- we couldn't because the Interent didn't really exist and most of these modern ways of publishing and sharing didn't exist. So most of that early crude, naive, sometimes embarassing stage was done in private, off-line, or only among friends or teachers known personally. Today we have the equivalent of proud (and healthily, voluntarily deluded) parents posting their kindegartener's first crayon house-and-trees-and-sun drawings out onto blogs, GitHub, HN, Reddit, YouTube, etc and then being shocked or having their feelings hurt when others aren't as eaually blown away as them, and in some cases critical or dismissive. Its just the nature of the beast. Nobody forced them to share those things, and in that public global anonymous mixed (newbs/kids and experts/pro's) of a forum. They chose that. And it makes sense you'll also get back a mix of reactions, some of which you won't like.
What the modern Internet enables today has lots of great qualities (eg. I can download all this cool software for free, Wikipedia, Kickstarter, etc etc) but it also enables lots of sucky stuff (eg. eternal September, eternal kindegarten mode, arrogant assholes, FAQs, RTFMs, trolls, flamewars, phishing, astroturfing, doxing, etc.) Its hard to enable one without the other.
just starting out, taking those early baby steps. When we were first scribbling out our first programs, however naive or full of bugs or flaws, we didn't immediately go push it in the faces of millions of strangers across the world (ala Show HN, GitHub, blogs, etc), a good portion of whom would be professionals alot further along, and say "omg look at this isn't it amazing I'm a hacker now please hire me k thx"
No one was asking for anyone to hire anyone. I have no idea why you're saying this or belittling people's work.
If you can't be supportive, don't say anything unless you have strong reason to say it. Doesn't matter how far along the work is or how bad it is. If everyone followed this, the world would be a better place than it is, particularly the internet.
The lack of support is exactly what causes people to switch careers, because they get the impression everybody in the field is a flamer.
I don't think these are lies. I think this speaks to the level of technical understanding by the author. He thought 64k. He was writing everything in qbasic-- so a spec like that wouldn't matter. These are some good things to accomplish with basic, but it made sense when you get to the end and understand he is baffled with an ide. The term dos "clone" is weird--- I think he meant a sort of shell written in qbasic. This is essentially a "script kiddy" stuck in the outback. Admirable use of his time. I am scared about the level of worship the comments on the page provide.
I think "script kiddy" is overly harsh. Script kiddies can't program, they just run other people's "scripts." He clearly had some aptitude, he just didn't have the books or the right environment to learn what he needed to truly excel.
I learned to code in machine language, I was punching in hex codes into an Amiga, all from one reference manual. It was a painfully slow way to learn. With no IDE or other reference manuals, QBasic would be the only way to achieve any of this.
It's not a question of remembering. It's a question of it being deeply relevant if you're writing an operating system.
I've been there, just as everyone else who learned this stuff pre-internet. Not only did I know how much memory I could address, but the location and behaviour of various i/o ports and hardware interrupts, not because I have a good memory but because of necessity.
Quite likely. Many early x86 programming environments had limits around 64K due to segentation (e.g. early Turbo Pascal), so I'm not at all surprised that someone stuck with crappy old books and little access to information would think the machine had 64K RAM.
As an illustration to those that don't seem to understand, there was that year when I was a kid when my friends and I decided BASIC on the C64 was not good enough, and we tried to figure out how to get started with assembler....
Something that started with us trying to poke the character codes for BASIC statements into memory, unaware that we were not only still writing BASIC, but had "invented" a storage method substantially less efficient than what BASIC on the C64 already used (it was stored tokenized).. It took a long time before I managed to get hold of an assembler, and months more before I managed to get hold of a tutorial that got me anywhere.
This was with a group of 5-6 of us that all wanted to learn, but none of whom knew where to get the information, nor had parents that knew. My dad was programming, but only BASIC, and didn't know where to get what I wanted - few books were available, even fewer translated.
People really shouldn't underestimate how vital easy access to documentation is.
We're talking about a time when e.g. when I (years later) finally got hold of precise cycle counts for raster interrupts for the C64 (understanding precise cycle counts in the presence of sprites etc. was vital for many more advanced demo effects), it was a 3rd or 4th generation photocopy of a handwritten diagram that someone had partially learned from others, partially reverse engineered through countless hours of adjusting interrupts a cycle at a time to study the results.
None of the books I'd managed to get hold of contained even a fraction of the amount of detail.
That seemed odd to me as well. On the other hand, he was programming in QBASIC and text mode (from what I saw in the screen shots). Nothing he did probably required a lot of memory, and since he never had access to new software, it was probably never an issue. So it's understandable. Unfortunately he wasn't left with a copy of Turbo C++ (or TASM) and a good programming book.
In Australia, there was a separate company called Osborne that indeed marketed the Osborne I -- but continued to live on and sell PC clones after the American Osborne went out of business.
Check out Notch's Twitch broadcast history[1]. Since Mojang was sold he has been playing a variety of games, but scroll down a bit and it mostly turns into live programming and Team Fortress 2.
The earliest broadcast is titled "Notch: Creator of Minecraft," from August 2011. Minecraft was released in 2009. So those videos aren't really evidence one way or the other in regards to what I'm saying: people who do big solo projects don't seem to play many games during the time they're hammering out features. And while Notch's LD sprints are impressive, he hasn't really shipped a big project since Minecraft.
Whoops, I just noticed I phrased my original comment like "I wonder how many games Notch plays" (present tense) which is exactly what you showed. I meant to phrase it in past tense. Sorry, that was my bad.
Notch had handed over the vast majority of Minecraft development to Jeb at that point so its not surprising that he was playing so much TF2. I doubt he was playing as much when he was the sole developer.
It sounds quite reasonable to me. I did morally similar things on an 8088 machine, 10 years previous. Eg, no ray-tracing, but I did an animated movie. No operating system, but I wrote my own BASIC in BASIC. Everything described is well within the skills of a hobbyist.
While I played a bunch of games on it, they weren't games to play to death. Once I finished the levels of Loderunner, for example, it looped back to level 1, and I stopped playing it. The game instead was to figure out neat thing to do, then do it.
The comments on the reddit link are often uninformed, both the negative ones (few hobbyists of the era used source control) and the positive (the projects did not make real use of the hardware, and show no special 'knack' - I certainly am from that era but have no knack for the demoscene).
I'll remember visual images from tons of places, people, games, music, street names and books. But I'd not have a clue what they were called.
I'd know where my school was, I'd just 'go there', I didn't know the street name.
I'd turn on the TV, I didn't know what brand it was.
I'd just turn on the computer and play Escape Velocity, didn't know it was called that.
There are lots of exceptions, like I wouldn't miss the name 'teenage mutant ninja turtles' or ever forget it. But especially for things like computer games when I was 8, I'd just 'doubleclick the game icon with the picture of a car' not having a clue what that racing game was called.
Thank god it's not just me! I feel I went about my days the same way you did. I didn't "Get on the 486DX2", I got on "the computer".
I've had so many questions about my story with people saying "I call bullshit because he wasn't able to remember (minor detail X)" etc. It's only through absolutely racking my brains to bits and insane amounts of googling, facebook messages to old friends and such that I've managed to answer a few of these. It's good to know that my memory is not just deteriorating rapidly as I'd initially thought.
Some things stand out more than others. I was suspected of having ADD for a while, then the diagnosis was shifted to Aspergers Syndrome (something they apparently didn't know much about back then, or was not as commonly diagnosed/referred to as it is nowadays), but a potential giveaway for this was that I had an eidetic memory for some things, and a lot of other stuff that should've been important but I didn't care about was instantly discarded. I can remember down to a millimetre what few toys and possessions I owned, and what they looked like, yet I can't remember what my own BEDROOM looked like because it wasn't the bedroom itself, it was what interested me within it. The same went for most of my house, I barely remember what it looks like or what the furniture placement was. I put this down to perhaps some kind of mental block for traumatic memories. The old house appears in my dreams as a very very very large building and often in pitch black darkness so that I cannot really see what it looks like save for an insanely dim and flickering flashlight. I guess the mind has a funny way of dealing with inabilities to recall events.
Yet I can recreate in my head in incredible detail the structure of the school I attended as I spent quite a considerable amount of my time every day there, and I found the absolutely enormous building to be very interesting and different compared to the bland 1970s brick and tan buidings of my primary school years (I actually went on to recreate it in 3d from memory recently and was able to source some photos of it from the school themself).
And yet, I can't remember how much RAM my system had, because it wasn't of any interest to me. It was just "the computer" to me at the time, not "the 486 DX2". Any time I would've seen how much memory the system had (I don't recall if I even used the MEM command, assuming it existed in that version of DOS) but if I had, it would've been "Oh I have X amount, okay" and then I probably never checked it again.
I also don't remember what exact games I had installed on the system, as I barely ever played most of them. I remember which ones I'd played at that point, but I do remember I definitely had Rise of the Triad shareware on there as it served as a key inspiration for writing a "3d" raycaster/FPS style engine. Interesting how selective memory can be, and how it will remember utterly useless details and points of information (or worse, remind you of the moments you did something embarassing or stupid) yet when it comes to crucial or vital events, it can draw a blank on something that was so striking to witness that you would think it would burn the image into your head for an eternity.
The only reason I knew anything about the hardware of the classic Macs at the time was that I was an Amiga user, and Macs were occasionally dragged in on the periphery of the war of the 68k based machines that was primarily an Amiga vs Atari thing.
Beyond knowing it too had a 68k, that it had laughable small screen and was monochrome and cost a ridiculous amount, that was it.
That was despite hanging out at the local computer store every few days, and reading every computer magazine I got my hands on (I can thank Commodore Computing International for a lot the earliest English I learned)
Most PC users of the era certainly had no reason to know much more about Apple than the name Mac, and know it was some other computer.
I, and I assume anyone else that has tried, get much more enjoyment out of writing a game than playing games. And writing an OS is probably even more fun than writing a game.
Edit: Also just wanted to point out that writing a few games has in a way ruined playing games for me. I still load up a new or classic game every now and then but it's more to admire what the developers have done and not so much as to play the game. I don't really 'play' games any more.
That's interesting. After getting into game modding, I lost most interest in single player games other than modding them/playing with mods. Multi-player FPS was still fun, but playing Crysis after tweaking some LUA files so you were invincible and could punch trucks into the air was way more fun to me.
Two other similar things ring similar to me. I was big into haunted houses when I was younger, volunteered at them and hung out around the online "haunting" community every season, and to this day visiting haunted houses is more about admiring what is being done than being scared. I recognize the animitronics from the catalog, know to expect that panel to drop, and know how that illusion is done, but I still enjoy visiting a good haunted house.
The other really sad thing, is that living in downtown Atlanta where there is a moving/tv show being filmed within a block of my place every other week it seems, I've seen the sausage being made. Knowing how long it takes to setup and shoot a scene that may only be 30 seconds in the movie, it's "ruined" watching TV shows/movies, as I can't help but think about the filming process. I was blissfully unaware how much work went into filming a simple shot of two people walking down a city street.
Doesn't it make you appreciate movies in another way though?
Knowing how it's done and how difficult it is, don't you start looking at things such as lightning, cut techniques etc. in a more informed manner?
It's not usually the same movies (or music, or games) that gets popular with the professionals in the industry is popular with regular folks, for this very reason.
Yep. I think that applies to most things in life. It's like a separate category of emotion opens up of appreciation instead of things being pure enjoyment/entertainment after you know the work that goes into something.
I still play Doom at least weekly, and by play I mean really play. And it inspires me to work on my own stuff.
A handful of maps to go through and I've completed plutonia on UV. Next, I'm probably playing Back to Saturn X ep1. It's amazing there's so much new, inspiring stuff for this old game..
This is not meant as a troll post but a genuine observation after spending the last year or so migrating various businesses away from MongoDB (or from parse which uses mongo):
Has anyone ever built a non trivial application on MongoDB and been happy with their decision, say, 1 year later? If so, what kind of use case was it? I am genuinely curious.
The impression I've received is that Mongo is ridiculously easy to get started with but the flaws become more and more of a hindrance over time, eventually making certain types of application features virtually impossible to implement.
Absolutely. We've been using Mongo for all the core functionality at TrackIf.com and are still very happy with it. (Our biggest complaint was our initial MongoDB host provider was hosing our performance, once we switched to a non-shared Mongo environment it was a night-and-day difference.)
is it fair to guess that you use elasticsearch for product search and mongo for tracking item level prices? i.e. most of your mongo queries are direct key lookups?
I would love to see a poll of this (with developers experience included). Two or three years back everyone was ranting about how great Mongo was. Now most articles I see seem to be about how bad it is. And I see lots of developers squeezing relational problems into Mongo. I assume it is good for some things, but it would be interesting to see where people have had problems and why.
thanks for the link, I wonder how they use it? The companies I've been working with have made the mistake of using Mongo as their sole data store for everything, rather than for one specific purpose.
sounds like more direct key lookups. I can definitely believe mongo is suited for that particular use case, but I'm super sceptical about it being used as a general data store.
It depends on how you perceive writing. For example, "Old Man and the Sea" might be the greatest essay about criticism ever written, despite the fact that it's not an essay. You have to see through the story to get to the essay.
I think the reason so many people enjoy Paul Graham's writing is not only due to the subject or the genre, it's that he transcends the category, much like Hemingway did when he wrote "Old Man and the Sea."
> No one should have any expectation of privacy for anything they put on the Internet.
Right, except Joanna Public does have this expectation and continues to do so because of manifestly poor public education about the risks of the internet. We should literally have lessons about this stuff in schools.
And as another commenter stated, these things were not "online", they were "on a computer". If I can have no expectation of privacy for things I put on a computer then that is going to lead to no expectation of privacy under any circumstances. This stuff is going to have profound social consequences and something has to change.
I did receive education on the risks of the internet, starting in elementary school (around 4th grade). In grade school we where given school-district emails, which we used to communicate with teachers, get information from the school district, and could use to talk to other students.
I still remember when we where first given these, because our teacher gave a very long warning about using the internet. I remember the exact phrase "whatever you put on the internet will be there forever, and you can never take it down. Think about that before doing anything."
This was about a decade ago, but I grew up in Redmond, Washington, so my education is probably very different from other peoples (at least regarding computers).
Nah, that's the same education we got in 1995 in high school, too. What happened in the interim is that there were a couple of dot-com bubbles where companies encouraged you to share recklessly because they built business models on it. Ignore all that safety stuff. So I see all these services pop up that ask you to do things we were always taught not to do, it created intense feelings of unease in me, but everybody did it anyway. And then nude pics get hacked and shared, people get harassed/fired because of a global Facebook tweet saying something stupid, and everybody acts like it's a big fucking surprise when all they had to do was follow the rules. But the rules conflicted with the merger of narcissism and corporate profits.
Monitor the HTTP activity with FF developer tools while using Google. It's plain to see that no new traffic flows to Google occurs when I click a link.
Hello. PHP is good. It is still far faster and easier to put together a website in PHP than any other language. It has enabled millions of people to become web developers. It powers about 90% of the web and best of all it offends language snobs
> It is still far faster and easier to put together a website in PHP than any other language.
Faster than Node.js + Express?
> It has enabled millions of people to become web developers.
Factually (probably) correct, but irrelevant to the quality of the language itself. Bit of a pointless argument, as it wasn't the crappiness of PHP that made it popular; it was just the only accessible platform around and happened to be crappy.
> It powers about 90% of the web
Appeal to popularity, not a valid argument. Says nothing about language quality.
Absolutely, yes. Take a newbie and ask them to create a web page using express, then ask them to try in PHP. They are worlds apart in terms of usability and approachability. (I say this as someone who almost exclusively writes in node these days)
> it was just the only accessible platform around and happened to be crappy.
How can it be crappy if it's the only accessible platform around? An alternative view point is that PHP is the best, most empowering platform, because it's accessible to newcomers, and every other language is crappy in comparison because they have failed to match PHP's accessibility.
> Appeal to popularity, not a valid argument. Says nothing about language quality.
You seem to be talking about PHP the language. There is no doubt that PHP the language is flawed. That is totally irrelevant. What matters is how effective PHP the ecosystem is, and it is undeniably incredibly effective. That's why people use it, because it is a practical way to get things done.
So, if we're talking about PHP the ecosystem, then popularity is absolutely a valid metric here. It's easy to hire for, has tons of libraries etc, this stuff matters a lot more than the associativity of the ternary operator.
People seem to keep making the mistake of building a social network in mongo. It's entirely unsuitable for that.
Source: I've helped 3 companies move their social networks from MongoDB to OrientDB when they figured out that MongoDB prevents them from shipping features that users expect, e.g. friend-of-a-friend style queries