Audi claims self-drive car speed record after German test - <AUTHOR> http://www.bbc.com/news/technology-29706473

<comment><USER2> Going fast in controlled, safe conditions is, comparatively, the easiest part of autonomous driving. I'd be more interested when the problem handling gets tested: icy patch in a turn, etc.</comment>


Are You Attending Female Founders Conference? - <AUTHOR> http://www.goldensugarcastle.com/?p=167

<comment><USER2> I'll be there (from The Muse, YC W12 batch) - looking forward to saying hi!</comment>


Actually, Aol Didn't Ask Us To 'Tone It Down' – Moviefone did.  - <AUTHOR> http://techcrunch.com/2011/03/16/actually-aol-didnt-ask-us-to-tone-it-down-moviefone-did-and-their-editor-in-chief-should-be-fired-2/ <comment><USER2> At this point, I don't even care any more. Not to be a whiner, but I don't find this very Hacker News -esque. Nothing to do with hacking, just a bunch of bloggers pointing fingers at each other.

</comment><comment><USER3> So, Paul Carr isn't really thinking it through here with this comment:

      Actually, Patricia, you only have two loyalties: one is to
      your readers and one is to the company that signs your
      paychecks. That's it. You do not – emphatically do not –
      have a responsibility to "stay on good terms" with movie
      studios.

Just like Moviefone has to maintain good relationships with studios, Techcrunch has to maintain good relationships with tech companies, or else its access will be cut off and things will be made difficult for it in many ways. It can burn a source from time to time just for fun, but if that becomes a habit, then it just stops getting scoops and bad things start happening. For example, some hypotheticals:

\- pg stops sending them new YC startup launches

\- startups start actively avoiding Arrington and his reporters and seeking out more friendly outlets, e.g. Startup Foundry

\- some smart startup guy with time on his hands does an investigative report on TechCrunch itself, showing how the post-AOL TechCrunch has SEO'd its headlines to the gills with Bieber and Gaga crap

And in addition to these sorts of perceptible consequences for burning sources (i.e. scoop decline = traffic decline = revenue decline), there is another dimension to this.

Put yourself in the position of the unfortunate PR person for Source Code. Their entire investment of time and effort -- getting the Techcrunch contact, arranging a screening, getting Alexia face time with a mercurial movie start like Gyllenhaal -- went up in smoke when Alexia trashed the Source Code game stuff. [Though you could argue that the movie sort of has higher awareness now as a center of "controversy", this was not the intended outcome.]

The thing is, PR guys are scared of talking to reporters because there are often very large sums at stake that can turn on the whim of the reporter. Anyone who has raised money in the Valley knows that deals can close -- or fall through -- on the basis of a single well timed adverb in a headline.

Reporters are only dimly aware of the economic consequences of their reporting, and their ability to create -- or utterly destroy -- wealth. It's like there is a river of money flowing by them, and they can either reroute it off a cliff or towards an even larger tributary, but cannot actually take a drink from the water.

