Who needs a database?



  • I'm not sure what is more worrying, the fact that this exists, or the fact that its been kicked on dotnetkicks 9+ times. 

    "The first hurdle was to decide how I would generate the 10 daily puzzles. I didn't like the idea of having a scheduled process generate 10 new puzzles at midnight every day so I went with generating several months worth of puzzles and placed 10 puzzles into their own "solution" text file."

    Thoughts?



  • Sudoku is the realm of the mentally limited. It's really really easy when you know how to do it (just mechanically and mindlessly apply half a dozen rules) and you can write a program to solve them in under half an hour. They're about as challenging as a join-the-dots "puzzle".

    Idiocracy, "Ass". Enough said.



  • I never saw a *dynamic* web host that doesn't provide at least a MySQL database, so what's the point.

    It's like "who needs legs when you can walk on you hands", sure you can, but it's a lot harder and less efficient. 



  • @asuffield said:

    Sudoku is the realm of the mentally limited. It's really really easy when you know how to do it (just mechanically and mindlessly apply half a dozen rules) and you can write a program to solve them in under half an hour. They're about as challenging as a join-the-dots "puzzle".

    You can say the same about chess. It's just set of rules - you just have to consider all your and opponent's moves and choose winning strategy.

    Some VERY hard sudoku can be solved only considering many cell-relations at once. There's a rule, but it's hard to wrap your mind around it - that's the fun of it. If you say it's as hard as join-the-dots, then you either haven't seen good sudoku puzzles, or you're used to join-the-dots in 6d space with some dots being control points of high-order bezier curves.

    Same goes for crosswords, puzzles, word games, ...



  • @asuffield said:

    Sudoku is the realm of the mentally limited. It's really really easy when you know how to do it (just mechanically and mindlessly apply half a dozen rules) and you can write a program to solve them in under half an hour. They're about as challenging as a join-the-dots "puzzle".

    Idiocracy, "Ass". Enough said.

    The same can be said for about any kind of puzzle. Personally, I like Sudokus.



  • @asuffield said:

    Sudoku is the realm of the mentally limited. It's really really easy when you know how to do it (just mechanically and mindlessly apply half a dozen rules) and you can write a program to solve them in under half an hour. They're about as challenging as a join-the-dots "puzzle".

     Actually, solving sudoku puzzles is known to be NP-complete. It's just that standard 9x9 grids of 3x3 blocks are so small that they can easily be solved by computers in under a second. Try writing a generalized solution for any size...
     



  • Of course, databases are useless! That's just a newfangled overhyped buzzword marketing machine. All you need are flat files! put records one after another in a file. Problem solved! Why bother with a database?

     Of course to make it work you would need to use one of the value in the records as an unique identifier. A kind of keyword which allows you to uniquely access a record. Something I call "Primary Keyword".

     You could also use one or multiple values of the records to create an "indexing" allowing fast access to records alleviating the need to browse the whole file.

    Since the creation of those files and the code associated to access them is repetitive and boring we could create some kind of 'engine' to create, maintain and access the files automatically. A DSL(Domain Specific Language) could also be created to communicate with that 'engine' and make things even easier. Write a few lines in that language and *poof* a new file is created with the format you want. In just a few lines you could specify that you want to retrieve the records of one or more files with a set of filters applied. I'd call it "Structural Request Language".

    Powerful data storage without the need of any kind of database whatsoever. How cool would that be?



  • @Monkeyget said:

    Of course, databases are useless! That's just a newfangled overhyped buzzword marketing machine. All you need are flat files! put records one after another in a file. Problem solved! Why bother with a database?

     Of course to make it work you would need to use one of the value in the records as an unique identifier. A kind of keyword which allows you to uniquely access a record. Something I call "Primary Keyword".

     You could also use one or multiple values of the records to create an "indexing" allowing fast access to records alleviating the need to browse the whole file.

    Since the creation of those files and the code associated to access them is repetitive and boring we could create some kind of 'engine' to create, maintain and access the files automatically. A DSL(Domain Specific Language) could also be created to communicate with that 'engine' and make things even easier. Write a few lines in that language and *poof* a new file is created with the format you want. In just a few lines you could specify that you want to retrieve the records of one or more files with a set of filters applied. I'd call it "Structural Request Language".

    Powerful data storage without the need of any kind of database whatsoever. How cool would that be?

    Why I say, sir - thou art a genius!  Mayhap you could make an open-sourced distribution for us to use until Oracle makes a better version.  ;]



  • @JimboJones said:

    I'm not sure what is more worrying, the fact that this exists, or the fact that its been kicked on dotnetkicks 9+ times. 

    "The first hurdle was to decide how I would generate the 10 daily puzzles. I didn't like the idea of having a scheduled process generate 10 new puzzles at midnight every day so I went with generating several months worth of puzzles and placed 10 puzzles into their own "solution" text file."

    Thoughts?

    Having read some of the follow-up comments, I take the guy's point that the application was so simple it didn't technically "need" a database. However, he seems pretty convinced that the app wouldn't need any of the other features (such as average scores etc) which you'd need a database for. I would have thought it would be better to put the stuff into a database so that at least you would have that possibility if you wanted it, rather than dismissing it out of hand. Using text files may be acceptable if the application is small, but it doesn't take long to get to the stage where you really need a database.
     



  • That Bastard!  He is using a database!

     It's my good friend, the filesystem.  Ever heard of him?



  • @Albatross said:

    That Bastard!  He is using a database!

     It's my good friend, the filesystem.  Ever heard of him?

     I think someone already commented to that effect on his blog.

     That said, I think that both of you are missing the point.
     



  • It's definately not the first time anyone tried this, Guppy is an open CMS with the same idea in mind, but why anyone would do this is beyond me. Not using a DB in these kinds of situations is completely and utterly crazy, and is a major step backwards in design not forwards. Why cripple your system when you dont have to



  • Ok, good people, true confessions: Once upon a time I learned to program in college, but have been doing network admin work ever since.  The only thing coming anywhere near line-by-line coding is very simple web site html.  But hokey-smokes moose and squirrel, even I remember what a flat file is!!!   It seems to me he's put in a fair amount of time on a "non-database solution" that technically is still a database.  My question is why would anyone want to waste their time on this in the first place?  Put in a few minutes on Google and you can find all kinds of sites to show you how to set one up.  All I can think of is that he's running out of fresh ideas to blog.



  • @asuffield said:

    Sudoku is the realm of the mentally limited. It's really really easy when you know how to do it (just mechanically and mindlessly apply half a dozen rules) and you can write a program to solve them in under half an hour.

    Solving Rubik's cubes without a blindfold is the realm of the mentally limited.  Any halfway intelligent person should be able to visualize the cube and track the movement of each surface square in his mind.  You can write a program to solve them in minutes, so solving one while blindfolded should be trivial.

    You're not one of those small-brained 'visual-solvers', are you?



  • @viraptor said:

    Some VERY hard sudoku can be solved only considering many cell-relations at once. There's a rule, but it's hard to wrap your mind around it - that's the fun of it.

    Indeed... for example, the Washington Post's online sudoku is quite easy, even the "5-star" ones, but many other publishers put out much harder puzzles.

    I recently wrote a sudoku solver, just for fun.  As usual, having to write it in code really sharpens the mind about the solving rules, and made me much better at solving the puzzles manually.  It's also kinda fun to write some seriously unmaintainable code (numeric literals all over the place, one-letter variables, etc.) since I know I'm throwing it away :-)

    If I was really bored, I suppose I could optimize it a bit, but it doesn't exactly seem worth it for something done in a second!



  • I just posted a reply to this here:  http://themicrobusinessexperiment.blogspot.com/2007/03/how-to-build-fully-functioning-website.html#comment-3917035291562903078

     And for ease of use, here's my post:

     

    I can understand this as purely a programming challenge but that's it.

    You're justification for using it in an actual system is based upon no changes to the requirements at all. Ever.

    It's not hard to imagine what other requirements may be required later and as soon as that happens you're stuck. Can you easily get the maximum score per user between two dates? Can you find the average score for users who's name starts with a 'W' and who have played 5 games between midnight and 3 am?

    All reasonable queries that are easily answered using SQL but that would require tight coulping and nastiness in this solution.

    Not to mention the lack of type safty, referential integrity checks, FK constraints, transactions, load balancing, query caching, index tuning over time, backup systems, running on redundant servers, triggers etc.

    There really is no justification for using this in an actual system. Software should be SOFT and using this makes the software rigid, highly coupled, inflexible and too much work for it's own good.

    I'm sure you brushed up on some programming skills and learnt a few new things about the languages you used along the way. And that's great for you. But that's it.



  • @Monkeyget said:

    Of course, databases are useless! That's just a newfangled overhyped buzzword marketing machine. All you need are flat files! put records one after another in a file. Problem solved! Why bother with a database?

     Of course to make it work you would need to use one of the value in the records as an unique identifier. A kind of keyword which allows you to uniquely access a record. Something I call "Primary Keyword".

     You could also use one or multiple values of the records to create an "indexing" allowing fast access to records alleviating the need to browse the whole file.

    Since the creation of those files and the code associated to access them is repetitive and boring we could create some kind of 'engine' to create, maintain and access the files automatically. A DSL(Domain Specific Language) could also be created to communicate with that 'engine' and make things even easier. Write a few lines in that language and *poof* a new file is created with the format you want. In just a few lines you could specify that you want to retrieve the records of one or more files with a set of filters applied. I'd call it "Structural Request Language".

    Powerful data storage without the need of any kind of database whatsoever. How cool would that be?

     My hat goes off to you sir. Brilliant



  • I agree that the site could have a lot more features, that would warrant the usage of a database to track scores and other end user stats. However, with the existing functionality requirements, I guess I was a bit sceptical as to the need to store the solutions (in serialized form) either on the filesystem or on a database at all.

    Anyway....for some extra laughs:

     http://themicrobusinessexperiment.blogspot.com/2007/03/how-i-went-from-100-page-views-day-to.html



  • @viraptor said:

    @asuffield said:

    Sudoku is the realm of the mentally limited. It's really really easy when you know how to do it (just mechanically and mindlessly apply half a dozen rules) and you can write a program to solve them in under half an hour. They're about as challenging as a join-the-dots "puzzle".

    You can say the same about chess. It's just set of rules - you just have to consider all your and opponent's moves and choose winning strategy.

    This is true only when playing against computers (which is indeed quite a pointless endeavour - writing programs to play chess is interesting, running them is not). The real game of chess is a battle of two minds trying to outwit each other - serious players don't win chess matches by studying the moves, they win by studying the opponent and figuring out how they think. It's about strategy, not tactics. Players who focus on the moves are invariably beaten by good players, who figured out what they were looking at and threw in some decoys. In this respect it is very similar to poker.

    Some VERY hard sudoku can be solved only considering many cell-relations at once. There's a rule, but it's hard to wrap your mind around it - that's the fun of it.

     

    Actually, no. There's a mathematical proof floating around somewhere that any 9x9 sudoku problem with a unique solution can be solved by applying a handful of very simple rules and considering no more than 5(?) cells at a time (I don't recall the exact number, but it's approximately five). People like to think that it's hard, because that would indicate they're smarter than a pocket calculator, but it really isn't. No thinking is required.

    Proving that was probably the only interesting thing about sudoku puzzles, and it's been done already.

    Same goes for crosswords, puzzles, word games, ...

    Crosswords are vastly more sophisticated - try writing a program to solve a crossword. You'll discover that almost every crossword can be filled with a great many sets of English words, all but one of which is wrong; the challenge is in deciphering the clues.


    Conflating sudoku with real challenges is exactly the kind of thinking that leads to "Ass".





  • You dilettante types are a hoot. Instead of participating in the spirit of the blog with an open mind, you bring all the prejudices and empty rhetoric consistent with your small-minded world view. Statements like yours make me think you're the kind 'developers' that turn a 2 month project into a 9 month fiasco.

     An open mind, curiosity and the willingness to say 'I don't know but I'll find out' are all attributes of intelligent people, attributes which show up in the blog in question. I can't say that for most of the comments about it.



  • @gpitou said:

    You dilettante types are a hoot. Instead of participating in the spirit of the blog with an open mind, you bring all the prejudices and empty rhetoric consistent with your small-minded world view. Statements like yours make me think you're the kind 'developers' that turn a 2 month project into a 9 month fiasco.

     An open mind, curiosity and the willingness to say 'I don't know but I'll find out' are all attributes of intelligent people, attributes which show up in the blog in question. I can't say that for most of the comments about it.

     This has to be auto-generated text.


Log in to reply