What I Wish I Had Known About Developing C/C++ From Linux Before I Started - <AUTHOR> http://derwiki.tumblr.com/post/98651197/what-i-wish-i-had-known-about-developing-c-c-from <comment><USER2> When I started developing in C in Vim there are two things I've gotten used to that I can't live without now: ctags and auto-complete (they help with eachother).

Ctags is great, especially for navigating someone else's code. What does this function do? Just ctrl-] and suddenly I'm at its definition. Something in there I don't recognize, same thing. Ctrl-t to go back up the tag stack. Ive become so used to navigating my code this way I have trouble without it.

Completion is just the way that Vim will give you completion matches in insert mode if you hit ctrl-n or ctrl-p. With C it's very smart about it and will automatically search included files. It's great for not having to worry about exact spellings on things. If you really like this sort of stuff there are a few plugins that do Textmate-like snippets.

<comment><USER3> Of course, if you use an IDE, it can do all of this for you and much more, and more accurately than ctags.

<comment><USER4> Ctags is just as accurate at scanning C declarations as an IDE, and with a bit of vim magic, it even auto-updates when you save files.

One thing to realize is that vim IS an IDE of sorts. Only, it's far more extensible for the same effort. (although, from my brief forays with emacs, emacs certainly beats vim for extensibility)

<comment><USER5> Emacs also supports ctags. I didn't find it very useful with C++ though, which is my usual language, since it didn't autocomplete member functions - I think it's supposed to work, though I couldn't be pushed to tweak it.

Cscope, as commented on the article's website, sounds quite interesting too.

<comment><USER6> ctags on C++:

ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .

<comment><USER4> ctags takes an environment variable for it's options, too:

        export CTAGS='-R --c++-kinds=+p --fields=+iaS --extra=+q'

and then you can just run 'ctags .'

</comment></comment></comment></comment></comment></comment><comment><USER7> I use "screen" a lot, but I wish it had a better name. It helps if you search for "gnu-screen", but not much.

Here's a tip that has saved me once or twice. If you start a long-running process, but forgot to use screen or nohup, bash lets you 'disown -h' its jobspec.

<comment><USER8> One day I took the time to work this out for my .screenrc, and it's served me well since:

      # Set up my status line at the bottom of every frame
      caption always "%{gb}  %{ck}%m-%d %C %{gb}  %{gb}%?%-Lw%?%{ck}%n*%f %t%?(%u)%?%{gb}%?%+Lw%?"

All of the %{gb} things are color codes. It looks like this: <http://shenani.gen.nz/~scott/screen-statusbar.png>

Binding ! @ # etc. to select 10, 11, 12, ... is handy, too.

<comment><USER9> There are more .screenrcs (including my own) in this thread: <http://news.ycombinator.com/item?id=425890>

</comment></comment></comment><comment><USER10> There is one thing I feel have been neglected here: Debugging.

Debugging C in Linux is a dream with gdb. Debugging (heavily templated) C++ in gdb is a nightmare.

I therefore have one additional tip, though it doesn't work in console: Run Visual Studio in wine. It's debugger can pick up running Linux processes and is awesome to work with.

<comment><USER11> I feel the same way about GDB lacking in C++. I ran across project Archer... apparently better debugging support for C++

<http://sourceware.org/gdb/wiki/ProjectArcher>

</comment></comment><comment><USER12> This is a nice list! However, I really think that increasing speed of development with better tools is a cornerstone of being one of those elite programmers, and vim<<eclipse, at least for Java! I haven't done C/C++ for some time... but I expected similar IDEs exist. "The way our development environment is set up though, there was really no good way to use Eclipse because everything is done on a remote development box, and they won't let us run Eclipse and forward over X (which is reasonable; Eclipse has a lot of overhead)" I think this is just a horrendous setup and unless there is some compelling reason (e.g. scientific computing on a cluster? even then...) that there should be a much cleaner separation between development boxes and production boxes and most of your code should be developed on a local box with some canned data for testing and then pushed out to production when that is done. This may require some effort, but the decrease in turnaround time for changes will be worth it in almost every scenario.

<comment><USER13> Unfortunately, your expectations would not be met. IDEs make up for their limited text-editing features by providing language-dependent, code-aware functionality. Because C++ is such a hairy language, IDEs aren't able to do much with it. They don't give you anything like the cushy, comprehensive support that IDEs provide for Java. With C++, giving up the relatively lame IDE features to get a powerful text editor is a no-brainer. (I use Eclipse for Java and emacs for everything else.)

You're absolutely right about their development environment; it's adapted for one set of tools. It doesn't necessarily mean other tools are inferior in general, as the author seems to conclude.

<comment><USER12> I find this post highly questionable. What is so hairy about C++ for an IDE exactly? It's strongly typed and yes, if you do too much C style stuff it may be a bit harder to navigate but if you stay in a clean OO world it should be very, very similar to Java. Microsoft put out a competent C++ IDE well over a decade ago and Borland has done so as well... It's my personal opinion that IDEs are in general superior to text editors because this integration reduces the cognitive load of solving particular programming problems. People that say eclipse doesn't have a good text editor are being a bit ridiculous - out of the box it is not that great, but there are many 3rd party editor plugins, you could configure shortcut keys however you want and of course extend eclipse... now I am somewhat biased in that I work daily on an eclipse RCP project, so I am already spun up on extending eclipse. This all has me curious though, I'll spin up eclipse C++ development against my thesis code the next (likely imaginary) opportunity I have time to kill...

<comment><USER14> To write a good C++ IDE, you need to deal with macros, C++'s obscene syntax (There are what- four complete C++ parsers?), and you need to parse all sorts of Makefiles, or else no existing projects will work.

<comment><USER12> I'd expect some games that had to be played with release engineering. If the code is properly modularized, this could be two separate processes where you develop your module with mock data and then deploy it into production. Is the opinion really that all the current IDEs suck - <http://msdn.microsoft.com/en- us/visualc/default.aspx> , <http://www.eclipse.org/cdt/> , <http://www.netbeans.org/features/cpp/> , <http://www.bloodshed.net/devcpp.html> and all the 2nd tier as well? Maybe I am too deep into Java and eclipse, but it seems there are genuine advantages to using IDEs and C++ is similar enough to java that at least for some subset, such a tool could be created. If not, that certainly seems like a market...

<comment><USER14> C++ does look similar to Java, but it's really not. Preprocessor magic + template magic + linking magic means pain.

I will admit to not having tried devc++ or visualc. I would imagine that visualc might be able to solve the problem, since they can control the build system, and can hook into their compiler directly (last I checked, GCC made this very hard).

I'm also going to go out on a limb and suggest that you may be overestimating the pain points other people experience /not/ using an IDE.

<comment><USER12> I haven't done professional work in C++ only my thesis project which was relatively self contained and simple, so maybe I am underestimating the importance of preprocessor/template/linking magic. There is certainly a rather large barrier to entry for vim/emacs for the average developer.

</comment></comment></comment></comment></comment></comment></comment><comment><USER15> strace is another extremely useful tool. Sometimes it's really nice to be able to see exactly what's happening at the OS/program boundary (what _exactly_ are we reading from the file? from the network?), and strace can do that in a very non-intrusive way - no root reqired, no recompile required.

<comment><USER16> Seconded. That apache process is chewing cpu, is it spinning in an inf loop internally to userspace? No, strace shows it repeatedly doing backend conn/op/disconnect - aha!

Another trick in this vein is/was to use 'pstack' to pull a C backtrace from a looping process. If you do that every second for 10 secs, you'll probably find where the process is looping. As a bonus, it also acts as a poor- man's-retroactive profiler (process X intermittently takes 30s to handle it's job instead of 2s - watch for one and when it happens, strobe the process with pstack to see what it's up to). Can be used in production, no need to deploy profiling build and run for ever to catch problem, etc.

(And a variant of this trick for interpreted languages is to hook an unused signal (SIGUSR2?) in your language to say "dump me a perl/python/etc backtrace to the log file". Assuming the loop is in your app code this will give you a language-level backtrace if you strobe the process with the signal)

NB1: pstack doesn't do anything which scripted gdb couldn't do, it's just more convenient

NB2: pstack is unavailable on 64-bit arches?

NB3: pstack needs some symbols to work with in the binary, which probably won't be the case with your system apache+mod_xxx

</comment></comment><comment><USER17> Worse is NOT Better; use a safe and high-performance programming language and learn its foreign-function interface to call out to C and C++. Life is too short for core-dumps and premature optimization, plus you only have two feet to shoot at.

The better designed a language the better its development process feels. You can get immersed in a lowly Lisp, J, or Forth listener. Just a little black xterm with nothing else to it, and you feel productive already (never mind the amazing environments there are for Lisp.) BADLY designed and malignant languages have 3rd party tools to augment its functionality. There are things to bolt on, hammer in and stuff to bake into the scaffolding before you stuff in boxes. The C and C++ equivalent of a listener is `cat` or maybe the system- shipped vi or nano or pico. Can you seriously feel yourself getting something done?*

* (I will answer myself and say yes; I learned Unix programming over a serial line, but it was not an immersive experience; I had books on my desk and lap and was flipping back and forth to get anything done; a masochistic sort of fun, fueled by the mischievous possibility of breaking into another account ;-)

<comment><USER18> Since you mention core dumps, please take some unsolicited feedback from an old C programmer: the post-modern "developer productivity" family of languages' lack of core dumps is a bug, not a feature. You _want_ core dumps. They're the right thing. They let you debug a broken program that has since been restarted, or on a different machine than the crash happened, six months afterwards.

Even if you program in a safe language, you still want assert(), and when that assert fails, you _don't_ want an exception: once the exception has torn down a single frame it's too late, since you lose the precious "can't happen" program state.

Sure, C is a low-level language, but I think the YC consensus insufficiently weights the quality of tools supporting this ecosystem. Debuggers and profilers are indispensable, high-leverage tools for saving developer time, and the hip languages these days have followed perl's lead in just sticking -d and -p flags in the reference implementation and pretending the problem is solved.

<comment><USER17> "the post-modern "developer productivity" family of languages' lack of core dumps is a bug"

Lisp doesn't dump core, it will drop you in a debugger prompt where you can Frankenstein your programmer to life as you wish. Forget Lisp, Scheme and other languages with full continuations will give you the entire run trace of your program in a video tape, where you rewind and fast-forward as you wish. C is not a language whose control semantics you want to brag about.

But back to Lisp, here how you "dump core" in Common Lisp: write a handler for the error condition and call SAVE-LISP from there. One line of code, left optional to the programmer.

"you still want assert(), and when that assert fails, you don't want an exception"

Yeah, it's called by the exact same name in Common Lisp.

"Debuggers and profilers are indispensable"

