HNHacker News
TopNewBestAskShowJobs

guru_meditation

315 karma · joined March 15, 2015

submissionscomments
guru_meditation··on 40 Years of Paula – The Amiga Sound Chip
For the uninitiated, the Paula chip is the mother of all trackers [1][2].

Decades since, way too many talented people obsessed over whether F-3 is 22168 Hz, 20864 Hz or something else. [3][4][5]

[1] https://en.wikipedia.org/wiki/Music_tracker

[2] https://web.archive.org/web/20110726144753/http://helllabs.o...

[3] https://www.pouet.net/topic.php?which=8628

[4] https://www.pouet.net/topic.php?which=12158&page=1

[5] https://resources.openmpt.org/documents/PTGenerator.c

guru_meditation··on Max Headroom Signal Hijacking (2020) [video]
Poster here: the first thoroughly researched documentary I've been able to find on this and it came out just a few months ago. Acquired all of 90 views on YouTube.

Vice had a good article (posted on HN years ago) that did some good research work, but several trails they followed we now know turned out to be red herrings:

https://www.vice.com/en/article/pgay3n/headroom-hacker

Anyone on HN have a good idea of what it would have cost to mount this kind of hack in Chicago in 1987 and what kind of equipment would you need?

guru_meditation··on The Pyra Handheld Linux PC is Shipping
Linux/GRUB protip:

GRUB_CMDLINE_LINUX_DEFAULT="video=efifb fbcon=rotate_all:1 quiet" GRUB_CMDLINE_LINUX="video=efifb fbcon=rotate_all:1 quiet splash noautomount" GRUB_GFXMODE=1200x1920x32

( see here: https://www.reddit.com/r/GPDPocket/comments/9sl9sp/grub_land... )

More super-handy GPD patches https://github.com/stockmind/gpd-pocket-ubuntu-respin

(Note: a lot of this is not needed anymore and mainlined into Ubuntu 20, Linux Mint 20, etc.)

guru_meditation··on The Pyra Handheld Linux PC is Shipping
Trying not to spam, but extremely satisfied with GPD Pocket 2, which I purchased recently. Old enough to have used the very first laptops on the market, was looking for a Libretto-like machine, settled with this.

What drove me to GPD Pocket 2 was the key size, massive RAM and SSD and that it is extensively supported in the new Linux kernel and several mainstream distros (Ubuntu, Ubuntu Mate, Linux Mint, Arch). Delighted to report that I type faster on this than a lot of fellow engineers on a standard PC.

guru_meditation··on The Pyra Handheld Linux PC is Shipping
Writing this from a GPD Pocket 2 (see my reply above):

The key size is very similar to a standard laptop for most keys. The key travel is longer than that of a 13" MacBook Pro, and I guarantee it because I use both daily.

60+ WPM after a few days of use. Have 80-100WPM on my MacBook Pro.

The adjustment comes from having a QWERTY keyboard layout where some of the keys have been reduced in size to fit. Space bar is half the size, Return is the size of a standard key and you only get the left modifier keys (ctrl, fn, win, alt) and the keys past the letter P to the right are scattered elsewhere. IMHO very good trade offs as the arrow keys are full size. The coding keys (curly braces, brackets, pipe, etc.) are in a non standard location, so take longer to adjust to.

guru_meditation··on The Pyra Handheld Linux PC is Shipping
A recent convert to GPD Pocket 2. Decades of programming experience from kernel hacking to 3d engines and distributed systems.

After a few days reached 60-80 wpm (depending on the typing test). A drop of ca. 20 wpm from my 13" MacBook Pro.

Installed a dual booting Ubuntu 20.04 Mate LTS. Comes with all the necessary open source drivers. Make sure to get the pre-baked distro for GPD Pocket 2 from Canonical's website. Intel Graphics acceleration works flawlessly as do all the GPU acceleration options in Firefox. Installing Compiz as a compositing manager really speeds everything up.

Now use this more often than my Macbook Pro. In fact, the GPD Pocket's touchscreen spoiled me and now I keep pressing on normal laptop's screens expecting for things to happen :D. GPD's substitute for a mouse is incredibly precise, a huge surprise as my expectations were super low for such an unproven solution. Think of it as some sort of capacitive/optoelectric Lenovo nub in the corner of the keyboard.

Ultimate hackery: The keyboard has a fan on/off switch as the Celeron provided has an operating range of up to 100C. So if you don't need the highest clock rate, turn off the fan with one key press :D

Hoping fellow hackers appreciate this review. Of course, this post is written from my GPD Pocket 2.

P.S. Also running Wine, PlayOnLinux, WinUAE and AROS. 8 GB RAM and 256 GB SSD make it easy to be cavalier about resource use. Performance wise you'll be fines as long as you're not compiling large codebases, editing large videos or expecting to raytrace animations in Blender...

guru_meditation··on ChesSkelet: Micro Chess Game for ZX Spectrum in 365 Bytes
Moved white queen in front of black (computer) king under the cover of the white knight. Computer went ahead and captured my queen using its king.

Was tempted to capture the king with my knight, closed browser window instead :)

