HNHacker News
TopNewBestAskShowJobs

Aeolus98

172 karma · joined November 14, 2013

submissionscomments
Aeolus98··on Darpa invests $100M in a silicon compiler
No matter what, you'll need to clear a certain volume floor. Masks are expensive [0] especially for nicer process nodes.

Once you have a mask set and fab time, it's off to the races. IMO $1M really isn't bad for a simple chip run.

[0] https://anysilicon.com/semiconductor-wafer-mask-costs/

Aeolus98··on Darpa invests $100M in a silicon compiler
I might be able to weigh in here.

Having these tools as open source and freely available is a huge deal for so many industries. I've worked with these tools at an academic level and now at a startup, and it's amazing the magnitude of this enabling technology. Just the tooling investment will be huge, making the core solvers and algorithms more accessible should spawn a whole new wave of startups/research in effectivley employing them. Just these days, I've heard of my friends building theorem provers for EVM bytecode to formally check smart contracts to eliminate bugs like these [0].

These synthesis tools roughly break down like this:

1. Specify your "program"

- In EDA tools, your program is specified in Verilog/VHDL and turns into a netlist, the actual wiring of the gates together.

- In 3D printers, your "program" is the CAD model, which can be represented as a series of piecewise triple integrals

- In some robots, your program is the set of goals you'd like to accomplish

In this stage, it's representation and user friendliness that is king. CAD programs make intuitive sense, and have the expressive power to be able to describe almost anything. Industrial tools will leverage this high-level representation for a variety of uses, like in the CAD of an airplane, checking if maintenance techs can physically reach every screw, or in EDA providing enough information for simulation of the chip or high-level compilation (Chisel)

2. Restructure things until you get to a an NP-complete problem, ideally in the form "Minimize cost subject to some constraints". The result of this optimization can be used to construct a valid program in a lower-level language.

- In EDA, this problem looks like "minimize the silicon die area used and layers used and power used subject to the timing requirements of the original Verilog", where the low level representation is the physical realization of the chip

- In 3D printers it's something like "minimize time spent printing subject to it being possible to print with the desired infill". Support generation and other things can be rolled in to this to make it possible to print.

Here, fun pieces of software in this field of optimization are used; Things like Clasp for Answer Set Programming, Gurobi/CPLEX for Mixed Integer programming or Linear programs, SMT/SAT solvers like Z3 or CVC4 for formal logic proving.

A lot of engineering work goes into these solvers, with domain specific extensions driving a lot of progress[1]. We owe a substantial debt to the researchers and industries that have developed solving strategies for these problems, it makes up a significant amount of why we can have nice things, from what frequencies your phone uses [2], to how the NBA decides to schedule basketball games. This is the stuff that really helps to have as public knowledge. The solvers at their base are quite good, but seeding them with the right domain-specific heuristics makes so many classes of real-world problems solvable.

3. Extract your solution and generate code

- I'm not sure what this looks like in EDA, my rough guess is a physical layout or mask set with the proper fuckyness to account for the strange effects at that small of a scale.

- For 3D printers, this is the emitted G-code

- For robots, it's a full motion plan that results in all goals being completed in an efficient manner.

[0] https://hackernoon.com/what-caused-the-latest-100-million-et...

[1] https://slideplayer.com/slide/11885400/

[2] https://www.youtube.com/watch?v=Xz-jNQnToA0&t=1s

Aeolus98··on ReasonML – React as first intended
A lot of the tooling speed comes from a couple places:

1. The compiler optimizations being applied to code - Things like GADT's are able to be allocated very efficiently - Can generate code that doesn't box at runtime (smash it into a pointer is done as well) - Pointers are word-aligned

2. The OCaml runtime - No JIT - No warmup - Can emit native code

3. The HM type system - Typecheckers for HM are really simple [1]

[1] https://en.wikipedia.org/wiki/Hindley%E2%80%93Milner_type_sy...

This simplicity + the features of the compiler combine to make the OCaml compiler very fast, and very easy to write one (some undergrad CS classes do), and developer-time tenable to make both happen.

