Why states are rushing to seal tens of millions of old criminal records - <AUTHOR> https://www.economist.com/united-states/2019/11/16/why-states-are-rushing-to-seal-tens-of-millions-of-old-criminal-records <comment><USER2> > InstantCheckMate

I'm sure the author of this name thought it was just a clever pun, but it's just repulsively evil.

</comment><comment><USER3> As a non-american, how this does not run afoul of discrimination laws boggles my mind. Refusing employment on skin colour, religion, sexual orientation or indeed pretty much anything would land you in trouble, doing the same on this is seen as perfectly fine.

Back home in Sweden, records are automatically sealed after two years (if my memory serves me correctly).

<comment><USER4> It's very different to discriminate against someone for something they did than on the basis of race, sex, etc.

<comment><USER5> You might think you're making a distinction within your comparison, but you're not.

Blanket no-hire policies for felons are discriminatory because minorities are disproportionally and more harshly sentenced in the US. While you might feel justified in discriminating against a person with a felony record, you have a non-trivial probability of judging them on the racist workings of a corrupt and broken system that preys on vulnerable populations.

Fewer than 1% of cases in the US go to trial. Instead, people are forced to plead to charges instead of letting the evidence speak for itself. An innocent person who doesn't think they can afford to fight a felony charge in court might choose to take a prosecutor's plea deal to go to prison for a month instead of the mandatory minimum of 5 years. It's utterly barbaric.

</comment></comment></comment><comment><USER6> Pennsylvania started this trend. They seal records for minor offenses if you stay out of trouble for 10 years. It's certainly a step in the right direction.