guru_meditation··on Scientists discover the chemicals behind the unique Parkinson’s smell
November 15, 2018 publication:

Discovery of volatile biomarkers of Parkinsons disease from sebum

https://doi.org/10.1101/469726 (free full-text PDF link on site)

From the abstract:

We have serendipitously identified a hyperosmic individual, a Super Smeller that can detect Parkinson's Disease(PD) by odor alone, and our early pilot studies have indicated that the odor was present in the sebum from the skin of PD subjects.

guru_meditation··on Things I Don’t Know as of 2018
I would say that in this particular domain going from:

WinForms -> ASP .NET MVC

and then

Backbone -> AngularJS -> React

(including participating in React development) gave you the kind of exposure and experience you needed for Redux.

I think a lot of people reading on here missed this parts and I certainly didn't catch onto this reading your Things I don't Know as of 2018 post or the "Things I do Know" post you linked to.

guru_meditation··on Things I Don’t Know as of 2018
IMHO, teams using a certain stack have agency to see that stack win the hearts and minds of other developers.

Additionally, the opinions of popular leads, managers etc on what should be used will count more. Winning their mindshare will win you a lot of FB org.

Winning a lot of FB org will exert a tremendous influence on the Open Source community as you now have large numbers of engineers working on open source projects on premium pay.

I believe this is how it works in most modern large engineering orgs. After reaching a certain critical mass of adoption, a team will be hard-pressed to use anything else, especially if reusing other team's components requires you to master, say, Redux anyway.

guru_meditation··on Things I Don’t Know as of 2018
If you are not working on Browser frontend, you will also enjoy the API stability.

Here's an older verison of the same guide by the same author, more than 2 decades ago: https://web.archive.org/web/19970812031954/http://www.ecst.c...

Amazing how little has changed. I strongly suspect anyone will remember the UI framework du jour 10 years from now but Berkeley sockets have staying power. Despite occasional efforts to replace (OpenTransport anyone?).

guru_meditation··on Things I Don’t Know as of 2018
I wish we had more historical overviews like this.

The number of new developers has been outstripping the number of old developers in most environments and this has been happening for at least the last 15 years.

Thus, we come back to Richard P. Gabriel's Worse is Better, or at least the essay's focus on the importance of social components of a project[1]. N.B.: not implying Redux is worse than any of the other discussed projects.

Newer generations cannot possibly have the time to go through the history and tradeoffs of various frameworks that used to be extremely popular and the reasons people moved on. Too many previous frameworks and too few posts like what you just wrote. Besides, where to start? It's not like TAOCP is going to have a chronology of Browser UI frameworks.

Instead, the tendency is to leverage the rapidly developing ecosystem and work with the projects that have the largest numbers of stars on github, etc.

