The Transistor, Part 1: Groping in the Dark - <AUTHOR> https://technicshistory.wordpress.com/2018/01/20/the-transistor-part-1-groping-in-the-dark/ <comment><USER2> Yes, this is a classic story. Crystal diodes were known prior to WWII, and produced in bulk during WWII for radar systems. That resulted in commercial crystal growing technology. Bell Labs and Western Electric did much of that, so the technology for making crystals with controlled properties was coming along. That's the first step in the process of making transistors and ICs.

The first big technology that really required theory and heavy math was AC power. That's what Tesla was noted for. DC you can do with ordinary arithmetic, but AC rotary machine design requires calculus. That was a big shock to engineers of the era. Edison never made that transition.

Up until the early 20th century, science and engineering didn't talk much.

<comment><USER3> Edison was notably deficient in math. But he recognized this and hired mathematicians to work for him.

Even Einstein got help with the math on general relativity.

<comment><USER4> Tensor calculus specifically, but Einstein was no slouch when it came to math.

</comment></comment></comment><comment><USER3> I had a crystal radio in the 60's. It was nothing more than an antenna, a coil, headphones, and of course the crystal. I had fooled around with making electromagnets and morse keys, and understood them. But the crystal completely baffled me.

<comment><USER5> I had one of those as a kid. The idea you could listen to the radio without any local power source (mains or batteries) was pretty amazing.

<comment><USER6> I built one, and it said "connect it to a pipe". I had a piece of pipe in my room, and it frustratingly did nothing. They never said "an earth connected pipe.

Now I'm an RF engineer; go figure.

<comment><USER3> I discovered that if you connected a long wire to the phono inputs on an amplifier, you'd pick up the local AM stations.

</comment></comment></comment></comment><comment> aaron-lebo There's a pretty good PBS doc about Shockley and Noyce (mostly Noyce) called _Silicon Valley_.

[https://www.amazon.com/gp/video/detail/B00BD7MBK6/ref=pd_cbs...](https://www.amazon.com/gp/video/detail/B00BD7MBK6/ref=pd_cbs_318_2)

</comment><comment><USER6> Reading Tesla's Colorado Springs Lab Notes, he spent a good deal of time trying to develop an efficient RF rectifier/detector. So while he could generate huge amounts of RF, he could not detect it well.

</comment><comment><USER7> I wish Robert Buderi's book on radar was available in e-print because it's really good as an overview of the relationship of the war, O/R, technology and specifically the transistor.

</comment><comment><USER8> I love science history. Probably my favorite non-fiction topic to read.

<comment><USER6> You'd probably like Invention and Technology magazine. It ceased publication several years ago, but it was awesome. Great reading if you can find old issues.

[https://en.m.wikipedia.org/wiki/American_Heritage_of_Inventi...](https://en.m.wikipedia.org/wiki/American_Heritage_of_Invention_%26_Technology)

<comment><USER9> It would be kind of fun to have a publishing company that would reprint and send out curated old issues of classic magazines to the nostalgia seekers of the world.

</comment></comment></comment><comment><USER10> I really wish this was a podcast. I always digest my history in podcast form

<comment><USER11> While I respect those who feel different like you, personally I'm glad it's not. I retain significantly more knowledge from things I read vs things I heard. To fully benefit from audio content, I have to dedicate 100% of my focus to it otherwise I miss critical parts.

<comment><USER12> I'm like this and it makes me sad because podcasts are 100% useless for me.</comment></comment></comment>


Ask HN: static files(on server) analytics? - <AUTHOR>

I have a few sites one running apache and on nginx. Does anyone have any tips or techniques for parsing the log files for gathering analytics on what files are being downloaded from straight direct requests?<p>I ask because I use google analytics, which satisfies my analytics needs for regular site interaction, but would like to watch on pure file requests. <comment><USER2> awstats will, i _think_ , fit your needs.

</comment><comment><USER3> cat access.log | grep staticfilename | wc -l

</comment><comment><AUTHOR> thanks guys</comment>


Introduction to Unladen Swallow - <AUTHOR> http://lazypython.blogspot.com/2009/11/introduction-to-unladen-swallow.html <comment><USER2> Personally, I think the LLVM addition is quite exciting. I think there is some good performance potential there, and I think you get as a side effedt nice portability.

</comment><comment><USER3> Is that an African or European swallow?

Seriously, guys. How much further can we get with products with cultural allusions? Aside from Java guys in the trenches, can anybody track all the world-of-coffee spinoff names? At some point instead of being a mnemonic it becomes just so much garbled noise...

<comment><USER4> The language is Python, as in Monty, you know. And it's only marketed for geeks. I fail to see how a naming convention based on something that bring 90%+ of geeks joy is any worse than naming programming languages after letters of the alphabet followed by addition symbols or pound signs.

<comment><USER3> I think it's a great naming convention.

Guys, I get the reference. I understand the two are related.

Just wondering how many products can come up with spinoffs that fit into the Python lore until you either run out of lore or it all starts running together, that's all.

<comment><USER5> We'll know when we get there?</comment></comment></comment></comment>


Ask HN: Soliciting critique/feedback for your technical architecture? - <AUTHOR> Lately I've been interested in pursuing a whole range of side projects that bear no resemblance to my day job (vanilla java Spring mid-tier service in a large enterprise company). While I know experiential learning is best by building, making mistakes, incrementally improving (rinse, repeat) I'm curious to understand how folks here get their projects' technical architecture critiqued. Please note that I'm not dismissing the value of books/blogs/talks but I'm talking about once all those materials have been surveyed fairly well, what other options are available to validate your thought process.
Do you post a high level overview online and get the community to provide feedback, or do you rely on friends/co-workers to chime in and provide some insight? The kinds of questions I'd like to get answers to are around something to the effect of "Hmm, your data pipeline should use Kafka and elastic search for XYZ reason instead of RabbitMQ and cassandra for the scale and access patterns you're interested in." "For the fault tolerance you're interested in, erlang would be a good fit" "Here's some other projects/case studies that made ABC tradeoffs that are worth surveying..." Trouble is most of the people I'm surrounded by at work haven't expanded their skills beyond what's expected at the job, so I don't find discussions with them about the architectural possibilities as illuminating as I'd hope.
Are there any reliable ways to get answers to such questions from people who are experienced? Solving different flavors of problems seems crucial to truly level up as an engineer, and I just want to make sure I can get feedback so that I can immerse myself intelligently. <comment><USER2> Rarely you will find one gleaming Solution - even if you are capable of identifying and discussing all important factors prior to the design, and know perfectly all of the properties of various pre-built systems that may be used to assemble it. Almost always it is necessary to proceed with an architecture that has been segmented in to manageable components and APIs, knowing that you can swap out individual portions as issues are identified. That said, personally I really enjoy this kind of thing and have actually been considering starting a consulting business in the same vein; I would be willing to have a look for you just to get a better understanding of your what you are looking for and gain some insight in to potential customer requirements in this area should I decide to proceed with a consulting practice.

</comment><comment><USER3> > Are there any reliable ways to get answers to such questions from people who > are experienced?

In my experience, the challenge with soliciting this kind of feedback is in filtering the responses. Opinions are formed for a variety of reasons. Some are well formed from experience, while others are simply dogma:

 _Authority Figure X_ says to use _Solution Y_.

or cargo cult:

 _Successful Company X_ uses _Solution Y_ , so you should too.

It's worth considering why authority figures recommend specific solutions, but that informs you as to the _reasons_ why you should use a particular solution, not that you should _always_ use a particular solution.

Giving a good recommendation first requires that the offerer of the opinion have the qualifications necessary to be considered an authority on the problem domain; second, that they invest the requisite time in understanding your unique set of circumstances; and finally, that they are prepared to set aside any dogmatic beliefs they have developed along the way. You must be prepared to filter the opinions you receive in order to avoid incorporating advice affected by these shortcomings.

Rather that solicit advice on your entire infrastructure, you should do two things:

1) You should seek to understand the technologies you're implementing to a depth that allows you to identify potential pitfalls. In other words, understand what a particular solution is good _and bad_ at.

2) Try to hire/work with people who specialize in specific problem domains. A jack-of-all-trades can only have so much depth.