Aeolus98··on Ask HN: What problem in your industry is a potential startup?
Integrating with 20 year old PLC's and robots is such a pain. Most people we work with have stacks upon stacks of abstraction to keep them safe and give them a sane wrapper for the functionality of the robots. So many labs have homebrew monstorous python scripts made by a grad student that left 2 years ago that everyone uses and no one can maintain.
Aeolus98··on Core ML Community Tools
Learning enough to make your own spin on things by mixing and matching parts is really easy once you understand the mathematical underpinnings of things.

It's true, many API-level things are opaque about how they work, but their theoretical foundations are usually possible to pick up.

I guess a good way to do this is via an example. I had to build a system to hit the following criteria:

* The data is scarce

* The data is time series

* The data follows a state machine

* The data is noisy, and contains a signal that's unique across all training samples

Gluing together multiple domains of knowledge, from generative tactics for label propagation, to EM for state-machine convolutional decoding, to 5 or 6 others gave the company something that worked, in a short timescale, that scaled well.

It's understanding where things glue together and under what circumstances to apply that glue has been what's been most helpful to me.

A great place to get an intuition of what I mean is Louppe Giles's PhD thesis on random forests, specifically stuff like the section on the bias-variance tradeoff.

https://arxiv.org/abs/1407.7502

Aeolus98··on Java 9 and IntelliJ IDEA
Scala.js scratches that itch for me. I rarely write frontend code, but when I do the extra IDE support given to me by IDEA for Scala.js is pretty great.

I'm a full time Scala dev though, so I'm totally biased

Aeolus98··on Numba: High-Performance Python with CUDA Acceleration
A while ago I had to do a complex ML task.

It involved tons of time series data that followed a state machine, with very little training data.

A useful algorithm to force a series of noisy predictions to follow a state machine is the Viterbi decoder.

Numba let me write a JITted version that got order of magnitude improvements, especially when there were over 10^8 time series points.

It's a great piece of software, if a bit finicky sometimes.

Aeolus98··on The Art of Teaching Math and Science
One of my professors, while an extremely competent physicist, chose to focus far more on the "philosophy of teaching". Sanjoy's metaheuristic approach to teaching, tooling it like a hard science with real analysis of the effect of differing methodology resulted in a fantastic class, called "The art of approximation". Turns out the 80/20 rule can be stretched in so many different ways!

This is the textbook, and it's one of the few books that's actually changed my life. https://ocw.mit.edu/resources/res-6-011-the-art-of-insight-i...

Aeolus98··on The Art of Insight in Science and Engineering: Mastering Complexity (2014) [pdf]
Oh cool. I'm actually in Olin now, and even better, taking his class as I type this post.

Art of approximation https://imgur.com/a/OvDzl

I'll pass along any cool questions.

Aeolus98··on Ask HN: Any HN stats analysis been done?
I particularly like Andrej Karpathy's analysis: https://cs.stanford.edu/people/karpathy/hn_analysis.html
Aeolus98··on Deep Image: Scaling Up Image Recognition
I don't understand why they included the butterfly synchronization model at all compared to the lazy update one, the latter is far faster, especially when you have raw access to GPU raw memory.
Aeolus98··on Ruby talks of 2014
It's interesting to note just how applicable these talks are to other languages. That database one is something i'd recommend a high schooler listen to for their next hackathon.
Aeolus98··on Kurzgesagt Information Design
Their Youtube channel [0] is excellent, they really grab the attention of someone young about a large variety of topics, and they really make you want to keep watching their videos.

[0] https://www.youtube.com/user/Kurzgesagt

Aeolus98··on A Day with Project Ara, Google's Modular Phone
The point that you make about the "old" paradigm is completely valid, in the fact that we're seeing a shift away from towers with interchangeable components to something like a NUC or mac mini for the "average" user, as these smaller formfactors are "good enough".