If you are a very large well heeled eng. organization with a capability to enforce the use of particular frameworks, it is in your interest to popularize them. You will pay and encourage your engineering org to, among other things they do, market it to the dev. community. If there are enough engineers in your org (say: tens of thousands), you will begin exerting a tremendous concentrated influence on the Open Source community.

At the same time, for everyone else who does notwork inside a 10K+ engineer org, the lack of future maintenance and upgrades presents such a huge downside risk to not using the most popular open source frameworks. The open source community moves so quickly that you run into the risk of being stuck with maintaining the reusable components you plucked from other open source efforts.

The backwards compatibility guarantees are so much lower than what they used to be. The browser world is still figuring out how to link dependencies[2], let alone generate a stack that is stable enough where you don't have to continually update your UI codebase if you want to keep continuing to reuse other people's widget code.

So you tend to stay with the pack. React is the new most popular thing? OK, let's do React. Redux is the new way? OK, Redux. Pick anything else and you risk being stuck with a stack that rapidly loses the ability to interoperate with a huge majority of new Browser UI open source code.

[1] https://en.wikipedia.org/wiki/Worse_is_better

[2] https://medium.com/webpack/the-state-of-javascript-modules-4...

guru_meditation··on A JavaScript Port of the 1986 Amiga Juggler Raytracer
Ha! :) Sorry, meant to write "rhn is still out there", but I dropped I replied to hastily and by the time I figured it out it was too late to edit my post..
guru_meditation··on A JavaScript Port of the 1986 Amiga Juggler Raytracer
I consider Andy Hertzfeld's site a very accurate reference as well as a patchwork of authentic fascinating stories that just draws you in.

However, Ron Nicholson (rhn) is on the Mac case signatures, he also did major work on Apple //, so I find it strange that he is not mentioned anywhere on folklore.org . I think this is something worth researching..

guru_meditation··on A JavaScript Port of the 1986 Amiga Juggler Raytracer
I just realized I can't find the original code on this guy's website but I have the extracted Amiga disk image from a public domain disk circulated at the time... so, here's the annotated 1987 K&R C code on pastebin for comparison:

RT1.C http://pastebin.com/67KWYV3p

RT2.C http://pastebin.com/pc3Uq2Xd

RT3.C http://pastebin.com/v4Qx0gTD

guru_meditation··on A JavaScript Port of the 1986 Amiga Juggler Raytracer
Correct, just like with the Commodore 64, the CPU clock actually differed based on the graphics hardware output, which was back in the day adjusted for the household CRT TV sets.

The master clock crystal oscillator on the motherboard was set to be 2 clock cycles per pixel and other chips clocks were derived from that.

Hence the CPU was set to 1/4th of master clock, so the European PAL[1] machines (a 50fps TV standard) actually ran slightly slower than the American NTSC[2] machines (a 60fps TV standard with a smaller vertical resolution).

[1] http://en.wikipedia.org/wiki/PAL

[2] http://en.wikipedia.org/wiki/NTSC

