Building Your First Atom Plugin - <AUTHOR> https://github.com/blog/2231-building-your-first-atom-plugin <comment><USER2> After 10 years in Vim and 5 years in Emacs, I recently switched to Atom. The reason I switched is how easy it is to extend. And it truly is: I was up and running in a few hours with my first plugin in Atom (the emacs legacy of code is daunting, while vimscript is truly awful). This is a great resource, which I had patched together while I was building my first plugins.

One major downide of atom is that while you can develop your own plugins, core atom modules are extremely slow to accept contributions. I spent a lot of time on something ([https://github.com/atom/tree- view/pull/913](https://github.com/atom/tree-view/pull/913)) which makes sense in core but is hard to do as a package, and it's been ignored, along with 42 other PRs on the same repo.

I really like Atom for its hackability, but an important part of hackability is community contribution. Their roadmap is 404ing ([http://blog.atom.io/2014/10/23/public- roadmap.html](http://blog.atom.io/2014/10/23/public-roadmap.html)), they don't really take public contributions, and AFAICT there's no public product direction of any kind. I hope they solve this - Atom is too good to lose to bad community management.

<comment> lee-dohm Thanks very much for the feedback! We're always excited to hear when people enjoy using Atom.

It is true that we have been extremely slow to accept contributions. There are many causes for this, not the least of which is that we are a small team of maintainers working on a very large and ambitious project. Whatever the causes, it is something that I am committed to fixing. I'm working with the engineering manager on a new system of prioritization to burn down the backlog of PRs needing review ([https://github.com/search?utf8=%E2%9C%93&q=user%3Aatom+is%3A...](https://github.com/search?utf8=%E2%9C%93&q=user%3Aatom+is%3Apr+is%3Aopen+label%3Aneeds- review)). We feel we've made some good progress because of it.

We took down the roadmap because it wasn't being maintained by the team anymore. (I'll amend the blog post to note that fact.) We felt that no roadmap is better than an incorrect one. The best we can offer right now for a public roadmap is what is currently being worked on by the official Atom maintainers. There is an easy GitHub search linked in the Atom FAQ on the subject ([https://discuss.atom.io/t/is-there-an-atom- roadmap/21033](https://discuss.atom.io/t/is-there-an-atom-roadmap/21033)). Longer term this is also something that we are going to be increasing transparency on.

Again, thank you for calling out these problems. Community contribution is important to us. We're having some growing pains right now, yes. We are committed to fixing them and I and the rest of the team hope that you and others with the same concerns will stick with us while we work out exactly how to fix them!

<comment><USER3> I'm the engineering manager lee-dohm mentioned and I just want to echo his sentiment.

We recognize this problem and are working hard to improve it! We're of course thrilled by how popular Atom is, but as you've seen, it's been a real challenge to keep up with the size of the community. The team is small, but growing!

In fact, if you're interested in getting paid to help us fix this, apply to join the team! Openings for engineers on the Atom team will be posted here later this week: [https://github.com/about/jobs#positions](https://github.com/about/jobs#positions)

</comment></comment></comment><comment><USER4> Is there any plugin similar to this for Sublime?

EDIT: Not sure why I'm being downvoted, but I'm genuinely curious. I searched the package manager and google, but couldn't find anything that offered this functionality.

<comment><USER5> Here you go. [https://github.com/azac/sublime-howdoi-direct- paste](https://github.com/azac/sublime-howdoi-direct-paste)

I think it's really sad you're being downvoted. Dunno why anyone would do that, it's a good question.

<comment><USER4> So, the first 2 searches pulled back fairly poor results. It would perhaps be useful to have a _cycle to next result_ shortcut, in order to keep searching until you find something of use. That said, the Atom plugin used the same search term and returned a better first result, so it might be worth using something like their method for determining the top result.

FWIW...

First search, "QuickSort" returned:

      6 + 7 = 13
      13 / 2 = 6.5
      6.5 rounded down = 6

Next search, "BubbleSort", produced:

      It depends on the way your data is distributed - if you can make some assumptions. One of the best links I've found to understand when to use a bubble sort - or some other sort, is this - an animated view on sorting algorithms: http://www.sorting-algorithms.com/

</comment></comment></comment><comment><USER6> Atom does look very cool. Systems will get faster and any performance problems with Atom should diminish.

But Atom makes me sad. I've got years and years invested in understanding how Emacs works and being able to tweet the capabilities of Emacs and write my own commands and packages in Emacs Lisp. I feel kind of stuck with it now.

Don't get me wrong its a great place to be stuck--Emacs is the world's most powerful editor. Yet, a weakness that has always bothered about Emacs is it's reliance on an unpopular language, its own version of Lisp. There are so many Javascript programmers that, eventually, a Javascript based editor will exceed the capabilities Emacs which is written in Lisp and C. (I don't rule out success for NeoVim either, the foundation of vim with a clean way to write packages in Python, totally cool!)

I wish there was a Neomacs project or a true org-mode and magit for Atom.

<comment><USER7> Systems will not get faster since Moore's (not murphys) law is reaching its end. Though Atom could certainly get faster in a variety of ways. I think my biggest problem with atom currently is that its only useful on a personal computer in long sessions. I would never (could never) install it on a server and certainly cant use it to create a little script or project.

<comment><USER8> Is it reaching it's end though? I could foresee us simply scaling horizontally rather than vertically. Even if it ends up drawing more power, more total CPU could still mean an increase in raw performance, no?

 _(assuming systems were setup with better parallel processing. I 'm aware that NodeJS is pretty terrible on this front)_

</comment></comment></comment><comment><USER9> Yay - it's great to get some more documentation about how to build plugins for Atom.

That said, this tutorial neatly avoids adding much to Atom's view layer. When you try to extend the user interface you'll eventually run into [https://github.com/atom/atom/issues/5756](https://github.com/atom/atom/issues/5756) "Let's choose a view framework for docs, generated packages, etc." which has been open for nearly 18 months.

There's a commendable commitment not to force a single view framework on all plugin authors, but the cost of that seems to be that there's no single view framework that the project feels comfortable recommending and documenting as a starting point for new authors. And without a view framework to present as an example, there's little to go on to help figure out how to structure a plugin with some custom user interface components. The project generator used in this tutorial creates a sourcefetch-view.js file, but the tutorial never mentions it. The Atom flight manual talks about the view file in a little more detail, but stops short of explaining how responsibilities should be split between model and view in a more complex plugin. The best option available seems to be to go reading through the source code of other existing plugins out there, but as each chooses a different approach (see original problem) it's difficult to pick up what might be considered best practice and what has been deprecated - some packages use atom-space-pen-views for example, but that's the old recommended view framework that's been deprecated for a while.

I like Atom as an editor, and part of the reason is that I really would like to extend it by using the languages that I'm already familiar with. But writing a plugin will (for me) only ever be a side project, and the amount of research I need to do to understand how to build some meaningful UI in Atom is too great at the moment for me.

</comment><comment><USER10> I really want to love Atom, mainly due to the plethora of cool plugins being created lately. However, its inability to handle large files and the slow launch times are unfortunate.

<comment><USER11> It seems like some people have created VLF-like packages for Atom that employ similar workarounds to emacs for large files. This tickles me, but I assume long term this'll be solved more fundamentally.

I personally never cared much about emacs' similarly slow loading times, and don't see much of an issue with a modern editor taking time to start up. I'm happy just never quitting emacs on any of my machines, but it does mean you need something that interacts with sudo (i.e. tramp in emacs) to make quick edits to config files etc.

<comment><USER12> In Emacs' case, it bothered me until I discovered you can compile everything (including your `.emacs` file) and have it boot a lot faster.

AFAIK, there's no equivalent in Atom yet.

</comment></comment></comment><comment><USER13> I'm glad someone finally made a tutorial for this. I've had some ideas for atom plugins but little help in implementing them.

</comment><comment><USER14> Hey everyone ! I'm Nick - GitHub Campus Expert and the author of this tutorial. I'm glad that you all enjoyed hacking with Atom and can't believe that my post got to the front page! I would love to answer any questions about the content and would appreciate any feedback for this or future posts.

<comment><USER15> Automatically finding and dragging in code from stackoverflow is the most dangerous thing I've ever heard of. How accurate would you consider comparisons between yourself and J. Robert Oppenheimer?

Jokes aside it's a cool tutorial. Plugin development for many editors is unnecessarily hard and a detriment to their ecosystems. It's cool that it's that simple for Atom. But as someone happy with my current editors (Jetbrains derivatives + plugins for projects / Sublime + plugins for small stuff), what advantages would you say Atom has that would incentivize people to try it out?

<comment><USER14> While I advocate hacking Atom, I don't advocate actually using the plugin the tutorial teaches you to make as-is! A safer bet is Sourcerer ([https://atom.io/packages/sourcerer](https://atom.io/packages/sourcerer)) - it's got some neat features like previewing snippets and attributing credit to the SO author through added comments. I always thought of this plugin as an educational tool for learning new languages, rather than something to be used regularly when building real software. That said, So many of us use StackOverflow to find library/API examples, and this is a nice shortcut! I think that this is generally safe for finding one-line examples and shorter snippets, where it's easy to read and understand what the code does.

Before switching to Atom, I used vim and Sublime Text. The thing I enjoyed most about both of these editors was extending them with plugins. I think it's important to customise and personalise your editor because it's one of the few tools we use the most as developers, and any tweak/feature that saves us time doing a particular task means a great deal in the long term. I chose to switch to Atom because it's an editor designed around being easy to extend and customise - anyone who has done any web/Node development can dive right in. There are already nearly 5000 packages and themes available, and so far I found it much more open and easier to develop for than both Sublime and Vim.

</comment></comment></comment><comment><USER16>
      We'll be building a clone of Sourcerer, a plugin for finding
      and using code snippets from StackOverflow.

I wish some other example was demonstrated. This reminds one of [https://imgur.com/gallery/SZPjHwz](https://imgur.com/gallery/SZPjHwz)

EDIT: This is even more disappointing after observing that the post author -- "GitHub Campus Expert". What a fantastic example being presented to students.

</comment><comment><USER17> Offtopic but is there some similar resource regarding VS Code?

<comment><USER18> They have an overview and inside it links to a copule example repos:

\- [https://code.visualstudio.com/docs/extensions/overview](https://code.visualstudio.com/docs/extensions/overview) \- [https://code.visualstudio.com/docs/extensions/example- hello-...](https://code.visualstudio.com/docs/extensions/example-hello-world)) to some getting started examples

</comment></comment><comment><USER19> I like Atom, but man the start-up time is rough when there are several plugins installed.

<comment><USER20> Given the amount of complaints about this (from me as well) I would think this would be priority #1 for Atom developers, but that doesn't seem to be the case.

I remember some time ago there was an uber issue on Github for this, but I think I remember seeing it marked as resolved when I can absolutely tell not much has changed (and I have installed barely any plugins). :(

EDIT: I guess I was wrong[0,1]

[0] [https://github.com/atom/atom/issues/2654](https://github.com/atom/atom/issues/2654) [1] [https://github.com/atom/atom/issues/9572](https://github.com/atom/atom/issues/9572)

</comment></comment><comment><USER21> in before Visual Stuidio Code/Sublime is better than Atom

</comment><comment><USER22> Little bit off topic but it is ironic that Atom's biggest problem of being laggy also applies to their blog post.</comment>


Bitcoin dives 14% as South Korea prepares cryptocurrency ban - <AUTHOR> https://www.ft.com/content/fd0b88ba-d91a-3d14-9591-fd9d80a4714a <comment><USER2> Reminds me of June 2017 when everyone split a ball because China was threatening regulation. Haters left and the lovers claimed.</comment>


HP donates a hefty server to homebrew WebOS Internals Group - <AUTHOR> http://www.precentral.net/hp-donates-server-homebrew-webos-internals-group

<comment><USER2> Very cool of them, especially with no strings attached.</comment>


Why Renewables Can't Save the Planet - <AUTHOR> https://quillette.com/2019/02/27/why-renewables-cant-save-the-planet/ <comment><USER2> Well, at least finally someone noticed (and had the courage to write) that:

>We tend to think of solar panels as clean, but the truth is that there is no plan anywhere to deal with solar panels at the end of their 20 to 25 year lifespan.

And wait until someone will consider (car and home solar) batteries waste after their lifecycle is over ...

<comment><USER2> Addition, previous realated discussion:

[https://news.ycombinator.com/item?id=13249628](https://news.ycombinator.com/item?id=13249628)

[https://news.ycombinator.com/item?id=13250258](https://news.ycombinator.com/item?id=13250258)

[https://news.ycombinator.com/item?id=13250584](https://news.ycombinator.com/item?id=13250584)</comment></comment>


The Brain That Couldn't Remember - <AUTHOR> http://www.nytimes.com/2016/08/07/magazine/the-brain-that-couldnt-remember.html <comment><USER2> I'm very skeptical of scientists who destroy experiment data. Storage space is less of a problem every year, and it is a huge comfort that you can ask a researcher for the data they collected.

In this case she was actively destroying data after finding contradictory evidence. It is hard for me to conceive of a situation where that would be appropriate, especially where there other researchers cannot duplicate her experiments.

<comment><USER3> I completely agree. At what point is it EVER ok to destroy scientific research data? I understand that in some fields the experiment products can be MASSIVE and storing that raw data might be impossible or impractical (i.e. baseband radio data that might be terabytes per hour). In this case it's maybe a few tens of gigabytes of data if the files were properly digitized? At most a few tens of terabytes, which is chump change!

I agree with the author's comments that this seems like retroactive action taken when it came to light that there might be other factors involved (the other lesion, etc). Or to prevent re-interpretation of her findings that might point out things she ignored/hid.

</comment></comment><comment><USER4> This was wonderfully written. It's clear though that the fine storytelling presents one specific perspective and opinion (which is a good thing, in my opinion). I would, however, like to see another side of the story. Are there others who side with Corkin? What do they have to say about the controversy?

</comment><comment><AUTHOR> As someone who used to study a lot of neuroscience, I was really surprised to learn about the frontal lobe damage. The dogma has been that HM personifies what happens when there is bilateral medial temporal lobe damage.

</comment><comment><USER5> There's a great video by the VSAUCE guy about this patient: [https://www.youtube.com/watch?v=7mvx- mAUJL8](https://www.youtube.com/watch?v=7mvx-mAUJL8)

</comment><comment><USER6> What were the "might not have been good experiments"?</comment>


Rethinking Always Be Coding - <AUTHOR> https://www.rockandnull.com/rethinking-always-be-coding/ <comment><USER2> I agree coding as much as you can might not be the best approach.

My opinion is do what you feel most excited about.

For me, it was drawing and coding from age 10 to 20. And I seldom read books.

Now, I'm mostly excited about reading on a wide range of topics (non fictional books). I find it amazing to discover the world through books, just like having a conversation with the most interesting people that ever existed on Earth.

Our taste change over time. Just like I couldn't eat garlic, salad or pomelo when I was a kid. Not true anymore.

If you "force yourself" to do coding while your interest is elsewhere, it can be as harmful as forcing a kid to eat garlic and pomelos.

Just do the right things at the right time. Listen to your inner excitement when doing things, or after completing a task.</comment>


Stanford Class: Probabilistic Graphical Models - <AUTHOR> http://www.pgm-class.org/ If this is not a watered down version of the offline Stanford course, this really isn't to be missed-- Koller is a huge force in PGMs. <comment><AUTHOR> PGMs don't get the same sexy treatment that ML and AI seem to get in pop science articles, so it may be worth stating explicitly that they're very much used in ML and are intellectually fascinating in their own right. A graphical model can fully describe the distribution and dependences of a model. Why this is important: a graphical model makes it very easy to give a computer your model, and there has been great success over the past two decades in doing just this [1].

Further, Daphne Koller is a serious force in the field, and seems to be a pretty good supervisor, so I'm guessing/hoping she is an interesting/engaging lecturer as well. Though, Stanford CS/Stats students are more able to comment on this last point.

[1] <http://www.mrc-bsu.cam.ac.uk/bugs/winbugs/contents.shtml>

<comment><USER2> I'm I right to surmise that "graphical" refers to graphs rather than "graphics", or was that just one example in the video?

<comment><USER3> Yes. Confusing, isn't it?

<comment><USER4> For me, as non native English speaker is more confusing.

In Portuguese we say grafos(graphs) and gráficos, when we refer to pics and images. And when I read something in English, I wonder if its graphs referring to maths or to pics.

</comment></comment></comment></comment><comment><USER5> If you are interested in learning this topic, do not go directly to Koller/Friedman book - it sure contains a lot of material but its presentation is not well integrated (just look at the topic dependency graph at the beginning).

A much more cohesive introduction would be Michael Jordan's book draft that has been floating around for nearly a decade now. You can find some of the older versions online, e.g. <http://www.cs.cmu.edu/~lebanon/pub/book>

Go directly to chapter 5 to see how the language of PGMs can help to clarify a lot of standard material in stats and ML.

<comment><USER6> Was this (Jordan's) book published? If yes, what is it called? He seems to have a couple of other books on Graphical models, but the contents of those book don't line up with the ones at the link above.

<comment><USER7> This book does not exist as a published volume, at least not in the way it is presented in this draft. This is why it tends to circulate as a draft, rather than as (say) an Amazon link.

<comment><USER6> Thank You. I spent some time looking for it. And if anyone who has an up to date draft wants to send me a copy, my email is in my profile, Thanks in Advance :).

</comment></comment></comment></comment><comment><USER8> I have the book, and it is fantastically well written and easy to follow. I just signed up -- does anyone know if they send an email or something?

<comment><USER9> Based upon reading the course description, if you can grok Daphne + Nir's book, then you won't learn anything from the class.

"This class does require some abstract thinking and mathematical skills. However, it is designed to require fairly little background, and a motivated student can pick up the background material as the concepts are introduced. We hope that, using our new learning platform, it should be possible for everyone to understand all of the core material."

and "For additional depth, you can refer to the best-selling textbook, _Probabilistic Graphical Models: Principles and Techniques_ by Daphne and Nir Friedman."

<comment><USER8> I can grok the book, but I can't read it like it's a vampire novel and remember anything useful... hence the reason to sign up and have something of a schedule to follow.

</comment></comment></comment><comment><USER10> I'm curious. Why do these classes all have their own domain names?

<comment><USER11> You mean as opposed to pgm-class.online.stanford.edu? Well they're cheap, it makes the urls shorter, it's less confusing. Just good design. But too, I guess the ai-class is run by one of the teachers' startups, so it may be to separate them from Stanford, for that reason and to make it clear that you don't get Stanford credit.

<comment><USER12>
        > Just good design.

From a SEO standpoint, it would make more sense to have them all hosted at stanford.edu/someclass, since the classes would then benefit from the "trust- factor" of the root domain. You'll notice that most of Google's web properties are hosted at google.com/something and not something.google.com or a separate domain, presumably for the same reason.

<comment><USER13> Consider: maps., docs., mail., plus., groups., translate., books., scholar. There are probably a bunch more -- I don't think Google is scared of subdomains.

</comment></comment></comment></comment><comment><USER14> I think I'll wait for the 2nd edition of the book before taking the class.</comment>


GrantTree state of the union: 3x growth, £1m turnover reached, lessons learnt - <AUTHOR> http://blog.granttree.co.uk/post/65687908653/a-granttree-state-of-the-union-3-years-3x-growth-per

<comment><AUTHOR> If anyone has any follow-up questions, I'm happy to answer them.

<comment><USER2> Glad to see this is going well for you. I met you back in 2009 or 2010 I think when you first started doing this and I was doing Affect Labs (FestBuzz), which didn't really work out.

I'm now working on another UK startup (Satago) so might come your way for some grant advice soon.

<comment><AUTHOR> Sure, please do get in touch! :-)

</comment></comment></comment><comment><USER3> Interestingly, the UK government has today made all company accounts free to access, which should help lots of other small businesses to understand how their business is performing versus their competitors

[http://www.cosights.com/blog/uk-government-makes-company- acc...](http://www.cosights.com/blog/uk-government-makes-company-accounts- free-to-access/)

<comment><AUTHOR> That's nice! Duedil has already offered these records for free, but it's nice to see the government catching up.

<comment><USER4> Great article, but aren't you supposed to be beering it up rather than f5'ing HN? :)

<comment><AUTHOR> Champagne is coming out in about half an hour I think :-)

</comment></comment></comment></comment><comment><USER5> This is awesome. Chatted with you on IRC a couple of times before Swombat - thanks for the thoughtful advice and a willingness to help always.

</comment><comment><USER6> learned

<comment><AUTHOR> [http://www.usingenglish.com/forum/ask-teacher/5331-ues- learn...](http://www.usingenglish.com/forum/ask-teacher/5331-ues-learned-vs- learnt.html)</comment></comment>


Zero to Coder - Phase Zero. Installing Ruby on Rails. - <AUTHOR> http://www.zerotocoder.com/post/24879466530/phase-zero-installing-ruby-on-rails

<comment><USER2> Hi,

It's great you are sharing your thoughts as you go from 'zero' (as you say) to coder! I am planning on sharing your blog with a friend who wants to learn to code. It would be inspiring for her.

Just a small suggestion about the blog - the previous/next links to my brain are opposite of how they should be. Previous should take me to your older posts. Next to the newer ones. They are doing the opposite. Might confuse my friend and others.

<comment><AUTHOR> Right away! Will see whether I can change it. You should start too definitely if you haven't already.</comment></comment>


Ask HN: Why are wiki's UIs not evolving? - <AUTHOR> I am trying to build a wiki based site and I see that most of the UIs are not keeping up with the times? Is it inherent to nature of wikis or is it just a coincidence?
Eg: https://wikitravel.org/en/Altai_Tavan_Bogd_National_Park<p>Are there any good skins/theme for these (or any other) wiki's. <comment><USER2> If it ain't broke...

I don't really see how wikis could be improved by any modern design trends. They function well and are designed to be accessible by everyone on as many platforms and devices as possible.

<comment><USER3> > If it ain't broke...

Many of the comments below agree with this point. However I think the OP's question is worth exploring. Good design that leverages fonts, colors, spacing, layout, etc. is supposed to make sites more usable and enjoyable. Why can't we have a wiki that is easy to use/edit _and_ looks nice _and_ is accessible? These are not mutually exclusive are they? That being said, my recent wiki experience has all been using GitHub.

<comment><USER4> To be fair, Wikipedia has some themes that look very nice and modern, it's still accessible, and the visual editor makes it easy to edit as well.

</comment></comment></comment><comment><USER5> I guess my question is: what is wrong with that interface?

Is it missing a popup asking if you accept the cookie? If you accept the privacy policy? That the EU passed a law? That they want you to subscribe? That they can't send you spam unless you give them your email address?

If medium looked like that site, I wouldn't have medium blocked in my /etc/hosts file.

One trouble with Wikis is that the control of the content is not very tight, so if you want to make a layout which expects images and texts to line up in some complex way you are using the wrong tool.

<comment><AUTHOR> My point is that mediawiki based sites look like web1.0 ([https://blog.hallowelt.com/wp- content/uploads/2017/07/Metrol...](https://blog.hallowelt.com/wp- content/uploads/2017/07/Metrolook-Skin.png)) vs lets say, confluence pages([https://marketplace- cdn.atlassian.com/files/images/0e313fe9-...](https://marketplace- cdn.atlassian.com/files/images/0e313fe9-985d-476c-ac41-bd3f3992ef08.png)) or ([http://www.play-sql.com/wp- content/uploads/2014/09/Specifica...](http://www.play-sql.com/wp- content/uploads/2014/09/Specification-Detail-2.png))

Confluence for example looks like it is a web2.0 software(more space, better fonts, markdown support etc)

<comment><USER6> More space = wasted spaced. Better fonts = bigger fonts wasted space, markdown support = no one asked for it

In web 2.0 or 3.5.. We hide information from the user and fill up the page with space for full screens while designing for mobile. Wikis want to expose information / link ideas.. encourage browsing pages. Most sites want you to scroll down aimlessly.

</comment></comment></comment><comment><USER7> Because they are perfect just the way they are

[https://wiki2.org](https://wiki2.org) exists too tho

<comment><USER8> Thanks, I hate it. It even has a popup after a while [https://imgur.com/a/8Qsg8O2](https://imgur.com/a/8Qsg8O2)

Here is your reason OP.

</comment></comment><comment><USER9> Tiddlywiki is very hackable. You can make it look however you want. Lots of different interfaces can be built in it.

<comment><USER10> I remember having one Tiddlywiki on a pendrive... a long time ago :-)

I believe wikis should evolve to more advanced document types like "calendars", "tables", "databases" (like Filemaker), etc...

And you should be able to interface with that "semi" structured data somehow.

Just the mad idea of the day (tm).

<comment><USER9> I ain't an expert with the tool, but I use it a lot. There are plugins for those advanced document types for TW, but they aren't stellar unless you know exactly what you want. The nodejs option (especially TW5-Bob), however, seem very well-suited to quickly hacking together interfaces to your underlying OS and whatever can be accomplished on the CLI. It might do more now than it did for you a long time ago.

I think wikis are hypertext bombs, and TW a rapid prototyping tool. That's how I try to use my silly wiki ([https://philosopher.life/](https://philosopher.life/)).

</comment></comment></comment><comment><USER11> I did make a few CSS changes to my Wikipedia account. The mains thing I did were:

      * Serif font (Libre Baskerville).
      * Larger font size.
      * Fewer characters by line.
      * Hyphenation with left align.

Basically I tried to improve readability for me.

</comment><comment><USER12> Why change it when it ain't broke. See the aim of Wikipedia is to provide information in easiest possible way and I don't see a point of adding better UI smooth scroll, gradient nav bars, responsiveness. How it is present now is probably the MOST easiest for a user to understand.

</comment><comment><USER13> Probably not relevant, we have wikiwand.com, so the UI somehow _does_ evolve after all.

<comment><AUTHOR> Interestingly, wikiwand is exactly what was looking for. Thanks! Unfortunately, it is not open source.

</comment></comment><comment><USER14> What specific changes would you care to see?

I've made some modest styling changes (via Stylus) to Mediawiki: mostly a max- width main body constraint.</comment>


How much did it cost YouTube to stream Gangnam Style? - <AUTHOR> https://www.quora.com/YouTube/How-much-did-it-cost-YouTube-to-stream-Gangnam-Style

<comment><USER2> Somehow, the most interesting thing to me upon clicking this link aren't the answers but the relationships and demographics of responders and voters on Quora.

At a glance, looking at the top voted answer here. The upvoters are 13% are followers of the responder, 6% have surnames which are common in the USA, 15% have surnames common in India...

I'm sure the folks at Quora are drawing all kinds of interesting trends out of all those relationships.</comment>


Question about Virtual DNS with Cloudflare - <AUTHOR> I'm trying to accomplish something that I'm not sure is doable. I'm using Cloudflare for the domain rainbowgardensinc.com and have a CNAME for the cdn.rainbowgardensinc.com record that goes to rainb.wpengine.netdna-cdn.com, as shown below.
I'm using Cloudflare for my nameservers as well and want to mask the returned IP/CNAME record. I'm aware of CNAME flattening but that doesn't mask the IP, it just returns it. I just want to hide the returned IP address like it does for the root level domain and gives back a Cloudflare IP instead. Does anyone know if this is doable or if there is a service they offer to do it?
<comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment>-- </comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment>--
What it looks like right now:

  rainbowgardensinc.com.        	NS  	maya.ns.cloudflare.com.
  rainbowgardensinc.com.        	NS  	cory.ns.cloudflare.com.
  rainbowgardensinc.com.        	A   	184.108.40.206
  rainbowgardensinc.com.        	A   	126.96.36.199
  www.rainbowgardensinc.com.    	A   	220.127.116.11
  www.rainbowgardensinc.com.    	A   	220.127.116.11
  cdn.rainbowgardensinc.com.    	CNAME	rainb.wpengine.netdna-cdn.com.
  rainb.wpengine.netdna-cdn.com.	A   	18.104.22.168
 If we use CNAME flattening, it would show like this:

  cdn.rainbowgardensinc.com.    	A	184.108.40.206
 I want it to look like this after:

  rainbowgardensinc.com.        	NS  	maya.ns.cloudflare.com.
  rainbowgardensinc.com.        	NS  	cory.ns.cloudflare.com.
  rainbowgardensinc.com.        	A   	22.214.171.124
  rainbowgardensinc.com.        	A   	184.108.40.206
  www.rainbowgardensinc.com.    	A   	188.8.131.52
  www.rainbowgardensinc.com.    	A   	18.104.22.168
  cdn.rainbowgardensinc.com.    	A	220.127.116.11
  cdn.rainbowgardensinc.com.    	A	220.127.116.11
 </comment><comment><USER2> That should work if you "orange cloud" (activate) the cdn.rainbowgardensinc.com CNAME entry in the CloudFlare DNS control panel.

<comment><AUTHOR> Hey, thanks for responding to this. I'm sure you have things to do so I appreciate any time you take.

I have a screenshot of my CF panel here and the orange cloud is not available for that CNAME and I'm not sure why that would be. Maybe it's is a paid service I don't have access to.

[http://rainbowgardensinc.com/cf_dns.png](http://rainbowgardensinc.com/cf_dns.png)

The cdn CNAME is pointing to MaxCDN and they should be compatible with Cloudflare. I'm just not sure if there is a way to mask\hide that this CNAME resolves to them or not. I feel like it needs to return the IP from MaxCDN in order to even function.

I'm gonna reach out to them and see if they can offer any suggestions. Any other input you have would be appreciated. Thanks again

<comment><USER3> We don't allow CloudFlare to be enabled on that particular record because it's pointing at MaxCDN. In the particular case of proxying traffic to MaxCDN we've seen incompatibilities in the past that have lead to occasional errors. To ensure you don't encounter those errors we block enabling CloudFlare on that particular record.

<comment><AUTHOR> Okay, that makes sense. I saw the orange cloud was available for other CNAME records and was unsure about that. I have a client that I believe currently has the orange cloud enabled on a CNAME pointing to MaxCDN but was probably done before this change was put in place. I was curious how that was setup as I couldn't do it under my account but it all makes sense now.

Thanks again for both of yalls input.</comment></comment></comment></comment>


Bootstrapped, Profitable, & Proud: Envato - <AUTHOR> http://37signals.com/svn/posts/2594-bootstrapped-profitable-proud-envato <comment><USER2> "We have a very flexible work culture that is focused on putting good, smart people in positions where they have responsibility and trusting them to do a great job. What the 'work' actually looks like is much less important to us."

Wow. Can't put it much better than that.

<comment><USER3> Yeah, I work there... and sometimes the level of trust you're given is mindblowing. It's incredibly motivating, though sometimes a little scary :)

</comment></comment><comment><USER4> Running out of money forced them to cut features and launch. On my first project running out of time before school started forced us to cut features and launch.

Since then my projects have been after work and I haven't had any force requiring me to do this... So they haven't been launched.

Seems like some sort of outside force requiring you to launch is a good thing to have.

<comment><AUTHOR> > Seems like some sort of outside force requiring you to launch is a good > thing to have.

Sounds like a good idea for a startup...Nag.ly?

<comment><USER5> "Tell HN: I got sick of people procrastinating. Now I tell them to Finish Shit."

<http://news.ycombinator.com/item?id=1720962>

<http://finishshit.com/>

</comment></comment></comment><comment><USER6> I've spent more money through Envato sites (Themeforest specifically) than any other web site except for Ebay. I am glad to pay for the quality products they provide (through the designers of course). Keep up the good work.</comment>


Ask HN: Do Tesla and others have plans to use the expiring NiMH battery patents? - <AUTHOR>

The efficient NiMH battery patents that Chevron has held hostage for almost 20 years are expiring this year[0], but I have yet to read any information about any companies jumping on the technology.
One guy[1] claims that his Toyota EV has run over 100,000 miles on the original set of batteries to this day, which is very impressive. I don't remember where, but I recall reading an article that stated that although Tesla's batteries perform well, they require the use of a very complicated thermal management system. Additionally, they're using Lithium Ion, whose longevity is questionable.
Some information on the NiMH patents: https://en.wikipedia.org/wiki/Patent_encumbrance_of_large_automotive_NiMH_batteries#Current_status_of_the_Ovonics_battery_technology
Does anyone know of what plans there are to use these, and how they can be utilized in modern electronics? Can Tesla somehow incorporate them in their cars?
[0] http://ev.com/nimh-ev-batteries-held-hostage-until-2014/ [1] Part 1: https://www.youtube.com/watch?v=pDRBRuvct54 Part 2: http://www.youtube.com/watch?v=Waqep7f59ho <comment><USER2> Currently, the energy density of NiMH batteries is anywhere from 1/2-3/4 of LiIon batteries, so I wouldn't bet on them being used as traction packs for EVs anymore. It'll be interesting to see if more research is done on NiMH after the patents expire though.

<comment><AUTHOR> Hmm. Might be a trade-off between density and longevity then?</comment></comment>


Coldplay Are to Last.fm, as Beatles Were to Billboard - <AUTHOR> http://www.readwriteweb.com/archives/lastfm_bestof_2008.php <comment><USER2> Is Last.fm really as widely known and ubiquitous as the Billboards are though?</comment>


Your eyes get damages from computers. Finally, here comes a hero! - <AUTHOR> http://www.jins-jp.com/st/functional_en/pc.html

<comment><USER2> What's the science behind this? Obviously, like (nearly?) everyone else here, I make my living staring at a screen and if it's damaging my eyes, I'd like to know about that.

Similarly, does anyone have a pair of these lenses? Any good? Do your eyes feel any difference?

<comment><USER3> The energy of a blue photon is higher than a red one, and so an intense blue light might be an hazard [1]. That said, I don't think these glasses will help much, because according to their transmission curve they still transmit ~75% in the 470nm region (which corresponds to the blue emitted by "white" LEDs). If they had managed to make some kind of "optical notch filter" removing the ~470nm blue light from LEDs at a reasonable price it would have been pretty much an instabuy for me.

[1] <http://en.wikipedia.org/wiki/High-energy_visible_light></comment></comment>


Binge Watch Your Net Video Faster - <AUTHOR> http://www.brit.co/this-neat-trick-will-let-you-binge-watch-your-shows-faster/ <comment><AUTHOR> You'll need to use Chrome and disable flash @ chrome://plugins. Works great.</comment>


'World's most frustrating' tongue twister - <AUTHOR> http://www.itv.com/news/update/2013-12-04/worlds-most-frustrating-tongue-twister-revealed/ <comment><USER2> shelly sells seashells by the sea shore. the shells she sells are seashells i'm sure

/meh - not a native speaker :D

</comment><comment><USER3> red leather yellow leather red leather yellow leather red leather yellow leather

</comment><comment><USER4> Fairly trivial to say 10 times fast.

I'm disappointed.</comment>


Ask HN: What is a "consultant" in software engineering? - <AUTHOR> Is it just a fancy name for people doing better paid wage slavery with invoices instead of paychecks or people actually standing in as some sort of knowledge bank whilst writing few to no lines of code? <comment><USER2> Depends.

I view freelancer as just a developer/engineer that is paid on invoice.

I view consultant as someone with specialized or advanced knowledge who can address the problem beyond writing some code. But they may still write some code. But they are hired for a specific purpose and issue not as a general developer.

</comment><comment><USER3> The key to consultant vs contractor would for me the focus on specialized advice with the former, but that doesn't mean it is just that. E.g. a consulting gig could start with clear consulting ("talk to the customer about their problem, investigate, give them an expert opinion on how to solve it") and then turn into the consultant also doing the implementation. But a consultant also could just produce a report, or direct the client's employees on how to solve a problem.

And contractors will often do consulting in the beginning stages, e.g. if they're hired to "build a website", they might give the customer specialized advice on what to consider or prioritize, ...</comment>


People Steal Shit  - <AUTHOR> http://scrivle.com/2010/11/08/people-steal-shit/ <comment><USER2> The claim that one way to avoid having your shit stolen is to actually suck is interesting. I imagine that regardless of suck, as long as your content can be misappropriated for some purpose, no matter how nefarious, someone would be willing to steal it.

In a completely unrelated manner, this reminded me of <http://www.youtube.com/watch?v=EWrJqUtYW7Y> \- funny film, definitely worth a watch.</comment>


Fireball – Hackable HTML5 game engine inspired by Unity - <AUTHOR> http://fireball-x.com/en/

<comment><USER2> WOW! This looks like a great project!

Am I the only one though that tried the Duang Duang Sheep demo game at the bottom of the frontpage, and couldn't even pass the first pipe?</comment>


Mixing Differential Equations and Neural Networks for Physics-Informed Learning - <AUTHOR> https://mitmath.github.io/18337/lecture15/diffeq_machine_learning <comment><USER2> Very interesting stuff, I'll have to spend some time digesting this as it's relevant to some research interests of mine.

This might be a dumb question, but one thing I'm having trouble understanding is your use of the phrase 'data driven' here.

In the section "Solving Ordinary Differential Equations" you describe a method that seems to be able to (inefficiently) solve differential equations without having to take in some 'data', but instead only needing to know `f(u, t)`.

In the later section, where you introduce the Physics Informed Neural Network, it seems (but I could be misunderstanding) that you are assuming I have measurements of the actual solution and we're training the network with that data. Is this correct?

I was initially imagining a method where say I know the solution to the linear part of the differential equation and then train the network just using the non-linear part without having to have any data.

<comment><AUTHOR> >In the later section, where you introduce the Physics Informed Neural Network, it seems (but I could be misunderstanding) that you are assuming I have measurements of the actual solution and we're training the network with that data. Is this correct?

Yes, this is the PINN method M.Raissi, P.Perdikaris, and G.E.Karniadakis: use a physical underpinning as a function to help the learning but relax towards the data.

>I was initially imagining a method where say I know the solution to the linear part of the differential equation and then train the network just using the non-linear part without having to have any data.

These are the mixed neural differential equations that I have been showcasing with DiffEqFlux.jl

[https://github.com/JuliaDiffEq/DiffEqFlux.jl#mixed-neural- de...](https://github.com/JuliaDiffEq/DiffEqFlux.jl#mixed-neural-des)

So it's just different methods by different people / different groups (for different purposes).</comment></comment>


Response to 'Reasons why Lisp games suffer' - <AUTHOR> http://techsnuffle.com/2018/12/07/reasons-why-lisp-games-suffer-corrections <comment><USER3> Instead of using a vague term like "power", perhaps the LISP fans should promote the concept "leverage", whereby you can talk about getting a task done with the fewest words of code. Small LISP programs can be incredibly clever, and transformation languages like LISP and FORTH are well known to win every program-shortness contest. However Assembler has always been more powerful in the sense that you can do things in Assembler that you can't do in higher level languages, because there is no direct mapping from a higher level language to many of the special instructions that exist on modern chips. So using "power" is a lamentable word choice. LISP does have problems though, many consider it a "write-only" language which transfers very poorly to other programmers. You can measure transferability of a codebase by assigning a new person to it, giving them a task, and seeing how long it takes, and how much is broken in the process. LISP is avoided by most large companies for this reason alone. Leverage and other factors are heavily outweighed in overall cost to the organization by the difficulty of transferring a code base among people.

<comment><USER4> I like "power." It's evocative, and it maps to the feeling you get with a good language - when your intent is made manifest with little effort, you feel powerful (and _are_ powerful).

<comment><USER5> I think these are fairly good reasons why the term should _not_ be used. Appeal to the developer's power fantasy?

<comment><USER6> then should we aspire to... weakness, fragility, and impotence?

<comment><USER7> How about things like readability and ease of maintenance and modification? To those people making real products (and not just coding for a hobby), enabling collaboration is far more important than whether it lets the programmer feel clever and powerful.

(Hobby coding is cool and important too, but the aims are different.)

</comment></comment></comment></comment></comment><comment><USER8> I came in here hoping for more information on developing games in Lisp/Scheme. I liked the recommendation for implementing old games. I might take a swing at the original StarCraft (just for kicks).

I've been poking around trying to sort out how to bind Chicken Scheme [0] to the Godot [1] C API.

The idea is to work in Godot using C files compiled by Chicken. This _should_ work, in theory. The engine can handle the important timing stuff (mentioned in the article), and Scheme can be used for actual game-logic and algorithms.

I know a Scheme binding for Godot exists, but it hasn't been updated in quite a while.

[0] [https://www.call-cc.org/](https://www.call-cc.org/) [1] [https://godotengine.org/](https://godotengine.org/)

</comment><comment><USER9> > When you speak of non lisps are 'blub' you disregard the actual > characteristic of those languages and how they fit to the task.

What does 'blub' mean?

<comment><USER10> Other posters have given serious answers. I would add my own: its an excuse for a language superiority complex. It assumes that everyone using "less powerful" languages do so because they just don't understand "more powerful" languages while excluding the idea that they might just find that language X is the right fit for their domain. (e.g.: asm is probably more "powerful" than python, but I'd rather do string manipulation in the latter)

<comment><USER11> eh, it seems you got it backwards, pg's main point seem to me to be productiveness, he even talks about python being one of the best(lispier) of the mainstream languages, so in that context python would be more powerful than asm and not the other way around.

<comment><USER10> Substitute "productivity" there for power and I think the point still stands. PG sees a hierarchy of languages based on some inherent goodness of the language - and surprise, surprise, his favourite language, Lisp, is on top. I think that's BS. How good a language is depends more on the problem than some inherent quality of the language. I think it's pretty hard to get past the fact that a term like "Blub" clearly indicates that PG feels that he's a superior, higher class programmer than those who use "Blub" languages.

<comment><USER12> You say it depends on the problem you're solving, but if you turn around and look at the problems people are solving, you could easily see them falling largely into a few common classes.

Like, we all will admit that no natural language is inherently better than any other, but yet we still recommend that programmers learn English -- the quality of the language may not be inherent to the language, but it could be inherent to the context in which the language exists.

</comment></comment></comment></comment></comment><comment><USER13> I think we see more posts about Lisp community drama than we see posts about people actually doing things with Lisp.

<comment><USER14> Except for the the Clojure branch of the family tree.

Eg: there was this vaguely clojurey statically typed non-GC language, being targeted for games, presented at a recent Clojure conf: [https://github.com/carp-lang/Carp](https://github.com/carp-lang/Carp)

<comment><USER13> Ayup. I don't really see many Clojure drama posts, here.

</comment></comment></comment><comment><USER15> Lisp has been used in AAA games for scripting. [https://en.wikipedia.org/wiki/Game_Oriented_Assembly_Lisp](https://en.wikipedia.org/wiki/Game_Oriented_Assembly_Lisp)

<comment><USER16> GOAL wasn't just scripting, it was the main language for the engine. In the one example I've ever seen of GOAL code, you can clearly see inline ASM for instance.

Interestingly Halo used Lisp for scripting, and that rarely comes up.

<comment><USER17> > GOAL encourages an imperative programming style: programs tend to consist of > a sequence of events to be executed rather than the functional programming > style of functions to be evaluated recursively.

That alone is a pretty hard condemnation of LISP/functional for games.

It's not really LISP/Scheme at that point, but a LISP-ish syntax for an imperative language.

Some tasks are more innately imperative. Games (and game scripting) are in that category. Trying to force game programming to work in FP is like trying to build a computer in Minecraft: It's cool to see that it _can_ be done, but it doesn't say anything about whether it _should_ be done.

Proving Turing Completeness doesn't mean you would want to actually write code in a Turing Machine.

<comment><USER18> Lisp never was about functional programming (even if, in some way, it has invented it, or at least introduced the important building blocks). The Lisp family grew to be about symbolic computation, interactive development, and ability to modify the language to fit your needs (via macros) - <USER2> essentially eliminates whole classes of boilerplate, and allows you to directly express abstractions that cannot be specified cleanly in other languages.

Imperative is normal for most Lisps.

<comment><USER19> Just curious, but what do you mean by symbolic computation? Do you just mean evaluating mathematical expressions in a symbolic fashion (as opposed to numeric calculations), or do you mean something more general?

<comment><USER18> Yes, both. AFAIK symbols in Lisp were originally intended to support AI research, but part of that is being able to do symbolic manipulation and computation, be it analysis, algebra or logic.

</comment></comment></comment></comment></comment></comment><comment><USER20> I haven't programmed in Lisp yet, but I love the idea: it seems very directly inspired by lambda calculus. However, I tend to think of it as the opposite pole of expressiveness from ASM. Lisp excels at abstraction, but is not good at bit-twiddling, or (from my limited perspective) interacting with anything that isn't Lisp.

That said, I know that my perspective is incomplete at best, so I would listen very attentively to anyone who might disagree with it.

<comment><USER21> I made a Lisp dialect called TXR Lisp. I gave it a nice, ergonomic FFI. I took the MSDN "Your First Windows Program" which is a C sample, and translated it expression for expression:

[https://rosettacode.org/wiki/Window_creation#Win32.2FWin64](https://rosettacode.org/wiki/Window_creation#Win32.2FWin64)

The C original is here:

[https://docs.microsoft.com/en- us/windows/desktop/learnwin32/...](https://docs.microsoft.com/en- us/windows/desktop/learnwin32/your-first-windows-program)

The Lisp program recreates all of the needed C structure definitions, and binds to the needed functions from user32.dll and other libraries.

Here is another TXR Lisp program which parses TCP/IP packets right out of the "pcap" style output from tcpdump:

[https://unix.stackexchange.com/a/379759/16369](https://unix.stackexchange.com/a/379759/16369)

Lisp dialects tend to be close-to-the-metal languages whose workings can be explained using bits and bytes (even if such an explanation is not always accurate due to issues of optimization and whatnot).

When I'm debugging Lisp, I think of word-sized arguments on a stack, and pointers and all those same kinds of things like when debugging a C program.

Historic Lisp implementations were bootstrapped from assembly code. Lisp primitives were written as a library of machine language routines. With that, plus I/O and memory management, you just need an _eval_ routine for interesting things to start happening. The _car_ and _cdr_ terms are inspired by machine instructions, and they help keep us grounded in reality.

<comment><USER20> Thank you for the response. The article at hand suggests:

> Performance (beyond the efficiency gained from appropriate algorithms) is > going to be dictated from your ability to control what is being processed > and when. Maybe I can't afford a GC in the middle of my frame, maybe to get > the entity count I need I really have to maintain data locality.

> ANSI CL doesn't have many provisions to allow for this kind of control. > Certain implementations do have some and you can do a lot with CFFI, but at > what point do the restrictions you impose on yourself making another > language a better candidate?

This to me suggests that while certain operations may be "close to the metal" as you say, this is not necessarily descriptive of the whole, or perhaps that "close to the metal" may mean a number of different things. Other languages seem to offer more control, perhaps at the expense of abstract expressive power.

Also, while I believe your description of history is accurate as far as it goes, I had rather thought that the Lisp Machines were invented to run Lisp instructions in hardware. I'm not sure if that might argue against your point, nor if those were actually significant in the development of Lisp.

Thank you once again for helping to rectify my ignorance.

<comment><USER21> If I use a garbage collector in an assembly language program, then I get pauses; the assembly language is still "close to the metal".

There are ways to avoid garbage collection pauses in Lisp or minimize them ranging from program design and coding techniques, as well as compiler optimizations to avoid the consing that leads to garbage collection, to garbage collectors that perform incrementally so as to conceal the pauses by amortization over time.

Lisp was implemented on IBM mainframes initially and then various other mainstream hardware. Research on Lisp-oriented hardware began in 1973 or so, and wasn't commercialized until 1979 or so; the "boom" in Lisp machines could be regarded as a 1980's phenomenon.

Lisp machines allow for type checking to be significantly reduced in cost. The hardware instructions themselves can perform a check such as whether the two operands to an add instruction are integers. A Lisp machine can have idealized type representations as well, so that Lisp programs aren't disadvantaged on it. E.g. It's hard to stick a type tag into floating-point numbers on conventional hardware (doing so involves a loss of mantissa bits), but we could design Lisp hardware which has it has type bits as part of the floating representation.

Run-time type checking overhead can also be reduced in compiled Lisp programs on conventional machines thanks to type information which is either inferred to some extent, or comes from declarations, or a combination of both.

<comment><USER20> Just to be entirely clear, are you disagreeing with the author about the suitability of Lisp for video game development?

<comment><USER21> The author is noted for using Lisp for game development.

<comment><USER20> The author says:

> I am not going to make any bigger claims on the community or industry as a > whole so this is just where I'm at right now. I'll also touch a little on > why I'm not using lisp for my current games.

<comment><USER21> Also says:

> CL is a great language that still has a lot to give. I'm gonna be using it > for a long time including for games. It lives in the place of being > fantastic and performant for scripting and also having the control to be > truly viable for higher performance code. The implantation specific > extensions to the language open up a ton of possibilities for squeezing more > out of the machine and the abilities that macros afford us means there is a > lot of meaningful stuff we can do trivially that require complex and > unwieldy systems in other languages.

And:

> I'd heartily recommend making a non-trivial game in lisp.

<comment><USER20> Kay. But they did have some criticisms, and we may take it that you disagree with those?

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER22> Does anyone have any background on the author of this article?

Sounds like they make niche games I'd love to try some out. Any recommendations?

<comment><AUTHOR> Documentation for his library CEPL has full name and email. [http://quickdocs.org/cepl/](http://quickdocs.org/cepl/)

I'm not up to date on actual games from him.

He's pretty active writing public source code [https://github.com/cbaggers](https://github.com/cbaggers)

Sometimes publishes cool video tutorials live coding 3D graphics. [https://www.youtube.com/playlist?list=PL2VAYZE_4wRKKr5pJzfYD...](https://www.youtube.com/playlist?list=PL2VAYZE_4wRKKr5pJzfYD1w4tKCXARs5y)

</comment></comment><comment><USER23> I wrote a 2d shooter in Scheme. It was decent. Ran fast as the dickens on Windows.

</comment><comment><USER24> This was, hands-down, the single best article I have ever read about Lisp, after three decades of reading all kinds of stuff. It so far outclasses anything Paul Graham ever wrote on the subject that he (Paul) would best never mention Lisp ever again.

If only it were not ("just") a reply to a shitpost, I would print it out (yes, some of us old-timers still do that) and hang it on the wall, so I can point to it when somebody mentions Lisp and say "read that first -- if you disagree, then take it up with him, _and_ don't mention Lisp to me ever again".

My Hat Is Off To You, sir.</comment>


Computer Reconstruction of Drug-Resistant Bacteria Valuable to Research - <AUTHOR> http://bionews-tx.com/news/2014/05/06/computer-reconstruction-of-drug-resistant-bacteria-valuable-to-cystic-fibrosis-research/

<comment><AUTHOR> Excerpt:

 _"What's really neat about computer modeling of these biochemical networks and systems is it's nice when the models are right but it's really interesting when they're wrong, because that helps point to aspects of the biology we don't understand, which helps to generate new hypotheses, new ideas that can be tested."_

The above is only a press release. If you have access to this paid site, you can see the full PDF here: [http://jb.asm.org/content/196/2/210.full.pdf](http://jb.asm.org/content/196/2/210.full.pdf)</comment>


New Here - <AUTHOR> How does this site work? <comment><USER2> See the FAQ :

[https://news.ycombinator.com/newsfaq.html](https://news.ycombinator.com/newsfaq.html)

And guidelines :

[https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html)</comment>


Your interests, according to Facebook - <AUTHOR> https://www.facebook.com/ads/preferences/?entry_product=ad_settings_screen <comment><USER2> Wow. Never realized I was into "plant morphology", "ball", and "salt".</comment>


Show HN: Timesweet – Time tracking in pure JavaScript - <AUTHOR> http://putsjoe.github.io/ <comment><AUTHOR> I know the code is poor and theres alot of refactoring.

Im more looking for user experience feedback and whether its actually useful.

Thanks</comment>


Appple watch EKG Active now - <AUTHOR> https://www.cnbc.com/2018/12/06/apple-watch-ecg-sensor-review.html <comment><AUTHOR> I'm downloading the update now....</comment>


"farewell outline. we have all been laid off." - <AUTHOR> https://twitter.com/leahfinnegan/status/1246070831807188993 <comment><USER2> Outline isn't the only online pub laying off all or most employees. I know someone in a specialty tech pub (robotics) who lost his job two weeks ago, as soon as the news turned bad in the U.S.

Marketing and events, two mainstays for specialty news, have evaporated, and many online pubs don't have enough subscribers.

</comment><comment><USER3> The Outline might have been the only "digital media" site to actually have interesting looking ads. I can't find an example right now, but the ads were full-page and swipe-based, so you could read it as a story.

My adblocker catches the usual suspects, but I'm guessing these were not served from a third-party domain. I'm perfectly happy with ads that look like some effort went into them, and don't carry the numerous trackers that we now accept as part and parcel of real-time bidding networks.

They never had the Taboola/Outbrain chumbox as so many "reputable" publications do. They never had hideous Adsense ads breaking up the page.

It's too bad the site didn't have a clear identity; the topics were all over the place, and it didn't have a unique tone of voice.

Plus, I'm guessing media buyers were not pleased about having to actually create interesting looking ads that were closer to interactive sponsored content than a two-line Adsense ad they could A/B test to their heart's desire.

</comment><comment><USER4> I'm so happy we have Kurzarbeit[1] in Germany.

Our CEO told us today that they're planning for it. I don't know yet, whether I will be on it, but I assume that I will.

And it's infinitely better than losing my job.

[1] [https://en.wikipedia.org/wiki/Short- time_working](https://en.wikipedia.org/wiki/Short-time_working)

<comment><USER5> This exists elsewhere as a temporary or seasonal layoff/furlough. Many companies are going to be shedding employees through "covid related" layoffs that are not in fact covid related. Perfect time for companies to restructure without bad press.

<comment><USER6> Kurzarbeit is described on Google as "Short-time working or short time is a situation or system in which civilian employees agree to or are forced to accept a reduction in working time and pay.".

That's different than a layoff. I'd happily accept a reduction in pay and work hours over a 100% pay cut and temporary layoff, if that's what it took to keep my company alive during a temporary economic downturn.

<comment><USER7> Yes. Kurzarbeit means the company keeps people on its payroll but doesn't give them full hours. The government tops their pay back up to 100% but the company is saved from carrying the full load. The company keeps its employees and all the valuable training they received, allowing it to get back to full speed once the downturn is over.

A free market is very inept at solving this problem because no single company is going to make the long term investment required to foresee future recessions and implement a war chest sufficient to offer Kurzarbeit. But the state can think ahead and generate a public good from this kind of program.

<comment><USER4> > The government tops their pay back up to 100%

Not quite, I think the government makes up for 60% or so of the income difference, but I'll have to look it up later myself.

<comment><USER7> Thank you for the correction.

</comment></comment></comment></comment></comment></comment><comment><USER8> Ohhh, theoutline.com

I was wondering just how many employees outline.com even had and if they could just run as is with a couple people.

</comment><comment><USER9> Being close to the publishing world, this does not surprise me. eCPM has halved, if not better depending on demographics. We will likely see this happening to places that started this pandemic out overextended.

<comment><USER10> Since you are close to this space, do you have any sense of whether the number of ad views is increasing because more people are home?

<comment><USER11> ad views aren't important. Look at dollars in. Over time, net dollars in must exceed net dollars paid to publishers.

I have a cxx role at a startup. We slashed our ad budget for the next 45-60 days until we figure out how deep our economic collapse is going to be; I suspect we're far from the only company.

The other thing about ecpms is most advertisers have a daily frequency cap for cookies. More browsing plus more ad slots does not necessarily equal that much more filled ad slots.

We're going to see a lot more ad-supported content companies fail as we destroy the ability to do cross-site targeting. (I'm not saying increasing privacy is bad; merely that this is an entirely-foreseeable outcome). Some sites will transition to paywalls; others will die.

Premier sites -- NYT, wapo, gawker family, etc -- will be able to do direct deals with advertisers. That takes both a dedicated salesforce, a draw, and frequent users. Mid-market sites like this will almost certainly not be able to do so.

See also Josh at Talking Points Memo's writing about transitioning to a mostly subscriber-supported model.

<comment><USER8> > ad views aren't importanT

You sure? If it's a supply and demand market, in increase in eyeballs can crash CPMs as the competition to get your ad to display craters.

Kinda like how a small decrease in traffic (say 10%) can turn a highway from gridlock to free flowing.

<comment><USER11> I meant follow dollars in to understand dollars out. There will be some reallocation between publishers, but follow dollars in and you'll see what will most likely happen to ecpms out. The latter is a trailing measure.

iow, you will probably get more views, but dollars will probably follow the economy.

</comment></comment></comment></comment></comment><comment><USER12> Its a shame to hear, I really enjoy the Outline's content. Is there any more context as to who "all" is referring to? Is the entire site dead?

</comment><comment><USER13> If this is a pure online pub, how/is this somehow related to covid-19? Not many details...

<comment><USER14> Network ad rates have crashed as there is a glut of impression but low demand from advertisers.

Many online publishers will turn to paycuts and layoffs or even go out of business in the next few weeks

</comment></comment><comment><USER15> Wasn't this what the payroll protection program was designed for? It's a "loan" on which the principal and interest are paid by the government to cover payroll and rent. Instead these people are just gone.

<comment><USER16> > Top U.S. banks have threatened to give the federal government's small- > business rescue program a miss on concerns about taking on too much > financial and legal risk, five people with direct knowledge of industry > discussions told Reuters…

> Their main concern is that the Treasury Department has said it expects > lenders to verify borrower eligibility, and take steps to prevent fraud, > money laundering and protect customer information under the Bank Secrecy > Act, sources said. Banks are worried they could face regulatory penalties or > legal costs down the line if things go awry in the haste to get money out > the door, or get blamed for not moving funds fast enough if they perform due > diligence the way they would in ordinary times, the sources said.

[https://www.reuters.com/article/us-health-coronavirus- stimul...](https://www.reuters.com/article/us-health-coronavirus-stimulus- banks-exc-idUSKBN21K075)

Another example of our crisis response failing us.

<comment><USER17> I'm not so sure it's so black and white. Isn't this exactly the kind of situation that these banks would use as leverage to get themselves a better deal, especially as interest rate they can charge was a specific complaint?

> Members of the group include JPMorgan Chase & Co (JPM.N), Bank of America > Corp (BAC.N), Wells Fargo & Co (WFC.N) Citigroup Inc (C.N), Truist > BankBBTVA.UL and PNC Bank PNCBNK.UL.

Yeah, not taking their word for it.

</comment></comment></comment><comment><USER18> I was looking at this SBA loan forgiveness plan that's a part of the relief / recovery / bailout bill. I actually think right now is an incredible time to launch a startup, and I want to hire a few out of work software engineers to work with me.

My plan was to incorporate, take out a loan, and pay payroll with the entirety of it. Unfortunately it looks like the bill requires you to have been in business before February 15th with verifiable employees on payroll.

I'm really miffed, because putting unemployed employees on payroll at a new company isn't any worse than keeping existing employees on payroll at a business that doesn't have customers. In fact, if a new company is more productive and is working on solving problems that arise because of this virus, it seems more productive to solve the new problems than to keep the unviable businesses running.

I'll have to figure something else out...

<comment><USER19> its a program to keep business afloat, not launch new ones.

<comment><USER20> Yeah, but GP has a point; from a total employment standpoint, there is no difference. In fact encouraging new business at this time could create a burst of new, lean, innovative startups solving real problems from a time of hardship, rather than fake problems from a time of prosperity.

<comment><USER21> There are existing startup incentive programs...

The point of CARES is to keep _existing_ revenue-generating businesses open, and their employees paid.

And quite frankly, as a former techie it's kind of disgusting that people in the tech community are complaining that their employee-free, revenue-free, 1-day-old startup doesn't qualify for a program intended to keep existing, otherwise viable businesses (absent COVID19) running and their employees paid. This is not the time for the tech community to launch yet another regulatory arbitrage startup that exploits everyone else.

<comment><USER18> > employee-free

I want to hire people. I'm probably still going to do this, but dip into my savings to do so.</comment></comment></comment></comment></comment>


A one-size-fits-all database doesn't fit anyone - <AUTHOR> https://www.allthingsdistributed.com/2018/06/purpose-built-databases-in-aws.html <comment><USER2> A one-size-fits-all database like PostgreSQL fits most. Moving to a specialised solution is always an option, if necessary. Starting with specialised solutions is a bad idea that will limit flexibility needlessly.

<comment><USER3> I mean MongoDB is schema flexible, there's some cases where data is so dynamic it just makes sense to use something like MongoDB. I do agree, PostgreSQL (or if someone's more familiar with MySQL that's fine too - use what's most effective for you and your team) to start is a good route.

<comment><USER4> PostgreSQL using JSON fields is also fully flexible.

</comment></comment></comment><comment><USER5> This sort of post was most useful in the days when the term 'NoSQL' was being thrown around as the silver bullet that would revolutionize one's business, and there was a significant knowledge gap between the domain experts -- who quite often weren't the promoters -- and everyone else. While it's still plausible that someone obtains this information for the first time right now, today the mystique around the term 'NoSQL' has more muted, the marketing has become more factual, and a fair number of people understand the different types of data paradigms (KV, document, graph, timeseries) that the newer offerings provide.

As it stands, this post is a brief comparison sheet of AWS's datastore offerings, with bite-sized anecdotes that hint at a valuable usecase. It doesn't make a particularly strong case for the necessities, justifications, and tradeoffs of each particular type of paradigm or concrete offering, but is instead a brief content marketing piece with just enough practicality to justify its existence and make its point.

<comment><USER6> What's weird is that we create a tech (say, NoSQL) to address the shortcomings of another tech (say, SQL). We then call it a win and give it this strange grace period, during which we don't honestly assess the shortcomings of the _new_ tech.

Worse, we actually declare the _good_ parts (say, ACID transactions) of the old tech unnecessary and even dub it a feature that they are absent in the new tech.

Finally, the grace period expires and everyone seems to get the memo at the same time. The response is then "This is nuts. What the hell are we doing?"

The old tech is then restored to its rightful place and it's on to the next tech.

<comment><USER7> The ironic part to me from the No SQL crowd was:

 _SQL Bad! SQL Slow! SQL terrible overhead!_

SQL is just an abstraction layer. What makes relational databases "slow" is actually the overhead to implement ACID and implictly guarantee consistency and integrity _at all times_.

When Facbook losses a dozen status updates that will piss off a few users. When a bank loses a single transaction and depending on the value and importance of that transaction (I.e. mainting a position in FX, with deals that can go into the billions) this can literally kill the bank.

Besides: relational databases (which I'd wager are still the backbone of > 90% of businesses) are definitly not slow. And very few companies have such insane requirements like Google, or Facebook.

Edit: Wrong word that didn't make sense

<comment><USER8> Banks do lose transactions and make plenty of other mistakes that result in sudden appearance or disappearance of money from people's accounts. They are also eventually consistent, somewhat strongly. And are the ones who can in fact drop ACID pretty much completely in favor of proper strong eventual consistency with CRDTs and stuff, with all that "consistency and integrity at all times".

What makes things slow with interactive transactions in distributed environments is explicit tradeoff of latency and availability for consistency. It just can't be done in bounded time [1]. But that's not the reason traditional databases are slow, they do not actually make this tradeoff in most deployments and are assuming you are ok losing some consistency due to network problems (yeah, so much for that ACID guarantees, you really need distributed algorithms to guarantee consistency if you talk to a database over an asynchronous network, like ethernet).

They are slow because for performance SQL is just a bad leaky abstraction and arguing that it can be fast, is like arguing for a sufficiently smart compiler [2] that can turn your high level abstraction into the fastest possible opcode.

[1] [https://groups.csail.mit.edu/tds/papers/Lynch/jacm85.pdf](https://groups.csail.mit.edu/tds/papers/Lynch/jacm85.pdf)

[2] [http://wiki.c2.com/?SufficientlySmartCompiler](http://wiki.c2.com/?SufficientlySmartCompiler)

</comment></comment></comment></comment><comment><USER9> Having so many database choices is something of an embarrassment of riches. So many options, but also so much stress for the software architect who hopes to make the right choices. Its impossible for someone to be so familiar with each option so as to anticipate future issues that may arise because of a missing piece of functionality or other strange quirk. Something made worse when you go down the proprietary route.

I prefer to stick with one single reference data store, be it MySQL, Postgres, SQL Server or whatever. If we need to add some kind of search optimised database or big data analysis database they should replicate from the reference data store and be treated as non-mission critical add-ons.

<comment><USER10> There are cases where that strategy doesn't work effectively (IMO). Consider a social graph or purchase history relationships in a graph database. You _could_ restrict your engineering team to only make entries in a (relational) reference data store and then express those relationships in a graph DB for querying.

That is not likely to give you the same pace of development as a competitor who chooses to use a graph DB natively while your team goes through a labor- intensive translation or impedance-matching process for each change. If they're able to outpace you in development/innovation, you are more likely to lose in the market.

<comment><USER11> > If they're able to outpace you in development/innovation, you are more > likely to lose in the market.

These things always depend on business requirements. What relational database offers, above all others, is data consistency: if used properly, it's an incredibly useful safety net that prevents you from errors that corrupt user's data. Transactions and especially proper schema can catch a lot of bugs that could otherwise wreak havock.

So, it's a trade-off: how bad, from a business perspective, would some data corruption be? If you're Tinder, mixing up profile information or deleting a match is probably not that bad. If you're dealing with other people's money, on the other hand, it could destroy your entire business.

<comment><USER12> Do relational databases really give you consistency? They can do if you are careful how you write your app. And many people don't use serialisable transactions because of the implications.

Also relation databases enforce their version of consistency. What if I only want consistency within one customer's data but not all customers?

I could have two inserts for operations on two different customers fail because of a deadlock on page slips in a secondary index. I didn't need that consistency but the database didn't know that.

</comment></comment></comment></comment><comment><USER13> I've tried lots and lots of database of all sorts.

I always hit come sort of limitation and come back to Postgres.

One day I'll just stop betting against Postgres, but I really do want to give some of those graph databases a try just for fun.

<comment><USER14> I mostly used MySQL. But for my app, I now use CouchDB. It has its limitations, but the automatic sync between devices is pure gold. I haven't written a single line of sync code and _it just works_.

It baffles me a bit that CouchDB isn't more popular and that people rather use MongoDB for NoSQL, which doesn't come with the same syncing capabilities.

<comment><USER15> > It baffles me a bit that CouchDB isn't more popular

Agreed, it should be.

> and that people rather use MongoDB for NoSQL

I don't see why people would rather use MongoDB for anything, but that's just me.

> which doesn't come with the same syncing capabilities.

This is the main reason. CouchDB is amazing if you need to sync, but, if you don't, you may be better off using something else (like Postgres).

How does CouchDB handle conflicts, by the way?

<comment><USER16> [http://docs.couchdb.org/en/2.0.0/replication/conflicts.html](http://docs.couchdb.org/en/2.0.0/replication/conflicts.html)

</comment></comment></comment></comment><comment><USER17> What's new is old again. Michael Stonebraker had a paper about this in 2007 [0]. Over that time a slew of products came into the market that claimed to do it all. JSON, SQL, ACID transactions, Streaming, time-series, Full-text search, batch processing, ETL etc. Things that don't even fit in the same bucket. For awhile companies were positioning Hadoop to do all of it

Seems like through every technology hype cycle, the same reminders need to be written and re-circulated again.

0: [https://cs.brown.edu/~ugur/fits_all.pdf](https://cs.brown.edu/~ugur/fits_all.pdf)

<comment><USER18> _a slew of products came into the market that claimed to do it all. JSON, SQL, ACID transactions, Streaming, time-series, Full-text search, batch processing, ETL etc_

Stonebraker's own Postgres does all of that.

The article is just an infomercial for Amazon's (expensive, proprietary) offerings.

</comment></comment><comment><USER19> I wrote this blog espousing the opposite view, that you are better off with a unified database, here: [https://blog.fauna.com/unifying-relational-document- graph-an...](https://blog.fauna.com/unifying-relational-document-graph-and- temporal-data-models)

And followed up about multi-cloud here: [https://blog.fauna.com/survive-cloud- vendor-crashes-with-net...](https://blog.fauna.com/survive-cloud-vendor- crashes-with-netlify-and-faunadb)

</comment><comment><USER20> Sadly it talk against "Relational databases" instead of "RDBMS implementations".

The relational model is incredible powerfull. _Maybe_ graphs need something seriously specializes (and indexes, of course) but the relational model do fine:

\- Relational \- Key-value \- Document \- In-memory \- Search

In fact, a index (that is the thing that need to be fit for the case) can be modeled as key-value, so, as relational.

Relational won agains the NoSql in the past because is MORE powerfull, flexible.

\---

What need to change, is the specifics of the implementations. And yet, relational adapt fairly easy.

In fact, just look how many stores add a sql-layer on top. Ironically, SQL is what need a easy makeovers, no the relational model....

<comment><USER21> I think there are times when the graph model shines.

[https://theburningmonk.com/2015/04/modelling-game-economy- wi...](https://theburningmonk.com/2015/04/modelling-game-economy-with-neo4j/)

I read this article I found on HN a few years ago, and for some reason it came to my mind just now.

The neat thing about the graph model of course is being more immediately expressive to the query-er, and that takes cognitive load away from that person.

I'll never say a bad thing about SQL or the relational model. I completely agree that it's superior in terms of flexibility, performance (almost always), modelling (usually), etc but I guess there are times where you have a weird project and it's just I guess the convenience and ease of using Neo4j and a few cypher queries and then it's over.

In the case of the article I linked, there is also the benefit of having a convenient way to see how changes echo throughout the graph, something that is more involved to do with tables and joins and all that. I'm not a DBA, I've really only ever dabbled, but if I got dropped into that situation and DIDN'T have a graph model, I'd have no clue where to even start. Maybe I'd start trying to walk tables and build graphs out from each item type to each other item type. That'd be gross.

Of course, that's probably not a problem scenario that comes up very often. Most of the times I've interacted with databases in general I've been just dealing with sanitizing params, getting HTTPS configurations configurated, just boring infosec stuff. That problem is probably very rare in the realm of "problems that graph seems to have an advantage"

Anyways, yeah. Relational, awesome. Graphs, sometimes convenient.

</comment></comment><comment><USER22> I was expecting some sort of interesting discussion of different databases. What I got was an ad for Amazon's products. And I found it quite off-putting that the post seemed to go way out of it's way to avoid even acknowleding databases not being sold as Amazon services.

</comment><comment><USER23> Well, it generally fits until it doesn't, and that's OK.

If your scale is small enough, fiddling with specialized solutions is just premature optimization.

PostgreSQL will take you a long way before you need to look somewhere else.

<comment><USER8> High availability would be the most common case when you need to look somewhere else. And it's a serious distributed systems problem that requires pretty big architectural and cultural changes, you can't just optimize for it later.

<comment><USER23> Yep, but you can "buy" HA from any DB provider (Amazon RDS, compose, etc.) until you're big enough to dedicate resources to solve that particular problem.

My comment doesn't necessarily contradict the article. I only mean to point out that a general purpose "non-optimized" thing still fit a whole lot of companies out there, depending on their scale.

EDIT: Although I concede that yeah some DB tech makes it easier to configure HA systems, if you can live with the downsides.

</comment></comment></comment><comment><USER24> Is there a matrix out there with the various needs that one might have of a DB/storage solution (consistency, throughput, sharding, replication, etc) with products associated with each of those sets of requirements? I feel like for a lot of what I do on a daily basis I _do_ end up using the same old one-size- fits-all approaches, and as those scale we feel the pain -- but the product search and vetting process is tough and time consuming to even begin. Would be nice to be able to narrow options down to a smaller search space at least.

</comment><comment><USER25> One thing that strikes me about this article is the examples of companies that move from one system to another (whatever that move entails) and achieve big performance wins.

We see long articles about this very often here. Sometimes it's moving from relational to non, sometimes it's moving back. But what really throws me for a loop is that so many of these sites are so mind-bogglingly, face-punchingly _slow_. All of Atlassian's web properties are stupidly slow. AirBNB (mentioned in this particular article) also--painfully slow. Github--slow. Reddit-- somewhat slow almost always. Twitter--slow. Facebook is usually the exception.

I realize that sounds like maybe I'm just on a slow connection, but I'm not. I don't know where the time is being eaten up if it's not in the database. But I feel bad for all the people working on db performance when the end result is so bad.

I don't understand how websites whose only purpose in life is to serve text and images as fast as possible can be so slow and that the companies that make them can find this acceptable. No database technology in the world can make up for bad product decisions and companies that don't consider speed a feature.

</comment><comment><USER26> Every use case listed on this article followed the following nominal pattern:

(1) Start with a relational database.

(2) Build product until you have a deep understanding of your market and their needs.

(3) Move to a specialized data store.

For established products, or well-researched use-cases, sure, pick a specialized data store. It will probably serve your needs better.

If you don't yet have product-market fit, use a relational database. It will give you far greater flexibility when you discover that "what we thought the market wanted" is different from "what actually made the right numbers go in the right direction".

<comment><USER27> Perfect example is that article about the Facebook messenger database migration earlier today. Messenger transitioned from an email-like system to an instant messenger.

</comment></comment><comment><USER28> Michael Stonebraker, Uğur Çetintemel, "One Size Fits All": An Idea Whose Time Has Come and Gone: [https://cs.brown.edu/~ugur/fits_all.pdf](https://cs.brown.edu/~ugur/fits_all.pdf)

</comment><comment><USER29> Oh, wow, another advertisement. I don't know why, but that instantly disregards any meaningful point OP wanted to say...

<comment><USER30> [https://en.wikipedia.org/wiki/Ad_hominem](https://en.wikipedia.org/wiki/Ad_hominem)

> Ad hominem (Latin for "to the man" or "to the person"), short for argumentum > ad hominem, is a fallacious argumentative strategy whereby genuine > discussion of the topic at hand is avoided by instead attacking the > character, motive, or other attribute of the person making the argument, or > persons associated with the argument, rather than attacking the substance of > the argument itself.

<comment><USER29> Not applicable as a fallacy here, questioning the style and the motive is reasonable with tech blog post mixed with advertising.

I might have added "for me" at the very end, so it would not sound general and was only describing my personal vibe. If this was a very interesting article about the importance of hydration and was full of references to coca cola products, I would feel the same.

</comment></comment></comment><comment><USER30> Does anybody have a complete list of possible requirements/features for databases?

</comment><comment><USER31> It never fit.....</comment>