My Common Lisp has both a deterministic and an statical profiler. Standard Common Lisp has GC, TRACE, ROOM, DESCRIBE, APROPOS, ED, DISASSEMBLE and TIME among others. Those correspond to malloc/free, gprof, ltrace, man, apropos, vim and objdump; in the friken LANGUAGE :-) Everything is tied together with function called semantics and a memory visible to all; not with brittle "shell" languages and text parsing. The vendor and community extensions will make you weep.

There is really no point of comparing Lisp to C; you should compare Lisp to Unix.

<comment><USER18> FWIW, I don't consider CL a member of the "developer productivity" gang of languages. In practice, it is much more like a better C than it is like python: you have C's relative poverty of libraries and richness of tools.

Still, I meant what I said.

"Lisp doesn't dump core, it will drop you in a debugger prompt..."

What if the user isn't a developer, but, y'know, a user? On the other side of the country, who doesn't care why your code is broken? Will you fly to their site? Hope they let you ssh in and not restart the application while you personally debug it? Hmm, if only it were possible to somehow _serialize_ the state of the broken program, so that someone else could debug it in a different time and place ;).

<comment><USER17> You didn't read what I wrote earlier, so here is your Lisp core dump:

      (handler-bind ((error #'(lambda (e)
            (save-lisp-and-die "lisp.core"))))
               (YOUR-PROGRAM-ENTRY-POINT))

Autopsy is not that hard with Lisp ;-)

<comment><USER18> You're absolutely right that I skipped a whole paragraph of your reply; mea culpa.

<comment><USER17> +1, no problemo hermano!

</comment></comment></comment></comment></comment></comment></comment><comment><USER19> "diff: pretty standard utility, but this is what I use it for: I loop through all the files I've modified and diff to the previous version, then pipe to a grep where I can search for something I think I've changed but can't remember where."

NOOOOOOooooooo. That implies he is using ad-hoc version control (uniquely named files or directories with non-revisioned copies).

Tracking and finding changes is what git is for. Commit early and often! If you mess up, it's got your back! If your compatriots use SVN, that works, but not nearly as well (when I used SVN, I would still revision control my local copies with RCS in between SVN commits). If you are developing by yourself, rcs is the minimum acceptable alternative.

</comment><comment><USER20> Anyone else find themselves typing this way too often?:

awk '{print $2}'

Is there a way to achieve this that's easier to type?

<comment><USER4> cut -d'delim' -f'fieldno'

</comment></comment><comment><USER21> I guess the big drawback for theses kind of tools for me is the time it takes to setup a nice developpement environnement. To fine tune my vim as i like it with ctags completion , good keybindings, a nice colorscheme and all, it takes me around 5 hours minimum.

I'm currently dev'ing for QT under QT Creator, and everything is nicely integrated, with some really neat features you can't reproduce in vim, and it even has an (incomplete) vim emulation mode !

I used to be an hardcore vim / cli fan, but i'd go back to that for nothing in the world now, at least for this current dev setup. Also i hate having to mess with makefiles.

</comment><comment><USER13> c++filt - an absolute necessity.

Also, he should have just pointed out that all IDEs are ass for C++. Java is simple enough that an IDE can be a big help, but C++ is too complicated and too slow to compile. (The remote access thing is just a matter of the work environment being adapted to one set of tools and not another -- the real issue is that text editors beat IDEs for C++.)

Otherwise, an excellent list.

<comment><USER8> The _real_ issue is that C++ is too complicated and too slow to compile.

Languages that are easier to throw together a reasonable parser for (Lisps, Smalltalk, Lua, or even C) have a much lower barrier to entry for development tools. Keeping the language syntax simple enough means that somebody scratching an itch can write something useful in an afternoon or a weekend, rather than taking a team and months.

<comment><USER22> Actually, no. The real issue is using compiler's front-end from the IDE itself. While it's true that C++ is hugely complex IDE writers shouldn't try to replace compilers (ie. trying as hard as they might they'll never get around C++ templates and their touring-completeness). MS got this right. gcc and every IDE that relies on it (like Xcode) is crippled in this regard.

<comment><USER8> GCC _is_ crippled in that regard, but it's a problem with gcc itself. It's written (perhaps deliberately) in a manner which makes it difficult to just use parts of it, e.g. just the back-end for code generation.

For an example of a less accidentally complex way to do what C++ templates do, look at ML's functors.

</comment></comment></comment></comment><comment><USER23> I started with makefiles and emacs but fell in love with Visual C++ and eventual .NET. Netbeans is aok, but the article has prompted me to review "the impossible" and check out yet another interface.

My ideal user interface for programming? A brilliant group of younger smarter coders with better memory.

</comment><comment><USER24> There's an incremental find option in Eclipse. Ctrl-j or was it Ctrl-i (or something like that) which is pretty nice and I wish all IDEs (read: IDEs) have that. That beats Ctrl-F any day.

How did you do refactorings? Or you just don't?

<comment><USER25> In Vim, install ack, then put "set grepprg=ack" in your .vimrc. Then, open your project in Vim, do a ":grep <your-symbol-here>", and use ":cn", ":cnf", ":cp", ":cpf", ":cr", etc. to move about. Combined with strong knowledge of setting marks and using ":s/" substitutions, and I often wonder how people who use IDEs do refactorings! ;-)

<comment><USER26> I think you misunderstood what refactoring means in an IDE. Suppose you want to rename a method. There might be many other methods of the same name in different classes, local variables of that name in other methods, or even classes with that same name in differen packages. Eclipse automatically does all of this for you.

I honestly don't understand how regexps and strong bookmarking skills could help you - the editor needs true knowledge of the language to carry out this task.

<comment><USER6> I doubt it's realistically possible for this to work reliably with C++. How could the parser deal with a predeclared type pointer in a header file that is resolved at link time? How about unions?

</comment></comment></comment></comment><comment><USER27> Good list of tools. All of those usually show up on any Linux developer's list of what's in their toolbox.

</comment><comment><USER28> Why are we taking C/C++ programming advice from somebody who has been doing it for just over a year?

And not to troll, but anyone who honestly believes vim is a better development environment than one of the mature Linux IDEs (Eclipse, Code::Blocks, KDevelop) is an idiot.

<comment><USER17> My development environment runs 24/7 and I can get to it from ANY machine on earth.

ssh firstname.lastname@example.com

$ screen -x

Even the cursor stays where it was between sessions.

How can I do that with ${IDE}?

<comment><USER29> Shouldn't this be possible with remote sessions of X or so?

<comment><USER8> Yes, but screen is usually good enough for most people (self included), and is quite trivial to set up.

</comment></comment></comment></comment><comment><USER30> I just use Kdevelop.</comment>


Is Earth's Magnetic Field Flipping Soon? - <AUTHOR> https://www.space.com/43173-earth-magnetic-field-flips-when.html <comment><USER2> "While any magnetic-field flip would still be thousands of years away...". Sneaky sentence right at the end. Sure the last one happened 700,000 years ago, so it is "soon", the but article made it sound like it was happening tomorrow!

<comment><USER3> Discussing an unstable mountainous area with a geologist once, he made it sound like collapse was imminent, so I asked him when to expect it. "Oh, any day, now - definitely in the next 50,000 years or so..."

<comment><USER4> That's the problem with geology like that: the collapse really could happen next week, or not for another 10,000 years.

</comment></comment></comment><comment><USER5> Articles on the fear of the Earth's field flipping are, as expected, not very realistic. The best current knowledge is that it takes thousands of years for the field to flip and the current fluctuations are within normal bounds. The wikipedia article on the Earth's magnetic field[1] is pretty good. See relevant quote from it below. Scientists recently updated the standard Gaussian coefficients used to describe the Earth's field a bit earlier than the usual 10 year adjustment. This is because the field has changed a bit quicker than the recent past and people are more interested in having a high accurate model these days, among other reasons. The release of this new model is why these kinds of stories are in the news at the moment.

The Earth's magnetic field is created mostly by the convecting liquid iron/nickel outer core of the Earth. It is a quite turbulent system and can not be modeled very well for numerous reasons. Here are a few:

The pressure and temperature is so high that depth (2900-5100km below the surface) in the Earth that is impossible to create similar conditions on the Earth's surface for more that milliseconds on milligram samples. The only measurements that can be made of the core are from seismic waves passing through thousands of kilometers of the heterogeneous Earth. We have decent measurements for the Earth's magnetic field only since people have been recording compass readings (1600AD or so) and really good global measurements only since satellite readings starting in the 1960's. IAAPM (I am a paleomagnetist)[2] and am happy to answer questions about this topic.

"At present, the overall geomagnetic field is becoming weaker; the present strong deterioration corresponds to a 10–15% decline over the last 150 years and has accelerated in the past several years; geomagnetic intensity has declined almost continuously from a maximum 35% above the modern value achieved approximately 2,000 years ago. The rate of decrease and the current strength are within the normal range of variation, as shown by the record of past magnetic fields recorded in rocks."