guru_meditation··on A JavaScript Port of the 1986 Amiga Juggler Raytracer
Yes, this ran on an 1987 Amiga 500 with the Commodore A501[1] 512K RAM expansion. This means:

  * 1MB RAM
  * 256K ROM
  * 7.16 MHz (yes, that's 0.007 GHz :)) Motorola 68000
plus a whole lot of custom chips [2]

There were different ways of expanding the Amiga RAM and the demo became so popular it was reverse engineered by a popular cracking group Skid Row[3,4]., patched and re-distributed

[1] http://amiga.resource.cx/exp/a501

[2] http://en.wikipedia.org/wiki/Amiga_500

[3] http://www.exotica.org.uk/wiki/Skid_Row_%28old%29

[4] https://www.youtube.com/watch?v=uqfcrViBGn8

guru_meditation··on A JavaScript Port of the 1986 Amiga Juggler Raytracer
The hardware owes it all to Jay Miner and Ron Nicholson (rhn). Jay Miner passed a long time away from a long term kidney condition and is still out there doing lots of stuff:

http://www.nicholson.com/rhn/photo-cv.html

Notice how he was the guy behind the IWM (Integrated Woz Machine) for the Mac and the beautifully minimized Apple //c in addition to being one of the key persons in creating the essence of Amiga hardware magic: Denise, Copper and Blitter.

Carl Sassenrath and RJ Mical were super influential on the OS side, making a super lightweight preemptively multitasking OS with small components that messaged each other and the OS abstraction layers that the rest of the personal computing world will not see in the next 10+ years.

guru_meditation··on A JavaScript Port of the 1986 Amiga Juggler Raytracer
9 Fingers "making of" video, where the Spaceballs dudes videotaped their highschool friends for the dance shots:

https://www.youtube.com/watch?v=WgriMuXZ3QY

I think Jannicke, the state of the art girl dated Paul (Lone Starr) at the time. They were all teens when they made this and Paul was one of the by far youngest democoders in the scene at the time.

Interview with Jannicke (look how young everyone is): https://web.archive.org/web/20050307132321/http://spaceballs...

More context in Borzyskowski's work: "THE HACKER DEMO SCENE AND IT'S CULTURAL ARTIFACTS" http://fullscream.com/wp-content/uploads/borzysko.txt

Raw #5 diskmag: http://janeway.exotica.org.uk/release.php?id=9511

One day I'll really take the time to write a properly researched history of this very unique era..

guru_meditation··on A JavaScript Port of the 1986 Amiga Juggler Raytracer
For some context, this was the first raytracer that ran on any personal computer.

Some more context here: http://home.comcast.net/~erniew/juggler.html

and a bit more here: http://www.pouet.net/prod.php?which=10776

The source code is refreshingly simple and easy to read: both the original C code and the ported JS code.

guru_meditation··on Graduate student takes a problem-solving approach to his brain cancer
The talk was both profoundly touching, informative and surprisingly cheerfully optimistic. He really did convince me that MIT and Harvard are some of the best places to be at if you have cancer in terms of resources.

A highlight from that talk was the state of the art robotic surgery facility at Brigham and Women's neurosurgery dept.

http://www.brighamandwomens.org/departments_and_services/neu...

He got operated on by one of the best neurosurgeons specializing in glioma (his condition):

http://physiciandirectory.brighamandwomens.org/Details/886

guru_meditation··on Neurokernel: Emulating the Fruit Fly Brain
Quoting from the course front page:

Students with extensive software engineering experience (systems software, parallel programming or computer graphics) are strongly encouraged to apply.

Almost makes me want to go back to grad school. Look at these folks, they made GPU-enabled code available as Python's SciKit[1]

But then I see they're patenting stuff left and right [2] and my enthusiasm for this project dwindles....

[1] http://www.bionet.ee.columbia.edu/code/scikits.cuda

[2] http://www.bionet.ee.columbia.edu/patents/

guru_meditation··on Monte Carlo Methods, Stochastic Optimization
I heartily recommend the notebooks published in this course as excellent applied reference material to estimation and optimization.

I love it how code and coursework are intermingled, reminiscing me of Knuth's Literate Programming [1]

My beef with many other courses offered (including Coursera) is that they use Matlab when it's clearly advantageous to use IPython Notebook as a better experimenting environment. For example, Daphne Koeller's PGM course[2] is still in Matlab and no matter what you do the code looks extremely clumsy and hard to read. N.B. I wrote tens of thousands of lines of Matlab code, including GUI programs, but that does not mean it's a good language to use especially in cases like this.

[1] http://en.wikipedia.org/wiki/Literate_programming

[2] https://www.coursera.org/course/pgm

guru_meditation··on Show HN: Build Your Own Tetris Playing Program
Huge thumbs up for making the effort to share a simulated environment.

Having these kinds of "toy" environments can result in more research into some interesting problems.

Over the course of years I taught or helped teach several classes and I implemented a bunch of one-off systems for evaluating AI agents.

Feedback on the system:

   * Implementation:
     * I encourage a more modern use of C++, certain choices
         unnecessarily complicate the code and make it less
         flexible.
     * Example:

  	Piece *p = new Piece(curPiece->getPieceID());
        ...
        delete p;

      * (use unique_ptr instead)

     * Example 2:
       in game/Piece.h you do not advertise constness on
       simpler getter accessors.

     * Example 3:
       * the constants in game/Constants.h make
         experimentation in Runtime not flexible enough.
         There's no reason why most if not all of these 
         constants should not be configuration parameters
         for a game.

     * Example 4:
       * Instead of documenting some errors with cerr,
         consider using exceptions. 

   * Include a proper build file. I recommend CMake as it is
     available for all popular platforms and easy to read for
     simple projects like this. Otherwise a simple Makefile 
     will do.

 * Features:
   * Provide a way to automatically evaluate:
     * A single agent performance using one or more proposed
       scores.
     * Agents against each others using the ELO system
   * Simulate all nuances of the Tetris game
   * Compare agent performance to that of human players
   * Provide bindings to other languages that are fun to hack
     in, such as Python and Lua. Extra credits to make the 
     bindings accessible to languages that do not share the 
     same machine model, such as JVM-based Scala/Java/Clojure
     or functional languages such as Haskell or O'Caml.
     ... maybe Arc or Racket bindings as well? ;))