I'm of course not saying that reporters shouldn't publish negative stories or takedowns, but rather that often they aren't aware of just how bad a negative story can be if it's the top hit on Google. For those who have built something, your heart is in your throat when talking to the first few people who are going to publicly evaluate it -- are they going to trash it to such an extent that you won't even get the resources to improve it? It's at least arguable that an alternative to the tabloidy approach of Techcrunch is the more builder-friendly approach of David Pogue and Walt Mossberg, who generally don't write about things if they're going to trash them (i.e. the sign that they don't consider something that good is a lack of coverage rather than an outright flame).

Finally, sometimes reporters _are_ aware of the economics surrounding press coverage, but in the worst way. Think about what Gizmodo wrote about the stolen iPhone:

[http://www.businessinsider.com/henry-blodget-gizmodo- editor-...](http://www.businessinsider.com/henry-blodget-gizmodo-editor-brian- lams-email-to-steve-jobs-raises-question-would-gizmodo-have-published-iphone- story-if-apple-hadnt-spurned-it-2010-5)

      Gizmodo lives and dies like many small companies do. We
      don't have access, or when we do, we get it taken away.

Make no mistake, access and credibility both have business value to any media company and need to be balanced. Access means good treatment of sources. Credibility means good treatment of readers. If you are only "credible", you are reporting yesterday's news. And if you only have access, you are only reporting airbrushed news. There is a balance, and Carr has to acknowledge that.</comment>


Foodvisor raises $4.5M to track what you eat using AI - <AUTHOR> https://techcrunch.com/2019/11/28/foodvisor-raises-4-5-million-to-track-what-you-eat-using-ai/ <comment><USER2> Curious, what's the business model and where would the investors get their returns from? Is it gonna be cancer like ads, marketing & stalking or do they have an _actual_ business model that isn't a net negative for society?</comment>


Social media influencer plotted to take internet domain at gunpoint - <AUTHOR> https://www.cnn.com/2019/04/21/us/iowa-social-media-influencer-domain-name-trnd/index.html# <comment><USER2> This is pretty much the most poetic thing ever</comment>


Garbage Collection and the Ruby Heap - <AUTHOR> http://timetobleed.com/garbage-collection-slides-from-la-ruby-conference/

<comment><USER2> I'm not fluent in Ruby whatsoever, but I think we need more content like this on HN. Incredibly informative and in depth. I probably won't ever learn Ruby in depth, but I love reading about this type of stuff, learned a lot.

Thanks for the link.

<comment><USER3> thanks, glad you liked the slides.

</comment></comment><comment><USER4> Was this a slidestack from a bit ago? I remember reading a slidestack of yours a couple months back on the same topic, and found it VERY informative.

In any event, keep up the free education! I've learned alot going through your site. Oh, and thanks for some great ruby libraries!

<comment><AUTHOR> This a new presentation specifically about the MRI GC, but it covers some of the same tools mentioned in our Debugging Ruby and Threaded Awesome talks

</comment></comment><comment><USER5> Seriously excellent slides.

Any chance of a video of this talk being released? I'd love some commentary from you guys.

<comment><USER3> yup, it was recorded. not sure when the video will be out, but i'll tweet it or something as soon as i hear.

</comment></comment><comment><USER6> Very cool, detailed slides.

I think his notes demonstrate how wildly the 'optimal' settings for a scripting runtime can vary based on use case - 500K slots in a slab makes perfect sense for rails, but 10K also makes pretty good sense for running ruby from the command line to execute a tiny script.

One thing that caught my eye - I think according to slide 52, at startup a rails app is using over 3625840 bytes of heap just to represent newline nodes generated from source code? Am I interpreting the data right, or is he just counting the actual nodes and not the RVALUEs attached to them? Kind of funny to think about optimizing memory usage in a rails app by stripping out superfluous newlines.

<comment><AUTHOR> You're right, there's about 90k NEWLINE nodes on the heap, and at 40 bytes a piece that's taking up about 3.6mb of slots on the heap that could be used by other ruby objects instead.

Unfortunately, removing newlines from your codebase will not help since NODE_NEWLINE is used for separators like semicolons as well.

Ruby 1.9 gets rid of NODE_NEWLINE altogether by adding a NEWLINE flag to the next node instead. A similar patch will be in the next release of REE.

</comment></comment><comment><USER7> I always learn so much from you and Damato.

<comment><USER3> glad you liked the slides.

</comment></comment><comment><USER8> Whoa extremely informative slides, thanks for those. Alot of stuff in there I had no idea about. I love learning.

</comment><comment><USER9> Sigh. Does anyone have a PDF link?

<comment><AUTHOR> <http://dl.dropbox.com/u/635/gc-export.pdf>

</comment></comment><comment><USER10> It's a pity memprof doesn't support 32-bit linux yet. I would like to try out the method in the slides on my 32 bit machine.

<comment><USER3> working on it.

</comment></comment><comment><USER11> If you haven't, tune the garbage collector for rails. By tuning, I was able to improve the performance of my production application by about 60%.

<comment><USER12> Can you elaborate a bit on this? Did you simply patch the GC? I've seen Evan Weaver's post ([http://blog.evanweaver.com/articles/2009/04/09/ruby-gc- tunin...](http://blog.evanweaver.com/articles/2009/04/09/ruby-gc-tuning/)) on it, but that's it.

<comment><AUTHOR> GC tuning is easy with REE, you can set environment variables to change the behavior of the mark and sweep collector. See slides 50-53 for more info.

<comment><USER12> Thanks for the info! I'll check out REE again.

</comment></comment></comment></comment><comment><USER13> Ruby is known as the slowest and memoryhungriest language in common use today, is there any reason why people should know how it achieves that? How does this advance the state of the art?

<comment><USER14> Uh what? Are you saying some like "X has problem Y, why should anybody study problem Y"?

> and memoryhungriest language in common use today

I think you've never heard of Perl.

<comment><USER15> I didn't realize that Perl was memory intensive compared with Ruby (or other comparable languages more generally).

Any links for that? (Not trolling: I use both Perl and Ruby day to day, and I'm curious. I certainly haven't noticed significant differences in memory usage. Speed certainly - Perl being faster in many cases.)

<comment><USER16> [http://shootout.alioth.debian.org/u32/benchmark.php?test=all...](http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=yarv&lang2=perl). With the exception of one benchmark ruby's memory is about the same as perl's. As for speed usage, ruby is no more than twice as slow as perl for most benchmarks. It does poorly on pidigits because there aren't gmp bindings available for ruby 1.9, and it does significantly worse on regex-dna because perl's regex library is much higher quality.

Both are so much slower than C that a 2x difference is insignificant.

<comment><USER14> Benchmarks don't say anything when it comes to real memory usage. In my experience Perl is a lot more memory hungry than Ruby. All the data structures take so much memory. Defining a single, empty function eats 1.5 KB (!) of memory. I had a Perl program of about 30k lines, and it ate 25 MB during startup, most of which is consumed just by storing the Perl optree. During runtime memory usage would jump to 35 MB as it loads all kinds of data into hash tables and stuff.

</comment></comment></comment></comment></comment><comment><USER17> These slides are _ILL_ bro.

<comment><USER12> Avoiding local slang when writing is also "ill", my brother.</comment></comment>


Mark Shuttleworth sees increased demand for enterprise Ubuntu Linux desktop - <AUTHOR> https://www.zdnet.com/article/mark-shuttleworth-sees-increased-demand-for-enterprise-ubuntu-linux-desktop/ <comment><USER2> It's amazing that Apple seems to be holding on to their grudge against Nvidia... to their own detriment.

You haven't been able to buy a Mac/Macbook Pro with an Nvidia chip for many years now, and using one in an external enclosure is iffy. So data scientists are increasingly using Linux to do their work.

<comment><USER3> Are the embedded NVidia chips really that great for DL? I have a GeForce 150 in my laptop that I keep permanently disabled in Linux to save a couple watts of power. Aside from the GPU generally being weak, my battery would only last for a couple hours if I cranked my CPU/GPU near 100% usage vs 10 hours just editing files via wifi.

Almost all my work requiring a GPU is done by either ssh'ing into my desktop with a GTX 1080 or on AWS. And in that scenario, Linux has less friction (I can migrate setups between home and AWS) and is significantly cheaper than a MacPro.

<comment><USER4> I have a System76 Linux laptop with a 1070 and it works fine for deep learning. I used to SSH into cloud services but decided having a GPU always available locally was worth a little money.

</comment></comment></comment><comment><USER5> > "Previously, those were kind of off the books, under the table. You know, > 'Don't ask don't tell deployments.' "But now suddenly, it's the AI team and > they've got to be supported."

Are AI devs (Data Scientists?) really regarded that much higher by the management compared to the regular devs?

Do you think this is special or is it just the current fad that is large enough to reach the management?

<comment><USER6> Yes I think so. At our place all data scientist/big data types are given high end MBPs and >2 good quality 4K monitors. All other typical IT devs are given a low-end 15W HP laptop and 2 HD monitors again from HP. Low quality Windows machines have been mandated right from top IT leadership. So I think data scientists are important enough if they can override or get exception to standard issue hardware/software.

<comment><USER5> That's interesting, I'm wondering if this happens also to e.g. "Cloud Specialists" or happened to "Object Orientation Specialists" 20 years ago...

<comment><USER6> Maybe. But I think it is mainly due to expensive ass consultants selling management the idea of deriving deep insights out of terabytes of application logs. And since it is about big data so big hardware seems natural to management. Regarding OO Specialists I remember in J2EE heydays stodgy Weblogic/Websphere tools would take 2GB RAM when 256MB was more of standard. So management would approve this configuration for important enterprise projects done in J2EE.

</comment></comment></comment></comment><comment><USER7> >While some users still miss the now-deprecated Unity interface, the GNOME 3 desktop interface has won fans. Indeed, Shuttleworth said, "GNOME kind of saved my bacon, to be honest. Unity was causing a lot of distractions and it was controversial, even though it was good. So, when we decided to retire it, we needed a desktop, and that was GNOME"

This is pleasantly surprising to read. Many were happy to see Canonical drop their homegrown Unity for GNOME, and GNOME has received quite a few performance improvements from Ubuntu devs as a result.

</comment><comment><USER8> Can anyone shed some light into why specifically AI developers prefer using Linux over MacOS? I realize the tradeoffs and preferences between Mac and Linux, but this article calls out AI devs specifically, and I wasn't sure the reason for that.

<comment><USER9> I've been a developer on all three major platforms (Windows, Mac, and Linux). Just my opinion, but I feel these days Linux has the best "developer ergonomics" for backend and systems development.

Granted, I think if you're building native mobile apps and web front-ends, your life is easier on a Mac just by virtue of having access to the same tooling as your design team. But for everything else, it just feels _easier_ to get stuff done on Linux.

Complicating matters is the declining quality of Apple Macbook Pros and their propensity to thermally throttle. They are quite beautiful though! Still, as a 2018 15" MBP user at work, I often regret not getting a T or P-series Lenovo which carry with them their own flaws.

<comment><USER10> > I often regret not getting a T or P-series Lenovo

There is also the X1 Extreme.

<comment><USER11> I currently have the regular X1, but am seriously considering the X1 Extreme as my next laptop. 32gb of ram in a dev machine would be amazing.

<comment><USER12> My T470P from 2017 has 32GB of RAM (Came with 1x16 and I put the other 16 in myself) and it's great.

Can in a pinch do everything on the laptop I can do on my dev desktops.

</comment></comment></comment></comment></comment><comment><USER13> I'm a bioinformatician/data scientist and I'd really love to run Ubuntu on my laptop but I have to use Windows, company policy.

Tbh I'd miss Teams and Outlook (though both are well supported in the browser), I avoid Excel like the plaque anyway because it messes with gene names (sept1 anyone?) and Word/PowerPoint is also ok in the cloud (though the latter gets tedious with animations and complex slides I find).

<comment><USER14> What is your Excel replacement?

<comment><USER13> Python 3 Pandas in Jupyter-lab mostly. But before that I used Origin (it's a a paid product and does not really scale).

</comment></comment></comment><comment><USER15> This site pegged my i9 and spun the fan up. I tried profiling the site, there's tons of garbage and errors in the console and looks like most of the CPU is spent in Teads' code which is some kind of marketing platform.

<comment><USER16> Welcome to the modern web!

I highly recommend uBlock Origin [0].

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

<comment><USER17> Also NoScript.

<comment><USER18> uMatrix anyone?

</comment></comment></comment></comment><comment><USER19> Told you. I've been telling you guys for the last ten years that this year is going to be the year of Linux on the desktop.

When are you going to believe me!</comment>


How going to the gym makes you stronger - <AUTHOR> http://leostartsup.com/2012/01/how-going-to-the-gym-makes-you-stronger/ <comment><USER2> I've been programming and lifting weights for years now, and I can attest to how well they work together. The two times I'm most excited to code are consistently (1) when it's late and I know I should be sleeping, and (2) immediately after finishing a good workout at the gym. Interestingly, I got off to a similar start with both activities:

"I don't know about this, I've always been pretty small guy. I'm not just a weightlifter." "Dude, shut up and come with us."

"I don't know about this, I've always just done design stuff. I'm not really a back-end guy." "Dude, shut up and read this PHP guide."

Easily two of the most transformative conversations I've ever had.

<comment><USER3> I'm a programmer and an athlete as well, and I find that I absolutely cannot code after coming home from the gym, I'm too exhausted to get in a groove.

(My workouts these days are weightlifting ones as well, so it's not that I'm not doing comparable workouts.)

Just want to throw that out there. I still recommend going to the gym, and love it.

<comment><USER4> Obviously don't know much about your situation, but this might have a lot to do with your diet & pre/post/peri workout nutrition. You should never feel exhausted and drained after a workout, but should feel invigorated and alert. Maybe something worth investigating more.

<comment><USER4> As fingerprinter pointed out this isn't _universally_ true, however research (and my own experience) has shown that the main reason people don't feel well after working out is almost entirely due to nutrient depletion and poor nutritional timing. If you go to the gym and do heavy squats at 6:30pm without eating anything since your lunch at 11:00am you are going to feel like absolute shit afterwards. Post-workout nutrition is essential for building muscle and recovery, but making sure to eat a mix of complex carbs, protein, and fat ~1 hour before you workout makes a world of difference for how you before during, and feel after your workouts. If your diet is sound though, and working out still makes you feel so terrible that you don't wish to do it (I'm not talking muscle soreness or the usual reasons people find to not workout) you should definitely consult with a nutritionist or dietitian as something else may be going on.

<comment><USER5> Eating 1 hour before workout hasn't worked out for me. I guess digestion time varies from person to person.

Tasting bile when squatting/deadlifting is really unpleasant.

<comment><USER6> My training involves a lot of ab tightening, so I actually make a rule to separate eating and training by three hours.

 _During_ training, the secret to performance is sugar. Dextrose, to be exact. The CNS can run on ketones, but it works best with ready blood sugar.

<comment><USER5> Is 'ab tightening' done for the obvious aesthetic goal, or is this some assistance exercise routine for heavy lifting?

Google wasn't helpful w.r.t the latter idea.

<comment><USER6> It's necessary to maximise the weight lifted. Some force is transmitted through the trunk as opposed to through the spine and back muscles. The organs are broadly speaking incompressible, but the lungs are not.

Squeezing the abs pushes the organs up and holds them in place, compressing the air in the lungs, creating a more rigid trunk. This stops lifters from having their chest drop down, which will cause a dropped lift or even an injury.

Of course, if you squeeze the gut, the stomach can decide it's time to vomit if you have a lot of food in it. So ... don't do that.

Similarly if you're having lower intestinal disquiet.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER6> For me, the most important lesson from Olympic-style weightlifting is that you can't cram for a competition. No amount of natural talent can make up for failing to invest the hours over the course of weeks, months and years.

I could go on, but I've already put my thoughts into words: <http://news.ycombinator.com/item?id=3431621>

There's a proverbial bit of wisdom that has been attributed to various sources: The will to win is important. The will to prepare is _essential_.

<comment><USER7> For me the first big lesson was that the body really needs time to recover after training hard, and the second was that training "no matter what" doesn't work if you're trying to improve maximum strength. Lifting is a neuromuscular activity requiring maximum activation, and if I'm very exhausted or sleep deprived, I won't be able to train hard enough to matter, so doing a less intense core workout and lift the next day is more reasonable.

<comment><USER6> The Bulgarian system of training is built around daily 1-rep maxes, then backing off for work sets.

The nice thing about it is that this means that if you're having a crappy day, you accept it and train what you can. If you're having an awesome day, you squeeze more out of it.

Learning to give-and-take with your "recovery budget" is definitely an important lesson. I train less hard than I'm capable of because my employers don't pay me to be a zombie.

</comment></comment></comment><comment><USER8> Rock climbing is another thing that is hugely motivating to get more fit and it can be a very regular thing to do if you have a climbing gym nearby that you can go after work.

climbing tends to attract the people that like to solve puzzles because each route is a physical puzzle in how you should contort your body best to get up it. When is the best time to rest on a route if you can? where should take a stance to clip the next quickdraw? am I going to fall and is it going to be a safe fall? is my leg behind the rope and is that going to flip me upside down? You think about everything and nothing all at once. It's amazing.

It also has a very social aspect to it as well because you see the same people over and over again at the gym or local crag and there is a lot of downtime while you are resting. Bouldering is especially communal as people tend to shout out encouragement and help you figure things out if you want it.

Give it a go and you will probably like it.

edit: if you are interested go to <http://www.reddit.com/r/climbing> for more info.

</comment><comment><USER9> The comment about excelling really rubs me the wrong way. I wish he would check finishing times for some local races, see how much the powerlifters at his gym are lifting, or visit a local Crossfit affiliate. Where did he get the idea that it is so easy to "excel" these days? The word can be used without an object, but it is inherently comparative. The gym provides me a lot of satisfaction and physical benefits, but comparing myself physically to other people is a not a benefit but a pitfall. It's the one thing at the gym that can ruin my day. "Why do I come here? I will never be like that guy... or that guy... or that guy." I will never be 6'4" and have an eight-pack. I will never squat 500 lbs. I will never have a killer Murph time (look it up.) I will never qualify for the Boston marathon. Well, that last one I could perhaps do, but only by giving up many other things I value more highly. The impulse to excel argues _against_ working out the way I want, which is to work out three times a week and enjoy the health and appearance benefits.

So I will continue to go to the gym, reap the benefits, and try to keep my impulse to compete in check. Be warned that excelling is not something you simply decide to do as a third or fourth passion. It's best not to compete and expect to win against people whose first priority is fitness when your first and second priorities are something else.

<comment><USER10> I agree that comparing to others is mentally unhealthy. This applies not only to the gym/fitness but all areas of life. On the other hand, measuring progress is a good motivator, and I feel a proper way to do that is to challenge yourself. If you were able to shave X seconds off your mile time, or improve your squat weight by Y pounds, then I feel it is a proper motivating factor as well as one that could assist in keeping your mental attitude in the right place when other facets of your life are troubling.

<comment><USER11> I believe comparing yourself to others can be healthy, as long as you don't let it get out of control. How else do you know what's possible? If your friend is progressing much faster than you, almost certainly he is doing something different than you are. If you weren't keeping track of him as well, you might miss out on chances to improve.

If everyone was just racing against themselves, I really don't know that we'd ever have seen a 4-minute mile.

</comment></comment></comment><comment><USER12> One of the best things I ever did was get a door frame pull-up bar and stick it right next to my desk. Whenever I'm stuck on a problem I hop up and do a few sets of pull-ups. Clears my mind and helps me focus.

For $25 it's a no-brainer investment.

<comment><USER13> Great tip. I have something similar, I have a kettlebell right next to my desk (standup, so don't even have to get up to get it) and a set of rings hanging from the ceiling. My office looks a bit weird, but it gives me a great break.

</comment></comment><comment><USER14> Interesting that this post comes up after I watched the CCC video about depression/suicide and geeks.

I train 5 days a week - Monday to Friday. I'm not being dramatic by saying I'd probably kill myself if I didn't do this. Usually by Sunday afternoon, thoughts start to creep in about how I'm a failure and should just end it now.

I'd love to train 7 days but it's overkill.

<comment><USER6> While exercise is a useful and important tool in controlling depression, if you're having any kinds of thoughts of suicide then seek professional attention _immediately_.

<comment><USER14> Thanks for the concern. I already see a psych once a fortnight. Just so it's clear, nothing I said was a cry for help or suicide threat.

<comment><USER6> I'm glad to hear that. However as you probably know, suicidal ideation (aka thinking about or imagining suicide) is a serious symptom.

Again, I'm glad to hear you're getting help.

Anyone else with these symptoms should seek help, you're not alone.

</comment></comment></comment></comment><comment><USER15> I wish I knew how to express my dismay at the pointlessness of this article and its presence on the front page without being down modded.

"Regular exercise has psychological benefits."

This is news? Give me a break.

</comment><comment><USER16> Great post. I like how this talks about the other ways going to the gym makes you stronger.

I've been falling into a similar second-day routine, though some weeks I try to go every day (and it usually doesn't go that well.) What is the best/most effective routine to get into? Every second day? Five days a week?

<comment><USER17> It depends what your goals are and what kind of shape you're in to begin with, but rest is important. If you've been working out for a while, the generally accepted wisdom is that you should have 1-2 rest days each week, though in my experience you can maintain pretty well and even see gains with just a couple of workouts a week.

</comment></comment><comment><USER18> My gym time is diminished because a year and a half ago I moved a considerable distance from where I then worked, and still a bit further from where I now work.

However I typically run 6 miles a day during the week at around 9PM, which serves the same purpose.

What it really comes down to me is a few things:

1) It forces me away from the computer for about an hour a day. 2) It clears my head from the day, and prepares it for tomorrow. I find that also helps me sleep better as I'm not cycling through things in my mind. 3) It is good exercise. I've never been fat, but it keeps me fit and that in and of itself makes me feel better

I think mostly its just something that doesn't require me to be wired in and hyper vigilant while doing, which I feel managing/coding/reading/hacking does.

</comment><comment><USER4> Great article, I have been meaning to write something similar to this myself! I became a health & fitness nut about 5 years ago, and though developing and designing is my biggest passion in life, working out and bettering myself physically is a close 2nd. Every day I work knowing that an awesome workout session is coming right after has done wonders for keeping stress levels down, helping me sleep well, and making me focus more during my workday. Having the gym after a crappy day of work DOES make the day turn around, and if you have a great day of work and a great day at the gym afterwards it makes for one HELL of a good day!

</comment><comment><USER19> Don't forget to work on flexibility too: "the key to youth". I actually picked up a foam roller a few weeks ago to use on my recovery days and it's been a great supplement to weight training. Helps with recovery, prevents injury, increases mobility... the list of benefits is huge and it's really an investment in your future health. After all, who wants to sit be old and sit around when you could be out running a marathon, hiking, or something extreme?

</comment><comment><USER20> Anyone (like myself) thinking of looking at joining a gym, this article is a great lesson into what (not) to do.

[http://www.mensjournal.com/everything-you-know-about- fitness...](http://www.mensjournal.com/everything-you-know-about-fitness-is-a- lie/print/)

HN Discussion here - <http://news.ycombinator.com/item?id=2287213>

</comment><comment><USER21> I'm a competitive powerlifter, and to me the most awesome thing about going to the gym on a regular basis is that nothing I come up against in a normal week is going to be as hard or as mentally taxing as what I do in the gym. It's helped me put my life in perspective and to realize that no matter what happens outside of the gym, it's nowhere near as hard or as awful as it seems.

<comment><USER22> I'm the complete opposite. Early in college I got into powerlifting for fun (not competitive). Once I got into the working world, my days got harder and my energy disappeared. Getting up at 5 to hit the gym made it really difficult to get involved with what I was working on all day. I tried switching to going at night, but the thought of working all day then hitting the gym was unbearable.

I'm really glad you see it as the hardest challenge of your day and are able to keep that mindset all week, I really wish I could do that. Instead for me, it's just one more taxing and brutal aspect of my day. I love my job and I love lifting, but for me it's one or the other...

</comment></comment><comment><USER23> This article does not only talk about being strong because of the muscles being built during gym session. It also speaks about dedication and strong determination to get into the target. This tells that focus is necessary to achieve those things we want to achieve. Gym session does not only build muscles but the whole personality perspective as well.

<comment><AUTHOR> Hey Mitchie, great to see you here and thanks for the kind words. Yes, that is absolutely what I tried to put across, making yourself stronger as a person and not at all focusing on the aspect of gaining muscle or losing weight. Making it a habit can be far more powerful I believe.

<comment><USER24> Just to give you a heads up, you spelled weight incorrectly in the third to last paragraph. Great article!

<comment><AUTHOR> Thanks man, fixed! :)

</comment></comment></comment></comment><comment><USER25> Another advantage of hitting the gym is that there is plenty of evidence linking cardio fitness to brain functioning.

[http://scholar.google.com.ar/scholar?q=cardio+fitness+brain&...](http://scholar.google.com.ar/scholar?q=cardio+fitness+brain&hl=en&btnG=Search&as_sdt=1%2C5&as_sdtp=on)

<comment><USER26> I did a little investigation on the matters.

The key ingredient here is BDNF: [http://en.wikipedia.org/wiki/Brain- derived_neurotrophic_fact...](http://en.wikipedia.org/wiki/Brain- derived_neurotrophic_factor)

It is produced when exercising, either cardio or anaerobic.

And as a side note - prolonged cardio is detrimental for health. It puts body into inflammation state (inflammation markers are present in blood of those exercised daily about 90 min with medium to high intensity). You have to have to do resistance training to make hormonal levels more balanced.

So the best training for mind is an interval training.

</comment></comment><comment><USER27> Another parallel I've experienced with going to the gym and coding is that its far more fun doing it with somebody else. You work out harder, and push yourself in a better way than doing it by yourself - something I've found also while I code.

<comment><USER13> I don't go to the gym with someone, but there is a big group of people there when I go, and we all know each other. I particularly like that we all have different jobs and come from different backgrounds. Like you mentioned, we all push each other, but more important to me is I get some time talking with non- engineers everyday.

</comment></comment><comment><USER28> Ever since training for triathlons (mainly HIM and Ironman), my business life (and personal life) has never been the same. Highly recommend this.

</comment><comment> guard-of-terra Is there a way to get by without going to the gym?

The whole idea is loathsome to some people including but I expect not limited to me that think a sentient being investing in its meats is infeasible. Boring, too.

<comment><USER29> Do whatever exercise works for you. For some it'll be lifting weights in the gym, for others it's something else. I've tried the gym but it didn't really work for me. I enjoy mountain biking, running and for a long time went swimming every lunchtime. Those activities just worked better for me. Someone was suggesting climbing which is another good activity if you want to involve your mind as well as your body.

You'll still get the benefit of being away from your work for a short while, doing something physical and focussing on improving at something else.

<comment> guard-of-terra I personally like hiking, swimming and long walks. I'd like to see whether that can really produce any results and how to optimise it.</comment></comment></comment>


Ask HN: How/Where do you host your webapp? - <AUTHOR>

What is the best way to host a webapplication?
What are pros cons of hosting in the cloud vs hosting on your own servers.
Is it a lot of work to host on your own?
What services do you recommend for hosting your application elsewhere? Google Appengine is the most famous option I guess, what do you think about that?
I also looked at slicehost: https://manage.slicehost.com/customers/new?referrer=40156bada03f0adc4fae89abdce4693c
256 slice  	$20.00  	10GB  	100GB Exactly how much is that? Seems cheap but how far does 100GB go?
Other tips? It seems an obvious choice for me with no real knowledge of hosting my own server to choose to host in the cloud. <comment><USER2> "Exactly how much is that?" Good question, no answer. I recommend you get some sort of a network byte counter, then go to a few sites that feel similar in size/scope to what you plan. Use their "bytes per visit" as a ballpark figure.

For instance, I'm using Safari and turned on the "Show Network Timeline" then reloaded hacker news. 34kB. Then I went to slashdot.org: 643KB for a first visit, probably more like 74KB for subsequent front-page load (scripts are the bulk but they cache).

If you use a VPS solution, you will be managing your machine which is nice, but if you aren't already skilled at that it will be a distraction from your webapplication that you might be better without.

The big question with VPS solutions is "how fast is my machine today?" I have a tiny slice at VPSlink that used to be nicely snappy, but now is painfully slow. Something outside my visibility has changed on my server and there is nothing I can do. My slightly cheaper server at RapidXen is much faster.

Slicehost guarantees CPU share based on your slice size, but I don't see the denominator, I assume since a nearly 16GB slice is available that is the denominator which would give you 1/64th of the machine, worst case. Disk IO is another thing entirely, 1/16th of a modern CPU is ok, 1/64th of a disk drive spindle is painful. I suspect that is why my VPSlink machine has become slow.

Money can mitigate some of this, just buy a bigger slice. Mine are tiny because I am interested in how much I can do in a ~$7/mo server.

</comment><comment><USER3> slicehost is a wonderful place to stage your app and grow it until you need to break out, imo.

i host around 10 apps and sites on a 256 slice. its plenty if you're not getting too much traffic and optimize correctly so that you don't see thrashing.

if you don't like that, though, you can boot up a server on EC2.</comment>


Mozilla Files Cross-Complaint Against Yahoo Holdings and Oath - <AUTHOR> https://blog.mozilla.org/blog/2017/12/05/mozilla-files-cross-complaint-against-yahoo-holdings-and-oath/ <comment><USER2> Yahoo is suing one of the internet's good guys. SAP is apologising for suing it's customers (Diageo). Oracle, well they have been known to retain the odd lawyer. When you go to court it should be a last resort. When you go to court everyone loses. I think this kind of case is so damaging to Yahoo. I hope Mozilla wins a huge sum

<comment><USER3> Since where Mozilla is the good guy?. In fact, since Mozilla fired one of the founders for political reason, Mozilla is turning from bad to worse: a) Is breaking plugins just for the good of change. b) The browser is bloating more and more for each new version. c) Is adding new features that never asked for.

Developers aren't happy, customers aren't happy and now, partners aren't happy. Google is happy.

<comment><USER4> Mozilla has always been the good guy, but only sometimes for technical reasons. They have been the good guy for their constant fight to keep the web open. They are the only for profit company that I happily give the benefit of the doubt.

<comment><USER5> Well, and they're hardly "for-profit". The Mozilla Corporation technically is, but the Corporation is wholly owned by the Mozilla Foundation, which is legally a Non-Profit, so is forced to invest their money into their specified mission.

Therefore if the Corporation makes more money than they feel like investing, they either have to put it aside for later investments or pay it out to the Foundation, which is then legally forced to invest it.

The only real thing where they could shove money to the side is with paying their workers too high wages.

</comment></comment></comment></comment><comment><USER6> Good. I hope they get that $1B from Verizon and that it goes towards making the Internet even better. Knowing Mozilla's reputation, I'm confident that it will.

<comment><USER7> Could also go bankrupt before the suit is decided.

( _cough_ Netscape _cough_ )

<comment><USER8> I'm not sure why this is downvoted. Isn't this a realistic concern when it comes to these types of lawsuits?

<comment><USER7> I mean there were 2 more years left in the deal IIRC? (2014-2019). 750M more or less probably means quite a bit to Firefox development. If it gets killed in the marketplace before the money ever shows up, getting it then might be a bit late to save the browser landscape.

</comment></comment></comment></comment><comment><USER9> Relevant discussion from last year regarding Recode's interpretation of the original contract: [https://news.ycombinator.com/item?id=12050374](https://news.ycombinator.com/item?id=12050374)

The confusing part, as pointed out in the top comment in the post, is that the contract as interpreted by Swisher would certainly be material enough to be mentioned in Yahoo financials. However, the Yahoo filings at the time gave no such indication of this obligation.

<comment><USER6> Related discussion here about the contract termination 20 days ago: [https://news.ycombinator.com/item?id=15711002](https://news.ycombinator.com/item?id=15711002)

</comment></comment><comment><USER10> Quite a situation. Mozilla has basically one paying "customer" and it can only be one of two search engines.

The concern here would be if they burn bridges with Yahoo, than they have less negotiating leverage with Google.

I forget, is Yahoo search based on Bing, or is it the other way around, or is that deal dead?

<comment><USER11> Mozilla could go to DuckDuckGo, Bing, Ask, etc or a mix of search engines varying by country, a bidding process isn't unheard of (Opera did this).

<comment><USER12> Why would they go to DDG instead of directly to the source (Bing)?

<comment><USER13> DDG has a stronger commitment to privacy. That said, DDG will almost certainly be outbid by other companies, and DDG will probably face problems scaling to that many users.

<comment><USER14> It's not only the scaling as a technical problem, but also scaling their Microsoft/Bing relationship.

DDG is effectively outsourcing the search infrastructure to Bing, which puts it in a precarious position.

If DDG becomes the default in Firefox, will Microsoft accept the increased traffic or exposure? Will they keep their current commitment to DDG?

<comment><USER15> Can you provide source of the claim that DDG search is 'outsourcing the search infrastructure Bing'? This appears to be a regular claim, but as far as I know, DDG buys search data from multiple parties, including Bing, Yandex, and many others. They have their own web crawler as well.

<comment><USER14> Because outside of Russia's Yandex that works well only in Russia and China's Baidu that works well in China, there's no other alternative. That " _etc_ " in your sentence is not an "et cetera".

Bing is the only game in town for Google alternatives.

Here's a sample of what can happen: [https://www.theregister.co.uk/2017/08/15/bing_microsoft_duck...](https://www.theregister.co.uk/2017/08/15/bing_microsoft_duckduckgo_outage/)

<comment><USER15> According to the Wikipedia page at least, DDG claims to have 400 sources and their own crawler. Etc definitely applies.

<comment><USER16> If you look at the info page by DDG cited in Wikipedia, it'S over 400 sources for the "instant answers" section, not the normal search results, and the phrasing is at least unclear if their own crawler contributes to the normal search results. [https://duck.co/help/results/sources](https://duck.co/help/results/sources)

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER17> was there some detail around what they didn't live up to in terms of their contract?

<comment><USER18> maybe this? [https://www.recode.net/2016/7/7/12116296/marissa-mayer- deal-...](https://www.recode.net/2016/7/7/12116296/marissa-mayer-deal-mozilla- yahoo-payment)

<comment><USER19> > According to the change-of-control term, 9.1 in the agreement, Mozilla has > the right to leave the partnership if — under its sole discretion and in a > certain time period — it did not deem the new partner acceptable. And if it > did that, even if it struck another search deal, Yahoo is still obligated to > pay out annual revenue guarantees of $375 million.

Wow. What a phenomenally bad deal that was for Yahoo and Marissa Mayer

<comment><USER20> Why would they go with that deal. How did anyone at Yahoo read that and said "Great, let's do this".

Was it desperation - "If only we could put yahoo search in front of all those firefox users, yahoo will prosper again". Sadly I do imagine someone saying that. People who would disagree probably jumped ship a long time ago.

<comment><USER21> Pretty much a standard clause. Put it in your supplier contracts! You want to protect your product from degrading by changes in your supply-chain.

Bankruptcy or a new owner of your supplier may change their product so significantly that you want an immediate out without having to keep your side of the obligations. The supplier just restates with that clause that they won't change the product drastically and what that product is exactly is specified in the rest of the contract.

</comment></comment></comment></comment></comment><comment><USER22> Would love to see a browser ask which search engine to use at at first launch and at every major version update. The list could be randomized as to not favor any.

<comment> james-skemp Am I crazy, or did Firefox or some other browser do this around a decade ago? Maybe Opera or Avant Browser, back before money deals were made?

<comment><USER23> Sounds familiar. Chromium (not Chrome) still asks on first use but IIRC defaults to Google if you ignore it. IE (8, I think, whatever came with Win7) offered an option at first run but I've never had the options page actually load, so it defaults to Bing/MSN.

</comment></comment></comment><comment><USER24> If you follow me on Twitter (@yuhong2), you probably have seen my recent discussions with BrendanEich on Google, Mozilla, and the debt-based economy. I even attempted a debt diagram. The government shutdown may hit this week, making it a good time to discuss.

<comment><USER25> I'm not on Twitter. You want to share some quotes?

<comment><USER24> Just search for @yuhong2 @brendaneich and you will see most of them.</comment></comment></comment>


Digg Gets A Major Makeover - <AUTHOR> http://www.techcrunch.com/2007/08/27/digg-gets-a-major-makeover/

<comment><USER2> I like the new layout. If I had some criticisms, I think the design is a little too cluttered. Also, when there is a video posted on the homepage, my eye goes right to the video instead of the news. Therefore, it should be separated. I am sure the reason why the wanted to combine it was that the video page was getting far less views than the news page. Most people submitted videos to the news page to get the most hits. This design also gives room for more ad space.

</comment><comment><USER3> whats digg?</comment>


Did James Damore really deserve to be fired for what he wrote? - <AUTHOR> http://www.nydailynews.com/amp/opinion/google-wrong-article-1.3399750 <comment><USER2> It's a valid question, but Singer gets the answer wrong.

This is politics, not science.

1) Biology is a red herring. There's a huge chasm between any supposed biological difference, and an actual model that can predict what proportion of employees should 'naturally' be male or female.

Then there are culture issues (which are likely much larger than any biological ones, after all countries like India have roughly 50/50 representation without needing special intervention).

Then there are bias issues.

To leap all the way from some small (debated) physiological differences to suggested HR policy in a single bound speaks more to politics than science.

This requires primary research, not memos and hyperlinks.

2) Damore takes his selection of gender research and then generalises to _all_ forms of diversity... even accusing diversity programs of "lowering the bar", which is incorrect and damaging to his colleagues hired through those programs.

</comment><comment><AUTHOR> This is written by the somewhat famous moral philosopher Peter Singer[1].

[1] [https://en.wikipedia.org/wiki/Peter_Singer](https://en.wikipedia.org/wiki/Peter_Singer)</comment>


Canvas Visualizations of Sorting Algorithms - <AUTHOR> http://www.nihilogic.dk/labs/sorting_visualization/

<comment><USER2> I get "Error on page" and the "render" button appears to have no effect. Running on a guest machine with some version of IE7, I think.

<comment><AUTHOR> IE does not support the <canvas> tag. There are some work-arounds for this, I don't believe this page uses any of those.

<comment><USER2> OK, and fine with my elderly FireFox.

Very good indeed.

Cross-reference with <http://news.ycombinator.com/item?id=555971></comment></comment></comment>


The Open Fund - <AUTHOR> http://theopenfund.com

<comment><USER3> Looks good, but it's unclear from the website where they're located - <USER2> appear to be Greece? It may benefit them to make that clear, not least since it would affect the legal environment.

<comment><USER4> Yes, many of the founders are based in Greece (not sure if that is where it is structured though).

I met them during Startup Weekend Athens, very impressive and fun group. They are fighting an uphill battle with cultural vs. entrepreneurship. Will be interesting to see where they go!

</comment></comment><comment><USER5> From <http://www.kcorax.net/ofsite/Process.aspx> seems like they offer €20k-30k for 20% share. A bit excessive, no ?

</comment><comment><USER6> Why to trust them when there is YC?

I cannot see any name (PG) or other advantages (the Valley) I would combine my startup with.</comment>


Gitlab and Code Hosting Services in China - <AUTHOR> https://paraditedc.com/2019/11/07/pdc-9-gitlab-and-code-hosting-services-in-china/ <comment><USER2> It's interesting to me how much Gitee plays up the nationalism angle. All the quotes by tech figures that Gitee puts on their homepage to advertise itself emphasize how Gitee is a _Chinese_ product that will help _China_ 's technology scene and make _Chinese_ developers proud.

<comment><AUTHOR> Well, their big selling point is that the interface is localized _in Chinese_ , which is only really relevant to Chinese developers whose English is not that good and who mostly interact with the Chinese technology scene. That they're hosted in China is also quite relevant for the speed comparison with GitHub.

So I'm not really seeing the nationalism angle here. Except maybe for the DCloud CEO, who complains that many good Chinese products aren't taken seriously due to a preference for foreign ones. I guess he's also not-so- subtly hinting that DCloud is another of those good products.

<comment><USER2> That's fair; on a second reading it's not as chock full as my first glance, but I still definitely feel it's there.

Some choice quotes in addition to DCloud's CEO:

作为国内Git产品...本地技术力量雄厚

一起努力,越来越好,为中国技术人群更多更贴心的服务

而它更吸引人的,是开放的姿态和优质的本土化基因。告诉世界:我们在自豪地使用Gitee! (I suppose this really hinges on who you think they're talking about when they refer to the world)</comment></comment></comment>


The Internet Is Better When Decentralized and Neutral - <AUTHOR> https://choosetoencrypt.com/uncategorized/making-the-internet-decentralized-neutral-creates-better-user-experienes/ <comment><USER2> This is a shill post for malware [0]. I'm clearly being brigaded by the poster but it is imperative that people NOT visit this link! This poster/site/company distributes malware!

[0] [https://malwaretips.com/blogs/remove-www-searchencrypt- com/](https://malwaretips.com/blogs/remove-www-searchencrypt-com/)

</comment><comment><USER3> > "these companies could be inserting bias into their algorithms that then > affect accessible content."

Even if we ignore intentional tampering, even unintentional edge cases in AI will be dangerous for people in relation to large companies.

For instance, if 2B+ people are using Facebook, and Facebook has some trained ML algorithm that is 99.9999% accurate, that is still 200K people that might get incorrectly "categorized" per incident.

Now start compounding these 200K people with AI that produce an echo-chamber "oh this person likes X, therefore we should show them Y." Which then eventually becomes "They are looking at Y, therefore they must be like X."

These people, even if they try, won't be able to escape the self-reinforcing algorithms. So once they are __accidentally __categorized as a "bot" or "fake" or etc. it'll get worse.

Now, when these people request human help from call support (if such a thing even exists), before the rep even gets on the call the system will see this "thing" has been flagged and therefore should be pushed back in queue and let better customers be prioritized.

These people will be forgotten, tread upon, and never be able to escape their accidental categorization. This is what I call "the lost generation", and they will only grow in numbers over time as the compounding happens, and they will strike back.

How do we prevent such systems? I've written a pretty long article on over at [https://hackernoon.com/a-new-kind-of-social-network- emotiona...](https://hackernoon.com/a-new-kind-of-social-network-emotional- intelligence-e45dcddb1bdb)

And, we've created tools to build a P2P/decentralized internet, over here: [https://hackernoon.com/so-you-want-to-build-a-p2p-twitter- wi...](https://hackernoon.com/so-you-want-to-build-a-p2p-twitter- with-e2e-encryption-f90505b2ff8)

It is as if IPFS + Firebase had a lovechild. :)</comment>


Types as axioms, or: playing god with static types - <AUTHOR> https://lexi-lambda.github.io/blog/2020/08/13/types-as-axioms-or-playing-god-with-static-types/ <comment><USER2> One corollary about using positive space is that you realize we overuse booleans a lot. I routinely use a lot of boolean logic in my JavaScript and TypeScript code. I use it to decide when to display a component, when a component is being hovered, when it's odd, etc.

Recently I wrote a simple tree walk interpreter and had to implement boolean unary negation:

         (UnaryOp::Not, Value::Bool(r)) => Ok(Value::Bool(!r)),

Why is this line important? Well it's quite possibly the first[^1] time I have used the boolean negation (!) operation in Rust!

Turns out, when you have proper enums, booleans aren't the best tool. Something like `isLoading` can now be `data LoadingState = Loading | Success`.

Why is that better? Well if you want to add a third or fourth state, it's trivial.

         data LoadingState = Loading | Success | Failure

You can even give it data to pass along

         data LoadingState a err = Loading | Success a | Failure err

Turns out you can have a lot more states than two. Often times in the equivalent boolean case you end up with a couple booleans: isLoading, isError, etc.

But then you end up with invalid boolean states! Like isLoading = true, isError = true. Huh? By making a multi-state type, you can restrict to only the possible states.

[^1]: Meh actually more like 5th but you get my point

<comment><USER3> I fully agree. Not only is it easier to extend, it also makes reading the code so much easier and prevents mistakes, whereas for booleans you have to rely on variable names and hope to not pass them around wrongly.

</comment></comment><comment><USER4> This reminds me a lot of Parse, don't Validate (by the same author, apparently): [https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t- va...](https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t-validate/)

I think there's another reason to make invalid states inexpressible in the type. When you need to change existing code (perhaps years after it was first written) in a way that breaks key assumptions, you find that the current types don't allow expressing that change. This is a good warning sign that other code will need to be updated to take the new states into account. Without the type enforcing that invariant, it might have been much harder to tell that this particular change (out of all the changes you make over the years) is the one that breaks a key assumption. (A key assumption that might have been forgotten by now!)

Types become a message to your future self.

</comment><comment><USER3> I find it a bit strange - the example of "a list with an even number of elements" can be modeled in typescript as well (simply using a list of tuples with two elements).

The distinction of the two "views" does not make much sense to me. In Haskell when doing `data A = X | Y` also "restricts" `A` to X or Y.

However, as much as I like and appreciate Haskell's typesystem, I find union types very powerful. All the reasons for not have subtyping in Haskell always drill down to problems with type inference or other "practical" issues that seem to be fixable by a more advanced compiler or by accepting some inconvenience - but maybe someone can enlighten me?

Also, being able to do `type X = A | B; type Y = C | D; type Z = X | Y` is very powerful and helps a lot when using code to describe business requirements without having to use wrappers and dealing with the overhead that they bring. Even more so when a typesystem is so powerful that it can express a pattern match on some type `Z` and do: `if(NOT A) ... else if (A) ...` while checking exhaustiveness. I wish more languages would adapt this.

<comment><USER5> As the author says, this distinction is mostly arbitrary and 'philosophical'.

The (arbitrary, 'philosophical') difference between Haskell's `data A = X | Y` and TypeScript's `type A = "X" | "Y"` is that the TypeScript values "X" and "Y" already exist (they're strings). Functions which produce and consume these values already exist: there are certainly many functions which act on `string`, and perhaps there are silly examples which produce such strings too, e.g. a 2D geometry library which uses them to represent axes.

> without having to use wrappers and dealing with the overhead that they bring

I think part of the author's argument is that including such wrappers in our values can sometimes be useful, to convey more information about the domain. As an extreme example, we can represent pretty much everything in number theory using `int`; e.g. the fundamental theorem of arithmetic tells us that `int` is equivalent to `prime[]` (and of course Euclid proved that `prime` is equivalent to `int`), but it's probably more useful to use the second representation, even though it introduces wrappers and overhead.

As a more sensible example, I prefer Haskell's `Maybe` type compared to the "nullable types" offered by some languages, since the latter loses all structure: `Just Nothing` represents a different failure case to `Nothing` (and we can easily collapse them using `join`), whilst `null` doesn't provide that distinction.

<comment><USER3> > I think part of the author's argument is that including such wrappers in our > values can sometimes be useful, to convey more information about the domain.

And I think that is why the article, while in general touches a very interesting topic, leaves a bad aftertaste for me.

It makes it sound as if one method is better than the other - almost like "union types take away your power, better do it like this". However, both approaches have their place.

> As a more sensible example, I prefer Haskell's `Maybe` type compared to the > "nullable types" offered by some languages, since the latter loses all > structure

And you just gave a very good example. The two are not the same by any means and I am happy to be able to work in a language that has a Maybe type in the standard library. The classic example is having a map where querying by a key might or might not return a value of type A. Because A can also be null/none, without a Maybe type, this cannot be properly expressed without losing information.

However, and I really want to emphasize this: union types _can_ emulate sum types like Maybe. Simply be creating a wrapper and using it. I.e. creating two unrelated classes/structs Just and None and then defining

      struct Just A = ...
      struct None = ...
      type Maybe A = Just A | None

There is Maybe, emulated by union types.

The other way around is not possible though. Using Haskell#s capabilities, it is not possible to emulate Typescript's (or other language's) union types, which I find very sad. They are a useful thing to have. The only thing that might come close is Haskell Liquid and some fancy typelevel programming machinery to emulate union types.

</comment></comment></comment><comment><USER6> This was interesting but it seems to me that if you really want your type system to let you do everything you might reasonably want to do but also to catch any errors you could reasonably expect it to, you not only need a concept of subtype, you need to be able to tell your compiler that a function that can handle mutilple types can return different types based on the type passed in.

For example, let's say I have a square root function that will happily handle real or even complex input, and I will want to pass it's output to another function that only accepts real input. Maybe I'm asking too much from life, but it seems to me that I need to tell the compiler that if I pass in a nonnegative real input, I'm getting a nonnegative real output. AND I need to be able to assure my compiler the number I'm passing in is a nonnegative real.

<comment><USER3> You are right and it seems you have a very good gut-feeling about these things! :)

What you describe is commonly called a "(value) dependent type system". There are languages that support this, e.g. Idris which was specifically built for that: [https://www.idris-lang.org/](https://www.idris-lang.org/)

Here is an example where the printf function is built purely in Idris: [https://paulosuzart.github.io/blog/2017/06/18/dependent- type...](https://paulosuzart.github.io/blog/2017/06/18/dependent-types-and- safer-code/)

The compiler will parse the input string such as "some number %d and a string %s" at compile time (!) and assess whether the following arguments passed to printf satisfy the shape of the string.

</comment></comment><comment><USER7> My favorite real world example of how you can use these techniques to reduce bugs:

        -- Bad.
        data Session = Session
          { authenticated :: Bool
          , challenge :: Maybe Challenge
          , userId :: Maybe UserId
          }

        -- Good.
        data Session
          = Unauthenticated
          | Authenticating Challenge
          | Authenticated UserId

(Credits to my friend Arian for the example [1])

The first type permits a value like `Session { authenticated = True, challenge = Challenge "<some challenge>", userId = UserId 1 }`. That's a nonsensical value which doesn't make sense in terms of the business logic.

Generally, when you have types which permit values like this:

\- Someone (you or a coworker) will eventually write some code that constructs such nonsensical values.

\- This means that you need a lot of tests to ensure that all code using this type works correctly when given such nonsensical values.

By using the second definition of `Session`, you don't have to worry about this at all. Nonsensical values can never exist so you will not accidentally construct them. Therefore you need less tests to ensure your code is correct.

\- - -

For some reason, people are really keen to get into code like this when boolean flags are involved. Consider the following code (this time in Python):

        from dataclasses import dataclass

        @dataclass
        class Options:
            connect_tls: bool
            verify_cert: bool
            some_other_setting: int

It does not make sense to have `Options(connect_tls=False, verify_cert=True, ...)`. There is no certificate to validate when you connect without TLS.

(This generally happens when someone is tasked with implementing the `verify_cert` option. They see the existing options type, the existing flag for `connect_tls` and just add a second boolean.)

When I review code like this, I generally advocate for using Enums:

        from dataclasses import dataclass
        from enum import Enum, auto

        class ConnectionOptions(Enum):
            # Could also be: `PLAIN = 'plain'` or `PLAIN = 1`
            PLAIN = auto()
            TLS_UNVERIFIED = auto()
            TLS = auto()

        @dataclass
        class Options:
            connection_options: ConnectionOptions
            some_other_setting: int

It's almost the same safety level as in Haskell (although the Enum has a default serialization, which you need to think about e.g. when you store it in a database).

[1]: [https://twitter.com/ProgrammerDude/status/124908893689234637...](https://twitter.com/ProgrammerDude/status/1249088936892346371)

</comment><comment><USER8> The TypeScript EvenList<T> type at the end does not work as the author is implying.

[https://www.typescriptlang.org/play?#code/C4TwDgpgBAogbhAdgG...](https://www.typescriptlang.org/play?#code/C4TwDgpgBAogbhAdgGQJYGdgB4AqA+KAXigG0BdKAH1JwBoo7YEUNt8yBuAKC4GMB7RJigAjAFxMkaTFkQBXALYiIAJwLESARloAmTn0HCAhhPhTWsxcrVFS2nbQDMtACz6gA)

I am not a TS type expert by any means, but I don't believe it's possible to express an even list in TS's type system.

But with that said, I enjoyed the article and I agree with the points its making.

<comment> lexi-lambda I (the author) did not imply that the definition of EvenList I gave would admit [1, 2, 3, 4]—it only admits [1, 2, [3, 4, []]].

Indeed, this is the _whole point_ of the second half of the blog post: you can enforce lots of invariants by modifying the way you represent your data, at the cost of having to write some additional code to work with your alternative representation. Reread the conclusion.

<comment><USER8> Yup, my bad. Thanks for poking me.

</comment></comment></comment><comment><USER9> What the article describes is a simple consequence of the Curry-Howard equivalence, that function types correspond to logical implication, and constructors are just a special case of function types.

<comment><USER5> I wouldn't say it's a "simple consequence" or "just" this-or-that. Yes, Curry- Howard gives us a logical perspective on our code; but there are still better and worse ways to represent things from a logical perspective.

For example, we could reframe the author's point from the logic side, and complain that lots of mathematics suffers from defining things as sets-with- contraints, when it may be simpler to follow a more algebraic approach.

<comment><USER9> Actually, my aim was to give a broader perspective and draw attention to the fact that the inference rules as presented in the article are not limited to constructors, but can apply to any function. Thinking in those terms, you want to give functions a return type that matches the guarantees you want the function to give the caller (and argument types that match the guarantees the caller should give to the function). Furthermore, it means that using types in terms of a deductive system is not restricted to languages with ML/Haskell- like data constructors, but generally useful in any statically-typed language that supports user-defined types.</comment></comment></comment>


An Android app that generated $150,000 in a month - <AUTHOR> http://www.androidguys.com/2011/02/09/paid-apps-pay-150k-month/

<comment><USER2> Android is (very) slowly starting to pick up. My apps have just started to bring a little more than $10k/month, from ads alone, while I have friends with million-dollar apps on the iPhone who haven't passed the $30k mark on the Android with the same PAID apps after a whole year. On Android, you have to build trust, even a user base (if you're not Angry Birds) before launching a paid product. Quality must be top-notch from day one, and god-forbid your app doesn't work on one device and some upset user "rewards" you with a first 1 star-review. I've seen countless apps being pounded for small issues at launch.

Long story short, if you want to make money with Android, you need to have loads of patience :-)</comment>


Is your company worth anything? - <AUTHOR> http://delputnam.com/2009/10/is-your-company-worth-anything/

<comment><USER2> >1) it's technology, 2) it's customers, or 3) it's revenue

its. its. its.

<comment><USER3> What an embarrassing mistake. Thanks for the tip. It's fixed now.

<comment><USER2> you're more than welcome. thanks for being nice about me being a grammar nazi :)</comment></comment></comment>


Rocket Pack launches the first HTML5 Facebook game - <AUTHOR> http://www.warimals.com/

<comment><USER2> FYI, this is the first game built with Rocket Engine (discussed here previously: <http://news.ycombinator.com/item?id=1663544>)</comment>


On Killing Tanks - <AUTHOR> https://mwi.usma.edu/on-killing-tanks/ <comment><USER2> You don't necessarily need to kill tanks, just make them hide. The NATO air mission against the Serbs [0] in 1999 only destroyed 93 out of 600 Serbian tanks but had the effect of preventing the Serbs from using them effectively. This helped level the playing field between the well-trained Serbian army and the Kosovo Liberation Army.

After the surrender, when the Serbs drove their undamaged tanks home, the "look how many you missed" attitude missed the point. They were undamaged because they had effectively suppressed, and hidden in underground car parks, etc.

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

<comment><USER3> It did not destroy 93 tanks.

The wiki page you link even spells it out. They air campaign destroyed an order of magnitude less, maybe even as few as 3 tanks. They hit decoys or fuck all. Far from levelli g the playing field ethinic cleansing rate increased as the air campaign was waged.

The Kosovo air campaign was one of the most total an utter failures of recent times yet people still try and paint it as a success. Unbelievable.

<comment><USER4> How can it be called a failure? It achieved it's goal: Serbs were on the brink of defeating Albanians and totally cleansing Kosovo before it started, and ended with Yugoslav defeat and Kosovar independence (and somewhat indirectly, Yugoslavia's final dissolution a year later). Without Americans ever needing to put any boots on the ground, only by air power.

Winning a war isn't about killing your enemies... It's about achieving your goals. You can't deny they were fully achieved, solely with air power. To me it sounds like anything but a defeat.

<comment><USER3> What? Of course America/NATO put boots on the ground. That's the whole point. NATO ground forces going into Kosovo stopped the Ethnic cleansing.

The air campaign did nothing. Boots on the ground saved lives.

<comment><USER5> Russian ground forces stopped the ethnic cleansing.

NATO ground forces showing up, ended the conflict.

</comment></comment></comment></comment></comment><comment><USER6> I'm obviously not an expert on this but avoiding the killing of tanks also depends on some sort of air-superiority. I'm saying "some sort" because you don't need to control the airspace of a whole country in order to defend against tanks, you just need some "clean" space for your artillery do do its thing while stationed 20-30 km or more behind the front while being helped by a few drones.

As recent events in Syria (by "recent" I mean January-February of this year) have shown drone-guided artillery strikes are almost the perfect deterrent against tanks or any form of technicals on the ground, to be honest. There were even videos of Russian strikes hitting two guys on a motorcycle. Don't see tanks having any chance against that combo (i.e. artillery + drones), unless helped by air-support. There are countless examples on Twitter, this is one of them, involving the Turkish Army [1].

[1] [https://twitter.com/warsmonitoring/status/123333691043478323...](https://twitter.com/warsmonitoring/status/1233336910434783232)

<comment><USER7> A lot of wars these days are asymmetric. It's very rare to have fully equipped armies+navies+airforce on both sides. Usually people do the math upfront and one side concludes it probably is better to not get destroyed completely.

In most wars in recent history you have one side with lots of relatively high tech weaponry going against guerrilla forces fighting with relatively unsophisticated stuff but hiding among civilians, thus making the use of all that high tech weaponry a bit controversial. E.g. Syria is a good example of that.

WW II was probably the last conflict where all sides basically removed the gloves and fought with everything they had where everything on both sides included some very scary options. I live in what got rebuilt after WW II destroyed Berlin. There wasn't much left here. Other cities got it worse.

Tanks still have a role because in most conflicts, the other side would lack the means to defend against them. But they'd be relatively useless against someone with rockets & an airforce. But they are awesome for dominating a chaotic battlefield without that. Basically, in the Gulf wars, the US took out the iraqi airforce in no time and after that basically tanks rolled in pretty much without opposition. I don't think any US tanks were lost at all. Much of the conventional troops ended up surrendering.

<comment><USER8> > _WW II was probably the last conflict where all sides basically removed the > gloves and fought with everything they had where everything on both sides > included some very scary options._

I think that would actually be the Iran-Iraq War: [https://en.wikipedia.org/wiki/Iran%E2%80%93Iraq_War](https://en.wikipedia.org/wiki/Iran%E2%80%93Iraq_War)

Tank combat, air combat involving a wide range of aircraft, bombing raids, ballistic missile strikes, naval combat, trench warfare and chemical weapon use all took place during the war from 1980 to 1988.

<comment><USER7> Yes, you are correct; I forgot about how brutal that conflict was.

</comment></comment></comment></comment><comment><USER9> The link isn't loading, but: recently I was reading about the Mongol Empire (started circa ±1200) and how their military tactics were extremely innovative for the time, specifically for their method of operating as separate, independent units across vast distances. Apparently, this method of warfare was ignored for hundreds of years and only came into use again when mechanized transports (like tanks) became widely adopted. The Soviets developed this into "Deep Battle" which was extensively used on the Eastern Front during WW2.

 _Deep Battle doctrine bore a heavy resemblance to Mongol strategic methods, substituting tanks, motorized troop carriers, artillery, and airplanes for Mongol horse archers, lancers, and field artillery. The Red Army even went so far as to copy Subutai 's use of smokescreens on the battlefield to cover troop movements._

[https://en.wikipedia.org/wiki/Subutai#Legacy](https://en.wikipedia.org/wiki/Subutai#Legacy)

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

<comment><USER10> Also:

> Though unknown to the west for many centuries, Subutai's exploits were first > featured by the British military theorist B. H. Liddell Hart in his book > Great Captains Unveiled after World War I. Liddell Hart used the example of > the Mongols under Genghis and Subutai to demonstrate how a new mechanized > army could ideally fight using the principles of mobility, dispersion, > surprise, and indirect means. Though he gained little support in Britain, > Liddell Hart's books were read in Germany, whose armies during the initial > 1940–41 invasions of France and Russia bore an astonishing similarity to the > campaigns of Subutai, 700 years earlier. In particular, Erwin Rommel and > George Patton were avid students of Mongol campaigns

<comment><USER11> Not sure that the statement about him getting little support in Britain is correct. The British Army was fully mechanized in 1939, even infantry regiments had plenty of Universal Carriers [1] to help move supplies around. The German Army was still using horses in 1945.

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

<comment> blaser-waffle Everyone was using horses in 1945. Only the US, who got into the war late, and who had a massive industrial base, showed up heavily motorized.

The Brits ended up motorized mostly because of 1) the US supplying them, and 2) they left many of their horses on the continent when they pulled back from Dunkirk. The US sent tons of jeeps to the USSR too.

<comment><USER11> The British Army wasn't using horses in 1940 so didn't leave them at Dunkirk.

</comment></comment></comment></comment></comment><comment><USER12> Are tanks the new battleship? It seems to me that the heavily armored, heavily armed, slow vehicles are no longer a match for the fast-paced and dynamic modern warfare. They are sitting ducks for attack helicopters, jets and well- coordinated infantry teams.

Interesting read by the way. It's crazy to see what sort of smart inventions are created in this arms race between David and Goliath.

<comment><USER13> A M1A2 main battle tank can travel at 40mph or 30mph offroad. If you know where one is and then lose track it can be 600 miles away from where you thought it was within 24 hours. If you saw the tank in Paris it could show up as far away as Prague or Madrid the next day.

They aren't that slow.

<comment><USER14> 1000km (600m) is a long way to go in a metal box. And you'd need to carry fuel, spare parts, and ammo. Tanks are vulnerable without infantry, so better have them there too. Tracks are very inefficient (and can tear up roads), so it's better to load them on to trains or lorries.

It's not just a tank. It's all the logistics that go in to supporting one.

<comment><USER15> One of SOE's achievements around D-Day was introducing abrasive materials into the axle bearings of the trank transporters for the SS Das Reich division - they were stationed in the south of France and had to try to make their own way there rather than using transporters - which fortunately didn't go well.

An entire division of experienced and well equipped troops pretty much neutralised with some gritty powder in the right places....

</comment></comment></comment></comment><comment><USER16> Am I the only one that is absolutely disgusted by violence, yet absolutely loves reading articles such as this?

<comment><USER17> I'm so with you. I hate the function these are designed for, but it's so satisfying seeing such deeply- _functional_ engineering. Like some kind of weird problem-solving porn.

</comment></comment><comment><USER18> If you get excited by this topic, I suggest you give War Thunder a try.

The game has horrible UX, but:

1\. The game does the best (?) job I've seen of any game at simulating a wide variety of historical vehicles, shells, and armor.

2\. The game has a low barrier to entry: no fast twitch reactions, and slow gameplay.

3\. It has a fairly fun meta to improve within.

4\. The community loosely associated around it can be both fun and informative: PhlyDaily, The Chieftain's Hatch, RedEffect, Potential History, and Lindybeige

</comment><comment><USER19> Its easy to imagine smarter missiles that have multiple independent warheads and contain jammers and attempt to fly around to approach from vulnerable angles etc.

Its also easier to imagine infantry falling back on indirect fire, where they identify targets for artillery and aircraft.

RPGs etc made cheaply-equipped soldiers able to take on expensive tanks. But now extremely expensive tanks are becoming immune to them, and the next step for soldiers is also expensive.

<comment><USER20> In ww2 the tactical doctrine for German troops was to engage with three PanzerFaust teams two missiles would be fired initially with the most experienced team held back.

<comment><USER15> I recently read an _excellent_ account of what things were like as a British tank commander in 1994 & 1945 from Normandy onwards - "grim" doesn't do it justice. Imagine as a 19 year old commander of 4 tank platoon being told that your life expectancy was two weeks!

[https://www.goodreads.com/book/show/30145506-tank- action](https://www.goodreads.com/book/show/30145506-tank-action)

<comment><USER20> I suspect that the experience of the opposing forces where much worse if you read German soldiers experiences of facing D day

<comment><USER21> The fighting in Berling was teenagers, sometimes preteens wielding the Faust. They called it _" panzerknacken"_ i.e. "armour knocking" or "armour smashing".

</comment></comment></comment></comment></comment><comment><USER22> How about fooling the APS into firing at duds until its munitions are depleted and then shooting a rocket? Like a series of high caliber, slower moving projectiles made out of something super radar reflective at reflective angles?

<comment><USER23> While you're standing around, firing blanks at the tank, how do you expect the tank will react to you?

It will, ah, be highly incentivised to shoot back. And it won't be shooting at you with blanks.

Pretty much all the tactics listed in TFA seem to be desperation moves.

</comment></comment><comment><USER24> [https://web.archive.org/web/20200323100053/https://mwi.usma....](https://web.archive.org/web/20200323100053/https://mwi.usma.edu/on- killing-tanks/)

And some amazing videos of the Trophy APS system mentioned in the article doing their thing: [https://www.youtube.com/watch?v=6aA9HsmLHBQ](https://www.youtube.com/watch?v=6aA9HsmLHBQ)

<comment><USER25> Trophy is amazing, but it has it's limitations. It limits friendly infantry from getting close, and still get saturated and in need of recharge.

</comment></comment><comment><USER26> War is nasty, although the rate of invention during world war was impressive. Rocket technology really improved as everyone was trying to figure out how to make better missiles. Same with jet engines and submarines. Computation, Cryptography also got major upgrades.

When things get scarce, the only natural solution is to fight it out. Natural selection is very mean and nasty.

</comment><comment><USER27> I served in a light-infantry battalion, specifically in our heavy-weapons company. Most of the doctrine is available publicly. For a heavy weapons company, see Appendix D of [https://armypubs.army.mil/epubs/DR_pubs/DR_a/pdf/web/ARN6672...](https://armypubs.army.mil/epubs/DR_pubs/DR_a/pdf/web/ARN6672_ATP%203-21x20%20FINAL%20WEB.pdf)

Going against tanks as an infantry unit is a tough spot. Tanks are significantly faster, more lethal, and harder to kill than any light-infantry unit. In a defense, light infantry uses engagement area development to attempt to even the odds. Engagement area development is similar to building a defense in depth. A quick summary:

0\. Analyze the enemy composition and disposition to determine likely avenues of approach. After that, build your engagement areas on those approaches.

1\. When the enemy is far away, attempt to disrupt or turn their movement into the engagement area. This is typically a combination of scouts, artillery, or obstacles to channel the enemy into the engagement area.

2\. Once the enemy is in the engagement area, keep them there (fix) as long as possible. Use priority targets and sectors of fire to efficiently concentrate fires on the most valuable targets which almost certainly includes tanks.

3\. Finally, you block the enemy with obstacles to move to secondary positions.

The author's first tactic of a trial shot of engaging at range is part of step 1. The goal is to force the enemy to change their movement, slow them down, or disable the active protection measures. This is a bit more difficult with a TOW missile than with a Javelin. Modern tanks will auto-rotate if you laser range find them directly. Since a tank round travels significantly faster than a TOW missile, a tank can kill you before the TOW missile reaches them. Since a TOW is guided by an operator via a wire, the missle with then miss.

The second tactic of multiple missiles would go in step 2. To avoid firing excessive missiles at targets, one technique is to "shard" the engagement area so subordinate units are responsible for parts of it.

The third tactic of using grenade launchers and mortars is questionable. We were taught that tanks are basically invulnerable to indirect fire (mortars and artillery). I don't think a 60mm mortar would have any significant effect on a tank unless you score a direct hit. The precision on indirect fire isn't good enough to directly hit a tank. Hoping to trigger the tank's active defense measure is a long shot. Also, if you're using a M320 grenade launcher with a max effective range of 320m against a tank, you're going to die soon unless you have some other significant advantage like urban terrain. The MK19 automatic grenade launcher is a much better weapon for trying to prematurely damage the tank's defense with a range of 1500m.

<comment><USER28> I think the idea was that lots of indirect fire would degrade the sensors. It's really hard to armor a sensor. Lenses chip and scratch.

</comment></comment><comment><USER29> War is stupid.

<comment><USER30> Maybe so, but can you please stop posting unsubstantive comments here? We're trying for a different sort of forum.

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

<comment><USER31> sure let's talk about how important military spending is while the global economy has come to a halt because of a virus and the advanced nations are crying for help.

<comment><USER32> Yeah, but can we quarantine war? People are dying out there, and we can't even get to people to stop going out to the bars! And you want to stop wars?

<comment><USER31> What does spending on military $600B/y get you? Capability of winning wars? America has not won a war since WW2. National security? Think about 9/11\. Geopolitical influence? See the middle east mess. Economic wealth? Well if you invested a trillion per year in any sector of the economy you would have spurred economic activity of similar magnitude with the defense sector, that could actually have some benefits for the society, e.g. proper healthcare.

</comment></comment></comment></comment></comment><comment><USER33> Tanks are by definition not a defensive weapon. If they are not advancing onto an enemy strongpoint during war, they are being wasted.

USSR had a plan to move 20000 tanks and 80000 units of support armour into Europe all at once with a very idea that no low intensity aerial, mine warfare or guerrilla anti-tank campaign can stop it all before all airfields and commando bases are overwhelmed.

<comment><USER20> A one way trip - there was no planed way of retreating from that what I recall

<comment><USER33> Yes, that was the plan.

To force nato into the most costly trades possible, early on.

They wanted to force nato to field their heaviest military assets to the frontlines at the time when nuclear rockets will be flying left and right.

And they would attack over very wide fronts for the first few days, before they concentrate their forces, thus concealing their breakthrough trajectory until the most costly trades are done.</comment></comment></comment>


Top 25 schools whose graduates were the top-rated by recruiters. - <AUTHOR> http://online.wsj.com/article/SB10001424052748704554104575435563989873060.html?mod=WSJ_hps_MIDDLESecondNews

<comment><USER2> Just skimming it, I noticed two errors:

1) The University of Maryland is only 4 miles from DC, it is 10 miles from the National Mall.

2) MIT is not in the Ivy League. The Ivy League is an athletic conference and not some subjective grouping of elite institutions. Not to say that it isn't at the same level.

</comment><comment><USER3> Maybe this is part of some larger story that I'm not finding the links to, but which recruiters? How many? And for what industries? I can't imagine that each of the programs at any given school are of exactly the same quality.

<comment><USER4> .. and who paid for the survey?

All questions any decent journalist is meant to be open with.

</comment></comment><comment><USER5> I see some fairly large schools on there, but I wonder how smaller schools like Rose-Hulman, Case Western, Olin Institute, etc. would stack up if the results were adjusted somehow for size.

<comment><USER6> Yea, I don't understand at all how this list is made. It can't be based on _average_ -recruit-quality, in any sense, because the highest-average quality schools will always be small ones (simply due to averaging and statistics).

<comment><USER7> I don't know. A very high-quality small school will have a tendency to get bigger.

<comment><USER8> Over a long time, perhaps, but probably not quickly. Getting bigger requires more than just attracting more applicants. It also requires hiring more faculty and staff and expanding facilities (which itself eventually requires taking up more land).

</comment></comment></comment></comment><comment><USER9> The last time I listened to some recruiter he added a line on my resume indicating how many lines of code I've produced. While highly inaccurate, every single interviewer who received that resume correctly questioned that line. I listen to what recruiters have to say about this (---) much.

<comment><USER10> Maintain your resume in latex, only send out a PDF, and give a flat 'no' when recruiters ask if you can give them a copy of your resume in MS Word format. They're specifically asking for Word so they can alter it in ways they think will help them, not you.

</comment></comment><comment><USER11> Good thing my alma mater is ranked at something because the "nationally ranked" football team is absolute crap this year.

// not bitter at all about 2 losses in the opening season.

<comment><USER12> Have no fear... we're not so nationally ranked anymore.

I went to Virginia Tech specifically for their extensive co-op program and large & effective career services department; nice to see that they're still running on all cylinders 10 years later.

NB: Having a good engineering & Comp Sci curriculum didn't hurt either.

<comment><USER11> I also chose Tech for their strong engineering program. But it seemed to have really pick up steam in the last few years and they've developed a strong reputation, internationally. Where if you weren't Ivy, UC, Stanford or MIT you couldn't get much respect.

Last time I stepped foot in Blacksburg they pegged me with $100 parking ticket and wouldn't release my transcripts until it was paid. They get you coming and going!

<comment><USER12> Unless they've raised rates (entirely possible), the only $100 ticket you could get was parking in a handicapped zone... tsk tsk tsk!

</comment></comment></comment></comment><comment><USER13> These schools are placement agencies and not education institutions</comment>


An Exuberant Renaissance Calligraphy Guide - <AUTHOR> https://www.atlasobscura.com/articles/illluminated-manuscript-calligraphy-guide <comment><USER2> As both a calligrapher and a developer, I love how calligraphy combines the pure logical beauty of information (involving math, bits, Shannon, entropy, compression) with the very human beauty of bits of ink on paper (involving finger dexterity, visual pathway of the brain, the beauty of symmetry, our adornment of religious/important texts, thousands of years of evolution of symbols that a culture agrees on).

There is a beauty in code itself too, and I did a fun calligraphic rending of rc4 years ago: [https://imgur.com/GP25ZCn](https://imgur.com/GP25ZCn)

<comment><USER3> That's really pretty. The syntax highlighting is the cherry on top. Visually pleasing, but forced by a ruleset, which is neat.

</comment></comment><comment><USER4> Something also fascinating, we find something similar in the "citra kavitvani" from an Indian poet named Rupa Goswami. Except his poetry is designed to make sense when read from different points in the calligraphic image, as well as having the poetry make sense when the words themselves intersect in the wonderful designs he has created.

An example can be found here [https://www.religiousforums.com/attachments/upload_2016-12-1...](https://www.religiousforums.com/attachments/upload_2016-12-1_1-12-53-png.15268/)</comment>