[1][https://en.wikipedia.org/wiki/Earth%27s_magnetic_field](https://en.wikipedia.org/wiki/Earth%27s_magnetic_field)

<comment><USER6> When you say the pressure conditions can be recreated for milliseconds, is this using a diamond anvil or some other technique? Beyond that, I just wanted to thank you for this post, and your reply to someone else higher up in the thread. Reading the views of subject matter experts is what drew me here in the first place.

<comment><USER5> Diamond anvil tech is just advancing into the realm where the pressure of the surface of the outer core can be held for long enough for chemical reactions to reach equilibrium. That is, to be highly useful to see what might be happening in the core. Heating up to high temperatures at the same time is an added difficulty and can only be done for a shorter time periods. I'm not an expert on diamond anvils, but follow the advancements some. It is how we are going to actually get a good idea of the possibilities of what goes on in the deep Earth. It would be really cool if humans decided to try and tunnel the 3000km to the core so we could sample it directly and be able to do long timescale experiments on bulk samples. I don't think physics fundamentally prohibits such a thing.

By short time I mean that some physical properties of matter at high temperatures and pressures can be determined by observing high velocity collisions or explosions, but these are short lived phenomena. A lot of effort has been spent on experiments like this for understanding how nuclear bombs behave. Some of those experiments help inform, say, the properties of iron under high temp and pressure and have been declassified so us mere Earth scientists can learn about it.

<comment><USER6> Thanks for the detailed answer. Can you recommend any good publications, books or blogs that relate to this subject?

<comment><USER5> I don't know your background, so it is hard to know what to recommend. If you have a PhD in a subject area then in theory you should have enough general knowledge to be able to effectively read a recent review article explaining the state of the art in some sub-discipline. I can then use the references in that paper to read about the concepts and ideas I am not familiar with and I think are important to understand.

Using google scholar (not regular google), I found this recent article "Contributed Review: Culet diameter and the achievable pressure of a diamond anvil cell: Implications for the upper pressure limit of a diamond anvil cell" [https://doi.org/10.1063/1.5049720](https://doi.org/10.1063/1.5049720)

I would read this to update my ideas about what diamond anvil cells can do right now.

Then, if I wanted to actually use one or find out if I should use one, I would talk with one of the authors of a paper referenced in the review paper that I thought was good and dealt with the particular reason I wanted to use one.

That was a bit long winded. Hope it helped.

<comment><USER6> That was great, not long-winded. That paper is a great starting place, and I can't thank you enough for your posts. Have a great weekend!

</comment></comment></comment></comment></comment></comment><comment><USER7> A few trivia items from the BBC QI elves:

"Jupiter's magnetic field has two south poles."

"Roughly every 11 years, the magnetic field of the sun reverses, north becomes south, and south becomes north. The same thing happens on Earth, but only about once every 300,000 years."

"The magnetic North Pole is moving about 55km per year at the moment. Last year it wandered over the international dateline and ended up in the Eastern hemisphere."

[https://twitter.com/qikipedia/status/1082639057556029443](https://twitter.com/qikipedia/status/1082639057556029443)

[https://twitter.com/qikipedia/status/1043545462186356737](https://twitter.com/qikipedia/status/1043545462186356737)

[https://twitter.com/qikipedia/status/1085145132591124481](https://twitter.com/qikipedia/status/1085145132591124481)

<comment><USER8> The Sun has multiple magnetic poles that are in constant flux.

</comment></comment><comment><USER9> I wanted to share one of my favorite sites: [https://www.pssurvival.com/](https://www.pssurvival.com/) Pole shifts are popular among "preppers" which in my opinion tend to be quite eccentric. However this website is full of great information that we often take for granted.

<comment><USER10> I have no idea what that site is, but this is the introduction:

This is a shift of the earth's crust with respect to the earth's core generated north and south magnetic poles. Earth's magnetic poles are created by the flow of ions in the earth's core and is somewhat closely aligned to be parallel to the axis of rotation. We expect about 90 degree shift of the crust as planet-X passes earth's orbit on its way through our solar system. The new North Pole will be off the coast of Brazil and the new South Pole is off the coast of India. It is associated with lots of other earth changes before, during and after the pole shift. See the following description for more details.

<comment><USER9> Yeah whoever made this site is bat-shit crazy. But there is tons of great information here. Anything from making soap the old fashioned way to brushed and brushless DC motors. Its really cool and wouldn't be the worst thing to have printed off and saved in a fallout shelter.

<comment><USER11> I've always thought it might be cool to package up a bunch of literature on a stack of SD cards and package them with a low power e-ink reader and a solar panel to charge it, then market as a "reboot civilization" kit.

The hardest part is actually finding a generic e-ink reader with an sd card slot that doesn't cost $500. It shouldn't need to run full android, just show a PDF or TXT, that's all it needs to do.

An offline wikipedia dump, emergency medical manual and PDR, survival manuals, etc etc like this site might go well.

<comment><USER12> [http://thewikireader.com/](http://thewikireader.com/) update: [https://www.indiegogo.com/projects/help-distribute- wikireade...](https://www.indiegogo.com/projects/help-distribute-wikireaders- and-provide-an-opportunity-for-kids-to-learn#/updates/all)

I don't have one - my phone contains an offline wikipedia dump (including images), offline maps of the world including geological maps, medical manual, and my book collection, including things like [http://the-knowledge.org/en- gb/](http://the-knowledge.org/en-gb/).

I've got a vague plan to download the primitive technology youtube videos too.

<comment><USER10> So once "the end" comes, you'll be set for a good 4 hours before your phone runs out of battery?

<comment><USER13> You could recharge your phone using sticks ([https://www.rei.com/product/115523/biolite-wood-burning- camp...](https://www.rei.com/product/115523/biolite-wood-burning- campstove-2-with-flexlight)) or a solar panel.

<comment><USER14> I wonder what the longevity of something like that is. And for solar panels what do you do if it's a supervolcano that blocks out the sun? The real solution is a radioisotope thermoelectric generator which will give you a few hundred watts for decades. But I don't think they sell those online...

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER15> I'm guessing it's actually in progress, we just won't know it for 100 years

</comment><comment><USER16> As it says in the article, we don't have anything to fear at the surface. Reversals have never been associated with increased extinction. When the field does reverse, it becomes increasingly disordered with higher-order moments dominating. If I recall, the dipole moment of Earth's magnetic field is normally over 90% of the strength. The higher-order moments dissipate faster, so it doesn't reach as far into space.

<comment><USER17> Given there are lots of species that use the Earth's magnetic field for navigation this is highly surprising. Perhaps there have been mass extinctions but they're not readily found, or our timings are wrong so they don't appear synchronised?

I wonder if there wouldn't be more seismic activity?

<comment><USER5> The magnetic field also gets very weak (90% drop in intensity and the magnetic pole way down near the equator) quite often. These are call magnetic excursions. They happen at an average frequency of maybe 50 thousand years or so with a high variance. The last big one is called the Las Champ excursion and happened about 41 thousand year ago. Species that needed a strong magnetic field that points north or south to exist would have gone extinct long ago. These species must have ways to survive when the Earth's magnetic field is unstable and weak because that happens on timescales much shorter than species evolution.

[1][https://en.wikipedia.org/wiki/Laschamp_event](https://en.wikipedia.org/wiki/Laschamp_event)

<comment><USER16> That's interesting. Magnetic reversals actually take some time to complete (a few thousand years). If it changes slowly enough, if animals navigate through a learned magnetic field rather than genetic instinct, they'd do fine.

</comment></comment></comment></comment><comment><USER18> No way to download all? Going through one by one, it might be too late already

</comment><comment><USER19> _> >Is Earth's Magnetic Field Flipping Soon?_

Yes. _then proceeds to define "soon"_

</comment><comment><USER20> Interesting (and possibly related) article about the four yugas in hindu mythology. [https://www.speakingtree.in/blog/science-behind-hindu-s- four...](https://www.speakingtree.in/blog/science-behind-hindu-s-four-ages- chatur-yugas-magnetogeddon-may-destroy-the-world)

<comment><USER21> It says {Forbidden}. Any alternative location?

<comment><USER22> Here's a mirror: [https://web.archive.org/web/20160530234212/https://www.speak...](https://web.archive.org/web/20160530234212/https://www.speakingtree.in/blog/science- behind-hindu-s-four-ages-chatur-yugas-magnetogeddon-may-destroy-the-world)

Original link worked for me, fwiw.

</comment></comment></comment><comment><USER21> So where it is now? In Siberia?

<comment><USER23> Between Siberia and Canada.

[https://maps.ngdc.noaa.gov/viewers/historical_declination/](https://maps.ngdc.noaa.gov/viewers/historical_declination/) (switch view to Arctic)

[https://en.wikipedia.org/wiki/North_magnetic_pole#Modern_(po...](https://en.wikipedia.org/wiki/North_magnetic_pole#Modern_\(post-1996\))

</comment></comment><comment><USER24> Betteridge's law of headlines: "Any headline that ends in a question mark can be answered by the word no."

<comment><USER10> Does Betteridge's law always apply?

<comment><USER25> Hat tip to the other two posters for providing serious responses.

If you intended that as a light-hearted witty response (as I believe you did), then you got a chuckle out of me.

</comment></comment></comment><comment><USER26> So should I buy or sell compass-related stocks?

</comment><comment><USER27> Is it true that when the magnetic field flips suddenly, plane autopilot systems can become confused and crash out of the skies, killing millions en mass?

<comment><USER28> That would be surprising as the altitude control should be independent from the compass. I'd also wager that more than just the compass is used to determine course. Most likely a sanity check in the control software will kick in and return control to the pilot, just as if the compass(es) broke for some reason during flight.

<comment><USER29> Primary heading indication is the directional gyro[0] anyway.

And magnetic flips don't happen "suddenly" in the timescale of a plane flight.

[0] [https://en.wikipedia.org/wiki/Heading_indicator](https://en.wikipedia.org/wiki/Heading_indicator)

<comment><USER17> How fast are the flips. I've known about this effect for maybe a couple of decades, but never heard any theories on how fast the flip is.

If the flip is really slow, then that seems to lead to less human catastrophe, but more difficult perhaps for other species?

edit: s/far/fast

<comment><USER28> The problem with the flips is that they go hand-in-hand with a dramatic weakening of the magnetic field until the new orientation is established. During that time solar storms are not deflected as well and vulnerable electronics will be fried.

<comment><USER30> If my new tv gets fried during the apocalypse I'm going to be pissed.

</comment></comment></comment></comment></comment></comment><comment><USER31> Betteridge's law of headlines applies (though it takes fourteen paragraphs to get there....)

[https://en.wikipedia.org/wiki/Betteridge%27s_law_of_headline...](https://en.wikipedia.org/wiki/Betteridge%27s_law_of_headlines)

</comment><comment><USER26> Is this field flipping man made? Let's spend billions of tax dollars in an attempt to stop the field from flipping. Scientists are always correct.

<comment><USER32> > Is this field flipping man made?

No.

> Let's spend billions of tax dollars in an attempt to stop the field from > flipping.

What?

> Scientists are always correct.

No actual scientists are arguing that it is man made...</comment></comment>


Ask HN: Awesome/neat/favourite Eclipse techniques? - <AUTHOR>

Hi everyone,
I'm the n00b that posted this question a while back ("Reasonable Java editor for heavily CLI-oriented UNIX types who hate bloat?"): http://news.ycombinator.com/item?id=597213
Well, your responses - especially the ones that were most convicted about how futile it is to write Java without Eclipse (or at least, one of the big three IDEs) - convinced me to give it another go.
Sure enough, I upgraded all my hardware to relatively contemporary 64-bit gear, stocked up on some additional gigabytes of RAM, and now I'm happily writing all my Java in Eclipse.  You were right.
I'm getting the sense, however, that despite my curiosity and occasional perusal of the documentation, I'm probably not taking advantage of some of the neatest things you can do with it.
About 90% of the time, I'm using it the same way I used to edit Java in a text editor.  Oh, sure, the highlighting is nice, and I often use the package hierarchical view to navigate to classes or methods -- handy.  The auto-indentation, cleanup, templates for common phenomena (try/catch, etc.), assistance in adding imports for unresolved class names, and other little things are all helpful.  As some of you pointed out, the refactoring stuff can be pretty good;  doing a mass-rename of a method with one click sure beats doing it by hand, or with a one-liner in the shell.
Still, I don't feel like I'm getting that much use out of it compared to just writing the code in a shell.  My intuition tells me I should be doing more.  If you have any tricks you find exceptionally useful or other productivity hacks that are less than entirely obvious, I'd love to know about them.
Thanks in advance! <comment><USER2> I don't know if these are techniques rather then hotkeys, but I actively use the following (Note: I'm not really a big fan of IDEs, but use them professionally to conform to my work environment and Eclipse, while somewhat bloated, is very pleasant and gets better with every milestone).

Debugging:

Learn the hotkeys for stepping in (F5) over (F6) out (F7) and continuing (F8), I get super frustrated watching people click on the icons. Really helped the transition from debugging with the likes of gdb.

Conditional Breakpoints are a revelation.

Remote Debugging is great (I've been able to debug remote java processes, Lotus Notes (yuck) instances, Eclipse workbenches (for plugin development), Remote Perl Server Code (with E-P-I-C and Padwalker)... Eclipse's debugger interface is amazing.

Text Editing w/ Java and CDT:

CTRL+W : close active editor

CTRL + Space : Autocomplete (mentioned earlier)

CTRL + SHIFT + O : Organize Imports (Finds classes that should be imported, removes excessive imports, etc...probably one of the most justifiable reasons to use an IDE for Java development)

ALT + SHIFT + J: Add Javadoc in context

CTRL + SHIFT + G : Does a search on the highlighted text's context (i.e.) a method name to show where it is used.

F3 : Navigates to selected context (Method, class, variable, etc.)

CTRL+SHIFT+T : Presents Dialog for searching through Types (works in most perspectives), i.e.: Searching for a particular java class.

F4: Show the Type Hierarchy (subclass/superclass information)

Import & Export wizards are your friend (Creating java jars, exporting projects to archived zips).

Eclipse can be used to track history (kind of like your own personal lazy SCM). If you make a mistake you can right click on a file and perform "Replace With > Local History..." (this may need to be enabled in preferences). You can also Compare to history well.

Tasks : The 'Mylyn' plugin is great for GTD and Task management. I was a bit apprehensive at first, but it's pretty incredible, especially if you are a nut about keeping organized. You can create tasks, and assign your current work to it, and it will track and remember context (what classes you used) as you work on that task. Mylyn also interfaces with Bug Trackers like Bugzilla and JIRA.

<comment><USER3> _CTRL + SHIFT + O : Organize Imports (Finds classes that should be imported, removes excessive imports, etc...probably one of the most justifiable reasons to use an IDE for Java development)_

is by far my favourite reason to use Eclipse ^_^

</comment></comment><comment><USER4> CTRL+O - My favorite eclipse command. Gives you autocomplete outline of the current class in a popup.

These three are essential for my workflow. When I am spinning up on code, I tend to open a LOT of files (select all, open) and scan them, kind of try to boot up the code into my head. This is how I navigate around.

CTRL+M - maximizes current editor

CTRL+E - Autocomplete list of open editors

CTRL+W - close current editor

Make sure to note that you can drag an editor next to another editor and get emacs-style multiple panels. You can also right click on the name of a class in the editor and select new editor - this gives you two editors on the same file, a key feature for legacy projects.

Make sure to customize code cleanup and warning settings to match your particular style.

Also, remember that the key to using eclipse is the plugins. One of my favorites is Mylyn, which integrates to most task management systems. This allows you to associate a set of files with a bug, which makes regression bugs a dream.

CTRL+T gives a similar functionality as CTRL+O, but for type hierarchy. Great for inheritance addicts.

CTRL+1 I am sure you have figured out and CTRL+Space too.

You can enable line numbers by right clicking in an editor.

Code folding is a great technique for highlighting what you are working with.

Eclipse keeps its own local history, so if you screw up before committing, it sometimes gives you an out.

and speaking of out, that's all that comes to the top of my head...

</comment><comment><USER5> >> "especially the ones that were most convicted about how futile it is to write Java without Eclipse (or at least, one of the big three IDEs) - convinced me to give it another go."

I've been writing java for about 10 years and have tried an IDE once or twice. Horrible experiences.

Most of my code has been written using jedit/textmate. Syntax highlighting is all you need really.

Personally, I'd advise you go back to using a text editor. The myth that you need an IDE to code java is just silly.

Go back to the command line+text editor.

<comment><USER2> I started programming as a young man on Visual Studio programming in VB and C++. There came a day years ago where I had to work with a text editor and a terminal on an AIX system and was surprised at how little I knew in terms of compiling, building, and programming in general (how is a class structured again? What packages/headers do I need to reference? What directories do my files have to be in? Why isn't my code running?). I think it's important that those who code exclusively in IDEs step back every now and then and understand how these 'auto-magic' functions IDEs provide work. I've now spent years using IDEs in addition to my own custom environment (I switch back and forth between vi, gedit, and textmate (when i'm on a mac) and make extensive use of sed/awk and other CLI commands to do custom activities that IDEs certainly cannot provide).

IDEs bring a lot to the table, but I can't help but agree with you in that it can be a horrible experience, especially to those who are accustomed to having complete control over everything in their environment. I think it's great for getting things done efficiently, but developing exclusively with them can bring a close-minded view of how things work.

<comment><AUTHOR> You read the article I linked to, right? I can hardly disagree. Nevertheless, after writing code that way for so long and being a very zealous old-school UNIX guy, I guess I'm interested in trying a newer, more conventional way of doing things.

<comment><USER5> 'more convenient' often means far more trouble in the long run.

I've seen colleagues use their IDE build process which is completely broken, and spend a day trying to figure out what's wrong... (Never use a build process in an IDE). You see people blindly creating source files that are thousands of lines long and not noticing since their IDE folds the code etc. The IDE hides the bloat. Which is a terrible thing.

When you start trying to integrate svn, build process, etc into an IDE, everything goes wrong.

The 'intelligence' in textmate was even too much for me. Inserting "" when I pressed it once, trying to do code indenting. It still drives me mad how it handles tab and spaces (When I press delete, I want it to remove one space. Not 4).

I really don't think an IDE is 'more conventional'. Perhaps in corporate cubeville.

<comment><AUTHOR> I guess I avoid some of these pitfalls because I wrote C and Perl with vi for 10 years, and used a relatively spartan FVWM environment consisting solely of terminals and command-line approaches to all problems.

That method of approaching programming and technical work isn't going to change for me even if I forklift-upgrade my Java text editor to something a little fancier, which is essentially what I see myself to have done here.

I can't use an integrated build process anyway because I'm working on a backend server process that necessarily must reside on a remote machine; there'd be virtually no point in trying to develop or run it locally, as it depends on connectivity to too many other resources for any aspect of its functionality. So, I mount the source directory over SSHFS or NFS and edit it "locally" with Eclipse, but the build process is remote and done via a manually crafted Ant build file.

I haven't seen Eclipse fold any code other than the big comment block at the top of every source file.

I wouldn't be opposed to integrating SVN awareness into it, but find it a bit problematic since I'm using SVN over SSH.

</comment></comment></comment></comment></comment><comment><USER6> One of the major advantages of moving to a language aware IDE are the refactoring tools!

Rename: Alt + Shift + R (utterly invaluable)

Extract Local variable: Alt + Shift + L (Very handy for adding self documentation on complex expressions)

Inline: Alt + Shift + I

Move: Alt + Shift + V

Display Refactoring Context Menu: Alt+Shift+T

Another sweet feature I'd like to mention is Mark Occurrences - if find this invaluable for rearranging method bodies. For example, placing declarations closer to usage.

You can also distinguish reads and writes by configuring different highlight colours (Preferences->Java->Editor->Mark Occurances->Write Occurances).

I love eclipse.

</comment><comment><USER7> My personal favorite are the Templates in Preferences > Java > Editor > Templates

Ex: type in _sysout_ hit CTRL + Space and it will convert _sysout_ into _System.out.println();_

In regards to shortcuts, the ones I use most are:

       CTRL + ALT + UP/DOWN to duplicate a selected block of code and paste it above/below

       CTRL + D to remove the line

       ALT + UP/DOWN to move the current line up or down

On a related note, has anyone found a way to CTRL + Tab between opened documents?

</comment><comment><USER8> I'm just hitting eclipse after a long stint in Visual Studio. Favorite feature so far: hit ctrl+3 to give you a quicksilver-like command line full of useful stuff. The completion is a little finicky, but it's good enough to be useful. Also, Ctrl+Shift+R, I think, lets you open a file by typing in its prefix.

<comment><USER4> both very useful! I never used CTRL+3 before, I always intend to research eclipse more thoroughly but never get around to it

</comment></comment><comment><AUTHOR> I've got a question: Is it possible to make Eclipse SVN-aware even when SVN- over-SSH (SVN over SSH remote command transport, aka svn+svn://user@host/path/to/repository URI scheme) is being used?

<comment><USER9> As far as I remember, both Subcplise (the older SVN plugin) and Subversive (the recommended SVN plugin for the latest Eclipse) support svn+ssh URLs. See [http://www.eclipse.org/subversive/documentation/teamSupport/...](http://www.eclipse.org/subversive/documentation/teamSupport/new_location_wiz.php)

</comment></comment><comment><USER10> Emacs key-bindings saved my life</comment>


Sociologists Examine Hackathons and See Exploitation - <AUTHOR> https://www.wired.com/story/sociologists-examine-hackathons-and-see-exploitation/ <comment><USER2> This is interesting, and maybe hackathons are becoming overused, but I think the article missed something. The artificial constraints imposed by a hackathon have the effect of forcing participants to think in different ways about solving their problems, and the time constraint forces them to think creatively for a project that fits the time scale. This type of thing can create opportunities for ideas and creativity that wouldn't easily be possible outside of such constraints. Think of the examples from successful videogames, unexpected hits that rake in the revenue. Then their next project is so over- resourced it ends up a mediocre flop, partly because (I believe) that lack of constraints limits the ability to creatively overcome roadblocks. I'm not saying this is always the case, but plenty of my own best work that I'm most proud of comes from challenges where I had to "make do" and I nonetheless figured out how to get the job done. Hackathons are a way to manufacture that sort of work environment. Like anything, there should be a balance, but demonizing the whole endeavor seems too extreme.</comment>


Ask HN: Where can I find smartphones with FOSS OS - <AUTHOR>

I have to buy a new phone and I want to have full control (or at least full transparency) over it, ruling out basically all phones with a MS / Apple / Google OS.
However, it seems incredibly difficult to find such phones. Typically, sites refer you to low end phones (with Firefox OS) or the Oneplus phones (with OxygenOS).
Still, you cannot find any reasonable comparison between these from a security or usability perspective and the mid-tier phones are completely missing.
So what phones do you use or where do you look for this type of phones? <comment><USER2> You might also look into [https://en.wikipedia.org/wiki/Jolla](https://en.wikipedia.org/wiki/Jolla)

<comment><USER3> Jolla has quit doing mobile devices. Market was too fast evolving for a small company. They are purely in OS business now. Supported hardware coverage is not too wide yet though.

</comment></comment><comment><USER4> Flash a Cynaogenmod or other open android variant on a mid-tier phone you like?

<comment><AUTHOR> As far as I understand, it's getting harder each time. Besides, I thought there might be flashed phones to buy already because I don't want to invest a few hours until it works.

But you're right, I suppose that's my fallback strategy.

<comment><USER5> Don't the cyanogenmod installer supposed to offer an easy install experience ?

<comment><USER6> Yes. When I tried it about a year ago, it took me about three clicks in a Windows installer program. Without any research into Cyanogen and its installation whatsoever.

Only downside: Cyanogen had a different ring tone as default, and later that day I was in a restaurant. It took me about fifteen seconds to relize this was indeed my mobile phone ringing.

</comment></comment></comment></comment><comment><USER7> Ubuntu Phone?

[http://www.ubuntu.com/phone](http://www.ubuntu.com/phone)

</comment><comment><USER8> Oneplus is a low end phone? You might want to do some more research.

</comment><comment><USER9> Look for openmoko GTA04</comment>


Show HN: Automagically install Docker in a VBox VM with super-fast NFS mounts - <AUTHOR> https://github.com/dziemba/mobymac <comment><USER2> I find it quite an irony that people have a project claiming speed as the primary benefit, using virtualbox.

For those who aren't aware: virtualbox is a pig performance wise, on macOS. Parallels and VMWare Fusion both blow it away.

<comment><USER3> I actually think that VBox is faster than VMware. Also vbox never failed for me during a snapshot and left the vm in a broken state, which happened to me multiple times using VMware

</comment></comment><comment><USER4> Did that just say Super Fast and NFS...</comment>


BitPay Extension: Accelerating Crypto Adoption - <AUTHOR> https://github.com/bitpay/bitpay-browser-extension <comment><AUTHOR> This looks pretty interesting. Seems like a adapter that lets you purchase and use gift card codes with bitcoin at time of checkout</comment>


Creating user stories using comics - <AUTHOR> http://rubygem.me/2014/07/21/bringing-user-stories-to-life/

<comment><USER2> I like this a lot. I've long considered that "As Customer A" or "As a User" thing can lead to user stories being quite difficult to read, particularly if designing anything to do with collaboration, even more so if there are multiple users of the same type.

Like you, I also name my example actors. When Dora the Developer wants to run a screensharing session with Peter and Patricia the Powerusers, the narrative is much easier to follow. Using cartoons is an extra step in that direction.

One thing that worries me about the use of cartoons is that it offers an extra opportunity for unhelpful bikeshedding, even before the features of the actual system are considered:

"There aren't any women in that department, can you change Sally the Saleswoman into Simon the Salesman?" (followed by "there aren't enough female characters")

"There aren't any East Asian characters - Can we make Ahmed the Accountant Japanese?" (followed by "Can we just make everyone white? I don't want to offend people with stereotyped caricatures")

"We should put Brian the Blind User in a wheelchair, to show that he's disabled"

Have you experienced that at all?

<comment><AUTHOR> I have to say I haven't experienced that. Having said that I'm very lucky in my company that people understand that this is a quickly thrown together gist, in a similar way to my wireframes. No one ever tells me to change the font on my balsamic mockups from Comic Sans to the allegro Lato font family either.

</comment></comment><comment><USER3> great article and love the idea of the comic strips!</comment>


Reasons to Avoid Mcrypt - <AUTHOR> https://appsec.solutions/blog/2015/05/if-you-re-typing-word-mcrypt-into-your-code-you-re-doing-it-wrong

<comment><USER2> So, the arguments I see are:

\- abandonware (fine), bugs, yes, but doesn't invalidate the case if you know the library and the warts

\- design flaws make it hard to write correct code, it's crypto, you better know what you are doing regardless of the library

\- algorithm identifies are confusing, see point above.

<comment><USER3> From the article:

        Although it's possible to provide a relatively secure cryptography
        library that builds on top of mcrypt (the earlier version of
        defuse/php-encryption did), switching your code to openssl will
        provide better security, performance, maintainability, and
        portability.

The argument here isn't that mcrypt is doomed/inherently vulnerable, it's two- fold:

1\. OpenSSL is a better choice, especially if you're an average PHP developer who is ignoring cryptographers' advice not to deploy your own crypto implementations

2\. If a critical bug is found in libmcrypt, since nobody is maintaining it anymore, it is unlikely to get fixed. You are much safer using a library where patches are still being merged.

I hope this makes more sense.

</comment></comment><comment><USER4> As a note, Laravel 4.2 uses mcrypt by standard. openssl is an option

<comment><USER3> [https://github.com/bcit- ci/CodeIgniter/blob/3a9eb39f61b10b3f...](https://github.com/bcit- ci/CodeIgniter/blob/3a9eb39f61b10b3f86e50f4cd39ca0d9f010bac2/system/libraries/Encryption.php#L208-L210)

CodeIgniter prioritizes OpenSSL over Mcrypt. I swear I did not tip their devs off before I wrote it, Andrey Andreev must have come to a similar conclusion on his own.</comment></comment>


NRA Complaint Takes Down 38,000 Websites - <AUTHOR> http://motherboard.vice.com/read/nra-complaint-takes-down-38000-websites <comment><USER2> Maybe I'm biased, as I am an NRA member. But I think that side is much closer to outright fraud than it is parody, and probably _should_ be taken down. I support good parody as much as anybody, but that site kinda dead-panned the delivery, if you know what I mean. It looks too serious and isn't necessarily immediately recognizable as parody and is harmful to the NRA's trademarks.

<comment><USER3> I think the video and website are pretty obviously parody. But, if you are having a hard time discerning it as parody, don't you think that's the NRA's fault?

<comment><USER2> I don't know. It's obviously a fuzzy line, and like I said, I am probably a little biased. OTOH, while I am an NRA member, they aren't my favorite gun- rights organization anyway. I prefer Gun Owners of America. _shrug_

</comment></comment></comment><comment><USER4> Why the article ends with "censored by NRA"? NRA has all the rights to send a complaint because everybody does. And that's all they've done.

<comment><AUTHOR> They do have the right to attempt to enforce their own trademarks. 37,999 of the sites taken down didn't infringe on the NRA's trademark, though, only one (allegedly) did. That's an overbroad exercise of trademark claim, a chilling effect, and arguably censorship.

<comment><USER2> It seems clear though, that those other sites being taken down was more of a misunderstanding / technical glitch, than any malicious activity by the NRA. And from the sounds of it, the other sites were restored relatively quickly.

</comment></comment></comment><comment><USER5> The Share the Safety site us back up now.</comment>


Swedish Startup to Bring Pogo Sticks to S.F. As E-Scooter Alternative - <AUTHOR> https://sanfrancisco.cbslocal.com/2019/05/31/swedish-startup-to-bring-pogo-sticks-to-s-f-as-e-scooter-alternative/ <comment><USER2> Sounds ridiculous, especially the angle of "a fittness product", because you could just walk, or run.

But maybe the fun/innovation option is reasonable? Think of it as rent-a- toy... all kinds of fun things strewn in the streets, costing only cents to have a play on. Even, with a try-before-you-buy aspect, but everywhere, no need to visit a store.

The theft issue has been kinda-solved by the e-scooter pioneers.

</comment><comment><AUTHOR> Not The Onion</comment>


Mainframes and Supercomputers, From the Beginning Till Today - <AUTHOR> http://www.cpushack.com/2018/05/27/mainframes-and-supercomputers-from-the-beginning-till-today/ <comment><USER2> > The first mainframe was created by the well-known IBM in 1964

Were the IBM 700/7000 series (1953-1964) not mainframes? I would say they were.

And what about other vendors pre-1964 machines, e.g. UNIVACs. Were they not mainframes too?

> you need to determine what the super-computer differs from the mainframe and > which is faster

I'm not convinced that "mainframe" and "supercomputer" are necessarily mutually exclusive categories. What about the IBM 7030 Stretch? Doesn't it belong to both?

There have been supercomputers with an S/360-descended architecture. For example, the Fujitsu FACOM VP and VP2200 series, the Hitachi HITAC S-810. Such machines were both supercomputers and IBM-compatible mainframes, and could run variants of MVS.

<comment><USER3> A good way to distinguish a mainframe from a supercomputer would be served with... a car analogy.

A race car is often uncomfortable and hard to drive. You need to be physically fit to drive it. Supercomputers are the race cars of computers. You need to do crazy tricks to extract their maximum theoretical performance. Mainframes, however, are more suitable to run common tasks, are easier to drive and generally more reliable. A mainframe like a 360/195 would be somewhat like a BMW M-series. Its performance is impressive, but you don't need to practice your whole life not to kill yourself in one.

<comment><USER2> The problem with the "car analogy" is that some supercomputers are also mainframes.

For example, look at the 1st Top 500 List, from June 1993. In position 36, was the Hitachi S-3800/480 at the University of Tokyo [1][2]. The S-3800/480 was an S/370-compatible machine with vector processing extensions. It supported two operating systems, OSF/1 Unix and also VOS3, which is a fork of IBM MVS [3]. Arguably, if a machine is S/370-compatible and runs a derivative of IBM MVS, it is an IBM-compatible mainframe. Yet, also, it was a supercomputer. It could run the same business and scientific software as any other IBM- compatible mainframe. But scientific code can take advantage of the special vector processing instructions (either through assembly or through the Fortran compiler.)

This was probably the very tail end of this category of machines, IBM(-compatible) mainframe supercomputers. But if you go back to the 1980s and earlier, it was actually a quite common category, with instances being supplied by IBM, Amdahl, Fujitsu and Hitachi. (Unfortunately, the Top500 list only goes back to 1993, so it omits most of this history.)

[1] [https://www.top500.org/list/1993/06/?page=1](https://www.top500.org/list/1993/06/?page=1)

[2] [https://www.top500.org/system/168780](https://www.top500.org/system/168780)

[3] [https://en.wikipedia.org/wiki/MVS#Closely_related_operating_...](https://en.wikipedia.org/wiki/MVS#Closely_related_operating_systems)

<comment><USER3> > The S-3800/480 was an S/370-compatible machine with vector processing > extensions.

IBM also had the Vector Facility for its 3090 series. I'd still say these are the M-series (or the post-Audi Lamborghinis) of computers - fast, but they don't require you to sacrifice comfort for speed.

</comment></comment></comment></comment><comment><USER4> Very cool.

I wish I was able to locate a Thinking Machines CM-5 before they were all destroyed. Even the front indicator panel would have been nice.

I've created my own smaller version with an Arduino and some LED panels but its not the same.

<comment><USER3> I'm thinking about building a panel that'd would gather core activity of a couple machines and map that onto one or more 8x32 LED matrices. The core activity would be gathered from a client running on the machines themselves and sent to the machine running the panel.

On my tests running ffmpeg, however, the results would be disappointing: all LEDs light up at the same time...

</comment></comment><comment><USER5> Disappointing it does not mention Convex Computer, which:

-produced the world's first commercially available gallium arsenide supercomputer, the Convex C3

-owned the minisupercomputer market from ~1986 through its end in 1995

-built the first commercially successful flat address space, cache coherent massively parallel processor the SPP1000 series in '94

<comment><USER6> I agree wholeheartedly :-) Incidentally, I have 9 Convexes at home: [https://vaxbarn.com/index.php/43-project/641-the-convex- comp...](https://vaxbarn.com/index.php/43-project/641-the-convex-computer- collection)

</comment></comment><comment><USER7> _> During the first month of IBM, orders were received for more than a thousand copies of such machines, and in the 6 years of the family's existence, more than 33,000 such machines were sold._

What for? I can imagine some tasks for such a machine in the middle of XX century, but not for thousands of them.

<comment><USER8> As I recall, it was widely believed that there was an economy of scale for mainframe computers, so you were better off serving all of your users with a single timesharing machine if possible. If most of your programs ran in batch mode, then you might need 64k, but only for a couple seconds a day, so you shared those 64k with 1000 other people.

<comment><USER9> [https://en.wikipedia.org/wiki/Grosch%27s_law](https://en.wikipedia.org/wiki/Grosch%27s_law)

</comment></comment></comment><comment><USER10> It's evident, scrolling through that, how drab computers have become. The 360 had a giant control panel with blinken lights, and cool looking tape drives. The Cray looks cool, despite the lack of control panel. Everything else is just a drab rack.

<comment><USER11> Much of that has with miniaturization.

Those massive tapes had downright abysmal storage capacities by today's standards.

And binkenlights vanished when ICs could switch so fast that the human eye would just see a steady light (much like we can't see a fluorescent lamp blinking).

<comment><USER12> Those lights were directly connected to the main bus which ran at several hundred khz to the low mhz. You never looked at them while the machine was running except as a way to confirm "something" was happening. You would not see individual pulses but rather they would appear dim or bright depending on activity.

Instead the machines had a single step mode where you could force the computer to execute one instruction at a time. Or you could pause the machine completely and manually poke bits into memory yourself.

The real death of the front panel was when machines got their own bootloaders and could load their operating system without the operator manually injecting instructions on how to read from external storage directly into memory. This actually happened much later than you might appreciate. This combined with software based debuggers which could be more powerful.

<comment><USER13> I'd agree, with the availability of glass monitors for diagnostic purpose and the end of switches for toggling in initial loaders blinkenlights became obsolete.

The transition is probably well illustrated by the Datapoint 2200 smart terminal (which famously provided the blueprint for the Intel 8008): An early illustration shows the machine with a DEC mini style row of console switches [1], but when it was announced in 1970, the toggle switches were gone. Ironically, the early 8-bit micros which sprang off from the DP 2200 were probably amongst the last machines to come with toggle switches and console lights (again, because of the lack of built-in diagnostic facilities).

[1] Concept illustration of the Datapoint 2200 (John Frassanito, 1969) – arguably, console switches were just what you expected from a "self- respecting" computer at the time, but, by the time the design had progressed from concept to actual hardware, these just didn't make any sense anymore: [http://4.bp.blogspot.com/-2urGdLzMYf8/VnY76lBDUlI/AAAAAAAANS...](http://4.bp.blogspot.com/-2urGdLzMYf8/VnY76lBDUlI/AAAAAAAANS8/uTePme0mk8I/s1600/index16.jpg)

(From [http://bugbookmuseum.blogspot.co.at/2016/01/datapoint-2200-8...](http://bugbookmuseum.blogspot.co.at/2016/01/datapoint-2200-8-bit- computer-update-by.html) – Mind that Datapoint is then still CTC and the terminal is marked "Veripoint 2200" in the concept illustration.)

</comment></comment></comment></comment><comment><USER14> This is kind of a scatterbrained article, it doesn't tie in mainframes in a meaningful way. The CDC 6600 and IBM 7030 Strech would have been a better starting point for supers. The S/360 mainframe was primarily a business line of computers, although the 360/91 was a capable super.

So to expand on mainframes in particular, which are less well documented/understood by my generation:

The IBM mainframe continued being primarily a business computer but they often had enhanced capability models like the 3090 with optional vector facilities that put them in competition with dedicated supercomputers.

Few people that came into computing in the 1990s and thereafter realize that a lot of what we might assume to be "modern" capabilities existed since the 1970s, via these machines. The machines gave companies inter-office memos (email), document preparation (word) and document/image storage (like modern dropbox, gdrive etc), OLTP (like later RDBMS oracle etc), OLAP (like modern hadoop, terradata etc), custom applications and hardware for all kinds of line of business activities like automated logistics via bar code systems, point of sales cash registers and bar code scanners, ATMs, complex billing generators printers that could customize/cut/collate bills and notices, bill processors with check printers/OCR scanners, phone switchboard integration for call routing and auto-attendant etc.

VTAM and SNA allowed the machines to communicate, and intercommunicate with machines of other companies across the globe. Time sharing services were offered for smaller companies in a way not dissimilar to modern "cloud computing". International networks existed to interchange data between different computer types like [https://en.wikipedia.org/wiki/Tymnet](https://en.wikipedia.org/wiki/Tymnet).

The machines were also critical to the design and engineering of large construction, manufacturing, PLM, and simulation. Aircraft, ship building, power plant design, space exploration, automotive, circuit board and VLSI chip design/layout/EDA.. all that was primarily done on these machines up until the early '90s when UNIX workstations took over. CADAM, CATIA etc lots of good history covered on [http://mbinfo.mbdesign.net/CAD- History.htm](http://mbinfo.mbdesign.net/CAD-History.htm).

It's actually kind of astounding how much these did and how quickly it was washed out of common knowledge. If you had a white collar job in the '70s-early '90s you probably directly and indirectly spent a lot of time on these machines. 3270 terminals and later PCs with 3270 emulation.

Today, the mainframe is still integral to the running of Western civilization, although they are almost exclusively back office transaction processing and batch reporting systems.

</comment><comment><USER8> The table at the end of the article, showing roughly Teraflops as a function of year. I'd be interested to see a corresponding table for minicomputers, microcomputers and other desktop machines such as GPU's.

</comment><comment><USER15> I'm sorry, but an article claiming to trace the history of supercomputers that doesn't even mention the CDC 6600 can't be taken seriously.

<comment><USER16> Also missing mention of the Cyber 205 and the Illiac IV.</comment></comment>


Poop 101: A beginner's guide to reading your own poop - <AUTHOR> http://www.theverge.com/2016/10/9/13212952/poop-healthy-normal-color-food-shape-disease <comment><USER2> Like three years ago, I used to think I was not-normal because I only went every other day. This didn't cause me discomfort or anything, it was just how I went.

Then for some reason I experimented with eating prunes. I really don't know how this idea first came to me but I've eaten prunes nearly every day for two years now (my dad and friends make fun of me for it). I might still only go twice every three days, but feel much emptier. You also, by eating one prune too many, get a sense of what getting too empty feels like. It's an important sense to get attuned to. Fiber is very important.</comment>


Always secure your localhost servers - <AUTHOR> https://davywybiral.blogspot.com/2019/05/always-secure-your-localhost-servers.html <comment><USER2> Stuff like this is why I'm glad I'm a uMatrix user

<comment><AUTHOR> These can be done without Javascript, btw, using images and other assets. The Steam block example in the article is using the favicon.</comment></comment>


BitBar - put the output from any script/program in your Mac OS X Menu Bar - <AUTHOR> https://github.com/stretchr/bitbar#bitbar BitBar lets you put the output from any script/program in your Mac OS X Menu Bar.  Powerful tool for developers who use a mac. <comment><AUTHOR> I use it to keep track of the current BitCoin values on Coinbase.</comment>


Ask HN: Open Covid-19 Patient Database - <AUTHOR> Hello everyone,
I am wondering why don't people create a database where COVID-19 patients themselves can upload their data to help finding the answers. The dimensions I am thinking about is beyond basic "severeness" and "time to recover" but also nutrition/supplement informations or health condition informations, fitness, being too exhausted for a longer time / lack of sleep before sympthoms arise.
I know many of this is personal information and I also know it is hard to verify these pieces of information, but I think there are many people who are willing to help with their data, but there is no platform for that.
I don't know how to do this this is just the idea.
Edit: South Korea has already tested more than 140.000 people, (https://www.google.hu/amp/s/www.businessinsider.com/south-korea-coronavirus-testing-death-rate-2020-3%3famp ) it would be really interesting to see their data. <comment><USER3> I volunteer the next two days to help with this in any way I can. I've been working on a similar citizen science idea, related to home efficiency (beaverlodge.game), but it might have some parallels in methodology. My background is more data science and marketing, but I have a bit of coding experience as well.

</comment><comment><USER4> I just posted an idea similar to this, without having seen yours first: [https://news.ycombinator.com/item?id=22574128](https://news.ycombinator.com/item?id=22574128)

add geolocation data and location based app awareness and alerting.

The problem me thinks are language barriers and cultural-socio privacy differences.

Next level technology could really help in this space, if we could only get our global sh*t together...

</comment><comment><USER5> Do not allow PII! Be very careful about what you gather as publicly sourced data.

Think about what can happen if false data is entered. Consider both malicious and ignorant cases.

<comment><USER6> Locate the servers outside the USA/EU them all for whatever you want. Hippa is outdated and designed for a pre Internet Age. We could have our whole health history running in Apple health yet visible to researchers if allowed. This is technically possible but the present healthcare industry/government does not allow this.

<comment><USER5> You can put lives at risk by sharing bad or the wrong type of information. People who are scared often make bad decisions.

In the wrong environment, sharing someone's identity can be equivalent to swatting them and their community.

There are deep ethics involved with the decisions that structured many of these laws. Anytime you are dealing with personally identifiable information, you have to consider the consequences of trivializing privacy.

Always consider and know the laws for your domain and also take seriously the ethics.

If you aren't ready to do this, choose to contribute by a different way. There are many ways to develop resources that can reduce harm, and currently large online communities brainstorming those ways.

</comment></comment></comment><comment><USER7> I'm down to help. You could skip a UI and go straight jupyter w csv file - <USER2> some nice visualizations out there quick. Google Forms.</comment>


How the Cartels Work (2011) - <AUTHOR> http://www.rollingstone.com/politics/news/how-the-cartels-work-20110418 <comment><USER2> The DEA is not "powerless to stop them", it's actually empowered as an organization by this growing threat. The police and government contractors are a political constituency and political donors. As a societal problem, drug use and criminality around it is a consequence of the drug war, the only way to stop it is to end the war and start treating addicts as sick rather than criminal.

</comment><comment><USER3> >> This article appeared in the September 17, 2009 issue of Rolling Stone.

Six and a bit years ago. That was before operation fast and furious came to light. We now know that the DEA had several informants. They were paid and seemingly informed on rival cartels. So many assertions in the OP were probably incorrect even at the time.

</comment><comment><USER4> > Borland recalls asking one sheriff how he knew that a courier had said what > he was ordered to say when he was forced to call his boss and set up a > meeting to trade the drugs. "That's what I told him to say," replied the > sheriff, who spoke no Spanish.

That's pretty awful.</comment>


Angry Birds for Chrome in Canvas and WebGL - <AUTHOR> https://chrome.google.com/webstore/detail/aknpkdffaafgjchaibgeefbgmgeghloj <comment><USER2> This is why I hate the concept of App stores.

It's just a link that uses open technologies that works well on any modern browser, yet you need to open Chrome and "install" it. Why can't I just type in a URL into any browser I want!? (Yes, I know that this specific app happens to have a link. However, it's not clickable, it's not obvious and most apps won't.)

If I made a site that you could only use if you opened it in IE and bookmarked it? Everyone would be crying foul. Yet somehow, browser specific app stores are considered moving the web forward.

Let's take it a step further. Let's say they charged for this app, which many apps will. If I pay for it in the (currently in development) Mozilla app store, that means I can't use it in Chrome. Is this really what we want for the web?

Why can't browsers just beef up their bookmarking systems? Right now, we're hiding regular links behind "installations."

I hate app stores, and I hate what they have the potential to do to the web. I hate that someday soon, someone will say to me "You should use ____! But it's (Firefox|Chrome|IE) only." I thought we left that mentality with IE6.

(Disclosure: I work for Mozilla, but have nothing to do with our web apps store. Naturally, my opinions are my own.)

<comment><USER3> Here's what excites me about Angry Birds in the Chrome app store. None of this exists yet, but it could:

\- If I install it on one computer, it installs on all my computers \- Purchase the Screaming Eagle in-app, using Google Checkout \- If I beat Level X on one computer, I can resume on level X+1 on another computer (using the same infrastructure as Chrome bookmark sync).

Currently, your game progress is in LocalStorage, but it would be great to have the game database sync'd to my other browsers. Yes, you could "sign-in" to Angry Birds to sync your data, and that option would still exist, but for people who installed through the App Store (where you have to be auth'd to Google anyways) it would be one less step.

<comment><USER2> Uh, you realize that's how the web already works... right?

<comment><USER3> Zing! Fair point. But "video game" != "the web".

I tend to view HTML5 applications as closer to a traditional desktop application than a web site.

Local storage has some advantages over server-based storage (latency, privacy, etc), while the major disadvantage of local storage is the lack of persistence across multiple devices.

I like the _idea_ of HTML5 app developers being able to use LocalStorage and then seamlessly piggyback on Chrome's existing JSON sync framework. That's a lot less work than managing state on the server, and lets game developers focus more on their core competencies, effectively outsourcing the "webiness" of their app to Google.

By no means do I think this kind of "Chrome App" will replace web apps, but I do believe that in certain genres like video games there are advantages.

</comment></comment></comment></comment><comment><USER4> I fired up Charles to try and dissect the source but it's a giant pile of obfuscation. Here is everything I could see with executable code. They must be pumping different sections of the game into individual iframes since there are 6 separate html files that _mostly_ have the same code.

[http://chrome.angrybirds.com/angrybirds/angrybirds.nocache.j...](http://chrome.angrybirds.com/angrybirds/angrybirds.nocache.js)

[http://chrome.angrybirds.com/angrybirds/10C85AF6734FAE7AFB4C...](http://chrome.angrybirds.com/angrybirds/10C85AF6734FAE7AFB4C2822A45A883B.cache.html)

[http://chrome.angrybirds.com/angrybirds/3C8E31D1DD3333197B71...](http://chrome.angrybirds.com/angrybirds/3C8E31D1DD3333197B714712576C7FFA.cache.html)

[http://chrome.angrybirds.com/angrybirds/0E4E6E6C7B52064E8C51...](http://chrome.angrybirds.com/angrybirds/0E4E6E6C7B52064E8C51988DA10DE399.cache.html)

[http://chrome.angrybirds.com/angrybirds/F94722960223E26D4BB6...](http://chrome.angrybirds.com/angrybirds/F94722960223E26D4BB6053F32532BD8.cache.html)

[http://chrome.angrybirds.com/angrybirds/09F8D37830DE81BA93CE...](http://chrome.angrybirds.com/angrybirds/09F8D37830DE81BA93CE98D1406F19AD.cache.html)

[http://chrome.angrybirds.com/angrybirds/0B93D95B5E595879D28E...](http://chrome.angrybirds.com/angrybirds/0B93D95B5E595879D28EE9CA28E135D9.cache.html)

And all of the levels are listed out with the following pattern

<http://chrome.angrybirds.com/angrybirds/json/Level1.json>

The spritesheet assets are actually larger then they appear in game, however the scaling still looks really good in the final output, I'm surprised how smooth the game ran. [http://chrome.angrybirds.com/angrybirds/sprite_sheets/INGAME...](http://chrome.angrybirds.com/angrybirds/sprite_sheets/INGAME_BIRDS_PIGS.png)

<comment><USER5> This is standard GWT practice. Each of those files is a different browser permutation. It'll have different code for certain functions depending on which environment was loaded (likely IE, Gecko, early Gecko, WebKit, Opera).

Here's a little more info on it:

[http://code.google.com/webtoolkit/doc/latest/tutorial/compil...](http://code.google.com/webtoolkit/doc/latest/tutorial/compile.html)

<comment><USER4> Thanks for that explanation. I really wish I could parse through this code, I'd love to understand how to do 2d games inside webgl and the performance differences between the normal canvas drawing functions and the webgl ones.

<comment><USER5> Ray Cromwell and Philip Rogers are doing a talk on this very topic:

[http://www.google.com/events/io/2011/sessions/kick-ass- game-...](http://www.google.com/events/io/2011/sessions/kick-ass-game- programming-with-google-web-toolkit.html)

Philip Rogers has a Chrome credit on the new Angry Birds game. The talk should be up on YouTube within a few days.

</comment></comment></comment></comment><comment><USER6> Smooth as butter in Firefox 4.

The concept of 'Chrome-only' web applications is appalling to me, and can only remind me of 2000 when people just developed for IE6. This is REALLY BAD for the web.

(Disclosure: I work for Microsoft.)

<comment><USER7> I wrote a Chrome-only web app. It's a packaged app (installs on the user's computer). That means:

1) My hosting cost are $0.

2) I don't have to implement my own payment system.

3) Users already have a payment account with Google, bringing down friction to purchase considerably.

When a cross-browser solution for those 3 points comes around I'll be glad to support other browser users.

<comment><USER8> Do you mind linking to it here? Those three points sound pretty enticing.

<comment><USER7> Sure. warning: I wrote this on Christmas Eve and spent little time on making it pretty :)

[https://chrome.google.com/webstore/detail/fjekppbejaekboiooi...](https://chrome.google.com/webstore/detail/fjekppbejaekboiooidnboobkoiklckl)

</comment></comment></comment></comment><comment><USER9> Neat. Now I want to hack my own level editor: <http://chrome.angrybirds.com/angrybirds/json/Level4.json>

<comment><USER10> No need to hack one, it exists: <http://www.badboll.nu/acme/able/>

There was an open source level pack made with this that has been popular on Maemo

</comment></comment><comment><USER11> Very cool! They are still using Flash for audio, however, which is slightly less cool.

<comment><USER12> Especially since flash is mandatory and they won't let you launch the game without it.

<comment><USER11> I was able to launch it just fine in Chrome with Flashblock enabled, but of course the game is silent unless you unblock Flash.

</comment></comment></comment><comment><USER13> Any good explanation for why it maxes out my CPU, even when it's just displaying the end-of-level score screen? This game works fine on a smartphone, but somehow makes use of everything my MacBook Pro can throw at it?

<comment><USER14> IIRC, the game on the smartphone was running via a native C++ binary, so it's pretty close to the metal. In a web browser you have layers of abstractions that kill performance.

It's a sad day when we herald slow and buggy modern implementations of game technology that was working just fine in 1985 as the future just because now you don't have to install a program.

</comment></comment><comment><USER15> Interestingly it works great for me in Safari but not Chrome (11.0.696.65)...

<comment><USER16> It works for me in both, but it's tremendously smoother in Safari. In Chrome the fans on my i7 MBP spun up and the framerate was low. In safari, the fans didn't come on and the framerate was high. Not what I would have expected.

<comment><USER17> Sounds like GPU acceleration works for you in Safari but not Chrome. about:gpu.

<comment><USER16> You're absolutely correct that GPU acceleration isn't working in Chrome. Interesting.

<comment><USER18> If about:gpu shows that your video card is blacklisted, you might try starting Chrome from the command line with --ignore-gpu-blacklist to see if it still works.

</comment></comment></comment></comment></comment><comment><USER19> Does anyone know what engine they used to build this? Or did they build it from WebGL's base?

<comment><USER20> It seems to be built using GWT (Google Web Toolkit) which churns out client- side JavaScript from a Java codebase.

It makes sense since they probably had a Java version written for Android.

<comment><USER19> <http://news.cnet.com/8301-30686_3-20061878-266.html>

CNET Confirms

</comment></comment></comment><comment><USER21> This question may be naïve, but I have Angry Birds for Mac on my laptop and when I play it, the computer works fine. When I started playing this version, my cooling fan almost immediately turned on full blast. Even when I'm streaming HD video, that never happens. Is it the fact this game is written in HTML rather than objective C the reason that it's so processor intensive?(it's a 13" MacBook pro running OS 10.6.7 if that makes a difference)

</comment><comment><USER22> Never got the appeal of Angry Birds until now. There goes my productivity for today.

Animation is a bit jerky in Opera 11 but certainly usable.

</comment><comment><USER23> I am in so much trouble. The Android version won't run on my phone, so I've thus far avoided getting addicted to this game like so many of my friends. Now it's all over. Goodbye productivity.

</comment><comment><USER24> It is very slow though! WebGL has a long ways to go..

(Macbook Pro with VGA and 8gb RAM)

<comment><USER25> Huh, it seems really smooth on my macbook air, using FF6 nightlies.

</comment></comment><comment><USER26> For the canvas version, IE9 is much faster than Chrome 11.

</comment><comment><USER27> Reallllly slow in Chrome 11 on my mac. Maybe 5fps.

<comment><USER28> Try Firefox. In Fx5 (and Fx4 probably too) it's _really_ smooth. Feels many times faster than Opera and Chrome.

</comment></comment><comment><USER29> Working well and fast on IE9, just paste the url.

</comment><comment><USER30> Silently fails with "Uncaught Error: QUOTA_EXCEEDED_ERR: DOM Exception 22" in console if you have cookies+site-data disabled.

</comment><comment><USER31> Works pretty well in Safari 5, but it's a little laggy even on my rocket ship (2x3GHz QC Xeon Mac Pro, 9 GB RAM).

<comment><USER32> Does Safari 5 have WebGL implemented?

</comment></comment><comment><USER33> Pretty awesome on my desktop but a little slow. It doesn't work at all on my CR48, just a black screen.

<comment><USER34> Hmmm, it works fine on my CR-48. I'm on the dev channel, maybe that makes a difference?

</comment></comment><comment><USER35> Works really nicely in Firefox 6 nightlies: <http://chrome.angrybirds.com/>

<comment><USER36> Working fine on 4.0.1 for me ;)

</comment></comment><comment><USER17> If this is as unplayably slow for you as it was for me check about:gpu in Chrome.

Latest Chrome dev channel (12.0.742.30) on OS X is not enabling the GPU for me on my 3.2 GHz iMac and it really is not clear why. There is no about:flags entry for any GPU-related things either.</comment>


Hackett – A Haskell-like language with support for Racket's macro system - <AUTHOR> https://github.com/lexi-lambda/hackett <comment><USER2> It's really cool to see Racket being used like this! Its power really shines through:

> _Due to the way Hackett is implemented, many things that are language > features in Haskell can be derived concepts in Hackett. In fact, Hackett's > ADTs are not primitives, they are actually implemented as a library via the > data and case macros_

<comment><USER3> Yeah. I have always been amazed by the Haskell crowd's dislike of macros. Proper macro systems are incredibly useful, even in a language like Haskell.

<comment><USER4> I don't think Haskellers are against macros in general, but prefer Generic or GADT for tasks other languages might use macros for. Also Template Haskell sucks but we still have to use it sometimes which makes us bitter. I would welcome a hygenic, typed macro system like Hackett has.

<comment><USER5> What are the problems with Template Haskell?

<comment><USER4> As an author of Template Haskell the expression trees you build are not constrained by types (other than Exp); you won't see a type error due to a problem in a Template Haskell function until you try to use that function in another module, and it produces Haskell code that in turn does not compile.

As a user of Template Haskell functions you will mostly complain about the slow compilation time, the jarring syntax, poor documentation (since so much of Haskell documentation relies on types) and the error messages when you do something wrong.

<comment><USER6> Also Template Haskell is not supported by all Haskell implementations (eg: Reflex on mobile).

</comment></comment></comment></comment></comment></comment><comment><USER7> This article might be a useful introduction to what this is about: [https://lexi-lambda.github.io/blog/2017/05/27/realizing- hack...](https://lexi-lambda.github.io/blog/2017/05/27/realizing-hackett-a- metaprogrammable-haskell/)

<comment><USER8> In addition, Lexi Lambda has done a number of talks that are on Youtube. I watched one such talk at RacketCon this past year.

<comment><USER7> [https://www.youtube.com/watch?v=bOUgXd9XlJ4](https://www.youtube.com/watch?v=bOUgXd9XlJ4)

</comment></comment></comment><comment><USER7> The more I learn about this project the more I like it.

It would be amazing to see Hackett implemented in miniKanren, I think that would really bring us a big step closer to "compiler as a conversation" sort of programming. The combination of relational evaluation and the Haskell type system should be really powerful.

<comment><USER9> > "compiler as a conversation"

could you elaborate on this concept?

<comment><USER7> It's not my idea, or a new idea. All the same I couldn't find a good reference. This [0] thread should give you an idea of what I'm talking about and hopefully someone else will come along with a better link.

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

</comment></comment></comment><comment><USER10> Wow, just wow! I've read a lot of disbelief about how such a language would be impossible or at least practically too difficult to implement. I've been really keen to find exactly this!

</comment><comment><USER11> When a language designer takes their project seriously: [http://docs.racket- lang.org/hackett/index.html](http://docs.racket-lang.org/hackett/index.html)

</comment><comment><USER12> Alexis is one of the smartest programmers I have ever worked with. Really cool to see your project front page!</comment>


Brainstation – Learn to code in Toronto – Ruby on Rails, iOS and Front-end - <AUTHOR> http://www.brainstation.it/

<comment><USER2> Glad to see something like this in Toronto.</comment>


The Private Edward Gorey - <AUTHOR> http://bostonreview.net/literature-culture/john-crowley-private-edward-gorey <comment><USER2> I've always loved Gorey's art style, ever since I was introduced to it as a little girl, watching Mystery on PBS with my mom.

<comment><USER3> That was also my introduction to his artwork. I imagine it's the same for many others as well.

As a small child, when _Mystery_ came on I knew it was time for bed...but my dad would always let me stick around to watch the little intro cartoon before the "boring" part started.

</comment></comment><comment><USER4> a bit strange that an article about Gorey does not show any of his eerie illustrations...</comment>


Homes vs Stocks - <AUTHOR> http://blogmaverick.com/2008/11/11/homes-vs-stocks/ <comment><USER2> Based on my depressingly long experience, I would say that if you can easily switch jobs w/o moving, and you like the area, you should consider a house. Better customization options, the chance to create equity, better credit picture, etc. If, however, you CAN'T switch jobs w/o moving, you might be daft to purchase - the damn things are somewhat to rather illiquid (particularly right now) and there's all sorts of years maintenance you have to do as an owner.

Like everything, it's a business/risk decision that you have to make based on your career and aspirations. Me, I overspecialized too much doing stuff I like to do. When the jobs are on the other side of the country, the choices aren't all that nice with a house...

</comment><comment><USER3> The author seems to think it is intrinsically _bad_ to be a renter for life. Why?

<comment><USER4> Owning a house is just so much more expensive than renting if the value isn't going up at insane rates. You have to pay for insurance, taxes, repairs, etc.

It seems to me that the "extra" cost that people pay to own their own house is simply the premium created by nice aspects of owning your own house. Whether or not that premium is worth paying is a personal choice.

<comment><USER5> If you're renting, who do you think is paying the insurance, taxes, repairs, etc?

Yup - you, the renter. The only time that you're not is when the house is appreciating fast enough to cover those things and the rental market is for some reason depressed. However, if house prices are appreciating, lots of folks are being priced out of buying, which makes them renters, pushing up rental prices.

Businesses that don't pay all of their expenses plus some profit don't stay around long. (If there's no profit, there's no point in spending the time or tying up the capital. T-bills are a safer and less expensive way to do nothing.)

<comment><USER4> Well, in the case of renting, I'm currently renting a house that was originally bought when the housing prices were less than half of what they are now, so I'm indirectly paying only half the property tax that I would be paying if I were to buy the same house. Also, I personally know several people who buy houses and rent them for less than the mortgage, let alone all the other costs because they are hoping to make their money back on real estate appreciation.</comment></comment></comment></comment>


Learn How to Use Functional IO in Scala with Scalaz - <AUTHOR> http://www.stackmob.com/2011/12/functional-io-in-scala-with-scalaz/

<comment><AUTHOR> In case you have any problems rendering the inline gist here is a link to the gist on github: <https://gist.github.com/1508038>

</comment><comment><USER2> The gists aren't showing up in Chrome... I just see

      [gist id=1508038 file=firstio1.scala]</comment>


Mastering Modern Payments: Using Stripe with Rails - <AUTHOR> http://www.petekeen.net/mastering-modern-payments?1=

<comment><USER2> That is a very, very smart niche to pick for an ebook. There is a clear customer need connected directly to money, a tightly contained topic, and a great opportunity for packaging e.g. working source code for what is, from the perspective of anyone doing non-toy payments, only a few dollars more.

Even though I already have working Stripe integration I sort of want to buy this to send additional signal to the market: "Informed producers! I want you to make more stuff like this. Being on the leading edge of technology and piecing together half-written docs and blog posts to get systems working sucks. Please make curated guides to how to solve real problems with the new hotness, ideally, ASAP after the new hotness is out. And ignore the guy who says he won't pay for it because his unwillingness to pay for your products or services is invariant under any course of action you take and can hence be dropped totally from your Karnaugh map."

</comment><comment><USER3> Previous discussion from this morning: [https://news.ycombinator.com/item?id=6217792](https://news.ycombinator.com/item?id=6217792)</comment>


First stable version of CKEditor 5 is out – collaborative editing for your app - <AUTHOR> https://ckeditor.com/blog/CKEditor-5-v10.0.0-the-future-of-rich-text-editing-looks-stable/ <comment><USER2> The pricing model might have been ok a few years ago but now with ProseMirror, Quill, Slate and others it would be pretty hard to justify for a SaaS to spend that much.

The demos are pretty cool though, especially the collaboration + comments one.

<comment><AUTHOR> It took 3 years for 20 people to build CKEditor 5 + collaborative editing plugins + a scalable cloud infrastructure for all this. What's more, unlike many others, CKEditor 5 _itself_ has nearly 9000 tests (3x more than React) and won't disappear next year. We're already on this market for 15 years and plan to support CKEditor 5 for at least 8 years.

We haven't yet seen any other complete real-time collaborative editing solution on the market (excluding Google Docs and Dropbox Paper which you can't integrate with your application). And I think that it's not a coincidence that we're first here. This field is extremely demanding and we're one of the very few who have the experience in it.

We totally understand that there will always be the free option out there, but we're sure that those who opt to go with CKEditor precisely understand the benefits of what they're paying for.

</comment></comment><comment><AUTHOR> Together with CKEditor 5 v10.0.0 we released plugins enabling real-time collaborative editing in CKEditor 5 :)

Check out the demo on [https://docs.ckeditor.com/ckeditor5/latest/features/collabor...](https://docs.ckeditor.com/ckeditor5/latest/features/collaboration/overview.html)</comment>


Flask 0.5.1 Released - Python WSGI microframework - <AUTHOR> http://pypi.python.org/pypi/Flask/0.5.1

<comment><AUTHOR> From the mailing list:

"And two hours later: the 0.5.1 point release. Why that? Because when you had a module named A without templates in A but the application's template folder in the subfolder A, Flask would have chopped of the leading "A/". Fixed that now and expanded the testsuite."</comment>