Project Ara on the other hand is trying to do something else entirely. They have the formfactor defined already, that of a modern smartphone. What makes it so interesting is the fact that they're trying to take that formfactor and add the inherent flexibility that comes with a larger system, but without changing the formfactor. This is akin to getting ATX full tower expansion in the same space as the mac mini or even mac pro. It's a daunting task to say the least, one with a constantly changing frame of reference, as the smartphone evolves into a thinner sleeker and lighter device. This makes the Ara developers jobs doubly hard, as they have to develop for 2 generations ahead of where we are for size and weight constrains, while still keeping the bulky, power hungry, and prone to failure interconnnect that is required to assemble disparate parts into a whole unit, as well as all the modules within this target.

It's a race that they may never win due to how rapidly those targets shift, but we can hope that it's a moonshot project that one day renders tangible benefits for the everyday phone.

To be honest, i'm less and less excited about these physical devices with the set of constraints that being physical devices imparts to them. I really wish that within the next 10 years we hit a Virtualization-level jump in how we interact with information, allowing us to abstract away trivial things like screen size and compute power. The only way this is going to happen is through augmented reality, a clear moonshot project i wish a few more companies invested in rather than the halfhearted attempt that is google glass.

Whee I went off on a tangent there.

Aeolus98··on Color Emoji in Windows 8.1 – The Future of Color Fonts?
I think right autocompleted to write for you there.
Aeolus98··on Ask HN: What projects are you working on?
I'm working on a frontend to manage arbitrary applications, and provide a centralised place to manage them all. It works across machines through ssh, and can provide pretty statistics and logging bits and pieces, but the core of it is to do something to multiple machines at once.

I can select and add arbitrary numbers of machines to a job, then run it, and also put that command on a schedule. Say i want all my packages to be upgraded at all times. I can have this every night at 00:01, to ssh to all the machines and run the appropriate command based on architecture.

This is useful for my internship, where i have to simultaneously deploy and manage many machines, and this app has proven to be immensely scaleable, with up to 1000 VM's being managed at once with no signs of slowdown.

Besides that, all i do now is worry about college

Aeolus98··on 0xDBE: JetBrains IDE for DBAs and SQL developers
Some of these JetBrains IDE's are really good, and hopefully this will make the mind-numbing task of writing this a lot more pleasant. Here's to their eventual MongoDB support
Aeolus98··on Nvidia releases $3000 Titan Z
Its mainly used for the DP floating point that isn't limited artificially. The titan supercomputer at ORNL uses an older version of these. So heavy compute.
Aeolus98··on Nvidia releases $3000 Titan Z
IMHO the only reason you'd want this is to save on a PCIe slot when you absolutely need the double-precision floating point operations to run at full speed.
Aeolus98··on CSS Diner
I just did it with .small:last-of-type, as it executes cleaner and can be scaleable
Aeolus98··on CSS Diner
:nth-last-child(4), because if you do first-child(2) it selects the second orange as well.
Aeolus98··on Moto 360
I'm typing this on the top spec Yoga 2 Pro, it's amazing. The main complaints from reviewers were as follows; - yellow tint on screen - Flimsy hinge - low battery life - backlight bleed

I'll address them in order. 1. there was a marked discoloration when i saw pictures on the forums, and i almost returned it due to bing scared. When i got it, nothing. Absolutely nothing, though it looked a bit over saturated, which i kinda like on a non-workstation device.

2. The flimsy hinge is not a problem, end of story. Its stiffer than a MBA or MBP,m and only wobbles significantly if you tap it real hard.

3. Battery life is a problem, but if you're like me, i use it in multiple short spurts, coupled with a few long ones. It lasts all day, and while i do wish for a bit more, as for waht it is, it's good. Not great, but good.

4. No backlight bleed, nuff' said.

Furthermore i have found myself using the touchscreen far more than i anticipated. It's hands down, IMHO, the best laptop availible today thats an ultraportable. Go get one.

Aeolus98··on Where to begin when learning C? Start by making lots of errors
I second the motion to post the unfinished guide! Perhaps on Github where some other HN guys can make it complete for you.

Regardless, I think it's a great idea, and would really give insight as to why things work the way they do, instead of us just seeing Hello World!