Beringei: A high-performance time series storage engine - <AUTHOR> https://code.facebook.com/posts/952820474848503/beringei-a-high-performance-time-series-storage-engine/?utm_source=codedot_rss_feed&utm_medium=rss&utm_campaign=RSS+Feed <comment><USER2> Ok so it's an inmemory product, sharded no less.

They speak about compressing the data before "storing" it.

I don't have a lot of experience with inmemory anything, but are we talking about retaining the compressed format in server memory here? Ie, RAM is your datastore.

Then, at some point, to serve requests/queries for the data don't you have to get it "out of" RAM and uncompress it, also an inmemory operation?

Did I get this right?

<comment><USER3> The paper on the algorithm is here: [http://www.vldb.org/pvldb/vol8/p1816-teller.pdf](http://www.vldb.org/pvldb/vol8/p1816-teller.pdf)

Somebody implemented the algorithm in go based on the paper here: [https://github.com/dgryski/go-tsz](https://github.com/dgryski/go-tsz)

A short answer that may work for your question: the bits that are set in RAM are xor values relative to previous values. To provide an answer as to what the value is, a series of read|xor operations are performed.

<comment><USER4> They refer to it as "delta of delta", which implies the encoding handles things like acceleration and momentum. I'm guessing the healthcare data has much more of this sort of behavior than your typical server event time series.

<comment><USER5> Not quite. Delta of deltas means that periodic timestamps turn into a long run of zeros (since the difference between each point is constant), which is very easy to compress. In the Gorilla paper, 96% of timestamps compress down to zero, which is encoded by a single zero bit.

For series without periodic sampling, delta-of-deltas performs similarly to normal deltas.

</comment></comment></comment></comment><comment><USER6> general note on when companies open source non-trivial projects but squash all pre-release commits, not being able to dig though implementation history and change logs make it difficult to jump in despite the code being publicly visible.

Context: initial commit with 277,989 additions [0].

[0] - [https://github.com/facebookincubator/beringei/commit/17a6c2d...](https://github.com/facebookincubator/beringei/commit/17a6c2d44783ddbef68cdc44619ef824d63215e8)

</comment><comment><USER7> What would HN suggest to store about 1GB of data per day, mostly for archiving and offline analysis, with less than 10 columns including timestamp? We're currently writing everything to our postgres DB and flushing the table to S3 every few days but it's killing the app performance under high loads. I'm looking for something that is easy to set up and keep running with low to no maintenance.

<comment><USER8> CSV

Same way most web servers log traffic.

<comment><USER9> Or perhaps SQLite, since it should perform similar to writing to a CSV file and you get querying out of the box afterwards.

<comment><USER10> SQLite is a major powerhouse for stuff like this, and if your analysis is on a single computer with a single disk, analysis is almost always faster than any sort of highly parallel big data setup. I've loaded, analyzed, and reported on 2TB of data using SQLite in less time than it took for an 8 machine spark cluster took to load the data.

</comment></comment></comment></comment><comment><USER11> I am very interested in a comparison by prometheus developers. Brian Brazil recently wrote about optimization to prometheus' time series storage.

</comment><comment><USER12> Prometheus' implementation of the same:

* [https://prometheus.io/docs/operating/storage/#chunk-encoding](https://prometheus.io/docs/operating/storage/#chunk-encoding)

* [https://github.com/prometheus/prometheus/blob/127332c56f85b7...](https://github.com/prometheus/prometheus/blob/127332c56f85b71af24cb87bea1fe7a72e60899a/storage/local/chunk/varbit.go#L37)

</comment><comment><USER13> How would this stack up against InfluxDB?

</comment><comment><USER14> We're getting good results from [http://traildb.io/](http://traildb.io/) and we don't have to grant Facebook a worldwide, royalty-free license to our patent pool in order to use it.

<comment><USER15> [https://github.com/facebookincubator/beringei/blob/master/LI...](https://github.com/facebookincubator/beringei/blob/master/LICENSE) doesn't even mention patents.

[https://github.com/facebookincubator/beringei#license](https://github.com/facebookincubator/beringei#license) says "We also provide an additional patent grant."

None of this sounds to me like _you_ have to grant Facebook any patents to use Beringei.

<comment><USER16> [https://github.com/facebookincubator/beringei/blob/master/PA...](https://github.com/facebookincubator/beringei/blob/master/PATENTS#L14-L26)</comment></comment></comment>


What If You Could Get Your Own Immigrant? - <AUTHOR> https://www.politico.com/magazine/story/2018/02/13/immigration-visas-economics-216968 <comment><USER2> This (and the current Nanny Visa they mention) seems very similar to the indentured servitude used to bring over people during the early days of this country. Is there something I'm missing that makes this less odious?

<comment><AUTHOR> That it's a better option than what they face right now?

Would you rather have these people die from Cholera in their third-world countries? Perhaps force them to work at a brothel? Or die from gang violence?

And it's impossible for a family to raise a child these days without one parent being forced to quit work or pay a lot for daycare. And the lower class can't afford the $5-$10/hour for daycare anyways. So you're basically telling poor people to quit working in order to raise a child.</comment></comment>


Ask HN: How do you manage multiple learning projects? - <AUTHOR> Hey all and happy Sunday,
I have a lot of learning projects in the pipeline, and selected three for this season (3-6 months.) I don't aim to master them; I just want to have a good (non-superficial) understanding of the overall picture, and to be moderately proficient in applying the principles/tools.
For background, the projects are art (moderately skilled), data science (only interested in foundation/background level) and reading (practise covering as much as possible, without sacrificing thoughtfulness.) There is also a new language but I'm keeping that very light (radio and penpal exchanges only.)
Even though they are meant to be recreational, and I have learning strategies for each of them, I sometimes struggle to juggle between them. I also have other commitments (I would say the ratio of commitment:recreational is 60:40). It's a bit frustrating and I feel that it's more of a personal flaw, as I know that many others have even less recreational time, yet successfully diligent with their learning projects. (I don't beat myself too much though, haha)
So, I am interested to hear about your learning projects, how you manage them without losing your sanity, and how you maximise short time periods. Plus your own tips for learning. Thanks :) <comment><USER2> Sorry for the non-answer but my advice is to not have many projects going on at once. 3-6 months feels like a long time but they'll go by quickly.

Maybe it's just me but every time I try do more than a few things at once, even if they are fun (programming, book or many books, language learning, deep dive into a director's films, and even stuff like long story-heavy video games) I end up making very slow progress, not retaining much, and feel "stressed" about time management.

My solution was to do less and allot more time to relaxing. Nothing bad's going to happen if I push some of my lower priority projects to a later date when I am done with others. I do work full time and have a fairly active social life so I may have less time than you. What I learned I personally a) do not have time/energy for more than two projects at the same time b) cannot last more than a few weeks being "productive" 24/7 - I need non-sleep relax time.

\--

For a more concrete answer - make a schedule and realistic goals. Looks like reading and data science and fit into a schedule of at least an hour a day (never more than every other day) in which you can make progress. Try to make a schedule and stick to it - once you have a routine it's easy. Not sure what the art one is, but if it's more about creativity than raw practice you can wait till you feel inspired to make something and clear out some time. Do give yourself time to relax though.

<comment><AUTHOR> This is the dilemma that I have, I have a burning desire to do everything. Actually I had eight ( _eight!_ ) projects, and naturally found it overwhelming. Finally got the list down to (about) three, but it's still mentally-taxing to switch between them and keep track of progress. Despite all that, I love learning them... this up-and-down feeling is really tiresome

<comment><USER3> Two projects is a lot. The only reason I attempt two is that I like some variety. I'm not sure why you think people are doing more with less time...they're probably not.

</comment></comment></comment><comment><USER4> What's been helpful for me has been organizing projects into a hierarchy (you can use something like Trello, or you could just wing it like I do)

      - Unproven ideas aka "disposable things I want to just play around with"
      - Things to explore further aka "ooh maybe I could flesh this out into something cool!"
      - Things to polish aka "okay let's do the grunt work to ship this"

Otherwise, I've just become okay with having a billion unfinished things. I spent the last few months learning OCaml, and put code[1][2][3][4] on GitHub without feeling like I need to "finish" or "ship" anything.

The code might prove useful to a passerby, or it may not. To me it doesn't matter too much - no real downside to just "putting it out there"

My motto is basically: Feel free to rm -rf, git push, or even go as far as to make a fancy landing page. Just have fun and don't forget to share whatever you learn.

[1]: [https://github.com/jdan/ocaml-micro](https://github.com/jdan/ocaml- micro)

[2]: [https://github.com/jdan/ocaml-data- structures](https://github.com/jdan/ocaml-data-structures)

[3]: [https://github.com/jdan/ocaml-calculator- game](https://github.com/jdan/ocaml-calculator-game)

[4]: [https://github.com/jdan/ocaml-web- framework](https://github.com/jdan/ocaml-web-framework)

<comment><AUTHOR> I like the way you prioritise! You say that you have a billion unfinished things, do you have a way to keep track of them, so that in the future you can pick one up right away?

<comment><USER4> I used to use Trello but it didn't prove to be too helpful - it led to me thinking I was being productive just by shuffling cards around, when in reality I was wasting my time.

So I pretty much just wing it, and when I get a wave of motivation for something (compilers, frontend tech, blah blah blah) I just ride it. When I don't, I try not to fret too much.

</comment></comment></comment><comment><USER5> A lot of people are suggesting that you limit the number of projects, but an alternative approach is to limit the amount of time each day that you spend on each subject, yet maintain a consistent schedule.

I always remind myself "15 minutes a day is better than an hour every three days". But in order to prevent getting over-stressed about time and how quickly you're learning, you have to put your ego aside and simply stick to a schedule of learning a little bit of each subject every day.

That means limiting yourself when you want to go on a binge just as much as it means making time to get your 15 minutes in. Three days of binging on a subject can start to build pressure that you should maintain that level, and that's not sustainable.

Small amounts of new knowledge, every day, until you've hit your goal.

No matter how old you are, you still have plenty of time to take things slow.

<comment><USER6> I agree about the schedule. I currently have 2 hours a day for learning. I spend an hour at a cafe reading (currently Sapiens - Yuval Noah Harari) every morning before work. And an hour at home after work before anyone else gets home to do software stuff (currently learrning/implementing Stripe payments). Then on top of that if I have free time in the weekend I spend it on whatever project excites me the most(learning to sketch atm).

I think that building up strong habits around what you are working on makes it easy to maintain momentus.

I also agreee that even small increments of time can incredibly productive, like listening to an audiobook during a 15 minute commute.

<comment><USER7> How do you find Sapiens? I started reading it (about pg. 50 now) but I find it too full conclusions/statements that are not really founded on data. Basically, it tends sets up two or more premises and then somehow draws a conclusion that isn't in anyway related to the original premises (i.e: almost pseudoscience).

<comment><USER6> I am nearly finished now and really enjoyed reading it. The book leaves me with more questions than it answers, I appreciate this in a book though.

It provides just enough information to interest you in a subject, then offers a few common theories with a reasoned most likely case (this is especially prevelant in the beginning of the book due to the lack of information available about humanity tens of thousands of years ago). Most of the assumptions made though are not the author's and there are references in the Notes section at the back if you do want to pursue these further.

</comment></comment></comment></comment><comment><USER8> I used to go through one or two Coursera courses at a time. Just whatever seemed useful and/or interesting at the time. I had my employer pay for their certificate program on one course (the first part of the Nand to Tetris course, which might be my favorite course on there).

Now I have them paying for an online MS and I have no time for any other projects, as much as I'd like to.

Something I found when I did have time for side projects (and which I now employ for some schoolwork), is that it was immensely helpful to have milestones. I do this when I'm programming an intimidating program, too.

I start by taking a tiny piece that can technically run on its own. Then I write and debug until that piece works and I can add on another piece. By seeing the thing actually working as I go, it keeps me motivated and focused on the next small step rather than getting overwhelmed by the overall project.

Debugging as I go also keeps the defects at any given time at a manageable number, which probably has applications in other places as well (such as regularly practicing a language to weed out bad pronunciation habits early or what-have-you).

</comment><comment><USER9> I am a bit biased here, but I actually made a project to solve this issue for myself.

I always found myself spending a lot of time trying to find the 'best' resources to learn a thing or sometimes even researching what learning a thing even means. So I decided to build a tool that helps visualise these learning tracks for any topic you want to learn about.

Perhaps you've seen this popular repository for learning Web and Mobile Development ([https://github.com/kamranahmedse/developer- roadmap](https://github.com/kamranahmedse/developer-roadmap)). This is very similar, but interactive and for every topic.

It's also Open Source and we often stream the development of it.

[Website] : [https://learn-anything.xyz/](https://learn-anything.xyz/)

[Code] : [https://github.com/learn-anything/learn- anything](https://github.com/learn-anything/learn-anything)

[Stream] : [https://go.twitch.tv/nglgzz](https://go.twitch.tv/nglgzz)

<comment><AUTHOR> Are you the owner of learn-anything? I like how the pathways are mapped out like a tree. It's great for guidance, but isn't taking the time to figure out your own learning pathway also beneficial? Because you have your own needs and way of learning after all

<comment><USER9> Technically since Learn Anything is fully Open Source website published under MIT licence, there is no owner. But I did start the project, yeah. :)

And I understand your concern with a learning path being a personal thing and something that is quite helpful to make yourself. However this website will very soon be completely open to the community and thus anyone will have a say in what they they think the best path for learning some topic is.

<comment><AUTHOR> This is really awesome, thank you for starting the project. When I research for a learning plan, I often look at other people's learning plans for guidance. Then as I go through the plan, I adjust accordingly. I like that the learning plans on the website can be community-edited, but because there can be no best learning plan, it would be even more awesome if you can have _multiple_ high quality (based on votes) learning plans for a single subject. Hmm

</comment></comment></comment></comment><comment><USER10> Ever look into the pomodoro technique?[1]

I use it with the pomotodo app: [https://pomotodo.com/](https://pomotodo.com/)

Give it an earnest try for ~3days, I'll bet you're addicted by the end of it.

[1] [https://www.youtube.com/watch?v=LPC9zPnmXRk](https://www.youtube.com/watch?v=LPC9zPnmXRk)

<comment><AUTHOR> What a coincidence, I'm waiting for my tomato timer to arrive! I am definitely trying this, thanks

<comment><USER11> Are you waiting on a hardware timer to use for Pomodoro? because there a lot of software software Pomodoro timers available (e.g. "[https://tomato- timer.com/"](https://tomato-timer.com/")). Since most of my study is on the computer (Coursera, edX, etc.) a Pomodoro app fits perfectly into my study workflow.

<comment><AUTHOR> I actually prefer hardware because I find phone timers distracting (i.e. I start procrastinating on the Internet!)

<comment><USER12> I do agree with you. Actually, excuse my shameless plug, I am selling "hardware" pomodoros [https://PomodoroHourglass.com](https://PomodoroHourglass.com)

</comment></comment></comment></comment></comment><comment><USER13> I use Beeminder to keep myself accountable. Learning a language and taking 2 courses currently.

<comment><USER14> Woo-hoo! Thanks for the Beeminder plug!

<comment><USER15> I was about to sign up with my google account, but the app requested permission to allow beeminder to .. view my email messages and settings. Is that a mistake?

<comment><USER14> It's because of our gmailzero.com integration where you can mind your Gmail inbox. But, yes, it's super dumb that we don't separate out those permissions and are freaking people out by asking for them just to sign up...

Thanks so much for pointing this out!

</comment></comment></comment></comment><comment><USER16> I have struggled, and continue to struggle, with a lack of focus in my learning projects. My focus tends to cycle between some 6-7 subjects. In an effort to tame this, I have come to believe in the power of (a) concrete milestones and accomplishments, and (b) external accountability.

For example, I have wanted to learn Sanskrit for some time. Rather than pick up a book and work through it yet again, I enrolled in two correspondence courses that gives out certifications. I also have classes roughly once a week with an online tutor.

Similarly for Mathematics and Physics, I am preparing for and plan to write a nation-wide exam meant for MSc/BSc students in India as a minimum validation of my knowledge. I am also doing a correspondence course in BSc Physics/Maths from an accredited (in India) distance learning institution. Their assignments and exams, while easy, provide a basic timeline for my progress.

For Machine Learning and AI, I have completed several courses on Coursera and edX, but I found that even though I earned high grades in many of these courses, my grasp of topics - especially the theoretical side - wasn't satisfactory. I am re-doing some of those courses again, and intend to work through a standard text or two for the ideas to truly take root, but we'll see.

I am also interested in philosophy - both Indian and Western - and have read some material on it over the years, but I don't know what milestones are suited for it. I have considered writing up reviews of fields (such as ethics or epistemology) as a summary of my own understanding, but right now I don't have the bandwidth for this.

This was in addition to several other learning projects, such as Karnatic music and functional programming. For Karnatic music, I had a weekly session with a music tutor, and for functional programming, I forced myself for a while to commit programming exercises to github. I later quit both these projects to make room for the other learning projects.

<comment><AUTHOR> Ooh this I can relate. My projects are nowhere as heavy as yours, and even when I attempt to set milestones, I find that I rebel against them in very creative ways. I've learnt to be 'flexible' instead. It's a matter of slow- training yourself I guess. Good luck with your projects

</comment></comment><comment><USER17> I can advise managing multiple projects because I haven't figured that out myself, but I have a small tip: You can probably quite easily squeeze in an hour or more of audiobook listening a day. I know I manage, and I have ten minute bike commute. But I also wash dishes, clean up the house and do lots of small chores. It has reached a point where I reach for my headphones even if I'm just going around the corner for milk.

And when I say audiobook, that includes MOOCs and other recorded lectures, you can access a wealth of free, university level material online if you want to move past popular science audiobooks or Teaching Company lessons (not that they aren't great).

<comment><USER18> This is interesting and very applicable. But will this work with some online lessons that includes visuals like presentations / minor viz?

<comment><USER19> Not op but I do these same things and the answer is a pretty solid "no". I have tried so much haha.

For thay reason, this approach is limited but highly valuable. I'll explain how I do it.

Most programming material acn't be learned this way, but programming podcasts are good for learning about _what to learn_ and for learning methodoloy! I have been listening to the 'Test & Code' podcast lately and, especially for a novice Python programmer, this podcast has a lot of this type of knowledge.

I try to avoid podcasts of news and gossip because I do enough of that and more efficiently on HN.

Lectures interspersed with visuals are basically not doable. You'll find yourself interrupted and distracted from the central activity (commuting, chores) and you lose flow.

Probably the best use I have found for this is for spending time in "hobby topics". This lets me sort of outsource the effort I spend with my hobby topics to when i am doing other things, preventing the hobby topics from intruding on productivity.

I love media theory, history and philosophy and these things can be discussed with no visuals, and there are many great lectures and academic courses available. This stuff often even informs the creative areas of my job.

My favorite hobby topic is art history but having to stop what I'm doing to reference a visual work is too distracting :(.

</comment></comment></comment><comment><USER20> I don't.

I think flow and planning are on opposite ends of an uncertainty principle. The more in-flow you are the less you need a plan, and the more you plan the harder it is to get into flow.

Sometimes I fall deeply into a subject I had no real interest in previously. And I have many projects I would like to work on but never seem to have the time for. So be it. A good life is lived beyond measure.

<comment><USER21> Flow works when it is possible to keep everything in one's head and when prioritization is clear.

As I've gotten older and taken on more and more-complex work, planning has taken increasing importance.

<comment><USER20> I find planning to be an essential communication tool and most of my work involves planning. I think I miss-stated my point. My point is that I don't know where to spend my time, when learning new things, until after I learn them. That I can't predict where my struggle will be.

</comment></comment></comment><comment><USER22> One thing that helps me is when the learning projects are somehow related. From the book "Make it stick" , I learned to make connections. For example to ask yourself, how does this relates to stuff I already know. So, using this principle, if I'm able to make a connection between something in project A and another in project B, it helps me remember both.

</comment><comment><USER23> I have been thinking about this as a busy parent.

I just have one tech side project. It'll take as long as it takes. I now try to use similar tech as I do at work for expediency and to help with my job.

My non tech project is losing weight. I've made the process as lean as possible. No cardio just weights and eating less for now.

So I guess my answer is focus on few things and ruthlessly optimise.

</comment><comment><USER24> I make notes for each project in a google doc, i.e. collecting material as if I was going to do a write-up or talk on the project. That makes it easier to set things aside for a while, and if you discover something by accident while you're not working on the project, you can make notes in the document to return to.

</comment><comment><USER25> Great question. I guess effective time management is the key here. I would recommend blocking times during the day to focus solely on your learnings. Avoid distractions and then push through until the time is over. It´s also very important to plan in buffer times of 10-20 Minutes to get into the zone again after taking a break. Yeah, it´s also really important to take breaks! Don´t underestimate the power of breaks. Last but not least I´d recommend using some kind of planning tool. Either a simple To-Do List or a daily calendar or both. I can recommend [https://zenkit.com](https://zenkit.com). Zenkit is an all-in-one project management solution that lets you view your information in the right view at the right time. This way, you´ll be more efficient and can get more done.

</comment><comment><USER26> Time taught me to focus on one thing. It removes the feeling of not making progress across multiple projects.

<comment><AUTHOR> Can you expand a little bit more on this please? Did you gradually trained yourself to focus more?

<comment><USER26> I developed a rather simple system called 0 to life. It focuses on achieving goals in the short, medium, and long term. The main idea is that you focus on breaking down goals (like code) in periods of six months. That way, you have enough time to try something and not lose a lot of time. It also allows for you to build on top of past success.

For example, one of my goals was to write a technical book. I did not achieve it because I realized that the goal didn't fit me at that point in life. It wasn't a total loss because I learned a lot from the experience.

Another goal was to release more open source code in a six month period. This is something I did by releasing three different projects. That goal also taught me a lot of valuable info that I can apply in the future.

The beauty of this approach is that you dont have to focus too hard. Having 6 months means you can still enjoy life. It also allows you to pick your goals well (organize them).

Say you want to learn a natural language, learn ML, and go to Japan. Rather than try and do everything as soon as possible, you'd proritize which you want to do first knowing that the others will also get done. You can now organize the goals using whatever metric you want. Which is liberating because there no longer is any pressure related to missing out. If a given goal doesnt workout, all you have to do is wait until the next 6 month period arrives to move forward. This also provides the benefit of using the time between bigger goals to try new things and not feel like you are wasting time.

</comment></comment></comment><comment><USER27> I used to enrol this course on Coursera. It called Learning How to Learn. It would be helpful for you. [http://coursera.org/learn/learning-how-to- learn](http://coursera.org/learn/learning-how-to-learn)

<comment><USER28> Do you by chance have the summary of the course? Like your top 10 takeaways.

<comment><USER29> I'll contribute one takeaway. When you read information and in the moment understand what its saying, you feel like you've learned it, but you really haven't.

To learn it you have to try writing it yourself, then checking it against the source to make sure you didn't miss anything or make errors. Once you can discuss an idea fully and correctly, then you've learned it.

<comment><USER30> Why I still use paper and pen when taking notes.

</comment></comment></comment></comment><comment><USER31> I would advise the opposite than most: Focus on one thing at a time, if that requires a lot of effort. Multitasking is not as good as it has been marketed to us.

For instance, I was studying for an IT certification, while at the same time reading books and working on a side project.. guess how much time went by without me accomplishing it (although I advanced some on the other 2), but my main focus was the cert. Anyways I ditched all the other disctracting things, focused and put all my effor only on the cert and I got it in two weeks.

Also, focus on stuff that you will use and/or try to apply what you learn, and make PRIORITIES of what you want at the moment, so you can choose the correct thing to focus right now.

</comment><comment><USER32> I don't. In the excellent words of Ron Swanson (Parks and Rec):

"Never half ass two things. Whole ass one thing."

</comment><comment><USER33> You could do the obvious thing and focus on a task or two at a time. I'm not sure how much more obvious it could be here.

</comment><comment><USER34> Since these projects are merely for recreation, why are you trying to juggle them? Don't. Just focus on one at a time. Reach the point you want to reach and then move onto the next. You will make more progress this way too. Context switching has a lot of cognitive costs. Focus!

</comment><comment><AUTHOR> Thanks everyone for the high quality responses, really made my day. I'm going to attempt to systemise all the suggestions made, and try out those that suit me best.

And good luck with your learning projects! So humbling to see that many of you make learning literally lifelong :)

</comment><comment><USER35> I built an app for this exact reason. I like working on a couple things at a time including usually at least one online course.

[https://getbalanceapp.com](https://getbalanceapp.com)

</comment><comment><USER36> Here are my thoughts. I've managed to independently learn a decent amount of stuff and do some decent side projects, but I don't claim to have any great insight. In fact maybe everything I have to say is obvious, so take this for what it's worth.

Consider doing less. If you are working a full time job, then depending on exactly how serious you are, 3 learning projects is likely overkill. (But I tend to do the same thing myself.)

Pick the resources you'll use in advance. I've generally had a negative opinion about video lectures, preferring books, but I've somewhat changed my thoughts lately. In particular it's nice to be able to follow a course as it was taught at a serious university, with a syllabus and schedule all laid out for you.

Set a weekly schedule in advance. Something like, M/F I'll watch a data science lecture and Tu/Th I'll do art. Whatever. Include a planned endpoint: by this date I will be finished with the 9 chapters of this book I plan to cover.

Each evening, write a brief journal entry about what you accomplished that day. Also write out a schedule for the next day. I like to put at the top of my daily schedule a list of the major tasks I want to accomplish that day, and then also a couple "extras", which are things I can work on if I turn out to have extra time. The extras can be large or small, but it's nice if you have a small one because you can cram it in wherever you have free time. Even something like "Problem 12.3 from this textbook, which I couldn't figure out last week". If you randomly turn out to have 10 minutes free, well pull out your notebook and think about that problem for 10 minutes.

(By the way, I know an eminent mathematician, one of the few who has done serious work in multiple fields, who says one of the attributes that has helped him the most is his ability to efficiently context switch and get serious work done throughout the day. If he has a random 18 minutes free, he is going to make 18 minutes' worth of progress on a research project.)

Jerry Seinfeld's "Don't break the chain" idea is nice.

As far as tips for learning: engage and fight with the material, do projects incorporating what you're learning, make connections to other things you know. Incorporate reviews of earlier chapters/lectures, rather than just continually charging ahead. There's a bunch of resources for how to learn (see for instance those mentioned in this HN thread [1]), which I think are good ideas, although honestly I have only haphazardly incorporated these techniques.

A major thing I haven't really figured out is maintaining / reviewing. I can personally attest to the fact that it is literally possible to be an expert in a subject one day, and less than a year later struggle to remember elementary knowledge that every beginning student learns. Maybe there is no perfect solution to this problem, but maybe it's possible to come up with some review schedule that helps more than "every now and then I randomly go back and look at a book I once read."

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

<comment><USER37> As for maintaining/reviewing, forgetting things is actually an excellent filter to see what pieces of knowledge are useful to you, and perhaps concentrate more on that in future. The stuff that you've forgot are the things that you just didn't ever needed. IMHO just let it go, let you brain do the garbage collection. You never really forget everything about the subject, all the basic concepts are remembered (even if you can't easily recall them) and if the need arises you'll just re-learn it.

<comment><USER38> I think this only works if your memory is sufficiently long term. My memory is very poor and I forget things quickly so I constantly find myself having to relearn things (for instance, relearning data structures and algorithms for interviews).

<comment><USER37> That's because you never actually use them, other than for interviews (sad but true). Happens to me too, I used to know many back at school, and now I can recall just those that I use for work at least once in a 6 months or so. For everything else I usually remember some basics, but just barely enough to be able to quickly google what I need. And then you just refresh the memory when needed. It's like back in the days when hdd were expensive, so we all were zipping our files when not used to save space - and then you unpack them when you need them :)

</comment></comment></comment></comment><comment><USER39> I like your clearly stated purpose that you are learning to expand the breadth of your knowledge. I had the same mindset when I began my self-learning path about a year ago, and the path gets longer as your pursue it, so I would advise changing the 3-6 months to 3-6 years, if your plans is to learn. We can both agree that we are not looking to become experts, so we can relax and go with the flow—in 30 years, who knows what will happen.

CHUNKING

My self-learning approach is chunking subject into 1-2 week blocks. Rarely less than 1-week, never more than 1-month. It's a cyclical process that I use to give my brain time to consolidate new knowledge.

UNDERSTAND THE BIG PICTURE

When learning a new subject, I always spend my first 2 chunk sessions to understand the big picture, and in later sessions I learn the details through deliberate practice. What I mean by big picture is when you commit time to read a book, or watch a video (@1.5x), you don't need to read in a linear order, or watch every single minute of the video. Don't read/watch any content with "learn ABC in less than X time" in the title. The goal is to learn best practices from experts. Only challenge the status quo once you have gained the discipline.

DATA SCIENCE (2weeks)

So in your case, spend 2 weeks learning Data Science: pickup a Wes Mickiney book on Python Data Science, or find a GitHub repository with great contributors sharing their work to help you. If you get stuck on transforming your DataFrame into Matplotlib or Seaborne, stop. Go work on your art project, or in this case, let's read.

LITERATURE (1week)

For reading - read Strunk and White or William Zinsser if you want to improve your writing. Read Walden, Gatsby, or 1984, if you want to see thoughtfulness in writing. I rarely finish an entire book because I'm more interested in the themes and proses than every details because I have limited memory and I want to ready many books. (1 week)

FOREIGN LANGUAGE (1week)

Now spend the last week writing to your foreign pen pal. Let's say if it's in Japanese, learn the hiragana, which is quite easy since all the sounds are romanized, and afterwards you can use the Japanese dictionary, instead of Google translate, to write your letters.

MOST IMPORTANT STEP

Repeat. Repeat. Repeat. (Method: Deliberate Practice)

You'll most certainly meet some asshole who tells his nonchalant story about mastering Machine Learning in a month, right after you just told your 3-year Data Science journey. Give the guy a cookie, and call Alexa--who responds "I was born knowing Machine Learning". The point is filter out the noises, because a few will really make you doubt, but I recommend reading what you wrote and understand that you are curious to learn and don't let other discourage you.

<comment><AUTHOR> Thank you for this. I have a _lifetime_ plan (goodness knows how many years that will be) but I know for sure that I want to leave while knowing that I tried to understand. This may be why I want to learn everything, but this may also be just gluttony because I'm not a very good student. I may also not be that idealistic after all, I want to do a startup but lack the confidence, and I think it's because I don't have enough confidence in my knowledge and not enough discipline. By training myself to be a better learner, I hope to be more ready (some of my projects are related to the startup idea.)

I am going to try chunking by week and see how that goes. Maybe the switching costs felt too high because I was doing small chunks of everything in timeframes that are too small.

> _Big Picture first, then the details through practice_

> _Only challenge the status quo when gained sufficient knowledge of domain_

> _Strunk and White etc, and don't have to finish books_

> _Repeat everything, consistently_

> _Don't let others discourage_

Gotcha.

About data science, I'm starting from rock bottom i.e. basic stats to overcome an old prejudice, and psychology to start thinking in statistics (thanks Kahneman.) And thank you again!

<comment><USER39> "If you have built castles in the air, your work need not be lost; that is where they should be. Now put the foundations under them." \- Thoreau

Best of luck!

</comment></comment></comment><comment><USER40> Pick a single thing to focus on and maintain sustained effort on it. Pump brown noise/ambient noise into your head at 3 to 6 hour intervals while you study. Tell other people to go hell if they bother you. Disconnect from the internet, use offline materials, and keep your phone in airplane mode. Repeat until goal is satisfied and move on to the next thing. If you focus on one thing you don't need a schedule since you just do that one thing every second you are free. Having less time forces you to manage your time better. Minimizing the bullshit in your life is also helpful and may actually be a prerequisite before you can get anything meaningful done.

</comment><comment><USER41> Serious suggestion: consider amphetamines. Dangerous in excess, but not unlike any other double edged tool, relatively safe when used responsibly.

Edit: faceless downvotes? How about some actual discussion?

<comment><AUTHOR> Since I can be compulsive, drugs are banned from my mind. Some double-edged swords are just too sharp.

(I didn't downvote you)</comment></comment>


In which I blame teachers for things - <AUTHOR> https://rickwayneauthor.wordpress.com/2017/01/11/in-which-i-blame-teachers-for-things/ <comment><USER2> I took a course that was all about the historical progression of science as a discipline since the early 1800's, and it really opened my mind to how much I didn't know about science. I really think that a course like that should be taught to students BEFORE they start taking high school science courses. This would provide a historical context for the content of science courses and, I believe, make it a lot easier to digest the material in a science class (for the reasons the author suggests).</comment>


Ask HN: When is the best time to bring on a co-founder? - <AUTHOR>

If someone with more karma would repost as a poll, I'd be appreciative :)
Otherwise:

    a) Pre-idea
    b) Post-idea, but pre-demo
    c) Post-demo, but pre-validation
    d) Post-validation, but pre-launch
    e) Post-launch, but pre-funding
    f) Post-funding
 <comment><USER2> The absolute BEST time? Would probably have to be a). Preferred times are b). Worst time is c) and beyond

I've only had experience working with my one childhood friend whom I've co- founded all my projects with. We've worked together since we were kids, building dinky static web pages with Dreamweaver. So I've never had the experience of bringing on another co-founder, or working with someone I didn't have an extensive history with.

The reason I think its A) is because its not quite as important as to WHEN your co-founder joins, but WHO you co-founder actually is. A friend or someone you've worked with in the past is someone you can trust. Someone you can trust is someone you can bounce ideas off of and have "chemistry" with. The sooner the two of you have your brains firing off and inspiring each other with a concept or product, the better. This means you can argue sooner, and shape out what it is you want to build far more effectively. Ideas will constantly change, but the person you're stuck with will not. So the sooner you find the right person, the better!

</comment><comment><USER3> Somewhere in the a-b-c range.

The question of when will depend on a number of variables that you can only answer depending on the specific situation.

More importantly, ask yourself how much risk will the potential co-founder be taking on? In stages a-b-c there's plenty of risk; after f; there's not so much. If your potential co-founder is unwilling or unable to assume a significant amount of risk, relative to yours, then they're more of an employee than a co-founder.

Something you'll discover is that there are plenty of people who want the "co- founder" title but aren't willing to assume a commensurate amount of risk. They'll tell you to go out and get the money, then they'll jump in once you've guaranteed their paycheck. Avoid these people.

</comment><comment><USER4> Let's talk about a) only.

It depends on who this cofounder is and what role he is going to play. Does he have a narrow skill or market experience that is useful for a specific idea? Then post-idea. Is this someone with whom you've had rapport for a long time and many times said "hmm, it would be nice if we worked together on something"? Then pre-idea.

</comment><comment><USER5> Before validation for sure. If you are too far along, it would extremely hard to share the same enthusiasm for things.

</comment><comment><USER6> When you have a good pitch, money to spend, and it makes sense to give away part of the company to get what you want.</comment>


Traffico – An Open Source Traffic Sign Font - <AUTHOR> http://blog.mapillary.com/technology/2015/01/28/traffico.html

<comment><USER2> There's also a great free (SIL-licensed) typeface for signage: [http://pixelspread.com/allerta/](http://pixelspread.com/allerta/)

</comment><comment><USER3> Since it doesn't seem to be linked anywhere [https://github.com/mapillary/traffico](https://github.com/mapillary/traffico)</comment>


Sets and Probability - <AUTHOR> https://stopa.io/post/243 <comment><USER2> Probability theory with sets actually generalizes well to infinite and even uncountable cardinalities—rather than _counting_ events you just have to switch to the more general notion of the _measure_ of a (sub)set [1].

[1] [https://en.wikipedia.org/wiki/Measure_(mathematics)](https://en.wikipedia.org/wiki/Measure_\(mathematics\))

<comment><USER3> For anyone looking properly (i.e. with proofs) learn measure theory, I highly recommend "Introduction to Measure Theory" [1] by Terrence Tao (has an excellent collection of exercises -- they're crucial to the reading!)

I think it's OK to skim the first few chapters about constructing Lebesgue measure from Jordan measure, as it makes the whole topic appear more difficult than it needs to be. From Chapter 4 (abstract measure spaces) onwards, the book is full of great insight.

A good one on probability & stochastic processes is "Measure Theory and Probability Theory" by Athreya & Lahiri.

[1] [https://terrytao.files.wordpress.com/2011/01/measure- book1.p...](https://terrytao.files.wordpress.com/2011/01/measure-book1.pdf) [2] [https://www.springer.com/gp/book/9780387329031](https://www.springer.com/gp/book/9780387329031)

<comment><USER4> How useful do you think measure theory is from a practical perspective? I've seemed to get by without more or less during my career (which is pretty stats heavy).

<comment><USER3> Learning measure theory has eliminated a lot of blind spots for me when it comes to stats / probability / ML. I find that I get "stuck" much less frequently when reading papers, and I'm able to better in the gaps when authors are too sparse with the mathematical details. Before, I would always wonder, "how on earth did they come up with this idea?!", but the more math I learn, the more I'm able to recognize that certain ideas are inspired by XYZ branch of math.

It's also been useful for understanding the "novelty" papers like "Neural Differential Equations" and so on.

I was lucky enough to take a good measure theory class in college, where it was fine to spend an entire day working through a proof from a textbook. Now that I'm working, though, it would be harder to justify that time commitment. So it really depends on your priorities.

</comment></comment></comment></comment><comment><USER5> One of my favorite books _Epistemology and Psychology of Human Judgment_ by Bishop & Trout [0] argues that humans are bad at making judgments, and what we want is reliable methods for arriving at truth.

The authors of the book provide several heuristics that yield better outcomes than typical strategies people use.

With respect to probabilities, since humans, on average, suck at it, they recommend a "frequentist" approach. A great illustration is one about a 99% accurate medical test that claims a patient is positive. The probability the patient has the disease is _not_ 99% (over 60% of Harvard doctors get this question wrong). The authors show how reframing the question with a sample population (10,000 people for example) and the relative prevalence of the disease (and noticing the false negatives) the problem becomes almost trivial to calculate.

[0] [https://www.amazon.com/Epistemology-Psychology-Judgment- Mich...](https://www.amazon.com/Epistemology-Psychology-Judgment-Michael- Bishop/dp/0195162307)

<comment><USER6> note, folks the book can also be found on archive.org as well

</comment></comment><comment><USER7> The set-based intuitions are a nice guide, but knowing how to turn the crank and churn out the calculations is also crucial for the cases where intuitive thinking doesn't scale.

<comment><USER8> yeah, I also liked this guide. Would love more articles about probabilities (but i always loved this topic :)), there's only one exception: the "3 door problem" (Monty Hall problem). In my opinion the general misconception about this problem does not stem from a misunderstanding of probabilites but a misconception about the moderator (who plays by his own rules [as a bad actor] - which is often not really discussed although it changes the whole game). Well, I would read an article about it by this author anyway ;)

<comment><USER9> Not sure what you mean with "bad actor" \- the host/moderator is not an adversary, his rules are fixed from the outset (see e.g. Standard Assuptions in [1])

These rules imply that new information is revealed, and based on the new information it is advantageous to switch.

The trickyness of the Monty Hall Problem lies in identifying that indeed new information has been revealed, which seems counter-intuitive.

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

<comment><USER10> Good on wikipedia for having them, but in my experience those "standard assumptions" are often left out when stating the problem.

<comment><USER9> Not really in my experience, I've never come across the problem without being stated explicitly how the moderator acts - it would be a different problem.

What I think is true is that people underestimate the role of the host (i.e. the rules according to which he behaves to).

<comment><USER11> The first statement of the problem in the wikipedia page (from "Ask Marilyn") does not state it explicitly (though it does say the host knows what's behind the doors). There is a reason wikipedia refers to them as "assumptions".

Or from [0]: "The standard annunciation of the MH problem, does not make explicit what I am assuming here: namely, that Monty will always open a door which does not contain a prize."

[0]: [https://www.montyhallproblem.com/#F2](https://www.montyhallproblem.com/#F2)

<comment><USER9> While you are technically correct, it's implicitly stated ("game show") and correctly understood by the majority of readers. Take it from Marilyn vos Savant herself:

"Virtually all of my critics understood the intended scenario. I personally read nearly three thousand letters (out of the many additional thousands that arrived) and found nearly every one insisting simply that because two options remained (or an equivalent error), the chances were even. Very few raised questions about ambiguity, and the letters actually published in the column were not among those few." [0]

The crux of the problem is the counter-intuitive nature of probabilities and information, possible choices and choices that could have been. It's a _difficult_ problem, purported to have tripped up even Paul Erdős.

[0] [https://en.wikipedia.org/wiki/Monty_Hall_problem#Other_host_...](https://en.wikipedia.org/wiki/Monty_Hall_problem#Other_host_behaviors)

</comment></comment></comment></comment></comment></comment></comment><comment><USER12> I'm bit confused, isn't counting desirable outcomes vs possible outcomes standard way of teaching probability? How is nCr/nPr stuff explained if not in the context of counting outcomes?

I'm also confused where does set theory come in here?

<comment><USER13> To begin, Sample Space of Events is a Set.

Simple cases like probability of A or A's complement etc., all rely on basic set theory.

The rabbit hole is sample spaces that are really really large.

What happens to probability distribution of desired events in those cases?

</comment></comment><comment><USER11> This method only works because the boxes have the same number of balls. To calculate probabilities by counting outcomes you have to start with outcomes that all have equal probabilities.

<comment><USER14> It's a special-case of a general principle that works regardless of the weighting. Instead of integer counting, do real counting with unity.

<comment><USER11> Sure you _can_ generalize it by weighting the outcomes by their probabilities (not mentioned in the article). But how are you going to calculate those probabilities any more easily than you can solve the posed problem?

The more "intuitive" way of generalizing it (integer counting) does not work in general. I think the example is likely to be misleading to anyone who doesn't already understand this stuff.

As suggested by the footnote, the reason the given example can be solved elegantly is because of the symmetry.

</comment></comment></comment><comment><USER15> Ironically, this is the sort of probability theory Nassim Taleb hates. :-)

<comment><USER16> Exactly. This is the brand of neutered, ludic probability on which The Black Swan is a holistic dump. Very ironic indeed that it leads with Taleb as the inspiration.

</comment></comment><comment><USER17> (From the name of OP I deduce he may read this.)

You should read the first and second chapter of 'Probability Theory: the Logic of Science' by Jaynes. It offers a derivation of probability theory using only Logic and Boolean algebra as foundations. I found it delightful, I hope you will also enjoy it :)

It's somewhat more intensive than Taleb, but the derivations are really beautiful.

<comment><AUTHOR> Will do, thank you! : }

</comment></comment><comment><USER18> I don't recall how I learned it in high school, but for my undergrad statistics & probability course, sets were very much the basis for everything. I'm surprised that this isn't the norm ...?

</comment><comment><USER19> This was so satisfying to read.

<comment><AUTHOR> Thank you for the kind words :)

</comment></comment><comment><USER20> References to textbooks that OP read would be a nice addition to the essay

<comment><AUTHOR> My favorite was this textbook:

[https://www.amazon.com/gp/product/1292025042/ref=ox_sc_act_t...](https://www.amazon.com/gp/product/1292025042/ref=ox_sc_act_title_3?smid=AMMEOJ0MXANX1&psc=1)

This one was more dense, but very good in the beginning if you take the time: [https://www.amazon.com/gp/product/0070484686/ref=ppx_od_dt_b...](https://www.amazon.com/gp/product/0070484686/ref=ppx_od_dt_b_asin_title_s00?ie=UTF8&psc=1)

\---

Will update post later, but wanted to share with you now : } -- thanks for taking the time to read!</comment></comment>


Ask HN: Does GitHub receive a disproportionate number of DoS attacks? - <AUTHOR>

My perception is that the answer is yes, but I realize that perception is not always reality. If they do, what's the long term solution? <comment><USER2> High number of DoS attacks in comparison to what? Sites with equivalent traffic...or? I feel like it's hard to come up with a fair comparison here because each site/service is so different and those characteristics play a big role in whether they are hot targets for attacks.</comment>


TECO - The text editor from hell (on which Emacs was based on) - <AUTHOR> http://almy.us/teco.html <comment><USER2> If someone cites some of your programming work 50 years after you finished working on it then you must have done something right.

From what I have heard from my father and others, editing punch cards was hell itself. The fact that TECO managed to bridge the punch card and hard disk storage eras could be viewed as some sort of miracle.

On another note, it it seems that Dan Murphy, who created TECO at DEC in 1962 - 1963, is still going strong. In 2009 The IEEE Annals of Computing History published this article authored by him (warning: pdf): <http://tenex.opost.com/anhc-31-4-anec.pdf> and earlier this year he updated his personal website: <http://www.opost.com/dlm/>

</comment><comment><USER3> There's even a 64-bit, working distribution (with binary if you trust it) for OS X: <http://almy.us/teco.html>

I am running it, with the list of commands open, and I have no idea how to use it but I see that it comes with a complete manual, and introduction, and a list of commands.

And I had one of those "what in the world am I doing?" moments. Seriously. I have code that actually excites me that I'm writing and is coming along well, and I'm learning TECO?

I'm coming back to it later, though, because it's a fun salute to a great guy, and because using a punch-card-oriented editor for _any_ task today would amuse me immensely.

<comment><USER4> At work the other day someone showed me a pad of punch card keying order forms where you would fill them out and send them out to get punched. They even say "University of California Form xxxxxx" printed on the bottom of every page on the pad. He says when he stared in the 70s they had just stopped using punch cards.

<comment><USER5> When I went to high school the cards were sorted manually. On our first day of school we were given a stack of IBM cards, punched with our student information. We would give one to each teacher when we reported to our first class. At the end of the day, the teacher would have a stack of cards for each of her classes. All these cards were sent somewhere (my school didn't have a computer), sorted.

"DO NOT FOLD SPINDLE OR MUTILATE"

</comment></comment></comment><comment><USER6> > ... on which Emacs was based on ...

In grammar, this is like wearing both suspenders and a belt.

</comment><comment><USER7> I am probably the only person here who learned to program in TeCO. It is indeed a Turing complete language. I'd done a few classes with Algol-60, Lisp, and PL/1, but there was an available PDP-11/05 at TMRC _, and later an 11/03 at MITERS_ _, and I started playing. A year later I'd written a significant body of code (none of which I remember at all), and flunked out of school.

_ Tech Model Railroad Club. Google it. __MIT Electronic Research Society. Sort of a prehistoric maker space.

</comment><comment><USER8> Compared to the alternatives at the time, TECO was great for programming on the PDP-10 using a Datapoint video display terminal (text mode only). Michael Yoder, Putnam Fellow 1971 and 1972, wrote a Turing machine in TECO back then.

</comment><comment><USER9> Well, Ed is the standard text editor...

(for those not in the know -- <http://www.gnu.org/fun/jokes/ed-msg.html>)

<comment><USER10> Agreed. But to be fair it is still useful to fix a single issue in a huge file.

<comment><USER4> or when your machine won't boot into a display that can run vi and you need to edit some file to get the machine to boot up.

</comment></comment></comment><comment><USER5> There is a BSD port for TECO as well. I'm running it on a PPC Mac via Macports.

</comment><comment><USER11> wow, archeoware... put it on github pls!</comment>


Intel Kills Off Core I9-9900K Speciality Dodecahedron Packaging - <AUTHOR> https://www.tomshardware.com/news/intel-kills-off-core-i9-9900k-speciality-dodecahedron-packaging <comment><USER2> Cutting costs is important, when you can only fight by lowering your prices.</comment>


Regular expressions from noob to ninja (part I) - <AUTHOR> http://www.henriquebarroso.com/regular-expressions-from-noob-to-ninja-part-i/ <comment><USER2> I only recently spent enough time with regexs to learn them to the point where I no longer need to consult a reference every time I wanted to write one. Now I wish I had learned regexs sooner. Regexs are fantastical useful and I've noticed a productivity boost not only in writing programs but also for manipulating tools such as grep and emacs.</comment>


India's Government Wants to Ban Self-Driving Cars to Save Jobs - <AUTHOR> https://www.singularityarchive.com/indias-government-wants-ban-self-driving-cars-save-jobs/ <comment><USER2> That wouldn't be possible any-way, Indian roads are quite different, In-order to make self-driving cars work in India they need to do lot of development.

</comment><comment><USER3> I wouldn't take his comments at face value. This is essentially political posturing to his voter base. Self-driving cars have barely made any inroads whatsoever into the country, and he's picked this non-issue to essentially signal that he supports employment for the masses.</comment>


Hacker's guide to Neural Networks (2012) - <AUTHOR> http://karpathy.github.io/neuralnets/ <comment><USER2> Since we're on the topic of tutorials to understand neural nets and modern deep learning, I will throw in Michael Nielsen's excellently written free online "book" on neural nets. It's really a set of 6 long posts that gets you from 0 to understanding all of the fundamentals with almost no prerequisite math needed.

Using clear and easy to understand language, Michael explains neural nets, the backprop algorithm, challenges in training these models, some commonly used modern building blocks and more:

[http://neuralnetworksanddeeplearning.com/](http://neuralnetworksanddeeplearning.com/)

This book opened my eyes to the power of textbooks written in such easy to understand, clear style. Bet it took repeated revisions, incorporating feedback from others and hours of work but such writing is a huge value add to the world.

<comment><USER3> +1, I made this repo awhile ago as a learning exercise, basically a c+p of chapter 1: [https://github.com/f00-/numpy-mnist- nn](https://github.com/f00-/numpy-mnist-nn)

</comment></comment><comment><USER4> Great post that I often go back on. A curious fact about Karpathy is that he actually has a long history of teaching (relative to his age). About 9 years ago, I learned how to speed solve Rubik's cubes in ~12 seconds through his YouTube channel [0]. It's interesting to see that his simple teaching style transfers quite well to more technical topics than twisty puzzles.

[0] [https://www.youtube.com/user/badmephisto](https://www.youtube.com/user/badmephisto)

<comment><USER5> WHAT?!

Badmephisto == Andrej Karpathy?!

I would've never made the connection ... badmephisto also got me into speedcubing, my pb is ~14 sec, crazy ...

</comment></comment><comment><USER6> (2012)

Previous submissions:

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

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

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

</comment><comment><USER7> From a student to the director of AI at one of the most innovative companies on Earth in, what, 4 years? Must be one of the greatest untold stories.

<comment><USER8> The story will be told soon enough once his work has changed the world, it's very much on its first chapters I would imagine.

</comment></comment><comment><USER9> Any new updates to this article? This guide is well known by ML practitioners for a while now.

<comment><USER10> I think this eventually turned into Andrej Karpathy's class at Stanford, CS231n. The class notes are here: [http://cs231n.github.io/](http://cs231n.github.io/) The class is on youtube. If you like this hacker's guide, I think you'll definitely like the class and the notes. edit: A lot of the compute graph and backprop type stuff that is in the hacker's guide is covered in this specific class, starting about at this time: [https://www.youtube.com/watch?v=i94OvYb6noo&t=207s](https://www.youtube.com/watch?v=i94OvYb6noo&t=207s)

</comment></comment><comment><USER11> I've made a lot of progress in my mental models recently by implementing the perceptron in Excel

<comment><USER12> I've made a similar progress by implementing some ML algorithms in pure RISC-V assembly. Makes you think.

</comment></comment><comment><USER13> There is a (at least one more) newer version: (from 2017 August) [https://www.youtube.com/watch?v=vT1JzLTH4G4&list=PLC1qU- LWwr...](https://www.youtube.com/watch?v=vT1JzLTH4G4&list=PLC1qU- LWwrF64f4QKQT-Vg5Wr4qEE1Zxk)

</comment><comment><USER14> There's a lot of high-school math there, but the trouble is that the real workings of neural networks (the speed of convergence, and why/if it works on samples outside the training/validation set) are left a mystery, if you ask me.

<comment><USER15> It is relatively clear why it works beyond the training and validation set: What is being approximated is a smooth function, which in the case of a classification task is a function from the space of things to be classified (images of a certain size) to the n-simplex, where n is the number of classes. Then the preimage theorem tells you that over a regular point of this smooth map lies a codimension n submanifold in the space of things to be classified. That in turn can be interpreted as the submanifold of all things that look like the class you are assigning, especially close to the corners of the n-simplex (being a regular point is an open condition). In short: Because the map is constructed to be smooth it will make sense beyond whatever the training / validation data was. Note that this does not guarantee that it has learned something reasonable about the dataset, just that it will have found some way to smoothly separate it into different components.

<comment><USER16> Some days I think I'm smart, then I read stuff like this. I wish there was an EILI5 Plugin for chrome that I could use to tag any paragraph and someone would come along and break it down for me. I'd do it for your comment!

<comment><USER6> Maybe the ELI5 plugin could be reasonably approximated by adding links to all phrases with corresponding Wikipedia articles, like:

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

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

[https://en.wikipedia.org/wiki/N-simplex](https://en.wikipedia.org/wiki/N-simplex)

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

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

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

I guess it depends on whether you're willing to read a textbook's worth of Wikipedia articles. (There is no shortcut. Actual 5-year-olds also require a few years until they can understand advanced mathematics.)

</comment></comment></comment></comment><comment><USER17> I actually wrote a similar style guide just last week (had some time off, was meaning to do it):

[https://austingwalters.com/neural-networks-to-production- fro...](https://austingwalters.com/neural-networks-to-production-from-an- engineer/)

Uses updated Keras and python and doesn't go so much into the network connections itself.

I do regular trainings and teach seminars on neural networks and find most tutorials online go too in-depth regarding constructing a network from scratch (such as this one) - they lose people.

The biggest issue is actually data formatting, ingestion then hyperparameter tuning today. You really only need to grasp the basics to get started in 2019.</comment>


Gender and math performance - <AUTHOR> http://www.news.wisc.edu/20125

<comment><USER2> Dang. I hate these boys vs girls articles that cite testing at 8th grade. How about after puberty? That's when the boys start to really shine in math.

</comment><comment><AUTHOR> Link to study: <http://www.ams.org/staff/jackson/fea-mertz.pdf></comment>


Bitcoin trojan caught in the wild - <AUTHOR> http://www.symantec.com/connect/blogs/all-your-bitcoins-are-ours

<comment><USER2> This is exactly why Bitcoin will never take off outside of the geek world. Can you imagine, in a world where millions used Bitcoin, the media fallout if users were being robbed with zero way to reclaim their money?

Knowing how little "regular" people protect their devices, this scares me.

<comment><USER3> Here's some ways to fix this and why it won't be a problem:

\- Add encryption of the wallet and a password to the Bitcoin client and daemon. This is already being worked on and there is working prototype. It should be in the mainstream client very soon. Wallet Private Key Encryption: <http://forum.bitcoin.org/index.php?topic=8728.0>

\- Start trusted centralized institutions that hold your Bitcoins and protect them (maybe even give you a bit of interest growth). There are already numerous online eWallets that you can use—if you choose to keep your cash on your person then it's your decision and you should acknowledge the risks. List of eWallets: <https://en.bitcoin.it/wiki/Category:EWallets>

<comment><USER4> Wallet encryption isn't any help against keyloggers and other local malware that can observe your use of the wallet. And wallet encryption simple enough for average folks — a short passphrase of their own choosing - is easy for digital pickpockets to crack.

<comment><USER5> Since Bitcoin miners have awesome GPUs, malware could use the victim's own GPU to crack their wallet. (And then go back to mining... for the malware owner.)

<comment><USER6> Bitcoin GPU miners are a quite small subset of Bitcoin users, and they're probably not the least knowledgeable.

<comment><USER7> Maybe. Wasn't the victim of the recent 25k heist a miner?

<comment><USER8> Yeah, but from early 2010 when most miners were still using CPUs.

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> Ah, Bitcoin: the new incentive to breach computer security. Why risk stealing credit card or bank information when you can steal Bitcoins safely and anonymously?

<comment><USER10> On the other hand, it's also a powerful incentive to improve computer security.

<comment><USER11> No matter how much you improve it, there will be a never ending supply of end users that won't install the proper updates.

<comment><USER10> Why give them the choice? You could automatically download and apply the updates in the background, given a sufficiently sophisticated updater. That's basically Google's plan with ChromeOS.

</comment></comment></comment></comment><comment><USER12> Don't worry, we've identified the thief! Put out an arrest warrant for: f7c956f566b11751c4d3f5ca077c0406

More seriously, it's interesting that the people who have been robbed from could observe in detail exactly where their stolen money is flowing to. So close, yet so far away.

</comment><comment><USER13> A possible solution:

<http://forum.bitcoin.org/index.php?topic=18141.0>

tl;dr: Create a bitcoin address, backup wallet.dat, delete wallet.dat from your HD, and send your bitcoins to that address.

<comment><USER4> Works until the malware scans the disk for keydata remnants from 'deleted' files (or even old swap pages).

And this guy was trying to implement this 'offline savings' strategy, but didn't completely understand the privacy lifecycle and transaction details — and thus last the keys to a $180K balance:

<http://forum.bitcoin.org/index.php?topic=11104.0;all>

Vanished in a poof of pure logic!

<comment><USER13> > _Works until the malware scans the disk for keydata remnants from 'deleted' > files_

<http://srm.sourceforge.net/>

I don't use Windows but there's probably something similar for it.

<comment><USER4> Even 'srm' and similar tools might not work as expected on a solid-state drive with its own firmware and wear-leveling.

It's possible to protect your bitcoin keys from an arbitrarily-later malware incursion... but very hard, in ways even most power-users don't consider.

I like bitcoin. The current sharp edges and tragic mishaps are useful, for now, for learning about a new medium of exchange, which operates on a logic different from almost anything that we could easily analogize to.

If bitcoin or a successor takes off, I suspect carrying large balances will require specially hardened devices – secure VMs inside handhelds, perhaps?

And, a general desire for some recourse against instant irreversible fraudulent transfers might make the 'finalization' of certain transactions dependent on a remote secondary key approving (or failing to cancel) a payment, within a timeframe sufficient to deliver second-channel notification/confirmation.

</comment></comment></comment></comment><comment><USER14> Any one else find the FTP password amusing?

</comment><comment><USER15> what's with the random number generation at the start? how does rand() + 3*rand() improve on just rand()?

<comment><USER16> There's a great series of answers to this on StackOverflow:

[http://stackoverflow.com/questions/3956478/understanding- ran...](http://stackoverflow.com/questions/3956478/understanding-randomness)

In short: doing things like this actually _reduces_ the randomness of the end result.

</comment></comment><comment><USER17> Mmh, the "underground code snippet" looks very fishy, unless I'm missing something:

      char * appdata = getenv("APPDATA");
      char * truepath = strcat(appdata, "\\Bitcoin\\wallet.dat");

</comment><comment><USER18> > _it has one motive: to locate your Bitcoin wallet.dat file and email it to > the attacker._

Craziness. They could just send the coins to a Bitcoin address, and it wouldn't identify them _at all_.

<comment><USER19> Stealing your wallet.dat is easier. With a copy of your private keys they can spend your coins from anywhere, without having to get remote access to your PC and send them locally.

</comment></comment><comment><USER20> The BTC clients should encrypt the wallet too.

</comment><comment><USER21> Uh? Aren't Bitcoin wallets encrypted?

<comment><USER13> They will be in the coming version.

</comment></comment><comment><USER22> I have an idea that may fix this broken model of Bitcoin. Make sure each penny has a "history" on it on a public server. You can't spend the money unless it is posted for everyone to see. Each transfer of money is documented, and the reason for the transfer and other data. And in order to spend it, you have to validate and review each transfer of money before it. If there is anyone stealing money, it is just a matter of looking at the history of each penny and then tracking down the unique id to the offender who spent the money they didn't earn.

A safe online currency can be done, but if you champion this, the United States government are going to find you, and squish you like the insignificant bug you are. You would be circumventing the primary income stream of the united states with a global standardized currency.

<comment><USER23> Every bitcoin in existence has its history tracked back to it's origin on every single bitcoin node.

There is an optimization for some clients to to pare down that history, but, in general, when you start up a bitcoin node, you have the history of every bitcoin ever created and all of it's transactions that occurred after it.

This history, in fact, is how you can be confident that the bitcoin is authentic - unless you have greater than 50% of the computing power of the network, you can't substitute an alternative history which would result in the coin landing in your hands.

<comment><USER24> That seems like a highly non-scalable solution.

<comment><USER10> It's not as bad as it seems. VISA only averages 2000 transactions per second, for instance, which isn't actually that much in terms of data.

</comment></comment></comment></comment><comment><USER25> Problem with bitcoin: it's an eternal beta. Can't be solved either.

</comment><comment><USER26> This is why we can't have nice things.</comment>


The Story of Mel (1983) - <AUTHOR> https://www.cs.utah.edu/~elb/folklore/mel.html <comment><USER2> See also:

 _The 'Story of Mel' Explained_

[https://jamesseibel.com/the-story-of-mel](https://jamesseibel.com/the-story- of-mel)

</comment><comment><USER3> I read from somewhere that someone, maybe the author, finally found the identity of Mel, who passed away a few years ago and ran a tech consulting firm before his death.

I wonder whether anyone today could get a similar understanding of modern architectures.

<comment><AUTHOR> [https://en.wikipedia.org/wiki/The_Story_of_Mel](https://en.wikipedia.org/wiki/The_Story_of_Mel)</comment></comment>


Google Maps for Android Labs Offers Offline Caching - <AUTHOR> http://lifehacker.com/5819742/google-maps-for-android-labs-add-offline-caching-scale-and-measuring-tools

<comment><USER2> This has been around for a while. Also, it's less than ideal, as it is simply a cache of the map (meaning no directions). Its good if you need a traditional map map, but not so good if you're used to the robustness of having a smartphone map.

<comment><USER3> I used it while abroad. Since the GPS works, you can see where you are on the map, which is a big plus over only a paper map. Obviously getting data access would be even better, but it's a nice free alternative.

</comment></comment><comment><USER4> The post is dated July 10, 2011 people...

<comment><USER5> Haha! Oh wow, I need to pay attention more.

</comment></comment><comment><USER5> Seems like Google announced this event out of pure fear, then only later scrounged up some content for it.

<comment><USER6> They've already had offline maps in labs for around a year I think - go into labs, enable 'offline caching', click an area, then 'cache for offline' - it'll grab a 10 mile square of the map around the pin.

The announcement seems to be that the feature is coming out of beta.

<comment><USER7> Yep. At today's event they revealed the polished version of the feature, which lets you define the area to cache by hand, and provides a formal UI for managing your cached areas and telling you how much data it will require. Here's the demo:

<http://www.youtube.com/watch?v=HMBJ2Hu0NLw#t=3551s>

</comment></comment></comment><comment><USER8> IIRC this feature was available as a Labs experiment on the Android version

</comment><comment><USER9> I read this and got it set up literally on the BART ride to the airport, going to a place I've never been (Turkey). I love living in the future.

</comment><comment><USER10> Ah, so it's like an authorized version of Mobile Atlas Creator and TrekBuddy.</comment>


Up to $10,000 of developer software, for free - <AUTHOR> https://pusher.com/developer-package <comment><USER2> This is more like an all-in-one trial package for various XaaS. I thought this would be neat development software..</comment>


Rikulo UI: Cross-platform web and native mobile apps in Dart and HTML5 - <AUTHOR> http://rikulo.org/

<comment><USER2> Does not seem to be an active project anymore. Last commit on 2014-02-23: [https://github.com/rikulo/ui/commits/master](https://github.com/rikulo/ui/commits/master)

</comment><comment><USER3> Does Rikulo UI make you commit to either web or native? For instance, let's say that I wanted to make an app but I'm not sure if I want it to be native or web. Or, better yet, let's say I make a mobile app in Rikulo UI and want to turn it into a web app: how difficult is it?

<comment><USER4> I have used Cordova and your question that is certainly something to always be considering when adding native features in it. However if you use proper abstraction, something Dart makes a lot easier than JS, its not a huge issue. So assuming this framework is like Cordova I imagine the answer to your question is; the framework will not hinder you generating a webapp, its about how you structure your code.

</comment></comment><comment><USER5> No new commits since early 2014.</comment>


The history of peer review, and how it was troubled from the start - <AUTHOR> http://www.nature.com/news/peer-review-troubled-from-the-start-1.19763 <comment><USER2> This is an excellent piece about the origins and history of peer review. Everyone interested in the ongoing controversies about replicability and bias in science, which appear frequently on HN's front page (including now at [https://news.ycombinator.com/item?id=11535169](https://news.ycombinator.com/item?id=11535169)) ought to read it.

</comment><comment><USER3> The peer review system is not just to help scientists, but to help outsiders have confidence that science is actually working (since outsiders often pay for it), and to help them understand what consensus is. That is my summary of the main point of the article.

I think of peer review as kind of a low-pass filter: it keeps out the obvious junk. The problem is when science is hidden behind paywalls.

<comment><USER4> Exactly. We owe the present universality of 'peer review' to the post-WWII expansion of government-funded military-industry-university science (see also Vannevar Bush):

> The idea that any legitimate scientific journal ought to implement a formal > referee system began to take hold in the decades following the Second World > War...The very phrase 'scientific community' dates from this time. > Researchers wanted to preserve autonomy while holding on to the massive > government funding that had come their way since the Second World War. > Allocations for basic research in the United States, for instance, swelled > by a factor of 25 in less than a decade9. 'Peer review' was a term borrowed > from the procedures that government agencies used to decide who would > receive financial support for scientific and medical research

'Peer review', like citation counts, is essentially bureaucratic: it is the scientific form of 'no one was ever fired for buying IBM'. ('But I relied on a _peer-reviewed_ paper!' goes the cry. You also see this excuse often said by authors of rubbish papers: 'you can't criticize my paper, it's been peer- reviewed!') It is an attempt to resolve the principal-agent problem (exacerbated by the huge increase in numbers of researchers and the prospects of power and wealth now offered by science) by serving as a stamp of 'scientific quality' which is easily externally verifiable by ignorant outsiders such as funders.

As such, it is considered indispensable by governments/universities, and it helps build barriers to entry by established publishers like Elsevier. This is why 'peer review', despite the lack of any real evidence and the occasional study showing experimentally that it is an atrocious filter which frequently discriminates against the best research and select for the worst, has throve over the past century.

<comment><USER5> There is no peer reviewed evidence in favor of peer review?

<comment><USER6> There are, but they are fairly discouraging.

Peters and Ceci (1982) resubmitted a dozen articles after changing the authors' names and affiliations and retyping the manuscript (this is 1982, after all). Only 1/12 was accepted on the second go-around, while 8/12 were rejected for quality-related reasons.

Rothwell and Martin (2000) examined data from neuroscience journals and conferences (2 each), where reviewers grouped papers into three categories (high/medium/low), and found virtually no agreement (they calcualted kappa, a measure of agreement that ranges from 0 (none) to 1 (perfect), to be ~0.1).

Someone (sorry, can't find the citation; it's in the last year or two) recently analyzed attempted to link grant scores to subsequent publications to see if reviewers could prospectively find "good" proposals. The reviewers could successfully identify terrible proposals and brilliant ones, but had a terrible time with those in the vast murky middle.

</comment></comment></comment></comment><comment><USER7> So much for philosopher-kings...

</comment><comment><USER8> The idea of an anonymous judge speaking for the public just doesn't make much sense these days.

<comment><USER9> The public should be the judge.

<comment><USER10> The public has no clue what the papers are about and doesn't really care either.

Passing peer review is just the first step for a paper though. It also needs to gather citations to avoid being forgotten. It's up to the scientists to decide which paper to cite and they are usually a lot more qualified to do so.

</comment></comment></comment><comment><USER11> Do some of the same problems apply to peer code review?</comment>


Alternate Hacker News Interface - <AUTHOR> http://hackernewsfeed.com/

<comment><USER2> When I first visited Hacker News, I was a little offput by the design, but quickly embraced it after discovering the quality of content. I now see this as an advantage, as it can turn away undesirable users that would not add quality to our conversations. I can't guess really whether this effect is true, but anything that could keep this from turning into reddit or digg would be great.

<comment><USER3> I don't know for sure if it works, but is definitely deliberate.

</comment></comment><comment><USER4> It looks worse than the current one.

<comment><USER5> I don't think the current one looks bad. I would even say the design is great. Maybe not aesthetically, but its very functional and is consistent with the purpose of the site.

The proposed redesign has too much transitional volatility associated with it. Although functional, subtracting from the current width makes the site look weird. Theres also too much text on the front page which is a departure from the way forums typically work with just the thread title (submission) and other essential info (comments, etc.).

</comment></comment><comment><USER6> I'd rather see a preview of the top comments than the first paragraph of content.

</comment><comment><USER7> a HN "zen garden" type of redesign would be a fun challenge, limiting yourself to modifying the css only.

<http://www.csszengarden.com/>

<comment><USER8> Sadly, the underlying table structure and layout of the site isn't condusive to this. I spent a few days earlier this year trying to write an iPhone interface for HN by just modifying existing styles and it didn't work out so well.

</comment></comment><comment><USER9> Aside from functionality issues mentioned elsewhere, you have some problematic UI issues to work through.

For one, it took me 3 tries to click "expand" in the little preview box. I kept overshooting with my mouse, and then the box would close. More padding around the expand link or a 1 second delay on closing the popup would probably help a lot.

</comment><comment><USER10> Can you put the code for this on GitHub or something? Might get some interesting results if anyone could fork it and make changes to either the style and/or functionality and push it back...Just an idea.

</comment><comment><USER11> HN's interface is not so bad... the only thing I'd like are larger/padded "# comments" links, since that's typically the first thing I look at anyway.

</comment><comment><USER8> I don't like it. Usually the first paragraph of text is meaningless. Just look at the current entries for .hn from Wikipedia. Unless someone hand curates that kind of thing it's impossible to get right. It looks like you're trying to add in a link/subject/description model for submissions like Digg and all other social news sites. Sorry, but that isn't HN. Personally I prefer scanning the headlines. This blobby text insertion just makes that impossible. If you were going to put anything as a short description, it should be the highest rated comment currently on the thread. I'm also not sure why you replaced the upmod icon. That darn little thing has always been too small, but at least it indicates what it's for. If anything, make the icon bigger but don't change it's shape for no reason.

<comment><AUTHOR> I agree adding the comments would be great, but without html scraping Hacker News it's not possible. I didn't want to reproduce HN only show that adding more context around a link will change a user's behavior around that link.

I would disagree that the first paragraph is meaningless. The title alone is generally not enough to make an accurate guess on whether a link is useful.

<comment><USER8> I disagree about the first paragraph bit. In every case where showing something like that works, it's setup so the poster can add such a description. Examples would be Slashdot, which is often a long form summary, and Digg, which is short form. Here on HN there is no summary. This encourages short, accurate, descriptive subjects. The base argument I'm trying to express is that either model works well, as long as it's human edited. However, automatically grabbing a semi-random chunk of text and displaying that as the descriptive paragraph isn't useful and makes reading the headlines difficult.

</comment></comment></comment><comment><USER12> Why keep the gray on lighter gray color scheme for super tiny text? If there is one thing that I could change about HN...

</comment><comment><USER13> Got my hopes up for a second, I thought this was the real, remote API that is sure to materialize at some point.

</comment><comment><USER14> If there's one thing I love, it's the + mark :)

</comment><comment><USER15> One (possibly unintentional) shortcut for me: your "content" button enables me to see what's blocked by the web filter at work. I'll bookmark this for the next time that happens. Thanks.

</comment><comment><USER16> Sorry to Say this, but bad. It looks so clutterd, it could drive people away froom the site.

<comment><USER17> Exactly, its cluttered and I could not stay more than 5 mins. I appreciate the effort and if we keep trying may be we will get better interface. As of now I would stick to HN.</comment></comment>


Steve Would Be Proud: How Apple Won The War Against Flash - <AUTHOR> http://techcrunch.com/2012/06/30/steve-jobs-war-against-flash/ <comment><USER2> A cross-platform multimedia platform that renders (relatively?) consistently across most browsers. Thank god we got rid of that!

Can't wait to tweak my HTML5 for all permutations of OS and browser! Hooray!

<comment><USER3> I counter your point with the following: Theory and practice are more similar in theory as they are in practice.

In THEORY flash is a cross platform tool to provide a uniform experience, and allow for rich content on all platforms.

In PRACTICE flash is a cpu/gpu hog which has more bugs than IE, and while flash's performance will probably always top that of native browser apps (AS's static compilation is key here) it cannot be as good as native apps. On the HTC EVO I have not been able to run ANY flash program, EVER, successfully. The best I got is a few seconds and the biggest battery drain I ever saw. TL;DR - flash for android is just a security risk and space waster with no benefits. I uninstalled it because I have root and never been happier.

<comment><USER4> Flash compiles to executables that run on ios and android, games made with it are chart top apps on both of these systems stores, free and paid. They are fast, 50 fps capable games. Your referenced example of the HTC EVO makes it look like a faulty mobile, nothing more. I have no problem running flash on android unless with poorly encoded video or flash 3D api parts that are not supposed to run on mobile flash, but the player tells me that when starting.

In practice, to make any other native or not dev plat do what flash does on mobile will hog the cpu/gpu just the same because, simply put, there is no magical free lunch processing. In practice, only native can touch it and in most real world situations that is only done with time costly tweaking that in the end can't really surpass its performance other than mostly synthetic optimal situations.

If you run non optimal coded apps made in whatever dev plat, you will get drain. That is possible to be done with flash apps. It's a developer problem.

As for flash having more bugs than IE, add some links for reference, I would love to read up on that.

<comment><USER5> > As for flash having more bugs than IE, add some links for reference, I would > love to read up on that.

Then I would recommend starting with Secunia's Advisory and Vulnerability Database and NIST's National Vulnerability Database.

Both list hundreds of vulnerabilities, nearly all of which are severe or critical; several of which interact with IE specifically; and most of which affect all platforms, including Android, Linux, and OS X.

Although IE has about 5 times as many vulnerabilities listed (3x in Secunia and ~5x in NIST's NVD), I think the point remains: Flash is one of the largest security threats on the Internet, especially considering its spread and profile.

Additionally, Flash still suffers from thousands of bugs, some of which have never been fixed (like "smurf video" on Linux). And that's just on their public (<https://bugs.adobe.com/jira/>) bug database.

<comment><USER4> You recommend me looking at a source that states it doesn't have more bugs than IE.

Look, the article on techcrunch is troll bait and the agenda is meme based already, the article title brings to ponderation on the amount of self satisfaction a corpse would feel because a company pulled a virtual machine from running on mobile browsers, limiting it to export to executable apps that are doing well by any measure. I don't see a valid way to continue this other than pointing back to what I posted.

I would say cross scripting is the largest security problem nowdays by any measurable account. These are your parameters looking at spread and profile, javascript tops flash in both, so let us not make it sound like flash is the end all of security problems on the web.

You don't "like" it, perfectly fine, no big deal, I reckon you probably interact with it on a lot of plats nowdays without even knowing. Bandwagon opinions aside, it is that simple.</comment></comment></comment></comment></comment>


On Hacking - Richard Stallman - <AUTHOR> http://www.stallman.org/articles/on-hacking.html

<comment><USER2> _Playfully doing something difficult, whether useful or not, that is hacking._

That's one reasonable definition of hacking, but the examples he gives are trite. Changing a single letter on the sign of a school that no one has heard of is not interesting or notable. It's not even amusing. ("Customer Training College" to "Customer _D_ raining College".)

He also contradicts that definition with:

 _I realized that if I could come up with a way [to eat with 6 chopsticks], it would be a hack._ \-- That train of thought is not playful, it's pretentious.

 _He had topped my hack. Was his action, too, a hack? I think so. Is he therefore a hacker? That depends on how much he likes to hack._ \-- So playful or not, if you're outdoing Richard Stallman, it's not hacking.

<comment><USER3> He said he thought it was a hack in the text you quoted. Where do you get "if you're outdoing Richard Stallman, it's not hacking."? Is that an expression of your own opinion, or is it intended to be a restatement of something Richard said? If so, what?

<comment><USER2> That expression is my joke based on the content and context of that essay.

He's suggesting that his friend may not be a hacker simply because it depends on "how much he likes to hack". My issue with that is two-fold: 1) it introduces the idea that being a hacker requires some form of external judgement and 2) it contracts his initial point that playing _is_ hacking.

That said, it's possible his friend specifically did not enjoy eating with two sets of chopsticks in one hand.

<comment><USER4> This topic shouldn't be taken seriously, so I'm hesitant to post; however, there's a precedent in opposition to your first point that external judgement is not required. From the New Hacker's Dictionary entry for hacker:

"It is better to be described as a hacker by others than to describe oneself that way. Hackers consider themselves something of an elite (a meritocracy based on ability), though one to which new members are gladly welcome. There is thus a certain ego satisfaction to be had in identifying yourself as a hacker (but if you claim to be one and are not, you'll quickly be labeled bogus). See also wannabee."

</comment></comment></comment></comment><comment><USER5> Having recently read "Surely You're Joking, Mr. Feynman," Stallman comes across as actually being less of a hacker than Feynman.

[http://web.archive.org/web/20080205071249/http://www.gorgora...](http://web.archive.org/web/20080205071249/http://www.gorgorat.com/)

Even as a kid, Feynman was quite the hacker. Fixing radios and such because it was interesting and fun, and not caring if it was useful.

</comment><comment><USER6> The extra pair of chopstics are communal, for picking up pieces of food and moving them to own your bowl/plate.

The PRC (no idea about the DPRK) was campaigning for the use of these pretty heavily around that time period as they're more sanitary and a lot of Chinese meals are taken "family style".

At least try to comprehend the problem before coming up with a hackish solution.

</comment><comment><USER7> When the entire world starts using a word ("hack") in a way that you think is wrong, at some point it is you that becomes wrong. Language works that way.

<comment><USER8> Language may work that way, but RMS is not likely to concede the point. Thus his continuing battle over "GNU/Linux". He's a principled man, perhaps to a fault.

</comment></comment><comment><USER9> This is a marvelous little essay that I hadn't seen before. I think I like it better than anything else I've read by Stallman. It communicates the spirit of hacking in a way that is hard to do.

(I really hate the term "cracker" for security breakers though. It feels contrived, which is maybe why nobody uses it.)

</comment><comment><USER10> Stallman refers to "exploring the roofs and tunnels of the MIT campus" in the 1960s and 1970s as hacking. FWIW, we used to ride on top of elevators (and sometimes their counterweights) at RPI in the 1970s and call it hacking. So, yes, I can relate to the article, man, whether or not hacking goes back to the 1920s or the Renaissance or ancient Greece.

</comment><comment><USER11> Though I greatly admire Stallman, this essay is a bit simplistic and disappointing. I would argue that _hacking_ precedes the age of the computer. Those pranks mentioned by Stallman were happening at MIT in the 1920s and 1930s already. In fact, at MIT "pranks" are known as "hacks".

Well, if a "hacker" is defined as someone who attacks difficult problems for the sake of satisfying his / her intellectual curiosity, then I would argue that there were hackers in Ancient Greece already. Moreover, in Italy there were hackers galore during the Renaissance. Though the term "hacker" was created at MIT, hackers have existed for a long time. Leonardo da Vinci was a hacker _extraordinaire_ , for instance. Let us show some respect for the giants on whose shoulders we stand...

<comment><USER12> He mentions someone from the 1300s he considers a hacker. I think he was referring to the term Hack.

</comment></comment><comment><USER13> An example of a small mind producing a small result.

<comment><USER14> Is the parent post supposed to be self-referential?

<comment><USER15> If it is, then it was a nice hack.</comment></comment></comment>


Causes behind the Bitcoin Price Rally   - <AUTHOR> http://bitcoinweekly.com/articles/causes-behind-the-bitcoin-price-rally

<comment><USER2> Just go into #bitcoin-otc or #bitcoin-pit and act like you want to buy A LOT of coin on Mt Gox, and be a little blasé about it!

Perhaps the reverse is true for lowering the price!</comment>


Trump pushing for Covid vaccine by Nov 1 - <AUTHOR> https://www.centredaily.com/news/coronavirus/article245406245.html <comment><AUTHOR> Obviously Trump doesn't care about vaccines killing people or giving them cancer. All he cares about is getting re-elected. And unfortunately I'm betting a lot of fence-sitters would see this as "he gets shit done".</comment>