</comment><comment><USER4> (This doesn't really answer your question, but hopefully is still useful)

I actually do this for startups, but it's a bit of a specialized and difficult art. Answering specific questions about technology stacks requires having used them before, and most people only have experience with a small subset of them (myself included, so I probably couldn't answer half of your questions). As a result, I often break down the question into phases.

First, broader questions on design are actually a lot easier to answer. For example: "for problem X, should I use a producer/consumer model + sharded key/value or a direct RPC to a search stack?". Or even more open ended: "on this budget, how can I consume the twitter firehose in realtime to do X?".

Second, the more specific "should I use RabbitMQ or Kafka" for my producer/consumer component requires specialized knowledge. Once you break your question down to that level of granularity, though, it is relatively easy to find an expert.

</comment><comment><USER5> Realistically everything is mostly shitty architecture and nearly on fire all the time.

The best critique is surviving production and constant iteration and tackling limits and problems as they become apparent.

If you see a problem, research solutions and hit the cycle again. Sometimes things don't work.

There's not much science in it I'm afraid.

</comment><comment><USER6> I like to start with a discussion, rather than a presentation and Q&A. For me, I find that really understanding the problem is the hard part. Once I really know what I need, what my requirements are, the options fall into place.

Today, for example, I'm going to have a whiteboarding session with one of my employees. We're going to whiteboard the problem we're solving, again, and again, until we both can describe high and low level details in our sleep.

Then we'll do a few searches and leverage other people's experiences to pick our technologies.

The also works for pure architectural discussions. You have a queue between your web server and web workers -- why? etc.

</comment><comment><USER7> I have had need for critique on my architecture. What helps me is, I go to a tech meetup, and talk to a bunch of people. When I am working on a new side project, I will go and tell people about it and show them how I am planning on implementing it to solicit their opinions. I sometimes will ask a few co- workers to go to lunch with me with a purpose to talk about the project. Luckily I have at least one co-worker who loves advising and critiquing on my design decisions. Depending on where you live, I would recommend to join a tech meetup.

</comment><comment><USER8> I've been wondering the same thing lately. I tried posting to the NodeJS subreddit, but it's near deserted.

<comment><AUTHOR> Yeah, I would imagine questions like these that stretch beyond a single runtime or language/framework require experienced people to engage in a meaningful discussion which is why sometimes the topics don't get as much love because it's hard to swiftly do justice to them online.

</comment></comment><comment><USER9> I think there's a StackExchange for that isn't there?

Try posting it to reddit/r/programming too

<comment><AUTHOR> AFAIK, Stackoverflow gets used for these types of questions a fair amount in a very ad-hoc manner (YMMV in terms of successful responses) and there is a "Code Review" stackexchange; I haven't yet stumbled upon a strictly dedicated forum which revolves around critiquing "system architecture".

<comment><USER10> I've asked those types of architectural questions on both [http://programmers.stackexchange.com](http://programmers.stackexchange.com) and Stackoverflow but they tend to get closed, down voted or ignored.</comment></comment></comment>


Overview of differential equations [video] - <AUTHOR> https://www.youtube.com/watch?v=p_di4Zn4wz4&list=PLZHQObOWTQDNPOjrT6KVlfJuKtYTftqH6&index=2&t=0s <comment><USER2> I just want to thank 3b1b, and tell anyone who's trying to get in love with math to go ahead and binge his channel.

I've been terrible at math since they started to get "hard" as a teenager, which then compounded into not liking math before and after getting into college for a CS degree.

The degree inevitably requires some math background at the beginning, so I struggled with that a lot, until I discovered 3b1b.

His series on calculus and linear algebra got me through both subjects in less than a week. From 0 to 7 in the scale of 0 to 10 we use in my university, in just 3-4 days per subject. I regret not discovering it before.

What those two series helped me with was understanding why math is important, and how can one solve everyday problems with math, which is something teachers say when you are young but don't actually tell.

Realising that instantaneously motivated me to put in time and effort, which is key when learning math.

The machine learning series also helped me find the answer to the "why am I learning math if I'm just a tech?" question.

On the side, I'm now reading "Computer Networking: a Top-Down Approach" by Kurose, which made me get to the conclusion that we are teaching things wrong. The educational system that brought me here teaches you on a promise of everything making sense once you understand it all, which makes it really hard to understand the pieces in the first place.

The book takes a different approach in that it shows you the final result, and then breaks it down abstraction by abstraction, which makes you eager to know what's going on behind the next abstraction.

If I were to teach a kid how a mechanical watch works, I wouldn't start by the gears, I'd start by the watch itself, and then break it down piece by piece. Once he knows that there's this abstract system that takes some force in one end, and spits some other force in the other, then the kid will want to know what's behind the abstract system, and he'll be ready to know it.

This way I'll keep the attention of the kid till the end, instead of telling him "you'll understand once we finish" after each lesson.

<comment><USER3> Well, I think there is some deeper truth to 'everything making sense once you understand it all'.

Granted, it doesn't really work as a motivator and those who use it as such are missing a real motivator quite often. Nevertheless, when you think about people, you will find that their actions will make sense once you see all the factors that influence them. Knowing that you probably don't know all factors that affect a person's actions will make you search for the missing parts before judging that person, resulting in a suspension of judgment [1] which is quite valuable actually (not just for human interactions).

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

<comment><USER2> Yeah but losing a kid's motivation is terrible. Having a kid eager to know what's next means the kid will think about it on the commute home, talk about it with his/her parents, ask some hard questions... He/She will be _curious_.

And curiosity is the greatest of all drives. I've spent more hours than I can count following curiosity with no other prize but knowledge. Instead, we've come to tell kids that they should memorise this thing for the next week, and move on.

For a given concept, with three layers of abstraction, if we start bottom-up, with the downmost layer, the kid doesn't know what that layer's good for. That happens until we get to the topmost layer. The layers have no purpose until we've finished 4 months from now. They don't make sense.

If you teach kids backwards, once the kid knows the topmost layer, he/she will know what the next layer is good for and in what conditions shall it exist. The _next layer_ has a purpose, which the kid can understand and expect.

The Socratic method works this way. You start with the general purpose of the system, and then you break it down question by question.

(teacher)- What is this?

(student)+ This is a car.

\- What is a car good for?

\+ It moves people.

\- How does it move people?

\+ Because it moves these wheels.

\- How does it move those wheels?

\+ Because... I don't know (takes a car replica), it has these bar connected to those wheels, and this other bar connected to that bar.

\- What happens when you spin that second bar?

\+ The wheels move.

\- So to move the car, you move those wheels, and to move those wheels you spin this bar, but you don't manually spin this bar when you are driving, who does so then?

\+ I don't know.

Now the kid is ready to understand what an engine is.

If we did it backwards, and started with combustion, the kid would have no idea what combustion is for until we've reached the car.

<comment><USER4> I for one am super in favor of the top-down approach of teaching. Amused because it's similar to how a song is written, or a painting is done: big broad strokes, working forward to then fill in the subject and details

</comment></comment></comment></comment><comment><USER5> If you're excited to actually do some problems by the end of the video, we just released our diff. eq. problem solving course: [https://brilliant.org/courses/differential- equations/](https://brilliant.org/courses/differential-equations/)

<comment><USER6> What do you think of sponsoring 3b1b instead of advertising for free here?

<comment><USER5> We have in the past! And we'd love to in the future. However, Grant doesn't need sponsors any longer since his Patreon is healthy, which is awesome.

</comment></comment></comment><comment> dan-robertson Looking at phase diagrams is something that feels weird at first but turns out to be very nice. I think one reason it's weird is that (when one follows the normal track of education through school and into a degree like physics or mathematics at university), this is the first time (at least in th uk school system) when one stands basically no chance of actually solving the equations but giving good useful qualitative information about the solutions is possible.