guru_meditation··on Understanding ECMAScript 6 by Nicholas C. Zakas
Just bought the book.

This is a front-end tech lead for Yahoo writing a book about a new language revision, and this is when I buy in and really start paying attention.

I've been reading some interesting ES6 materials, but the absolutely most worthwhile reference is that written by a hardcore practitioner that's a key contributor to massively used products.

guru_meditation··on 12-minute Mandelbrot: fractals on a 50 year old IBM 1401 mainframe
Gorgeous! :)
guru_meditation··on The Underhanded C Contest: Weak Encryption (2007)
The winner of this contest built his own Linux-compatible system and wrote the kernel "designed to withstand zero-day attacks in userspace" from scratch(!) [1]. Linux binaries work on it without recompilation(!!).

[1] http://www.manux.info/en/

guru_meditation··on 12-minute Mandelbrot: fractals on a 50 year old IBM 1401 mainframe
I loved AK Dewdney's columns. The Core War [1] columns influenced me profoundly.

Would love to see the mandelbrot printout scans :)

[1] http://www.koth.org/info/akdewdney/

guru_meditation··on 12-minute Mandelbrot: fractals on a 50 year old IBM 1401 mainframe
The footnotes in this article are fantastic.

I used the inflation calculator [1] to convert 1960s prices to today's dollars:

- Rental price: ~$20,000 / month

- Purchase price: ~$1,000,000 (yes, a million dollars).

So what you're looking at is what used to be a million dollar computer. You could buy a car for every month you pay to use this machine, so you better had really useful programming ideas or it's back to pen & paper :)

As the author points out, this was considered the model T of computers because of how affordable it was compared to what sold before.

The attention to detail is tremendous.

I never paid much attention to the design of old IBM mainframes, but now I can see how profoundly it influenced our perception of computing. I love the author's phrase "inherent drama of computing." and how it became a trope. The IBM industrial design book [2] he recommends is now going on my to-read list..

[1] http://www.usinflationcalculator.com/

[2] The Interface: IBM and the Transformation of Corporate Design http://www.amazon.com/gp/product/0816670390/ref=as_li_tl?ie=...

guru_meditation··on YouTube puts the final nail in the loudness wars' coffin
I think the average viewer is a teenager with their headphones (Beats, maybe?) plugged into their cellphone.

Even the cheapest headphones make halving the dynamic range obvious on typical top of the charts pop tracks.

Page 1 of 2Next →