[https://www.inquirer.com/news/clean-slate-criminal-record- se...](https://www.inquirer.com/news/clean-slate-criminal-record-sealing- expungement-pennsylvania-philadelphia-20190628.html)

</comment><comment><USER7> How about we disallow political discrimination as well. The left is so against discrimination when it comes to crime, yet will find every reason to not support or hire people that are against their political beliefs.

Conservatives/republicans/trump supporters face overwhelming discrimination in silicon valley.

It's why I know all of these movements are complete bullshit and just a way to get voting power and push out anyone you dislike.

</comment><comment><USER4> If two applicants were the same except that candidate A committed a minor crime 20 years ago, it is rational for me to prefer candidate B. If A is better than B in some other way, for example having more relevant experience, I may decide that the extra experience outweighs the long-ago crime. But why do politicians assume I cannot make rational decisions and that they must decide for me what criteria for applicants are important? At the margin, removing a penalty for crime will result in more crime.

<comment> m-p-3 To play Devil's advocate, applicant B might just be better than A at not getting caught.

<comment><USER8> This is what I want out of my employees

/s</comment></comment></comment>


The web.py Philosophy - <AUTHOR> http://webpy.org/philosophy

<comment> why-el This is fantastic advice for someone who wants to contribute to the open source community for the first time (I am fresh out of college and have zero contributions; most of my work, a long internship and school stuff, are all closed source). I have few ideas and I will try this method on them.

</comment><comment><USER2> A refreshing change to a front page plastered with Mr Schwarz

<comment><USER3> _started by Aaron Swartz (firstname.lastname@example.com)_

<comment><USER2> Shit. I'm taking a break from HN for a few days. Its unbearable after someone has died. Its people climbing over each other for attention. Let the man rest in peace.

<comment><USER4> I would humbly suggest you're entirely mis-understanding what's occurring. I don't for a moment think the submissions related to his suicide are people 'climbing' (or clamouring, or grasping) for attention. This is the organic and natural outpouring of shared experiences from a community that has lost an integral and important friend.

Reading all the different rememberances here moves me to a depth that I find surprising, considering I know next to nothing of this man. But I suspect it is because I have know this type of loss myself, and recognize the compassion and complexity of respect which engender such words, as well as the profundity of a person's efforts which would bring on that sort of response from so many different people.

If this sort of response bugs you, a few days is probably not enough. My uninformed guess is that this event won't go gently by in such a brief span of time.

<comment><USER5> Not true - this will pass within a week at most. This is the internet.

Also while there are definitely a large number of people who are genuinely compassionate and caring about the man himself, the majority are just people twisting his death to their own ends. It's a bit ugly, but understandable since this is likely the first time they have linked his name to any accomplishments or even knew about the trial.

It's similar to all the cars slowing down at an accident site - they don't really care who was in the accident, they just have a fascination.

</comment></comment></comment></comment></comment><comment><USER6> Also read this related article on his blog - Rewriting Reddit (<http://www.aaronsw.com/weblog/rewritingreddit>). He talks about why they chose web.py over other Python frameworks (and also over LISP)

<comment><USER7> Kudos! It's as if he read my mind regarding what I thought it's wrong with Django! _...and incredibly sad that I would probably not have come across and read this, but for Aaron's death ...this perverse causality brought tears to my eyes_</comment></comment>


Updating Logitech Hardware on Linux - <AUTHOR> https://blogs.gnome.org/hughsie/2017/05/22/updating-logitech-hardware-on-linux/ <comment><USER2> Wow, props to Richard for getting this done and props to Logitech for coming through with not just the documentation but also the continued communication and cooperation.

It seems quite rare for companies like Logitech to do this so it's amazing to see it happen.

</comment><comment><USER3> Technically this isn't that impressive but I am impressed by his success in navigating the politics and get Logitechs cooperation.

</comment><comment><USER4> it's great how their official Windows tool doesn't even offer this update automatically - you have to check your version and download it manually [1]

[1] [https://community.logitech.com/s/feed/0D531000055gw8YCAQ](https://community.logitech.com/s/feed/0D531000055gw8YCAQ)</comment>


Google Straps Aclima Sensors to Street View Cars to Map Air Pollution - <AUTHOR> http://techcrunch.com/2015/07/28/software-eats-smog/?ncid=rss

<comment><USER3> This is going to be interesting for many cities, but I can speak to the case of Madrid.

The Partido Popular government fixed the pollution problem by moving the sensors out of busy streets and into big parks that happen to be within the city limits[1,2].

The historical continuity of measurements has been lost, but Google will now provide data with more continuity. Or at least I hope it is provided.

[1] [http://elpais.com/diario/2009/05/18/madrid/1242645857_850215...](http://elpais.com/diario/2009/05/18/madrid/1242645857_850215.html) [2] [http://www.ft.com/cms/s/0/022cf59c-3091-11e0-9de3-00144feabd...](http://www.ft.com/cms/s/0/022cf59c-3091-11e0-9de3-00144feabdc0.html)

</comment><comment><USER4> As someone spending a large amount of time in India I am very concerned about the extreme pollution level there. This was the best country-wide data I could find on pollution: [http://imgur.com/sPtkwDj](http://imgur.com/sPtkwDj)

I would love it if Google could produce something more accurate!

<comment><USER5> [http://www.citylab.com/tech/2013/09/heres-where-youre- most-l...](http://www.citylab.com/tech/2013/09/heres-where-youre-most-likely- die-air-pollution/6946/)

</comment></comment><comment><USER6> This is the site I usually check:

[http://aqicn.org/city/beijing/](http://aqicn.org/city/beijing/)

Also, if I needed it, I'd probably build one of these:

[http://smartairfilters.com/en.html](http://smartairfilters.com/en.html)

</comment><comment><USER7> Sounds like something related to Sidewalk Labs[1]?

[http://www.prnewswire.com/news-releases/dan-doctoroff-and- go...](http://www.prnewswire.com/news-releases/dan-doctoroff-and-google- announce-sidewalk-labs-300097255.html)

</comment><comment><USER8> This is great to see. We are prototyping something similar - want to deploy static sensors instead of strapping the sensors to vehicles. We initially thought about the vehicle option by partnering with Uber/Lyft. Definitely cost effective but getting relevant data from the same location at different time slices will become a function of the vehicle's presence at that location and time. A bit difficult to manage with a vehicle fleet whose primary function is something else. Worth further exploration though.

</comment><comment><USER9> Neat but doesn't pollution vary significantly day to day and seasonally? It seems like one drive through at random time/day/season wouldn't be enough data to be meaningful.

<comment><USER10> It seems to me that they can do repeated measures (coinciding with updating street view). I'm more interested in how this will account for the fact that the monitor is on a car which is itself a source of pollution, no?

<comment><USER11> Who that car is following and how long the spend sitting at red lights (or in traffic leaving a light) would likely have a larger effect. If you have enough data points you can reliably correct for it but there's still gonna be exception cases like the industrial area that's polluted during the day and the adjacent down that the wind blows the pollution to at night (Google doesn't drive street view cars at night AFAIK).

I don't know how much Google takes season into account when routing street view cars but areas with a tourism industry would be cleaner in the off season and colder areas will be dirtier in the winter (more fuel used for heating, less trees). Also something that could be accounted for...

</comment></comment></comment><comment><USER12> Now we're getting to SimCity level of coolness.

</comment><comment><USER13> Great. But I think Google will not show up where I live in a while so where can one buy these Aclima sensors?

Also I hope they expand measurements to other parameters like particle pollution.

Monitoring pollution is a taboo topic in our city because it would show that the port pollutes a lot and of course money is more important than public health.

<comment><USER14> The article mentioned they are measuring particulates. That is exactly what you're hoping they expand, so good news! They already will be measuring that.

</comment></comment><comment><USER15> I hope they find a way to add this to a portable device for end users. Here in DC I've suspected the air in the metro stations (underground train) is many times worse than the above ground sampling.

</comment><comment><USER16> Possibly unrelated, but if you are interested in the geography of Chinese air pollution, check out aqicn.org

</comment><comment><USER17> Why not just, I don't know, install a permanent sensor. This doesn't seem very useful unless these cars are driving the same route every day.

<comment><USER18> Well, there are a few reasons here.

1\. Installing a permanent sensor means ensuring some power source

2\. Any kind of planning / permissions needed to sort it out

3\. They're fixed

The first two simply aren't problems if you whack them on a car. No approval needed, no lengthy agreements about the look & impact of placing them around.

Three is really important. While the same money spent on fixed sensors gives greater time resolution, it'll give worse spatial resolution. Is it worth sticking a permanent sensor down to find out that actually the pollution levels never get high enough to be a problem? How many side-roads will get covered?

> This doesn't seem very useful

A huge amount of spatially dense readings across cities? That doesn't seem like it might be useful to you?

<comment><USER17> How often does a google car go past a location? I always assumed it was less than once a year based on how often they update street view where I live.

Plus, you have no idea what time of day the car will be passing through a location.

So you can't compare the data points over time - they're not taken the same time of day. And I'm not sure if you can even compare different regions - <USER2> data may tell you that one part of the city has cleaner air than another, but it's only because one part of the city was measured in the morning and another part of the city in the afternoon.

<comment><USER18> > Plus, you have no idea what time of day the car will be passing through a > location.

I don't, but I assume google does.

> So you can't compare the data points over time - they're not taken the same > time of day

Not in a simple way, no. But to say it doesn't provide useful information seems odd when the article says

> Independent scientific analysis confirmed that the mobile sensor system > worked for collecting street-by-street data, and could improve upon the > regional network of sensors operated by the Environmental Protection Agency.

<comment><USER17> How do you read that quote as a positive thing? The first half merely says it was successful in collecting data and the second half uses weasel words "could improve".

I've worked on projects in the past where we collected a ton of data like this, gave it to some poor graduate student or post-doc to do a bunch of data wanking with it, only to produce throw-away papers in bad journals because even. Though it was a huge amount of data it wasn't good data.</comment></comment></comment></comment></comment>


Image Dithering: Eleven Algorithms and Source Code - <AUTHOR> http://www.tannerhelland.com/4660/dithering-eleven-algorithms-source-code/ <comment><USER2> I still use dithering daily with 24 bit color images. In fact, my test for whether a modern image editor is serious and good is whether it supports dithering when converting from floating point color channels down to 8 bits per channel. Photoshop does this.

The most important reason for me is not display on the monitor, but printing the image. I do a lot of large format printing, and printers smash parts of your color space and make some gradient/banding problems stick out like a sore thumb. Dithering is critical when printing!

Gradients with banding can easily show up when you resize a large image down to a smaller size. This is a good reason that resizing probably anything less than 16 bits per channel images should be done in a higher precision format than the image.

I haven't tried to use an error diffusion dither when converting 16 bits per channel down to 8... I'm not sure how much that matters. It might make a difference, and it sounds fun to code either way, but in my experience, a good random number generator suffices to make color bands vanish.

</comment><comment><USER3> > It also has uses when reducing 48 or 64bpp RAW-format digital photos to > 24bpp RGB for editing.

The author touches upon it here, but I think it's worth generalizing further: If you have high or maybe infinite precision in your color values, dithering will look much nicer than simply rounding to the nearest value. A concrete example is a color gradient. If done naively with rounding, color bands will be clearly visible. With dithering, they will be almost impossible to see.

See for example: [http://johanneshoff.com/dithering/](http://johanneshoff.com/dithering/)

</comment><comment><USER4> The article doesn't mention the void and cluster[0][1] ordered dithering (and modernized variants) which have the advantage of ordered dithering that they are highly parallelization, e.g. via GPU shaders but do not leave the easily spottable patterns of ordered dithering.

For example the madVR[2] video renderer uses it for realtime video dithering to avoid banding shallow color gradients from 10bit sources or debanded internal 16bit representation on <= 8bit displays.

[0] [http://cv.ulichney.com/papers/1993-void- cluster.pdf](http://cv.ulichney.com/papers/1993-void-cluster.pdf) [1] [http://www.hpl.hp.com/research/isl/halftoning/publications/1...](http://www.hpl.hp.com/research/isl/halftoning/publications/1995-filter- extent.pdf) [2] [http://madvr.com/](http://madvr.com/)

<comment><USER5> I find it amusing that someone would have a dedicated GPU, yet cannot fully render color images. I mean, I'm sure there's actually plenty of use-cases, but it's still funny.

<comment><USER6> "Fully render" is a strange way of putting it - most consumer hardware has only 8-bit colour depth, and _lots_ of video compression algorithms will turn smooth gradients into blocky messes that would benefit from dithering.

If you're processing the decode at 10 or 16 bits and need to render at 8 bits, it's _much_ better to dither than truncate.

<comment><USER4> > and lots of video compression algorithms will turn smooth gradients into > blocky messes that would benefit from dithering.

More accurately: Either you have a 10bit-per-channel video (or better) which has smooth gradients which will need dithering when rendering to an 8bit-per- channel display.

Or you have 8bit video (more common) which will have to be passed through a debanding filter first. But then how do you get the debanded result onto the screen without reintroducing the banding? By dithering it.

</comment></comment></comment></comment><comment><USER7> A while back got curious about the approach used by apps like Manga Camera ( [https://play.google.com/store/apps/details?id=jp.co.supersof...](https://play.google.com/store/apps/details?id=jp.co.supersoftware.mangacamera) ) to turn photos into Manga style "drawings".

Turns out there's a paper on it "MANGAWALL: GENERATING MANGA PAGES FOR REAL- TIME APPLICATIONS" ( [https://www.semanticscholar.org/paper/MangaWall- Generating-m...](https://www.semanticscholar.org/paper/MangaWall-Generating- manga-pages-for-real-time-Wu- Aizawa/c027ee8729d44f3a08b5e7361689513123954ac6/pdf) ) and an implementation - [https://github.com/zippon/MangaWall](https://github.com/zippon/MangaWall) \- that implementation uses ordered dithering ( [https://github.com/zippon/MangaWall/blob/master/src/MangaEng...](https://github.com/zippon/MangaWall/blob/master/src/MangaEngine.cc#L206) ) among other things to help produce a pencil drawn like effect.

Anyway just saying ;) To me at least, pretty fascinating ...

</comment><comment><USER8> For an interesting case of modern artistic use of dithering, see the discussion related to development of indie game "Return of the Obra Dinn" [1] (by Lucas Pope, author of "Papers, please"), where a participant contributed a dithering scheme he invented [2] for a specific purpose of making faces of in- game characters better looking and easier to recognize.

[1] [https://forums.tigsource.com/index.php?topic=40832.msg121719...](https://forums.tigsource.com/index.php?topic=40832.msg1217196#msg1217196)

[2] [https://forums.tigsource.com/index.php?topic=40832.msg121280...](https://forums.tigsource.com/index.php?topic=40832.msg1212805#msg1212805)

(Just in case and for easier browsing, I took liberty of uploading a copy to github: [https://github.com/akavel/WernessDithering](https://github.com/akavel/WernessDithering), although I'm not clear on what's the license of the code, unfortunately; that said I hope the numbers in the matrix are not patented.)

( _edit:_ lol, didn't notice there's another thread on Obra Dinn already on HN, now I'm surprised! :)

</comment><comment><USER9> A fun (if not terribly effective) algorithm that's missing here is dithering along a Hilbert curve.

[http://caca.zoy.org/study/part3.html](http://caca.zoy.org/study/part3.html)

<comment><USER10> Thanks, this is just what I was wondering about after reading the original article.

</comment></comment><comment><USER11> I don't know if it's some kind of nostalgia factor (since a lot of old 16-color EGA software used it, I think), but I find ordered dithering output strangely appealing. I have also used it sometimes where size mattered more than style on the assumption that GIF/PNG compression rates would be better on ordered dithers. ImageMagick can do a lot of dithering styles and it's fun to play with.

</comment><comment><USER12> This thesis on image dithering and noise shaping is one of the best works I've read on the subject: [http://uwspace.uwaterloo.ca/bitstream/10012/3867/1/thesis.pd...](http://uwspace.uwaterloo.ca/bitstream/10012/3867/1/thesis.pdf)

<comment><USER13> Professor Vanderkooy is a great source for dithering, and has some wonderful work on it too (ps. fellow uw student)

</comment></comment><comment><USER14> Last year I tried painting some Floyd-Steinberg dithered pixels... [https://flashasm.wordpress.com/2015/11/04/more-incredibly- sl...](https://flashasm.wordpress.com/2015/11/04/more-incredibly-slow- rendering-algorithms-cupcakes-pixel-art/) (16 colours) and [https://flashasm.wordpress.com/2016/05/18/81920-pixels- of-64...](https://flashasm.wordpress.com/2016/05/18/81920-pixels-of-64-colour- cupcake-goodness/) (64 colours)

</comment><comment><USER9> Another fun fact I always think of when dithering comes up is how Tim Sweeney's software rendered or the original Unreal game used dithering instead of bilinear interpolation for texture mapping. This was very impressive at the time.

[http://www.flipcode.com/archives/Texturing_As_In_Unreal.shtm...](http://www.flipcode.com/archives/Texturing_As_In_Unreal.shtml)

</comment><comment><USER15> It's a kind of funny those images look nice on high res screens.

Some time ago I experimented with 16-32 color images on websites. Because of high res screens they look great but save a lot of data.

</comment><comment><USER16> Few years ago, I created a real-time dithering of video in Javascript: [http://blog.ivank.net/floyd-steinberg-dithering-in- javascrip...](http://blog.ivank.net/floyd-steinberg-dithering-in- javascript.html)

</comment><comment><USER17> Neat facts:

-3DFX Voodoo (all models in 16bit color depth) let you enable hardware dithering block (2x2/4x4 ordered dither, zero performance penalty). They did it to save framebuffer space (24bit textures, 16bit framebuffer). It made 3dfx graphics look significantly better than nvidia/ati in 16bit depth. Earlier cards used 4x1 filter on the output, Banshee and later models gained 2x2 filter providing "22 bit like quality" as 3dfx called it.

-Back in ~1994 some HP unix workstations used dithering to produce 'near 23bit color' out of 8bit framebuffer [https://en.wikipedia.org/wiki/HP_Color_recovery](https://en.wikipedia.org/wiki/HP_Color_recovery)

-All crappy (TN) LCD panels (staple of garbage bin supermarket 1366x768 laptop, and older 'gaming' fullhd ones) use FRC which is a form of temporal dithering [https://en.wikipedia.org/wiki/Frame_rate_control](https://en.wikipedia.org/wiki/Frame_rate_control)

One legitimate use of dithering was in the days of CGA/EGA/other fixed palette hardware. You can relive it here 'Joel Yliluoma's arbitrary-palette positional dithering algorithm': [http://bisqwit.iki.fi/story/howto/dither/jy/](http://bisqwit.iki.fi/story/howto/dither/jy/)

</comment><comment> semi-extrinsic This article is really nice. I used it as my starting point when I once won a code golf competition on image quality in dithering. Using Fortran.

The algorithm is based on Sierra Lite, but I added a random element to the direction in which the error is propagated. This removes essentially all dithering artifacts.

[http://codegolf.stackexchange.com/questions/26554/dither- a-g...](http://codegolf.stackexchange.com/questions/26554/dither-a-grayscale- image)

</comment><comment><USER18> Has anyone tried using the equivalent of animated GIFs to help with dithering? If you have a limited palette of colours, perhaps you could produce two dithered versions, with pixels sometimes having different colours in alternate frames. If the image is refreshed fast enough, two colours could blend into a third.

The most extreme example could be 'dithering' a grey square into 1) a black square and 2) a white square, and when they are rapidly switching between the two it might appear as a grey instead.

I guess that in practice, the refresh rates of monitors are too low to make it seem anything other than a terrible flickering image, but on old CRTs the effect might work a little better. It's also memory and CPU intensive, but I'd still be curious to see if it could be used successfully, and if it improved the quality compared to 'just' a single dithered image.

<comment><USER19> This was especially common on 8-bit and 16-bit computers to fake 'high colour' displays on machines that had only limited colour capability. They often took advantage of the fact that people were using their machines with TVs with relatively slow-changing phoshor screens, so the flicker was less evident than on a modern monitor.

e.g. Photochrome on the Atari ST, was especially impressive at the time: [https://www.youtube.com/watch?v=vPsY4P8bnVw](https://www.youtube.com/watch?v=vPsY4P8bnVw)

The most extreme version I've seen of this was on the ZX Spectrum, which had not only a very limited 15 colour palette, but also limited to 2 colours within each 8x8 block of the screen. Some bright spark came up with the idea of flipping rapidly between R, G, and B frames to give (limited) per-pixel RGB. Unfortunately it did flicker quite badly because of the extreme changes in colour levels (only two levels of each channel), and the fact that it required 3 whole frames to make a single colour virtual frame.

Example here: (not suitable if you have photosenstive epilepsy!) [https://en.wikipedia.org/wiki/File:Parrot_rgb3.gif](https://en.wikipedia.org/wiki/File:Parrot_rgb3.gif)

<comment><USER18> Wow, that example parrot image is pretty impressive, given that it is just three colours, and I'm viewing it on an LCD!

I never knew anyone had tried that before on a spectrum. At first I thought you were just talking about the other trick, getting more than 2 colours per 8x8 by changing the palette as the raster scanned down the screen. The multi- colour parrot is way more adventurous!

I'd love to see the parrot image on an old CRT to get a feeling for what the effect might look like with the phosphor afterglow. Leaving the spectrum behind and using a bigger palette range, like on the ST, the effect seems much less epileptic fit inducing, because you can pick closer colours to switch between.

</comment></comment></comment><comment><USER20> This was a great read. Very approachable.

</comment><comment><USER21> There is another interesting application for dithering that I've read about in the recent Uncharted 4 Brain Dump (Ctrl-F for "Dithering") here [https://redd.it/4itbxq](https://redd.it/4itbxq): Use dithering instead of alpha blending to fade out close objects. Alpha blending can be quite expensive while dithering just omits pixels. The result looks like this: [http://allenchou.net/wp- content/uploads/2016/05/dithering-1-...](http://allenchou.net/wp- content/uploads/2016/05/dithering-1-1024x576.png) (best visible at the top left corner).

<comment><USER17> this is ugly as heck, sega saturn did the same

[http://www.mattgreer.org/articles/sega-saturn-and- transparen...](http://www.mattgreer.org/articles/sega-saturn-and- transparency/)

</comment></comment><comment><USER22> Great and easy to follow article!

> For simplicity of computation, all standard dithering formulas push the > error forward, never backward. If you loop through an image one pixel at a > time, starting at the top-left and moving right, you never want to push > errors backward (e.g. left and/or up).

Would the image look a lot different if you dithered it backwards from the bottom right pixel?

Are there dithering algorithms that consider the error in all directions instead of pushing the errors forward only?

<comment><USER22> Answering my own question; "3.3. Changing image parsing direction": [http://caca.zoy.org/study/part3.html](http://caca.zoy.org/study/part3.html)

The answer seems to be that changing the image parsing direction gets rid of some artifacts but introduces others while not vastly improving on faster and simpler approaches.

</comment></comment><comment><USER23> Also if you don't know what your target palette is you can do k-means clustering over colorspace, and the palette is the cluster centers (each point you're giving to k-means is an <r,g,b> or <h,s,v> vector).

<comment><USER24> K-medians or k-medoids yield more pleasing results in my experience

</comment></comment><comment><USER25> Back when I was at university, we had a computer graphics course. Each week we got new assignment that we needed to program, write to a floppy disk (it was before Internet became widely available) and give it to the prof next week.

Dithering was one of the assignments. We were required to implement black- white quantization and then Atkinson and Floyd-Steinberg. We were given the freedom to choose our own images.

During development at the dorm my favourite picture to debug on was pretty racy (think along the lines of full version of "Lena"). I totally did not intend to put it to the floppy disk...

Not only I got the 10 - the highest number of points for this assignment, I got +2 on top of that with the comment from prof: "for the choice of test images in the best tradition of the field".

<comment><USER26> Gross.

<comment><USER25> I understand your sentiment. I did not mean to glorify objectification of women with this story. Just something mildly funny that happened almost two decades ago, in a country without a strong tradition of feminism, to a 17-year old me who did not know any better then.

<comment><USER27> How can an virtual object (a photo of a woman seen on a monitor) be objectified? The model meant that photo to be used as an object (looked at). If she wanted people to understand her personality more, she would have just written a book.

<comment><USER26> These are the kinds of things, specifically, that gross me out about this story:

(from [http://geekfeminism.wikia.com/wiki/Sexualized_environment](http://geekfeminism.wikia.com/wiki/Sexualized_environment))

* In geek contexts, they are usually a way for heterosexual men to bond over their common attraction to women. This is othering for anyone who is not a heterosexual man, including, obviously, women, and contributes to their invisibility in the field. This sensation of exclusion is very visceral when in a small minority, as women can be in geek settings.

* There is a long tradition of sexual images, suggestions and approaches being used to shame, scare, harrass or brutalise women. This is common enough that most women will have had personal experience of it. Therefore many women are unable to sensibly assume good faith on the part of unknown men seeking to make a situation sexual and feel mentally uncomfortable at best and physically intimidated often.

* While in many areas this restriction is loosening, women are stigmatised as well as celebrated for being too sexual. This traps women into a double bind when responding to sexualized environments, because even by getting the joke they may reveal themselves as too sexual.

Keep in mind the commenter received _extra points_ for this.

<comment><USER28>
      This is othering for anyone who is not a heterosexual man

I disagree. Women look at other women as well. It's very natural to feel excluded when groups of people over something you don't get excited about, whatever the subject. If, for example, people can contain their excitement about Magic cards when I'm around, I'm fine.

      There is a long tradition of sexual images, suggestions and approaches being used to shame, scare, harrass or brutalise women.

Yeah, so a picture of a professional model is something completely different. You are dragging this point into the discussion but it doesn't add anything.

      ...they may reveal themselves as too sexual.

Just bring it back to basics. Men have dicks they want to use, women want to be admired. If people could just respect eachother while taking these basic needs into account, everyone would be fine.

\--

I am happy that people here in the Netherlands are so much more tolerant when it comes down to things like sexuality, public intimicy and nudity. It seems to me that in the US people get offended very easily and want to limit another persons freedom of expression just so that they can be offended a little bit less.

<comment><USER23> Forget abstractions for a second; there are people whom this makes uncomfortable (we know because they said so), and the cost of that is much higher than the very small benefit of using one image over another as a test image. Simple cost/benefit analysis says to use something else.

<comment><USER29> Obviously in certain circumstances only - few of us here would censor Charlie Hebdo.

We only care about discomfort that we think is reasonable, or more accurately, not a lie designed to control the actions of others.

In this case, most people agree that sexualizing the workplace is a strong negative and are in agreement with you. But as a general rule, you'd have much less support.

<comment><USER23> General rules aren't good for very much other than arguing with people on hacker news.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER30> I sense a disturbance in the force. It's as if 1,000 BitCam clones were just born.</comment>


Ethan Conrad '89 – Business Administration-Strategic Managemen - <AUTHOR> http://www.csus.edu/alum/profiles/profile/conrad.html <comment><AUTHOR> Sacramento developer Ethan Conrad '89 (Business Administration-Strategic Management) makes it a point to go to Hawaii three or four times a year. But only for three-day weekends, not longer. And he spends most of his traveling time working deals with his iPhone.</comment>


Two Simple Steps Helped Me Learn Vim - <AUTHOR> http://adamdelong.com/two-simple-steps-helped-me-learn-vim/ <comment><USER3> The biggest thing that helped me to learn to use vim fluently by building up muscle memory (and making commands automatic) was playing Vim Adventures, a browser based adventure game that gradually teaches you vim commands: [http://vim-adventures.com/](http://vim-adventures.com/)

I haven't tried the full (paid) version yet, but the demo was enough to get me moving around text quickly. Now I finally understand why people use this crazy thing. :)

Also, if you really want to fly through text, try out [https://github.com/Lokaltog/vim-easymotion](https://github.com/Lokaltog/vim- easymotion)

<comment><USER4> The biggest thing that helped me was when I realized that it actually all makes sense.

Every time you use vim and catch yourself repeating a command over and over (x, dd, hjkl) take a moment and think about if there is a more efficient way to do it by combining the commands you know.

Let's say you need to delete everything from you current cursor position to the next paren in the current line, ok you know that:

t -> move till char x in the current line

T -> move till previous char x in the current line

d -> delete

so you can combine that to:

dt( -> delete everything till next ( in line

Delete 10 lines, instead of 10 times "dd" you can just do: 10dd

Go from line 0 to line 20, instead of pressing j 20 times: 20G

Delete from current position to line 20: d20G

These are all really simple examples, but once you get the hang of it you move on to more complex stuff in no time, and you probably won't even have to look it up, it will just make sense.

<comment><USER3> Yes, but there's a difference between "makes sense" and "I can do it without thinking, so it is a lot faster than pressing ctrl + right arrow a few times" which then leads to "maybe I'll use vim instead of Sublime Text after all." :)

<comment><USER4> Everything takes time to master, but understanding/being able to make sense of something makes a big difference.

You just started learning vim and are moving around with hjkl and x-ing words letter by letter, then you learn about moving with w/W and b/B and repeating/combining commands (2w, 2b, ...), and the next time you're using it you think "wait a minute, _d_ is delete, I use _dd_ all the time, why wouldn't I just _d2w_ to delete those 2 words, huh, it didn't work right, the cursor is in the middle of the first word, I have to _bd2w_ ", at least that's somewhat how I first started getting it. Once you understand something it's hard to forget and after a short time using it you don't really need think about it like you mentioned.

</comment></comment></comment></comment><comment><USER5> Time and again, these "how to coerce yourself into learning this hostile tool called vim" posts appear. I read them, and it sparks my interest.

But usually, whats missing is part 2, which goes: "... and this is why it was so totally worth it". An no, just because it works over SSH and is installed on every server is not quite sufficient.

Also, are you programming in a script language or a .NET or JVM behemoth?

<comment><USER6> For me, I was always annoyed with how tedious it was to edit things. i.e, The gap between what I think vs what I have to do in the editor to get it done. This constant annoyance was what drove me to spend time and energy into learning it. I believe that if you don't care about it, you won't really benefit out of it. Because the whole point of switching to Vim/Emacs is to minimise the gap between what you think and how you do it.

Let me give you an example. You'll be thinking, "I need to change all the arguments to a function." In other editors, you'll press the arrow keys until you get to one end, press backspace key multiple times until you get to the other end. In Vim, I'd do "ci(" which means "change everything inside (" \- which is pretty much how I think about what I need to do. A similar but more common example is changing text inside quotes. Again, that'd be 'ci"'.

Not everyone feels the annoyance about this and if you don'tt, hats totally fine. Learning something just because its cool is never worth it. Learn it if you really care about it.

Also read this post by Yehuda Katz about how he started for some ideas. [http://yehudakatz.com/2010/07/29/everyone-who-tried-to- convi...](http://yehudakatz.com/2010/07/29/everyone-who-tried-to-convince-me- to-use-vim-was-wrong/)

<comment><USER7> Your example falls flat. Any text editor with regular expression support can do that...

Do you have another example?

<comment><USER8> vim:

step 1: type ci(. step 2: type what you want to replace with. step 3: press ESC.

notepad++:

step 1: press Ctrl-H. step 2: type \\([^)]*\\). step 3: press tab. step 4: press (. step 5: type what you want to replace with. step 6: press ). step 7: move hand to mouse. step 8: move cursor to and click on "Regular expression". step 9: press enter.

Do you have another example?

<comment><USER9> Not implying that the vim way isn't faster but on any regular text editor you can:

ctrl+right arrow once or twice, right arrow to skip the (, shift+end, shift+left arrow, then type.

</comment></comment></comment></comment></comment><comment><USER10> A more elegant solution than a notecard may be using a vim cheatsheet wallpaper, like this:

[http://vimfoo.com/2012/09/vim-shortcut- wallpaper/](http://vimfoo.com/2012/09/vim-shortcut-wallpaper/)

The downside of that is that it isn't customizable, so I get why he likes the 3x5 card. But at least you can't lose this.

<comment><USER11> "Awesome! With my vim cheat sheet wallpaper I will never forget _anything_! This time next year, Rodney..."

<opens large vim window>

"Oh..."

<comment><USER12> Konsole with transparent background or set the wallpaper as background...

</comment></comment></comment><comment><USER13> Here are some more tips:

      - disable arrow keys
      - turn relative numbers on by default
      - force yourself to only move vertically using relative numbers
      - force yourself to only move horizontally using [fF,;]

<comment><USER14> Why would you want to disable arrow keys?

<comment><USER15> To to keep your fingers on the home row, in order to have better access to all the other keys in your keyboard.

Having your fingers on the arrow keys mean your hand has to travel that much further to type the other keys—making you slower.

<comment><USER16> I've always wondered if the "disable the arrow key" advice given to every VIM novice makes any sense for the user of a 11" \- 13" laptop. It was probably a good advice for a classical keyboard, but I find the arrow keys quite handy when I work on a small laptop keyboard.

<comment><USER17> I started seriously using vim around the time I started coding on the go with a very old eeePC (the first model, the absurdly small one). This was around 5-6 years ago probably. Back then I had already used vim before but only as a "normal" text editor, just go into insert mode and move around with arrows.

I was forced to use vim because that old piece of crap PC (I still love it though) wasn't powerful enough to run anything, really, and the screen was super small. I noticed using arrows key was super uncomfortable because yes, they were closer to the actual home row but they were also smaller, clunkier and harder to press. So I decided to force myself to use hjkl and disable arrow keys. It was definitely one of the best decisions of my (coding) life. Just comfortably resting your hands on the home row (either laptop keyboard or normal one) simply makes your typing more relaxed and after the couple of weeks (months?) struggling with left/right (up and down was fairly easy) you really stop noticing it.

Funnily enough, I re-enabled arrow keys a year or so ago and I haven't really felt the temptation to use them anymore.

DISCLAIMER: This turned me into a super slow and awkward typist when I am trying to work on text in an editor that does not support vim mode (like google docs for example). I have several documents around with jjjkkjhjjhjjllljh unfortunately.

</comment></comment></comment></comment></comment><comment><USER18> I've always wanted to learn vim, as so many great coders use it and swear by it, and it doesn't seem fundamentally harder than any other power-user skill. My biggest fear is that I work with novices (who are using something like Sublime) on a regular basis, and it's more friction than it's worth to switch between the two kinds of muscle memories.

Also...maybe I don't write/edit enough code to justify learning vim? I mean, both measured in lines and in number of projects. I'd like to think I've advanced to the point where I'm spending 95% of my time thinking and 5% of my time actually typing in code...being able to quickly grep and navigate through Sublime Text is definitely a vital asset, but I'm not sure how much vim will add to my overall efficiency.

<comment><USER19> If you have tools that work for you I don't see a reason to change. I use vim because it's a great editor, can run in a terminal, and is open source. I know the producer won't go out of business.

<comment><USER18> Ah yes...the ability to use in a terminal is a huge thing. That ubiquity was not important to me a year ago, but now I'm at a Unix shell so often that I most definitely feel the pain of doing quickie scripting via nano/pico. Hmm, I think you've convinced me :)

</comment></comment></comment><comment><USER20> Interesting post!

I found another way to improve my vim skills and memory was to simply write a wiki page with all the shortcuts / key strokes I learned or used. It has a big benefit for me of anchoring things in my memory.

Always having it open when in vim, referring to it often, adding things, moving things, reorganizing categories was a huge benefit for me.

Here is a screenshot of my wiki page index:

[http://imgur.com/my7lJJG](http://imgur.com/my7lJJG)

Also, having ones' dotfiles synced on github can be highly beneficial as your vim env / plugins will be consistent between desktop / laptop / office / friends' place.

[Edit] - <USER2>

<comment><USER21> Would you be willing to share the HTML for your wiki page?

Just looking at the table of contents, it seems really useful for those of us trying to learn vim compared to the normal cheat sheet that looks like a periodic table...

<comment><USER20> Sure! Here it is:

[http://pastebin.com/BbJv6sWX](http://pastebin.com/BbJv6sWX)

It's raw HTML, sorry for the format :)

Note that I have the same kind of stuff for everything linux related:

[http://imgur.com/fI12YY5](http://imgur.com/fI12YY5)

<comment><USER21> Great, thanks!

</comment></comment></comment></comment><comment><USER22> There is finally a good 'first' book about learning Vim, that just came out this week: Pro Vim

www.amazon.com/Pro-Vim-Mark-McDonnell/dp/1484202511/

He sets you up with a reasonable .vimrc to start, which I think it key to get over the bad defaults. He starts at the beginning, and takes you well beyond what vimtutor covers.

I'm working my way through it now.

I'd also suggest vimcheatsheet.com, for something to hang on the wall. I just don't get the cheatsheets that have a keyboard, since I don't really think about the location of the keys I'm typing.

</comment><comment><USER23> Considering that learning Emacs is comparably hard as learning Vim I think that second advice is not always right, especially when the pet project is developed in language you're learning and not familiar with - which is often the case. It's often hard to learn new keybindings, new syntax, new workflow, new idioms and maybe even new paradigm. Sometimes it's simply too much for evening time, when I want to do something for pleasure.

</comment><comment><USER24> I've been using vim pretty much full time since around 2000. The one important thing to accept about it: you'll never know all of it. It's just huge. (but you'll never know all of any big dev environment - such is the life of a software dev). To get really good with it, after the basics, I just kept (and still do) in mind that "there's probably a better/easier/faster way to do this". Then roughly once a quarter I'll spend an afternoon figuring out how to do something new, and consciously focus on incorporating it into my workflow. Just like I would with any other tool or technique.

Just because it's "old school stuff like vim" doesn't mean it isn't worth learning. I don't know how it's viewed so differently than say, learning how to use containers, or learning how to do event based programming, or any other concept that slows you down for a little before making you more productive.

</comment><comment><USER25> For me, mapped caps lock to escape and thereafter never looked back. I found reaching to the top left of my keyboard was breaking my concentration. Especially given I touch type.

Also visualbell is almost mandatory otherwise "beep mode" was enough to drive me crazy.

</comment><comment><USER26> I have been meaning to learn Vim for a while but everytime I was trying I ended up being overwhelmed by the number of command (and also frankly, the weird syntax of .vimrc).

I finally took a step by step approach and started with a very minimal .vimrc and worked my way up from there, solving real problems I ran into. I think the key is to choose your battle.

Also this helped me understand the core concepts of how Vim operates: [https://pragprog.com/book/dnvim/practical- vim](https://pragprog.com/book/dnvim/practical-vim)

<comment><USER27> One thing to remember about your .vimrc file is that it's just a list of commands. What's the command to expand tabs? _:set et_. And the corresponding .vimrc setting? _set et_.

One fun thing to do to a friend is _echo q >> ~/.vimrc_.

</comment></comment><comment><USER28> The most important thing I would say to anybody that wants to use vim is relax! Here are some steps I think will be helpful:

1 ) Install vim with janus and use gvim/macvim. This will allow you to use vim pretty close to your previous editor.

2) Learn hjkl movement and how to move between insert/movement/visual modes.

3) Try to use them as much as possible. It's ok if you use arrow keys or mouse from time to time.

4) Introduce no more than one additional feature a week.

5) Have fun! There is no "right way" to use vim. Use it how you see fit.

<comment><USER29> I am still on the fence about the usefulness of Janus as someone starting with Vim. Sure it gets you closer to ST, but is that really the end goal? Why not still use ST?

</comment></comment><comment><USER30> Vim's usefulness comes from the combined effects of many Vim commands, also the benefit of a unique way of doing things. Sadly this combination is hardly available after only a few hours or a day's study. Knowing only a few commands won't give you much reward, and without immediate reward, people often lose motivation to continue.

IMHO a good approach is to devote one or two months' available time, make yourself super focused, just read, memorize and practice, whenever and wherever you can. Also try not to use Vim for actual work in this stage. Practice a lot with small scripts.

After a month or two of violently focused study/practice, you will either stop for whatever reason (that's OK because the knowledge gained will be useful for the rest of your career), or you have become good at 30 or 40 Vim commands/options/tricks, the combination of them actually make you more productive than before. The reward is sweeeet, so the learning goes on, probably for many more years.

</comment><comment><USER31> I went the flashcard route, but used Wunderlist instead. I would look at it at night before bed, and in the morning right after I woke up. Using this technique I felt totally proficient after about a month, with the ability to get work done after about a week.

</comment><comment><USER32> For me, what finally worked, after many other attempts, was:

1\. Run through vimtutor thoroughly [~30 mins].

2\. While doing that, memorize the 10-15 commands in the tutorial that stick. Leave the rest (for a later time).

3\. Start using vim full-time from now on.

Worked perfect!

</comment><comment><USER33> What made the difference for me was a Vim version with a project/file drawler, like the one by alloy: [https://github.com/alloy/macvim](https://github.com/alloy/macvim)

After a while I got fluent enough with vim to switch to NERDTree.

Btw, such a shame vimR ([http://vimr.org/](http://vimr.org/)) wasn't around back when I started using vim, it looks awesome to learn vim-motions but still be able sometimes to use insert-mode and mouse if you have to get something done quickly.

</comment><comment><USER34> Perhaps this is stating the obvious, but for me, the biggest thing was to not allow myself to fall back on my normal editor. Otherwise, the path of least resistance is easiest to follow.

</comment><comment><USER35> [Two steps, eh?]([http://knowyourmeme.com/photos/572078-how-to-draw-an- owl](http://knowyourmeme.com/photos/572078-how-to-draw-an-owl))

</comment><comment><USER36> I used vim for a long time on servers, and only there to make quick edits and wasn't very good at it.

I bought a new laptop recently and just didn't install any text editors. I had a deadline a month away and a project where I was familiar with the existing technologies.

That motivated me enough.

Add a bit of vimgolf and a lot of googling and here I am using vim for everything, everywhere. I occasionally catch myself writing emails in vim and then just copying them into Mail before I fire them off.

</comment><comment><USER37> I found Anki / spaced repetition helpful when learning (still learning, always learning) Emacs. I make cloze deletion cards for the commands and their explanations.

<comment><USER38> Agreed. Especially for the more advanced or less commonly used vim/ed shortcuts, adding them to my general Anki deck was invaluable. I went through "Practical Vim" by Drew Neil and added all the useful shortcuts to the deck, and whenever they would come up for review I would also try my best to put them to use that same day. The card format would be question/answer e.g. "how do you split a window vertically?"

I also used this approach to familiarize myself with the various unix tools I don't necessarily use daily (sed, awk, etc)

</comment></comment><comment><USER39> Still relevant: [https://news.ycombinator.com/item?id=2911930](https://news.ycombinator.com/item?id=2911930)

</comment><comment><USER40> Vim is a huge editor but I don't think the subset of commands that are absolutely necessary to do any editing at all is difficult to memorise; from memory, these are the ones I started with:

hjkl i Esc or ^[ :w :q :q! :wq

<comment><USER41> Also, if you want to learn hjkl you just have to play some NetHack ;)

</comment></comment><comment><USER42> But that _was_ what Ornstein meant by cheatsheet. Anyways, why did you "want to learn Vim for a long time", did you feel limited by st?

<comment><USER43> Vim is much more efficient. For example, within Tmux, one never needs to leave the terminal; with ST, there's a frequent switching cost which compounds over the course of a day. If one were to put Tim Pope up against an ST master, it's almost certain Pope would win.

<comment><USER10> I love the iTerm2 + tmux + vim + zsh environment. It takes a little time to figure out how to juggle the configuration for them, but once you do, it's super efficient.

<comment><USER29> Are you dotfiles openly available? I have the same set of tools, but still find things are slightly off... would love to compare notes.

</comment></comment></comment></comment><comment><USER44> I'm only using Vim for server-side config editing.

And then a good full-fledged IDE for any large software development tasks.

<comment><USER45> The two aren't completely mutually exclusive. There are Vim emulators for pretty much every popular IDE out there.

<comment><USER46> That's also how I've been doing it for some time now - best of both worlds!

Sometimes it can get a little flaky though as recently there were some glitches in the IdeaVim plugin and it hurt my productivity badly (I'm so much faster in Vim mode). The issues have fortunately been fixed by now.

I had always been struggling with Vim for bigger projects because I had to waste many good hours over highly individual sets of dotfiles with plugins like Nerdtree and others (integrated debugging, jumping to function definitions etc) I could have been programming instead... IDEs like Xcode and RubyMine are tightly integrated with their domain out of the box so to me there is not much I could rationalize about in terms of using Vim (unfortunately).

I even picked up WebStorm for node/js/html development recently, naturally with the IdeaVim plugin activated at all times :)

</comment></comment></comment><comment><USER47> Step one should be to get it out of your head that vim is hard or hard to learn. Sitting with my son, years ago, I got him doing simple editing of files for me proficiently in less than five minutes. Deleting words and lines and selecting whole paragraphs and sections. Copying and pasting.

He was 15. vim is easy.

</comment><comment><USER48> 1) Having to because the environment only supported Vim and was locked down, and my job depended on it. 2) There is no 2

Because if there is no (1) then why would you?!!!</comment>


Small Trial Reverses a Year of Alzheimer's Cognitive Decline in Just Two Months - <AUTHOR> https://www.sciencealert.com/small-trial-reverses-a-year-of-alzheimer-s-in-just-two-months-in-seven-patients <comment><USER2> Worth reading the "Limitations" section of the original paper:

> The main limitation of the present study, as with most open-label studies, > is that all subjects received treatment (single-arm) without inclusion of an > untreated/placebo group. However, the improvements in multiple cognitive > measures observed with TEMT would have been highly unlikely to occur > spontaneously in AD subjects, even with repeated testing (as discussed > above). Moreover, it is difficult to explain away the CSF/plasma changes and > DTI/FA localized enhancements, which are consistent with TEMT's primary > mechanisms of action to disaggregate toxic brain oligomers and enhance > mitochondrial function.

[https://content.iospress.com/articles/journal-of- alzheimers-...](https://content.iospress.com/articles/journal-of-alzheimers- disease/jad190367)

Clearly very preliminary but intriguing work.

<comment><USER3> > Eight mild/moderate AD patients were treated with TEMT in-home by their > caregivers for 2 months utilizing a unique head device.

Call me skeptical. Mild/moderate AD patients are basically still functional human beings (and pretty hard to diagnose with good accuracy unless you go for expensive brain imaging) that is nothing like "severe" AZ patients. The fact that they knew they were treated by such an invasive device surely has an impact on how they "felt".

Of course, they did not use brain imaging (with tau PET tracers) to diagnose such patients:

> Subjects had to be diagnosed with mild or moderate AD, according to the > National Institute of Neurological and Communicative Disorders and Stroke- > Alzheimer's Disease and Related Disorders Association (NINCDS-ADRDA) > criteria.

This is the current state of imaging with tau PET tracers: [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6096533/](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6096533/)

> Tau PET tracers have enabled in vivo quantification of PHF-tau burden in > human brains. Tau PET can help in understanding the underlying cause of > dementia symptoms, and in patient selection for clinical trials of anti- > dementia therapies.

Add to the potential for unreliable patient selection the very limited sample size, and you could end up with results that look much better than they actually are.

<comment><USER4> I worked in dementia care for a number of years. When we would get a new admission we would do mini mental state exams to determine a sort of baseline as to where they were mentally such as seen here : [https://www.ncbi.nlm.nih.gov/projects/gap/cgi- bin/GetPdf.cgi...](https://www.ncbi.nlm.nih.gov/projects/gap/cgi- bin/GetPdf.cgi?id=phd001525.1)

You would ask things like can you tell me today's date. Do you know what season July is in? I will name 3 items have them repeat them and tell them they need to remember them in a little bit. Then you ask again about those objects and see if they can recall. The test goes on and has a bunch of questions which at the end you score. So I could see them doing something similar in this situation where they test cognitive ability and then retest it a month later. These exams I think would be a pretty good baseline to mark improvement.

<comment><USER5> I'm not even thirty and I'd have to stop and think about both of those questions for at least a second.

I actually don't know exactly the official boundaries of the seasons (I suppose because they never mattered to me?) I know autumn bleeds into winter into spring, and I know December is in Summer, though where it is in the "official" demarcation of Summer I don't actually know off the top of my head.

Now I just feel like I'm mentally deficient in someway

<comment><USER4> Lol if you look at the link I provide and scroll down you can take the full test. I can assure you it is pretty straight forward to someone of sound mind. It isn't really meant to trick and some times you have to adjust it a little. Like if I hear you lived along the equator you whole life I probably would ignore the fact that you don't know the seasons well. I guess these tests are not perfect but do shed some light.

<comment><USER5> Hah, I'm sure I actually am of sound mind. I know with the seasons thing I'm weird, and like I said I could probably figure it out if I actually thought about it.

Knowing today's date though is something I pretty much can never do unless I've had a reason to be aware of the date recently (some important event either happening soon or having just happened). I actually find it a little odd that other people seem to be so aware of it.

I could tell you the day of the week though, because that has more day to day relevance

</comment></comment></comment></comment></comment></comment><comment><USER6> There doesn't appear to have been a control group? Perhaps wearing funny hats is good for cognition.

<comment><USER7> I don't know about the funny hats, but getting attention and interaction from professionals twice a day I would expect to be.

The sad thing is that a study "Attention and interaction twice a day with professionals (or anyone else) who show an interest in you and your recovery reverses a year of alzeheimer's" \-- would go nowhere. Because that is enormously expensive/inconvenient, and won't make any pharmaceutical or medical device company any money.

<comment><USER8> This seems wrong because anecdotally there are people who become full-time care-takers of their Alzheimer afflicted family members and have no luck in change. If wearing a funny hate is all that's needed, sign me up.

<comment><USER9> Do they believe they are also getting a new treatment that is going to work (we all want to believe, cute snake oil sales) or are they just depressed about their decline, but in company? Placebos ain't placebos.

<comment><USER7> There are studies that seem to show placebos 'working' even when you _tell_ people they are placebos. Placebos are weird.

But yeah, there could totally be a difference between twice-a-day intervention by a researcher who is in a good mood and optimistic about your recovery (and well-rested from going home every night from their prestigious and well-paid job), and a live-in relative who is exhausted and depressed from your state and from having had to leave much of their life to become a full-time live-in caretaker. Depressed about decline with company, indeed.

<comment><USER10> No need for the scare quotes. Placebos _work_ ; they're statistically significantly above "no action taken".

One can argue about why that is, but it seems obvious that there's something exploitable there.

<comment><USER11> Genuine question, do placebos "work" for any _non-subjective_ effect? Obviously if I give you a placebo painkiller you might venture "I guess it hurts a little less", but if I give you placebo blood pressure medication does your blood pressure actually go down, even a little? Do placebo antibiotics fight infection?

If not, it sounds like a reporting issue and not any kind of exploitable effect distinct from convincing someone to cheer up a bit.

<comment><USER12> This rabbit hole of placebos goes very deep. They very much do work, and they work way too well, too often. For example, [0] might really surprise you. And just to really complicate our model of placebos, you should realize there are the opposite of placebos, called nocebos[1].

[0] [https://www.wnycstudios.org/podcasts/onlyhuman/episodes/real...](https://www.wnycstudios.org/podcasts/onlyhuman/episodes/real- doctors-fake-medicine-placebos)

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

[2] [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3099043/](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3099043/)

<comment><USER13> However, there are fields where placebos don't work. For example, in oncology.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER14> >TEMT looks like it can break up the toxic amyloid-beta and tau proteins that have been extensively linked with Alzheimer's – the waves are apparently able to destabilise the weak hydrogen bonds that hold them together.

Is that actually a thing - that you can break up proteins by putting a fairly weak electromagnetic field on them? It sounds like the sort of thing you could test in the kitchen with a coil, oscillator and some half cooked eggs.

<comment><USER15> The brain responds to various stimuli by changing its regulatory protein environment. There are different wave patterns during sleep, waking, focus, rest, shock, fear, etc. You may see other studies involving magnetism or light stimulation or sonic stimulation, and they work by inducing brain states, not by actively targeting proteins themselves.

Think of it: how could you get a specific magnetic effect to just those beta- amyloid or tau proteins and not the 10,000 other proteins in the brain? These magnetic devices induce changes in the brain state, not in individual protein states... they nudge the brain to employ its own cleaning apparatuses.

<comment><USER11> >how could you get a specific magnetic effect to just those beta-amyloid or tau proteins and not the 10,000 other proteins in the brain?

By selecting a pattern of wavelengths and phases that causes different parts of that specific protein to resonate out of phase? I don't know how much structural specificity one could achieve with such a method, but not zero I should think.

</comment></comment></comment><comment><USER16> > The MemorEM device is being developed by NeuroEM Therapeutics, and we should > point out that two of the authors behind the new study founded the company – > so there is some vested commercial interest here.

Nevertheless, the results seem promising in spite of the ridiculously small number of participants, and if other researchers are able to replicate them - that is, if the original study has enough details to build a device with identical EM function - and confirm the results, especially the lack of side- effects claimed by the team, this could be great news to all of us.

</comment><comment><USER17> So I'm pretty skeptical, they are presumably targeting amyloid plaques in the brain with electro-magnetic stimulation. I just think how? Is it a microwave tuned to destroy the proteins or some other means? The mechanism of action seems very very sketchy to me and I just don't believe you can target proteins without hurting other parts of the brain. Anyone with more information on the mechanism of action I'd love to hear it. Until then I'll assume it's just made up.

<comment><USER18> Wasn't the amyloid-plaque etiology debunked recently?

<comment><USER19> I'll let Derek Lowe (of Things I Won't Work With/In the Pipeline fame) summarize it: [https://blogs.sciencemag.org/pipeline/archives/2019/03/21/a-...](https://blogs.sciencemag.org/pipeline/archives/2019/03/21/a-brief- note-about-alzheimers)

> Something is wrong with the way we're thinking about Alzheimer's and > amyloid, folks, something is wrong. It's been wrong for a long time and > that's been clear for a long time. _Do something else._

<comment><USER20> From that summary it seems that amyloid may be an effect, not a cause, of Alzheimer's.

</comment></comment></comment></comment><comment><USER21> >at a frequency of 918 MHz

If this works, it lends credence to people that think cell and wifi frequencies are not neutral. The fundamental assumption behind neutrality is that the only effect on the human body is thermal.

<comment><USER22> This is different though.

It looks like they are using transcranial stimulation, i.e. putting electrodes on both sides of your head and running a current through it, resulting in what I assume to be a quite homogeneous current distribution throughout brain tissue.

RF waves' tissue penetration is stronger at the surface of a conductor, see Skin Effect.

EDIT: substituting the frequency in [1], we arrive at ~9mm skin depth for 918MHz.

[1] [http://www.sgoc.de/Download/skin_effect.pdf](http://www.sgoc.de/Download/skin_effect.pdf)

<comment><USER23> They seem to have also been right up against the FCC limit for radio energy exposure at 1.6 W/kg.

</comment></comment></comment><comment><USER24> Does anyone have a statistics how often awesome inventions and advances in medicine etc. in the media actually turn out true, also how long it takes on average for them to hit the market, if legit. My hunch is that it's like 2% and 10 years, respectively.

<comment><USER25> From what I read the really sad thing is how many of these failures are even not failure of the method or the underlying idea being wrong but pretty mundane things like failing to get funding for follow-up research, workgroups disbanding, PhD students finally throwing in the towel, researchers getting out of research for other reasons (family, ...).

<comment><USER26> My undergrad students did a research paper on this about 10 years ago (when I was a professor). It turns out that most promising results don't get followed through for non-scientific reasons, mostly a lack of money. We never published the work (I left academia shortly afterwards), but it certainly was depressing.

I do realise the irony of not publishing this work.

<comment><USER27> I was going to ask for a link to the paper ... In particular "mostly lack of money" may mean "the results are not convincing enough to get more funds".

In this case they already tried something similar in mice, and they made a small business around the hat, and this is a preliminary safety trial, so I expect that they have a follow up.

For me, the results are not very convincing:

* They don't have a control group (because it is a safety trial)

* They have some improvements in difficult to compare test like the amount of words that the person can remember (it's standardized, but I guess you improve automatically the second time you try it, it's difficult to be sure without a control group)

* The blood sample test have a few changes marked as "significant" but they are using a very loose criteria to classify it as significant. The error bars overlap too much with the baseline.

So I don't expect that they get good results in a big double blind trial, but negative results are difficult to publish in journals and they almost never get press coverage.

Also (in other branches of science) it's standard to have a pipeline of papers. While one paper is published, other is been written and other is in the research part, and there are some brainstorming about what to do next. Once a group has a vein of subjects to publish about, it's much easier to continue with something similar.

</comment></comment></comment></comment><comment><USER28> Tested on 8 people. Sounds wonderful but get back to us when it replicates.

</comment><comment><USER29> All: Family member recently diagnosed with Early Onset Alz Disease. Articles like this excite us and we desparately want treatments to work (including the hyperbaric chamber, stem cells, dietary changes, the works, etc), but can't help but think following these rabbit trails is only confirmation bias. Does anyone here know of any treatments that actually are worth exploring (ie have actually been studied, but not gained wide-spread adoption). I know this is a shot in the dark but appreciate any new research you could point me to.

</comment><comment><USER30> Apparently this works on healthy people as well ([https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5592297/](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5592297/)). "it was proposed that use of emerging brain stimulation techniques might also enhance physical and mental performance in sports." Anybody...want to try it?

<comment><USER31> I wouldn't be surprised if, like TES, this causes neurological tradeoffs.

[https://www.jneurosci.org/content/33/10/4482.abstract](https://www.jneurosci.org/content/33/10/4482.abstract)

<comment><USER30> "Stimulation to the the posterior parietal cortex facilitated numerical learning, whereas automaticity for the learned material was impaired." Fascinating.

</comment></comment></comment><comment><USER32> I scanned the article. The authors make no claim that they reversed a year of cognitive decline. Nor did they assess the health of the subjects at any earlier date in order to compare post-treatment performance to that pre- treatment performance to quantify the treatment effect.

At most, they idly speculate that on one metric, ONLY THE RESPONDING AD PATIENTS saw as much as 15 months of disease regression (ADAS-cog):

"Since a typical decline in ADAS-cog expected for AD subjects is around 4 points over a 12- to 15-month period [48], 2 months of TEMT appears to have reversed cognitive decline (as measured by the ADAS-cog) of responding AD subjects as a group, perhaps back to the cognitive level subjects had 12 to 15 months earlier."

Science Alert clearly hyped the story's lead.

</comment><comment><USER33> Unfortunately, many promising studies and early trials don't pan out once large-scale trials get underway.

</comment><comment><USER34> It seems like anti-aging science is making leaps and bounds lately. First the reversed biological clock study, and now this.

</comment><comment><USER35> Repeat with larger n and a control group. Till then there's no data to validate the effect.

</comment><comment><USER36> Was it a double blind study?

<comment><USER37> It was an initial pre-study where the purpose is to determine if it would even be interesting to do a proper study. They didn't even have a nonblind control group.

It is still exciting, because most studies of Alzheimers doesn't even pass this initial step from curing mice.

</comment></comment><comment><USER38> i wonder what the actual treatment feels like and what else the tech can be applied to.

</comment><comment><USER39> Is it suggesting that the current itself breaks down the amyloid plaque? Does this destroy prions?

</comment><comment><USER40> Can this enhance memory for the unimpaired?</comment>


Dgsh – Directed graph shell - <AUTHOR> http://www.dmst.aueb.gr/dds/sw/dgsh/ <comment><USER2> This looks pretty interesting, although I'll have to dig more into the examples to see why they chose this set of primitives (multipipes, multipipe blocks, and stored values).

Here is a 2009 paper, "Composing and executing parallel data-flow graphs with shell pipes", which is also a bash extension. (I'm impressed with anyone who successfully enhances bash's source code.)

Although it has a completely different model and I think more suitable for "big data".

[https://scholar.google.com/scholar?cluster=98697598478714306...](https://scholar.google.com/scholar?cluster=9869759847871430654&hl=en&as_sdt=0,5&sciodt=0,5)

[http://dl.acm.org/citation.cfm?id=1645175](http://dl.acm.org/citation.cfm?id=1645175)

 _In this paper we extend the concept of shell pipes to incorporate forks, joins, cycles, and key-value aggregation._

I have a printout of this paper, but unfortunately it doesn't appear to be online :-(

</comment><comment><USER3> I've always thought about integrating this functionality into elvish [https://github.com/elves/elvish](https://github.com/elves/elvish) but cannot cone up with a good syntax. dgsh has a good one, but unfortunately using & breaks its traditional semantics. Does anyone has some idea of a tradition- compatible grammar?

Also, to nitpick, this is more accurately called a directed acyclic graph shell, or simply a DAG shell. The language doesn't seem to allow cycles. dagsh reads nicer than dgsh too.

</comment><comment><USER4> I've worked with and looked at a lot of data processing helpers. Tools, that try to help you build data pipelines, for the sake of performance, reproducibility or simply code uniformity.

What I found so far: Most tools, that invent a new language or try to cram complex processes into lesser suited syntactical environments are not loved too much.

A few people like XSLT, most seem to dislike it, although it has a nice functional core hidden under a syntax that seems to come from a time, where the answer to everything was XML. There are big data orchestration frameworks, that use an XML as configuration language, which can be ok, if you have clear processing steps.

Every time a tool invents a DSL for data processing, I grab my list of ugly real world use cases and most of the tools fail soon, if not immediately. That's a pity.

Programming languages can be effective as they are, and with the exceptions that unclean data brings, you want to have a programming language at your disposal anyway.

I'll give dgsh a try. The tool reuse approach and the UNIX spirit seems nice. But my initial impression of the "C code metrics" example from the site is mixed: It reminds me of awk, about which one of the authors said, that it's a beautiful language, but if your programs getting longer than hundred lines, you might want to switch to something else.

Two libraries which have a great grip at the plumbing aspect of data processing systems are airflow and luigi. They are python libraries and with it you have a concise syntax and basically all python libraries plus non- python tools with a command line interface at you fingertips.

I am curious, what kind of process orchestration tools people use and can recommend?

<comment><USER5> Thanks for sharing your experience. I work with Pachyderm, which is an open source data pipelining and data versioning framework. Some things like might be relevant to this conversation are the fact that Pachyderm is language agnostic and that it keeps analyses in sync with data (because it triggers off of commits to data versioning). This makes it distinct from Airflow or Luigi, for example.

<comment><USER6> Pachyderm, with its "git for big data" approach is one of, if not THE, coolest thing I learned about in 2016.

Only I hope to get time to test it out in some more depth sooner rather than later (it is one of my top goals for 2017).

Also, the pipeline feature in Pachyderm does not suffer from the "dependencies between tasks rather than data" problem that I mentioned in another post here, but properly identifies separate inputs and outputs declaratively.

Pachyderm specifies workflows in a kind of DSL AFAIK, and I'm very much interested to see if it could natively fit the bill for our complex workflows. But if not, I think we can always use it in a a light-weight way to fire off scipipe workflows (instead of the applications directly), and so let scipipe take care of the complex data wiring.

We would still like to benefit from the seemingly groundbreaking "git for big data" paradigm, and auto-executed workflow on updated data, which should enable something as impactful as on-line data analyses (auto-updated upon new data) in a manageable way.

</comment></comment></comment><comment><USER7> This is perhaps a bit off-topic, but what I really wish more data processing/ETL tools supported is the concept of transactional units. Too many of them seem to start with the worldview that "we need to shove in as many of the separate bits as we possibly can."

What's often needed for robust systems, instead, is solid support for error handling such that "if this bit doesn't make it in, then neither does that bit." Data is always messy and dirty, and too many ETL systems don't seem architected to cope with that reality.

Of course, maybe I just haven't found the right tools. Anyone know of tools that handle this particularly well?

</comment><comment><USER8> I write complex shell commands every day, but when it gets longer than 2-3 rows I switch to a text editor and write it in Perl instead. I see no need to use bash up to that complexity, doesn't look good in terminal.

Poorman version of multiple pipes is to write intermediate results into files, then "cat" the files as many times as needed for the following processes. I use short file names "o1", "o2" standing for output-1, output-2 and see them as temp variables.

<comment><USER9> This is what it comes down to to me too. Using the shell to do programming seems to me like putting your job on hard mode.

When I had to do a lot of data processing at my last job, I started building up tools in Ruby. If I had time, I'd hack the workflow so that the next time I needed it, I could just run the tool from the command line.

Eventually I had a pluggable architecture that I could use to pull data from any number of sources and mix it with any other data. Do that with a shell? Why?

<comment><USER10> The advantage of using the shell are the hundreds of powerful command-line tools you can use. Increasingly, there are Perl/Python/Ruby packages that offer similar functionality, but these require some ceremony to use and therefore prohibit rapid prototyping and experimentation.

</comment></comment></comment><comment><USER11> Funny, just two/three weeks ago I was saying that I really needed a dag of pipes in a shell script that I was writing...

</comment><comment><USER12> Interesting, this seems to be from a couple of people at Information Systems Technology Laboratory (ISTLab) at the Athens University of Economics and Business. I wonder what the motivation is. Security, or does it utilize multiple processor cores better than traditional pipes?

<comment><USER13> The impression I got is that it is still using traditional unix tools and pipes under the hood so I would expect the same efficiency as now. I think the big difference here is the syntax. Traditional shells are great if you have a linear dataflow where each program has one standard input and one standard output. However, if you want to have programs receiving multiple inputs from pipes or writing to multiple pipes then the `|` syntax is not enough.

</comment></comment><comment><USER14> This looks like potentially a great tool. It might be helpful if the author showed the code examples alongside the equivalent code in bash, so it's easy to see both what the example code is doing and how much effort is saved by doing it in dgsh.

<comment><USER15> It doesn't look all that different to me. Seems like it's just saving you mess around with assigning function inputs and outputs to shell variables. Otherwise it just looks like piping stuff around between functions.

<comment><USER10> You can write many of the examples we provide in bash using tee and tee >(process) syntax when you pipe data into multipipe blocks. To collect the data from multipipe blocks you need to construct Unix domain named pipes and use them in exactly the right order. It quickly gets complicated and ugly. This is our fourth stab at the problem. The earlier ones generated bash scripts, which looked awful and were unreliable.

</comment></comment></comment><comment><USER16> I am not familiar with the project. What are the advantages of Dgsh in comparision to pipexec: [https://github.com/flonatel/pipexec](https://github.com/flonatel/pipexec)

<comment><USER10> Pipexec offers a versatile pipeline construction syntax, where you specify the topology of arbitrary graphs through the numbering of pipe descriptors. Dgsh offers a declarative directed graph construction syntax and automatically connects the parts for you. Also dgsh comes with familiar tools (tee, cat, paste, grep, sort) written to support the creation of such graphs.

</comment></comment><comment><USER17> Author's page: [http://www.dmst.aueb.gr/dds/index.en.html](http://www.dmst.aueb.gr/dds/index.en.html)

</comment><comment><USER18> I wonder if there is any perfomance benchmark of this graph shell? Especially on some complex pipelines running huge datasets?

<comment><USER10> We have measured many of the examples against the use of temporary files and the web report one against (single-threaded) implementations in Perl and Java. In almost all cases dgsh takes less wall clock time, but often consumes more CPU resources.

</comment></comment><comment><USER15> Fun fact: "dgsh" is also the name of a CLI tool for DMs to manage RPG campaigns: [http://dgsh.sourceforge.net/](http://dgsh.sourceforge.net/)</comment>


Meanderful: FPGAs and AI Processors: DNN and CNN for All - <AUTHOR> https://meanderful.blogspot.com/2017/06/fpgas-and-ai-processors-dnn-and-cnn-for.html?m=1 <comment><USER2> I find it interesting to see the external perspective of someone looking at FPGAs for this application since I'm an FPGA guy myself and know quite a lot about it.

The price is a fair complaint but it's a bit misleading - actually boards aren't $50k for people who are serious about building an application with them.

The bigger concern for me is that all the benchmarks I've seen show janky FPGA solutions that cut a lot of corners barely compete with fairly mature GPU solutions. So you're spending 20x the development time for 90% of the performance with 95% of the algorithm. The big promise from Intel was that the Stratix 10 chips would be 5x as big with 2x the Clock speed and your CNN algorithm would just magically kick arse. That doesn't seem to have happened - Stratix 10s are almost impossible to get hold off, the promises about performance are getting watered down and of course, by the time you can actually get an application running on it GPU technology has moved on and the performance still isn't competitive. At this point I don't see FPGA being a player in the AI market except for extremely embedded solutions.

<comment><USER3> Better than 50% discounts for reasonable FPGA volume, true. Still expensive when compared to a V100.

Microsoft is seeing ~90Tops for their MS-FP8 datatypes: [https://www.top500.org/news/microsoft-takes-fpga-powered- dee...](https://www.top500.org/news/microsoft-takes-fpga-powered-deep- learning-to-the-next-level/)

It is certainly hard to compete against an NVidia V100 with its tensor ops.

It can get interesting though. There are quite a few graphs that tensorflow cannot place on a GPU, especially with RNNs. An FPGA does give you more flexibility in architecture which was, and would remain one of the motivations for MS to choose them as a platform.

</comment></comment><comment><USER4> Been very curious to see a comparison between standard computing hardware and neural specific hardware. Nice article!</comment>