I think part of why it can be hard to learn is that one must guess what is in the unknown areas whereas in past problems with limited information (eg in geometry), the puzzle is to derive just enough information on the boundary to solve the problem, so one may not be able to say something about the areas of some figures but might have something to say about their sum.

I found the trick to phase diagrams was realising that they are mostly made of a few interesting features: at every fixed point the diagram is some combination of a circular motion and a scaling in/out motion, or it is some kind of saddle point going out in one direction and in at another (eg the fixed point at the top of the pendulum in the video). Then you just fill in the gaps. This feels hard at first because you can imagine there could be anything in the gaps but it is actually easy because the flow lines do not cross and one cannot have significant turbulence without fixed points (and those have all been found) so only boring things can be drawn in the gaps.

The same is also true with drawing contour diagrams, just replace fixed point with stationary point, and flow line with isosurface.

</comment><comment><USER7> If you want to dig even deeper into diffeq, Professor Leonard has been publishing his series[1] on the topic over the past few months. He's up to lesson #31 so far.. not sure how many total the series is supposed to be.

[1]: [https://www.youtube.com/playlist?list=PLDesaqWTN6ESPaHy2QUKV...](https://www.youtube.com/playlist?list=PLDesaqWTN6ESPaHy2QUKVaXNZuQNxkYQ_)

</comment><comment><USER8> The library used for the animations: [https://github.com/3b1b/manim](https://github.com/3b1b/manim)

Sources for episodes are included: [https://github.com/3b1b/manim/tree/master/active_projects/od...](https://github.com/3b1b/manim/tree/master/active_projects/ode/part1)

The composer behind for many of the songs is Vincent Rubinetti: [https://vincerubinetti.bandcamp.com/album/the-music- of-3blue...](https://vincerubinetti.bandcamp.com/album/the-music- of-3blue1brown)

3b1b interview: [https://www.youtube.com/watch?v=A0RH93XvSyU](https://www.youtube.com/watch?v=A0RH93XvSyU)

</comment><comment><USER9> 3blue1brown has some of the best math exposition I've ever seen. I'm consistently impressed with his videos.</comment>


Apple is under investigation for 1B euro tax fraud in Italy - <AUTHOR> http://translate.google.it/translate?sl=auto&tl=en&js=n&prev=_t&hl=it&ie=UTF-8&u=http%3A%2F%2Fmilano.corriere.it%2Fmilano%2Fnotizie%2Fcronaca%2F13_novembre_13%2Ffrode-fiscale-indagini-apple-italia-perquisita-sede-piazza-san-babila-6ebfe3fc-4c74-11e3-b498-cf01e116218a.shtml&act=url

<comment><USER2> Not surprising, nearly everyone in Italy tries to hide money from the Italian tax authorities and do everything "off the books."

It's bad enough that many (non-Italian) accounting firms won't agree to handle Italian tax issues (including restructurings) or to review Italian tax returns or financial statements.

</comment><comment><USER3> about time.</comment>


UTorrent Will Move to the Web Browser - <AUTHOR> https://torrentfreak.com/utorrent-will-move-to-the-web-browser-170421/ <comment><USER2> That's interesting. Are they going to use webtorrent?

<comment><AUTHOR> They can build from it, paying attention to improve the efficiency in processor usage. At the time being Webtorrent makes my laptop look like an electric stove, and although I like the concept I'm back to Transmission.</comment></comment>


A Year in Clojure - <AUTHOR> https://blog.taylorwood.io/2017/09/15/year-behind.html <comment><USER2> > I wondered why there's a reduce in clojure.core but no fold? (It's just a > different arity of reduce that's missing the initial state.)

There is literally an arity of reduce which skips the initial state. Check out `(doc reduce)`.

> No tuple type? Vectors are tuples. "What if one of the vectors is of a > different length?" I gasped as I clutched my pearl monads.

`s/tuple` is the answer to that question.

> This ties into another concept that was new to me: applying a sequence of > arguments to a function.

You're not applying the sequence to the fn. This is "function application", so you're applying the fn to the sequence. In Clojure, you have some data, you apply a fn to it, then you have some transformed data. Rinse and repeat. Also, check out `(doc apply)`.

> I've read/heard the Clojure designers encourage the use of namespaced > keywords, but I rarely encounter them outside clojure.spec definitions.

As other people have done in the comments here, I make a case for namespace keywords here [1].

> I can't talk about data in Clojure without talking about clojure.spec!

Please be sure to check out Clojure spec's instrumentation, along with Orchestra [2] to further improve the experience. My team uses `defn-spec` for basically every fn in both our front-end and back-end code; all of the data is spec'd, with shared specs between front-end and back-end, and we get full instrumentation during development and testing. Thanks to macros, that can disappear completely in production.

1: [https://blog.jeaye.com/2017/10/31/clojure- keywords/](https://blog.jeaye.com/2017/10/31/clojure-keywords/) 2: [https://github.com/jeaye/orchestra](https://github.com/jeaye/orchestra)

<comment><USER3> Orchestra cannot be overstated. You'll quickly find the holes in clojure.spec, have a wtf? moment, feel intense disappointment then discover Orchestra and never look back.

<comment><USER4> I liked Clojure in 2014/2015 but like Scala and Groovy, interest has fallen way off. Seems like the JVM language wars are over. I still think everyone should learn LISP. I just don't think Clojure was that awesome.

Java 8 isn't awesome, but it was good enough to kill Scala and Groovy.

</comment></comment></comment><comment><USER5> As to namespaced keywords, I was skeptical at first, and all my spec definitions used unqualified keywords. But as usual, if Rich does things a certain way, there are good reasons behind it, even if they don't immediately seem apparent. As my code base has grown, I found that namespaced keywords make a _lot_ of sense, not just because of clojure.spec. They give you a convenient way of naming things uniquely, which lets you have data structures that combine several kinds of data without worrying about naming clashes.

You don't notice their utility in code examples, or small projects, but in large projects they are very useful.

<comment><USER6> From what I have seen in this article, and hn thread, and every time in general when there is a discussion about clojure or dynamic typed languages, you are only speaking about _tiny_ examples and _even more tiny_ projects. I can't really imagine myself working on a million line project written in clojure or another language without any type safety. Happy to be wrong, but I'd like to hear the experiences of people actually working on this kind of big projects rather than pointing to toy projects less than 10k lines maintained by tens of people... From my experience dynamic typing can be awesome for small prototypes, but to be production ready you need to spend _much_ more energy for testing.

More on the topic I can say that I don't really see anything compelling that you can't easily do in F# with a lot more safety in this article...

<comment><USER7> > I can't really imagine myself working on a million line project

Any project of this size is too big and is better off being broken up.

You need tests no matter what kind of typing you are using.

The best thing about Clojure is that it is immutable by default. Start writing pure functions that transform you data step by step until you send it on its way with a side effect. I don't miss types much at all - immutable maps lists, sets and pure functions get the job done and it is fun to program.

Static typing fans hardly ever acknowledge how difficult the types make it to read the code. Too much focus on that one time when someone made a typo and there was no unit test.

This has been argued infintum, nobody is changing their mind. WTF am I doing here?

<comment><USER8> This. "Static typing fans hardly ever acknowledge how difficult the types make it to read the code. Too much focus on that one time when someone made a typo and there was no unit test." Well said.

<comment><USER6> Same question to you, what do you find difficult to read in the code that I posted in the previous comment?

<comment><USER8> And, point well made about not needing to know the types but still getting compile assistance because of the types.

</comment></comment></comment></comment></comment></comment><comment><USER9> > _" With function specs, I could assert the inputs and outputs to specific > functions at runtime; not quite as reassuring as compile-time but better > than nothing!"_

For 10 years I've seen many developers who have only really used statically typed languages like C++ and Java, now finding the "joy" of dynamically typed languages and all the "freedom" they give you, only to realize within a year or two that, wait a second, verifying those types at compile-time was actually pretty useful. I've also seen mass migrations _away_ from languages like Ruby, Python and Clojure towards OCaml, Haskell, and F#, because people really enjoyed the functional programming aspects but wanted their static typing back. After writing the 10,000th unit test that only exists to ensure that you spelled some function/method/hash-key correctly, it gets a little tiresome. Personally I've settled on TypeScript, which has nice IDE integration in VS Code so that it validates your types live while you code, while still giving you the flexibility of a dynamically typed language (it's all still JS at the end of the day).

<comment><USER10> That is pure and utter FUD I'm afraid. My team has been working with Clojure for over 8 years now. We have tons of code in production, and we don't have any problems maintaining these projects. Furthermore, there's absolutely no empirical evidence to support the notion that static typing results in statistically significant reduction in defects, speed of development, or ease of maintenance. Considering how long both disciplines have been around, and the sheer amount of software written in each, that's quite the elephant in the room. I also have no idea who the people migrating from Clojure to OCaml, Haskell, or F# are. I don't think I've seen a single story about a company doing that.

My experience is that dynamic typing is problematic in imperative/OO languages. One problem is that the data is mutable, and you pass things around by reference. Even if you knew the shape of the data originally, there's no way to tell whether it's been changed elsewhere via side effects. The other problem is that OO encourages proliferation of types in your code. Keeping track of that quickly gets out of hand.

What I find to be of highest importance is the ability to reason about parts of the application in isolation, and types don't provide much help in that regard. When you have shared mutable state, it becomes impossible to track it in your head as application size grows. Knowing the types of the data does not reduce the complexity of understanding how different parts of the application affect its overall state.

Immutability plays a far bigger role than types in addressing this problem. Immutability as the default makes it natural to structure applications using independent components. This indirectly helps with the problem of tracking types in large applications as well. You don't need to track types across your entire application, and you're able to do local reasoning within the scope of each component. Meanwhile, you make bigger components by composing smaller ones together, and you only need to know the types at the level of composition which is the public API for the components.

[REPL driven development]([http://blog.jayfields.com/2014/01/repl-driven- development.ht...](http://blog.jayfields.com/2014/01/repl-driven- development.html)) also plays a big role in the workflow. Any code I write, I evaluate in the REPL straight from the editor. The REPL has the full application state, so I have access to things like database connections, queues, etc. I can even connect to the REPL in production. So, say I'm writing a function to get some data from the database, I'll write the code, and run it to see exactly the shape of the data that I have. Then I might write a function to transform it, and so on. At each step I know exactly what my data is and what my code is doing.

Where I typically care about having a formalism is at component boundaries. Spec provides a much better way to do that than types. The main reason being that it focuses on ensuring semantic correctness. For example, consider a sort function. The types can tell me that I passed in a collection of a particular type and I got a collection of the same type back. However, what I really want to know is that the collection contains the same elements, and that they're in order. This is difficult to express using most type systems out there, while trivial to do using Spec.

<comment><USER11> > I can even connect to the REPL in production

Programming is not my day job, so please correct me if I'm wrong - but every project I was involved in so far - having access to a production DB is a big no no.

Or does the project you refered to not contain any sensitive data, so having direct access to the production system is deemed 'safe'?

<comment><USER12> Different companies do it differently, but I'm not aware of any that make it absolutely impossible to get at production data (that hasn't been encrypted with a key they don't have) and program instances, just some make one (reasonably) jump through many more hoops than others. It's very much a double-edged sword so access control, auditing, etc. needs to be done carefully. (Privacy By Design.) The value can be immense -- e.g. debugging and hotloading a patch on a spacecraft 100 million miles away ([http://www.flownet.com/gat/jpl-lisp.html](http://www.flownet.com/gat/jpl- lisp.html))

</comment></comment></comment></comment><comment><USER13> I got the Clojure bug at some point not long ago. Decided I'd write a crawler and some data munging stuff directly in Clojure since it's all about data processing.

Crawlers naturally want to be stacks with pipelines and expressing them as tail recursions over URLs curried into transducers, etc was easy enough conceptually, by difficult in reality because you want crawlers to be stateful. I think in clojure you end up hacking state by just attaching stuff to the outputs of your functions and building of more complicated objects down the line.

I discovered that stuff which is cake in SQL or a language with data frame support is often typically hard in Clojure. Eg eg joining data , aggregation, etc. The few clojure libraries for this sort of thing are complicated to use because they have a mechanical sympathy with how clojure executes. Eg [https://github.com/nathanmarz/specter/](https://github.com/nathanmarz/specter/)

So I wrote some of my own libraries to get over this hurdle. I then realised that there isn't a single decent statistics library that still maintained, and that the java bindings were far from simple to us.

At that point I gave up on clojure for my use case. That's not to say that there isn't something for which it's awesone. But in my opinion it isn't data processing.

<comment><USER14> I think the Clojure answer to stateful data storage is "use Datomic". There's a big impedance mismatch between the functional world and the stateful (RDBMS) world. Datomic extends the functional world all the way down to data storage.

You can certainly use SQL, and it's not any worse than any other language (and in some ways a little better), but IME it's not Clojure-simple, either. It's still the most awkward part of all my Clojure programs.

Clojure excels when you can avoid mutating state, and I think that's why people especially love it for web apps. It fits almost perfectly into that model.

</comment></comment><comment><USER15> I would love to read more about "code as data" in general. I would appreciate any resources you can provide. Thanks.

<comment><USER16> I took a course in Racket in first year (required for all first year math/CS students at my school) and I've spent some time in the Clojure community as well. "Code as data" is an oft-repeated selling point of Lisp and Lisp-like languages.

When you actually start using these languages, you find yourself tempted to leverage this property and try writing lots of macros. But then you go back to the community and everyone tells you "the first rule of macros is you don't write macros." It turns out that if you use macros all over the place then your code becomes impenetrable. The problem is that macros allow you to circumvent the expected order of evaluation and produce your own novel syntactic structures. This puts lie to the old claim "Lisp has no syntax." In reality, Lisp has tons of syntax, it's just informal and buried within the definitions of macros.

It parallels the problem put forth in Jo Freeman's famous piece, _" The Tyranny of Structurelessness"_ [1]. Any group that purports to adopt a structureless organization ends up having a hidden, informal structure. This is the way of Lisps as well.

[1] [https://www.jofreeman.com/joreen/tyranny.htm](https://www.jofreeman.com/joreen/tyranny.htm)

<comment><USER17> i think [https://www.cs.kent.ac.uk/people/staff/dat/miranda/wadler87....](https://www.cs.kent.ac.uk/people/staff/dat/miranda/wadler87.pdf) 'why calculating is better than scheming' also makes this point too; i'm going to check out this jofreeman thing... never saw it before thanks!

<comment><USER18> The author is one of the principal folks behind Haskell. But I can't help but point out that I promise you you've never heard of the five or so lanaguages he mentioned as an alternative approach, and somehow this Lisp thing is still around. I suppose that which is dead may never die :-)

<comment><USER19> > But I can't help but point out that I promise you you've never heard of the > five or so lanaguages he mentioned as an alternative approach

I actually had heard of at least KRC and Miranda even before the first time I've read the paper, but even if I hadn't I would immediately be able to think of several languages with some or all of the additional features over the Lisps he was comparing them to for which he describes them as superior to Lisp for the purpose, including some modern Lisp derivatives.

Pattern matching, mathematical notation, and static typing with use defined types are all features that have become more, not less, common in languages since the paper was written.

</comment></comment></comment></comment></comment><comment><USER20> I've been about 6 months in Clojure, and I am finally starting to like it. Coming from decidedly non-Lisp languages, it's been a struggle. For example, immutability is possible, but not natural to most other languages; for Clojure, it's instrinsic. I also often scratch my head at the way things ate scoped and tbe whole concept of purely functional programming. Clojure is very powerful and terse, but what I dislike the most, just like with Ruby, is the culture that the code should be self-documenting and self-explanatory. In all the code I have been maintaining this whole time, comments are rare, whereas in Java, C/C++, JS, etc., comments are plentiful and encouraged. I feel like with Clojure, I am expected to understand the code just by reading it. What gives?

<comment><USER21> Consider comment inflation.

Comments should only be needed when things are especially complex and if they are everywhere their average value goes down. Most codebases of good quality that I've seen have _not_ had particularly detailed comments--except where you really need them. The mere existence of a comment already hints that the code that follows needs to be carefully understood before you can touch it!

There might be boilerplate comments before each function to describe the function and explain the parameters but other than that comments are only reserved for the tricky interactions. But in many cases also this information can be embedded in the name of the function and its parameters!

Good code reads well because it's built on top of lower level blocks that are simple and well-defined. And those are simple and well-defined probably because they are also built on top of even simpler things. This removes the need for a lot of mundane comments.

I don't think Clojure is more exceptional with regard to this than other languages. But I think a higher percentage of Clojure code is of good quality, and that probably is because Clojure attracts good programmers who care about these things.

</comment></comment><comment><USER22> ? I am not sure why Moving to X from X is so popular?

Maybe someone would some more google fu or simply a way to query news.ycombinator could do a search for the string in the header...

        a = [C, C++, Closure, Python....] look below for a bigger list

        {Moving from <a> to <a>}

and while you are querying

        {<a> is considered harmful}

It seems like news.ycombinator is littered with posts like these.

I don't want them to stop or anything it just would be interesting to see someone with like an sql database of news.ycombinator posts to see how many are posted in the last year or so and look at them all so I can binge read them because quite honestly they are the better posts on this site.

Bigger list of A here [https://gist.github.com/brianherman/64a2800ebd1907c6bba4f6eb...](https://gist.github.com/brianherman/64a2800ebd1907c6bba4f6eb69bc1c05)

<comment><USER23> there is such a list for Go here

[https://github.com/golang/go/wiki/FromXToGo](https://github.com/golang/go/wiki/FromXToGo)

The best article of this kind that i have seen is by far

[http://roscidus.com/blog/blog/2014/06/06/python-to-ocaml- ret...](http://roscidus.com/blog/blog/2014/06/06/python-to-ocaml- retrospective/)

<comment><USER24> FromXToY posts are generally garbage - probably 1 out of 1000 are actually insightful and not simply cheerleading</comment></comment></comment>


WiseGoat – weekly dose of tech satire - <AUTHOR> https://wisegoat.substack.com/ <comment><AUTHOR> Hi all, I've started a weekly newsletter which is a satirical take on tech and the startup world. Check it out and do subscribe if it looks like your cup of tea!</comment>


It's time to rethink mandatory password changes - <AUTHOR> https://www.ftc.gov/news-events/blogs/techftc/2016/03/time-rethink-mandatory-password-changes <comment><USER2> It's nearly impossible to talk about security in government orgs without extreme bike shedding regarding password length, changes and special characters.

It's not only about security - we have to factor out usability to prevent yellow stickers with "hard passwords".

2FA gives both usability and security and easy detection of dictionary attack against system - it could allow for even deliberately leaking passwords and then monitoring honeypots.

</comment><comment><USER3> I can tell you working as a federal contractor or employee in an IT department that complex passwords are hard for most people to remember.

We always had to change the password for people who forgot their password to "Password" or some other easy to remember word, and then they are supposed to change it when they log on but more often than not they don't even bother to change it.

So you got administrative accounts to all of the managers because they want access to everything to monitor employees. When those accounts got an easy to guess password then crackers can get in and mess with stuff.

It isn't just people outside the organization, people inside the organization want to crack databases and steal stuff so they can sell it.

I worked for a law firm and some people in the business office had DDOS tools to take out my machine because I was a programmer. I wrote a funtion called SQlFilter that filtered out SQL control codes and tripled up single quotes so they couldn't do an exploit in SQL to drop tables or edit data. I wasn't very popular for writing that function.</comment>


Wealthy people struggling without housekeepers during the lockdown - <AUTHOR> https://metro.co.uk/2020/04/23/wealthy-people-struggling-without-housekeepers-lockdown-12600236/ <comment><USER2> While I do get the money=time philosophy that warrants a housekeeper even for ordinary (still well enough) people, this whole "my time is to valuable to clean my own kitchen" stick just doesn't sit right with me. It's not that cleaning is fun for me, if it was I would to it more often, but it does give me a certain satisfaction to be able to take care of my myself and my stuff.

Maybe this will change when I trade my 55m² flat for a family home.

<comment><USER3> Found this in an article a couple years ago:

"...we err in presuming convenience is always good, for it has a complex relationship with other ideals that we hold dear. Though understood and promoted as an instrument of liberation, convenience has a dark side. With its promise of smooth, effortless efficiency, it threatens to erase the sort of struggles and challenges that help give meaning to life. Created to free us, it can become a constraint on what we are willing to do, and thus in a subtle way it can enslave us."

<comment><USER2> I totally see this in myself, where I get angry when something isn't easy, or something needs maintenance. If that gets channelled in building the tools to improve it, it's positive, but if you have already gotten lazy, you will just not do the work.

/edit: don't misunderstand this as calling everyone who has a housekeeper lazy - there is many good reasons for it</comment></comment></comment>


Gamer Faces $50K Fine For Mapping A Train Station  - <AUTHOR> http://www.popsci.com/gadgets/article/2013-02/gamer-gets-threatened-50k-fine-making-montreal-metro-stop-level

<comment><USER2> I can kind of see where the Société de transport de Montreal is coming from here. Mapping out a real life location and allowing people to run through with weapons in a game could end up in instances where little Johnny who is suffering from a mental illness and likes games finds himself heading to the train station and recreating the game in real life because his view on reality has been distorted. I can however see how this situation is ridiculous. What's to say that if someone were to shoot up the train station that they weren't going to do it anyway? People who end up publicly ambushing people with guns aren't usually trained in combat so there is no tactical attribute associated with the scenario and it's not like the game is displaying messages along the lines of, "Hey! this is a good level to practice a public shooting in" or "If you wait at the top of the escalator you can blow people up down the bottom with grenades"

This whole thing is no different than GTA teaching people to run down hookers and ramming police cars off the road or a flight simulator causing someone to fly a jumbo jet into the Eiffel Tower. If someone is going to put themselves in a situation of shooting someone it's not the fault of the game and they most likely would have had it in them to do it without the game.</comment>


Is Sharing Economy to Robot Economy Exploitative? - <AUTHOR> What happens to all these sharing economy jobs when cars drive themselves? or drones drop off your sandwich? <comment><USER2> More people need to read Robert Anton Wilsons views on the post work future, he was making prescient predictions of this back in the early 70s.

<comment><AUTHOR> I just find it ironic that they're using the concept of sharing economy to get started and then want eliminate massive amounts of jobs to really rake in the money.</comment></comment>


Bloomberg Beta Continues Its Data-Based Outreach Targeting Future Founders - <AUTHOR> http://techcrunch.com/2015/05/27/bloomberg-beta-continues-its-data-based-outreach-targeting-future-founders/

<comment><USER2> Their premise is the most likely to found a company? This seems fairly misguided...what about succeeding at the venture? If all they're looking for are people that want to be founders, there are thousands here, on /r/startups, and a multitude of other sources. This must be some type of publicity stunt. Because otherwise I'm not sure why the criteria that they haven't founded one yet is necessary.

</comment><comment><USER3> I wonder if any of the recipients decide to become a founder because they get an email from Bloomberg telling them they're a founder?

</comment><comment><USER4> Dear sir or madam,

You have been chosen to potentially receive a large sum of cash.

Before I explain, I realize this note comes out of the blue. I lead the investment fund for Nelson Titi Ayodele, former king of the Republic of Democratic People's Republic of the Outer and Inner Congo. He has been frustrated that the market for startup investments is so competitive and dealflow is hard to come by. His family is relying on him to make investments in the next Instagrams and Chatsnaps so that he can build a new hospitals to treat victims of the war on 32-ounce sodas.

So, over the past few months, we've been scraping LinkedIn and the Crunchbases, putting together lists of people who work in the technology industry at top companies. We know that many of them are tired of making their bosses rich, so instead we would like to make you rich.

According to our advanced statistical analysis, if we offer you a large sum of cash to start a company, you are 1000.5% more likely to start a company.

Of the thousands of people who work in the tech industry in SF or NY who might want to start a tech company, we have selected you to receive this special offer because you are the best but your urgent reply is necessary. To accept this offer, you must attend a special dinner at which time we will discuss the deposit of a large sum of money into the bank account of a Delaware corporation we form on your behalf. The cost of the dinner is just $500 of your time.

I look forward to your acceptance of this offer.

Sincerely,

Brother Dr. Peter Dikeibo

Chief Officers of the Investments Committeee

Ayodele LP</comment>


Platforms scramble as 'Plandemic' conspiracy video spreads misinformation like - <AUTHOR> https://techcrunch.com/2020/05/07/plandemic-video-judy-mikovits/ <comment><USER2> See the article comments for more entertainment</comment>


Ask HN: CTOs and managers, how do you cope with isolation? - <AUTHOR> (throwaway acc., apologies)<p>What do you do if you are good at delegation, built sustainable processes and mid-level management that does not need regular interventions? I tried very hard to make myself unnecessary on a daily basis as I believe this is best for the people and the company (no micromanagement, lots of autonomy to people and teams, etc.) and I have succeeded to some extent. There certainly are many areas where I need to interact with others but these occasions are rarer than they've been in the past, and in most cases I am facilitating instead of driving things forward. (Which I think is right.) This is all fine, but I have also started to feel isolated and not getting enough social interaction, camaraderie, teamwork. Any advice about how to cope with this? This is the first time I am a bit concerned about burning out (oddly enough it has nothing to do with e.g. working hours). <comment><USER2> It's natural. Time to join the rotary club or golf club :)

Seriously - network and look for that social interaction outside the company. It's the thing that's going to keep you growing, motivated, prepared(for constant change no matter how sustainable you think your processes are), and sane. Attend/conduct conferences, get involved with local universities, standards processes, write for professional blog/mags etc etc. Anything that increases connection with people who you admire and respect is the key.</comment>


Ask HN: Having 1-on-1 discussions in public channels on Slack? - <AUTHOR> My partner and I run a SAAS with a small team of 5-10 people. Over 99% of our communication takes the form of direct messages. Public channels are almost never used.
Has anyone ever tried encouraging people to have 1-on-1 discussions in public channels, so that everyone can be aware of what is going on in the entire company?
We wouldn't necessarily want people to involve themselves with every single discussion, as slack and chat in general is a huge time waste, but I think the idea could improve group cohesion and also prevent my partner and I from independently providing conflicting instructions to our team.
Anyone have any thoughts or experiences? <comment><USER2> I personally like seeing the discussion in a public company channel and just set the culture so people know they are not required to join unless asked (but it keeps everyone on the same page). Just set some expectations around public conversations so people are on the same page. People can/will still have 1 on 1's outside the public channels when discussing a specific task etc, which is fine.

In the end though, this only scales so far, and then having specific channels for specific types of discussions and limiting the membership to those channels is important. e.g. business/marketing doesn't care about development except for timelines, so exclude them from dev channels etc. But for 5-10 people, you aren't at this point yet.

</comment><comment><USER3> i would find this annoying. Sure it depends on how exactly you use slack, but when i am in a channel i am there because it is relevant to my interests/tasks and when i get a new message i expect it to be relevant as well. Having unrelated messages popup would be the real time waster, because i still have to parse them to make sure they are not again relevant to me.

We've used "task force" channels tho for specific problems that got semi open discussed in documented in these channels.</comment>


Making a cardboard tank part 3 – Remote control - <AUTHOR> http://andersmakes.wordpress.com/2014/05/10/making-a-cardboard-tank-part-3-remote-control/

<comment><USER2> I am wondering how long it will be before people stop making interfaces for such projects with things like switches.

A lot of people would nowadays not think that way. It would be easier for some to write an 'app' for their phone/tablet, use wifi and some board that was a computer in its own right, e.g. a Raspberry Pi. Despite things like wifi being unfathomably complicated compared to a 'simple' carrier wave with some amplitude/frequency modulation (radio), the older analog ways are just too much physics. There might come a time when wiring switches to a PCB becomes as quaint as using valves instead of IC's.

After watching the video you almost feel sorry for the cardboard tank, much like how you might feel sorry for a squirrel missing its tail.

'Cardboard tank accidentally drives into inch deep puddle' would be a YouTube sensation (cruel...).</comment>


CoreOS Delivers on Security with v1.0 of Clair Container Image Analyzer - <AUTHOR> https://coreos.com/blog/clair-v1.html <comment><USER2> Last time I played with Clair, it would say my image had numerous vulnerabilities even though I would update the base image. Turns out, it was reporting older layers were vulnerable even though the issue was patched in a newer layer. Does anyone know if that's the case? I can't seem to find any information on the matter.

<comment><USER3> I have never heard of that. Could you please try again? If you can repro, open an issue and I'll be glad to fix it. Clair now tells the layer in which a vulnerability has been detected, the package name and version that cause it and how it can be fixed. It should definitely help.

</comment></comment><comment><USER4> openscap has been able to do this either on an installed system or on a chroot for years. But "containers", so it's all new and exciting, and definitely nothing like chroot/jails.

<comment><USER5> openscap works with containers too

[https://martin.preisler.me/2015/11/atomic-scan-and- openscap-...](https://martin.preisler.me/2015/11/atomic-scan-and-openscap- daemon/)

<comment><USER4> Erm, that's what I said.</comment></comment></comment>


Researchers develop 'poisoned arrow' to defeat antibiotic-resistant bacteria - <AUTHOR> https://www.princeton.edu/news/2020/06/03/princeton-team-develops-poisoned-arrow-defeat-antibiotic-resistant-bacteria <comment><USER2> Very cool. I do wonder if it means a guaranteed wipeout of the gut microbiome though. Granted, this is likely to be a last line of defense, but _C. diff_ is nothing to mess with either. Sure, we'll be able to kill that with this too, even the nasty vancomycin-resistant strain, but too long with an empty gut isn't good for us either. We'll probably need to get better at microbiome engineering and probiotic used to compensate.

<comment><USER3> Well, antibiotic use is associated with diarrhoea and increased risk of C. difficile infections for this very reason. But the gut eventually gets recolonised by commensal bacteria - either from food or from the appendix[0]. In the worst case, we could always resort to probiotics or fecal transplants.

[0] [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3551545/](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3551545/)</comment></comment>


Ted Dabney, a Founder of Atari and a Creator of Pong, Has Died - <AUTHOR> https://www.nytimes.com/2018/05/31/obituaries/ted-dabney-dead-atari-pong.html <comment><USER2> There was an excellent article by Benj Edwards about Computer Space and Dabney's contribution to video game history, including the invention of the "slipping counter" circuit that moved onscren objects on this game and Pong: [https://www.technologizer.com/2011/12/11/computer-space- and-...](https://www.technologizer.com/2011/12/11/computer-space-and-the-dawn- of-the-arcade-video-game/)

 _"Nolan came to me one time and he said, 'On a TV set, when you turn the vertical hold on the TV, the picture will go up, and if you turn it the other way, it goes down. Why does it do that?' I explained it to him. It was the difference between the sync and the picture timing. He said, 'Could we do that with some control?' I said, 'Yeah, we probably can, but we'd have to do it digitally, because analog would not be linear. '"_

<comment><USER2> The Atari 2600 has this same kind of circuit for its two 8x1 sprites and two 1x1 missiles, at least for the horizontal motion part (HMOVE). To save silicon, it uses a polynomial counter / LFSR instead of 4-bit counter ICs.

</comment></comment><comment><USER3> > _Although Mr. Dabney was overshadowed within the video game industry by Mr. > Bushnell's charm and business savvy, his legacy is now being revisited._

> _"He was the guy that could actually make it work," said Dustin Hansen, a > game developer and the author of a book on video game history called "Game > On!" "Where the circuit hits the board, he's the guy."_

Dabney sounds like Woz to Bushnell's Steve Jobs. As much as I liked reading about Jobs, during his life and after, I never got through his posthumous biography. But I think I finished "iWoz" the day after I bought it.

<comment><USER4> That's partially because Jobs biography is awfully written and was such a waste of The access the author had.

Woz's is easy to read.

<comment><USER5> > That's partially because Jobs biography is awfully written

What was so awful about it?

<comment><USER3> Not the parent commenter, but my problem with "Jobs" was not the writing, but that Steve Jobs as a character was very hard to understand, after many chapters in the book. His personality and actions were just so _erratic_ that I felt I was reading a bio about 4 different people named "Steve Jobs".

I don't know if I can blame it on the author though, because the early chapters were great -- it's what got me interested in reading more about Woz in the first place. What's ironic to me is that the "Jobs" biographer (Walter Isaacson) had full access to Jobs even in his last days. Of anyone who wrote about Jobs, Isaacson probably had the most exposure to all the sides of Jobs and might have the truest depiction of Jobs, erratic persona and all. It just wasn't interesting to read.

In contrast, "Bad Blood", the new book about Theranos by John Carreyrou, the WSJ reporter who exposed Theranos, has a thorough and entertaining depiction of Elizabeth Holmes, even though she has refused every of his interview requests. The info about her comes completely from second hand sources. I don't mention Holmes in the context of Jobs to imply that Jobs (for all his warts) was anywhere near the same level of asshole that Holmes seems to be. But Carreyrou frequently mentions Holmes -- not just because she worshipped Jobs -- but because everyone tells Carreyrou how Holmes had the similar superpower of reality-distortion. Reading "Bad Blood" is like reading a book about Jobs and Apple, if Jobs and Apple were a complete scam that never actually created anything.

<comment><USER6> Interesting. I wonder if that highlights a human flaw, that we prefer a story with a coherent narrative to one that accurately chronicles human complexity and irrationality.

</comment></comment></comment></comment></comment><comment><USER7> > _"A computer was too slow to do anything at video speeds anyway. So once Ted > had invented his motion circuit, this trick, you didn't need the computer > anymore."_

I'm surprised to learn that Pong had no computer, no microcontroller, no software! Just analog and digital circuits.

<comment><USER8> There was a Gamers exhibition that went through Melbourne and Wellington where you could play older versions of Pong and Asteroids, among tons and tons of other games old and new.

One of the amazing things about retro arcade games like Asteroids was just how clear and precise all those vector graphics were. When they're being drawn with analog circuitry with those perfect darks and brights, you get a really immersive world from a very simple concept. It was really amazing.

<comment><USER9> To be clear, the Asteroids era arcade units had microprocessors (Atari coin-op engineers tended to use 6502s then), in addition to a boardful of glorious digital and analog stuff to drive the vector display.

<comment><USER10> You'll definitely want to read Jed Margolin's "The Secret Life of Vector Generators"

[http://www.jmargolin.com/vgens/vgens.htm](http://www.jmargolin.com/vgens/vgens.htm)

And "The Secret Life of XY Monitors"

[http://www.jmargolin.com/xy/xymon.htm](http://www.jmargolin.com/xy/xymon.htm)

(Jed was an Atari engineer during the vector era and beyond)

</comment></comment></comment></comment><comment><USER11> The Computer History Museum interviewed Dabney in 2012:

[http://archive.computerhistory.org/resources/access/text/201...](http://archive.computerhistory.org/resources/access/text/2012/10/102746459-05-01-acc.pdf)

(29 page PDF.)

</comment><comment><USER12> RIP

</comment><comment><USER13> A loss.

</comment><comment><USER14> With no disrespect to Dabney, but these kinds of obituaries make HN kind of morbid in my opinion.</comment>


Show HN: Password strength estimation library - <AUTHOR> https://github.com/GoSimpleLLC/nbvcxz <comment><AUTHOR> I just released Nbvcxz 1.4.0 ([https://github.com/GoSimpleLLC/nbvcxz/releases/tag/1.4.0](https://github.com/GoSimpleLLC/nbvcxz/releases/tag/1.4.0)) which with the help of the community, now supports 8 different languages.

I crowd sourced translations through Reddit /r/translator, by asking for help with two specific translations (Spanish and French). I also asked for help on /r/java for any languages others may be able to help translate to, and others jumped in and offered translations to a bunch of different languages (Russian, Ukrainian, Portuguese, Afrikaans, and Hungarian).</comment>


The Event Calculus Explained (1999) [pdf] - <AUTHOR> https://www.doc.ic.ac.uk/~mpsha/ECExplained.pdf <comment><USER2> Can someone summarize this article and shed some light on how this can be useful.

I tried reading it but I had a hard time just parsing sentences.

<comment><USER3> It's part of "good old fashioned AI". It allows a program to reason logically about the world and create a plan that will get you from your initial state (eg. "I'm hungry") to some desired end state ("Not hungry"). I don't know if it's actually used in industry much, because the generality of logical reasoning makes it slow, and specialized algorithms often perform better.

As far as AI research goes, its main problem is that it can't handle uncertainty, which is why it's not all that popular anymore.

<comment><USER4> There is quite a bit of work on representing uncertainty in the Event Calculus.

<comment><USER3> Oh, I'm sure there is, but it's hard to do without also losing the nice properties of the purely logical formulation, and AFAIK that's the main reason why these approaches are not more popular.

If you have a link to an interesting take on it, please share!

</comment></comment></comment></comment><comment><USER5> If you're interested in this then you should check out the fluent calculus which solves many of the problems of event/situation/etc calculus. In particular it has a much more elegant solution for the frame problem by distinguishing states from situations. But it also has many interesting and useful extensions

</comment><comment><USER6> I think any modern discussion of event calculus needs to mention causal calculus: [http://www.michaelnielsen.org/ddi/if-correlation-doesnt- impl...](http://www.michaelnielsen.org/ddi/if-correlation-doesnt-imply- causation-then-what-does/)

This lets you calculate (sometimes) that correlation does imply causation(!)

<comment><USER6> Downvotes? Judea Pearl won a Turing award for this, and I get downvotes! ;)

</comment></comment><comment><USER7> I'm really very interested in this, but it is beyond my ability and feels out of reach. I'm not looking for a shortcut, but where would a self taught programmer start if this field interested her?

</comment><comment><USER8> This feels very heavy and not as useful as other models such as Markov Decision Processes. Can someone enlighten me where this would be more convenient to reason with than an MDP?

<comment><USER4> It is sort of orthogonal to an MDP.

MDPs can be represented in the event calculus.

A programming language analogy: An MDP can be thought of as a class of programs that satisfy certain conditions. They can be written in any language. Event Calculus happens to be a Turing complete programming language.

(Note: First-order logic, which Event Calculus is based upon, can simulate a universal Turing machine.)</comment></comment>


Retina on OS X - <AUTHOR> http://dcurt.is/retina

<comment><USER2> I want a Retina Display Mac as badly as anyone, but I'm trying to not get my hopes up too much. Apple is famous for being secretive, even amongst themselves. They are also consistent with their design patterns in Cocoa. If/when the Retina Display comes to the iPad, it will almost certainly follow the @2x naming convention, and the Mac will almost certainly follow it as well.

This could just as easily mean the design teams at Apple are simply being well-prepared for whenever a Retina Display Mac _does_ come, even if it's years away.

</comment><comment><USER3> Out of curiosity, what is the cursor of the hand giving 'the shocker' used for?

<comment><USER4> That has to be a joke.

<comment><USER5> no joke, I'm also a little confused.

</comment></comment></comment><comment><USER6> HiDPI mode is already here. You can enable it today if your monitor is sufficiently large, and see these large images in action for yourself. There's no need to go digging around app package resources and speculate about what's coming.

</comment><comment><USER7> Does anyone know what those panels cost compared to the old ones? Is a 13 inch or a 15 inch panel more likely to show up first? Is a 13 inch panel even feasible?

2880x1800 is seriously crazy, that would be 255 ppi on a 13 inch screen, 50 ppi more than previous commercially available and extremely expensive high-ppi screens (excluding really small screens for phones and the like), like this one: <http://en.wikipedia.org/wiki/IBM_T220/T221_LCD_monitors>

Is it even possible to build those panels with the same thinness that they would fit? Oh, and will Ivy Bridge be able to deal with that kind of screen? If not, we can be fairly certain that there will be no Retina MacBook Air. There is just no space for a dedicated GPU on that logic board.

Hm, I guess if a Retina iPad is possible (263 ppi, by the way, and that one seems like a certainty) then a 13 inch screen can't be all that harder. And if the iPad hardware can deal with that screen (presumably while keeping the battery runtime, performance and size the same – I can't imagine Apple sacrificing any of that) a desktop GPU – even an integrated one – should be able to deal with it, too.

The price will be interesting, too. It seems inconceivable that Apple will be able to sell a Retina iPad for $500. The current iPad has an IPS screen and that – the high quality screen with wide viewing angles – is one of its headline features. The next iPad would then also have to have an IPS Panel that is of the same or better quality and also Retina. I'm looking forward to see how Apple will deal with that. (The same applies to the Mac, too.)

<comment><USER8> [http://www.macrumors.com/2012/01/10/ces-2012-panasonics-20-i...](http://www.macrumors.com/2012/01/10/ces-2012-panasonics-20-inch- display-at-216-ppi-arrives-amid-rumors-of-retina-macbook-pro/)

Panasonic showed a 3840x2160 20" screen at CES at 216dpi. 3.5mm thin. No word of pricing, but the technology seems to exist.

Also 2880x1800 would be the 15" size, not the 13" size. Since it's double the 15" MBP's linear resolution.

<comment><USER7> The 13 inch MBA and the 15 inch MBP have identical resolutions, so 2880x1800 would be the resolution of both MacBooks. (The 13 inch MBP lags behind for whatever reason – but it's kind of useless and a waste of space in Apple's lineup anyway.)

</comment></comment></comment><comment><USER9> That's interesting. I know a lot of web designers that use macs primarily and I wonder how having such a high default resolution would impact their design choices. Could this 'break the web' as people around here are so fond of saying for non high resolution screen users?

<comment><USER10> I doubt that the new macs will have higher effective resolutions. Everything will be very sharp but will remain the same size, just like on the iPhone. This can't break the web, it will simply raise the ceiling on how good a website can look.

<comment><USER11> Except that designers might want to include 4x-sized bitmap assets to have their sites appear sharp on those retina displays. If that isn't done carefully, users with smaller displays might have to download those, wasting their bandwidth.

<comment><USER12> Hmm, yes, especially if the designers are working on such a large resolution screen.

Would the solution be a media query in the CSS? Would there be data in the HTTP user agent string to serve up a different CSS/HTML/image resource?

<comment><USER11> Apple introduced the -webkit-min-device-pixel-ratio: 2 media query parameter with the iPhone 4. But for HTML images that doesn't help

</comment></comment></comment></comment></comment><comment><USER13> Does anyone have any idea how well retina display MacBooks work for Windows and Linux? AFAIK Windows have resolution independence but can they display hi res system UI? Or will everything just become smaller?

<comment><USER5> From my experience everything on linux will become smaller. More user-centric linux's like Ubuntu might have resolution independence though.

<comment><USER13> If it really happens, Windows and Linux users will probably have no choice if they want retina display laptop. At least for a few years.

</comment></comment></comment><comment><USER14> In my quest of the perfect screen for coding +8 hours a day Retina is good news. BUT as Anti-Glare filter are too grainy, there will surely be only glossy screen (headache in bright rooms). :(

</comment><comment><USER15> Relative predicted timings between Ivy Bridge release and full OS X "retina" capability? To wit, odds of next 27" iMac having that resolution? and when? Just chomping at the bit for one...

<comment><USER16> A 27" retina display would be 5120x2880; this seems pretty far beyond the state of the art. I'm not even sure eDP could drive it.

</comment></comment><comment><USER17> Or that they are just sharing resources between OSX and iOS apps. As much as I'd love to have higher resolution displays, I don't think this is as strong a signal as this article is claiming.

<comment><USER11> Some of the assets are mouse cursors. Unlikely we are going to see iOS mouse support, so that does suggest mac retina displays

</comment></comment><comment><USER18> It's been really, _really_ annoying in the past 4-5 years as monitor resolutions came to a grinding halt at 1920x1080 (ie, HD video). There's not much point buying a larger monitor if the resolution doesn't keep pace.

Hopefully Apple can serve their usual task of kicking all the other electronics manufacturers out of a rut.

<comment><USER16> My 2560x1600 HP monitor disagrees with you. (Affording it is a different matter.) The trend of replacing 16:10 monitors with lower-res 16:9 models is disturbing, though.

<comment><USER7> But what size is that screen? That's the problem.

Screen sizes have increased (or rather: it's now affordable to buy a larger screen). A 27 inch panel with your resolution has the same old and boring ppi like a 17 inch screen with 1600x900 pixels.

The screens Apple seems to want to build into their Macs would double that ppi count. That's what would be great.

<comment><USER16> A smaller, higher-DPI monitor displays less information; all those extra pixels just make things sharper. Sure, I'd like a sharper screen but I'm not giving up real estate for it. If Apple comes out with a 30" retina display I'll be all over it, but I know they won't.

<comment><USER7> Huh? That makes no sense. People don't pick small displays over large displays just because. They pick them because they make for an attractive package. It's all tradeoff, don't you understand?</comment></comment></comment></comment></comment>


How can I get started with web development? - <AUTHOR>

<comment><USER2> Visit rubyonrails.org.</comment>


Comparing AVIF vs. WebP - <AUTHOR> https://www.ctrl.blog/entry/webp-avif-comparison.html <comment><USER2> I would love to see a comparison that includes JPEG-XL: [https://gitlab.com/wg1/jpeg-xl](https://gitlab.com/wg1/jpeg-xl)

<comment><USER3> The JXL standard isn't finalized yet.

</comment></comment><comment><AUTHOR> > I guess it will be another ten years before we see AVIF support on Apple's > platforms?

And there it is.</comment>


Sverdlovsk Anthrax Leak - <AUTHOR> https://en.wikipedia.org/wiki/Sverdlovsk_anthrax_leak <comment><USER2> While greatly overshadowed by the nuclear arms race, the US and Soviet biowarfare programs during the Cold War were absolutely terrifying. Many Soviet bioweapons scientists defected to the US toward the end of the Cold War. One of those scientists — Ken Alibekov — shared his experiences in a thrilling autobiography called Biohazard [0]. According to Ken's claim in the book, he actually uncovered the Sverdlovsk anthrax incident through an epidemiological research project while in medical school. While it's likely many of the stories in Biohazard were embellished or altogether fabricated (vested interests in promoting biowarfare threats), anecdotes from US scientists working at USAMRIID at the time support many of the Soviet claims. It's interesting to ponder how differently the world might have turned if both sides had access to our modern understanding of genetics, precise editing tools, and inexpensive sequencing. Biowarfare is insidious for other reasons as well: lack of damage on physical infrastructure, relatively low development costs, ability to mimic a natural pandemic, and potential for mass transmission to name a few. And perhaps that latter one is a saving grace — the possibility of losing control over a biological weapon makes it a very risky asset indeed.

[0] [https://en.wikipedia.org/wiki/Biohazard_(book)](https://en.wikipedia.org/wiki/Biohazard_\(book\))

</comment><comment><USER3> My brain couldn't tell me where Sverdlovsk was.... so I look it up....

Then my brain went "Wut!? What's that! Why is that?"

[https://email@example.com...](https://firstname.lastname@example.com,61.2573686,5330m)</comment>


Business Model - <AUTHOR> http://farm3.static.flickr.com/2289/2126533900_30e4e1cd4f_b.jpg

<comment><USER2> Why is there buzz over Lisp all of a sudden?</comment>