T
Tero Parviainen
teropa.info · Personal blog · on HN since 2013
Tero Parviainen, a software developer, writes tutorials on Redux, AngularJS internals, Web Audio, and generative music.
What HN saysHN commenters recommend his generative music work and browser-based music articles, and call his Build Your Own AngularJS book old but still worth reading.
80HN people shared it
36linked it in comments
54stories submitted
1.3Kstory points
11 months agolast shared
2013people per year2026
Most-shared posts
- 1Full-Stack Redux Tutorial20 people · 127 points · first shared 2015 · 6 comments on HN
- 2How Generative Music Works12 people · 181 points · first shared 2017 · 33 comments on HN
- 3Learning Web Audio by Recreating the Works of Steve Reich and Brian Eno11 people · 218 points · first shared 2016 · 27 comments on HN
- 4Build Your Own AngularJS10 people · 4 points · first shared 2014 · discussion on HN
- 5Music Mouse7 people · 388 points · first shared 2017 · 57 comments on HN
- 6Make Your Own AngularJS, Part 1: Scopes And Digest4 people · 18 points · first shared 2013 · 1 comments on HN
- 7Things that Excite Me about Angular 24 people · 6 points · first shared 2016 · discussion on HN
- 8Change and Its Detection in JavaScript Frameworks2 people · 5 points · first shared 2015 · discussion on HN
- 9How I've Improved My Angular Apps by Banning Ng-controller2 people · 3 points · first shared 2014 · discussion on HN
- 10Codeshapes: A guessing game for programmers2 people · 3 points · first shared 2015 · discussion on HN
- 11Terry Riley’s ‘In C’2 people · 2 points · first shared 2020 · discussion on HN
- 12Terry Riley's “In C”: A Journey Through a Musical Possibility Space2 people · 1 points · first shared 2017 · discussion on HN
- 13Harmonics Explorer1 people · 298 points · first shared 2024 · 52 comments on HN
- 14A Guide to Transclusion in AngularJS1 people · 4 points · first shared 2015 · discussion on HN
- 15Generative Music in JavaScript and Web Audio1 people · 2 points · first shared 2017 · discussion on HN
What HN people wrote when they linked it
chaosprint · 2024-01-29
should check Tero's other works: https://teropa.info/
another comment:
if you want to use any number of sine waves of any freq, you can use code to do this:
https://glicol.org/tour#mixjs2
zzzbra · 2022-10-12
Doesn't look like anyone posted this also excellent article showing how to create one of the songs from this record in the browser (though I do believe it's linked out to in OPs link): https://teropa.info/blog/2016/07/28/javascript-systems-music
gffrd · 2022-07-20
Came here to mention generative.fm … it's great, been using it for years.
The creator, Alex Bainter[1], posts a lot of interesting/great stuff about generative music[2,3], and recently published the collection of music theory utilities he uses for generative.fm: https://github.com/generative-music/theory
[1] https://twitter.com/alex_bainter
[2] Like this interactive "How generative music works" by Tero Parviainen: https://teropa.info/loop/#/itsgonnarain
[3] Or his piece on corruption loops: https://corruptionloops.alexbainter.com/
printscreen · 2022-07-19
The fact that you'd consider making that switch is just awesome to me, so thanks! :)
For resources, theres a great site here as an intro to generative systems - https://teropa.info/loop/
And for communities, I have made a Discord for Flowful where I plan to post updates and how-its-made type stuff. The link is in the top right of the Flowful app, feel free to join!
jmkni · 2019-11-14
Reminds me of the book "Build Your Own AngularJS" from a couple of years ago. - https://teropa.info/build-your-own-angular/
Old now, but still worth reading IMHO as you learn a lot.
ghostbrainalpha · 2019-07-25
Thank you for sending me down this rabbit hole.
Eno's Teropa site is amazing, and I've played with the generative drum machine for hours.
https://teropa.info/loop/#/stochasticdrummachine
I recommend people start at the beginning, you progress with space bar. https://teropa.info/loop/
chrislo · 2018-02-14
I love these kind of things too and link to them frequently from my audio-themed newsletter (http://webaudioweekly.com). I'm particularly fond of Tero Parviainen's interactive explorations of generative music, for example: https://teropa.info/blog/2017/01/23/terry-rileys-in-c.html
afarrell · 2017-04-28
One hard part of learning testing is getting the testing framework set up for your langauge/toolset. One way to approach this is to follow a tutorial that introduces tests. A year ago, I would have suggested https://teropa.info/blog/2015/09/10/full-stack-redux-tutorial.html, but react/js moves so fast that perhaps this is out-of-date.
judahmeek · 2016-11-12
I strongly recommend starting with http://teropa.info/blog/2015/09/10/full-stack-redux-tutorial.html
barryhoodlum · 2016-09-19
I was just reading a blog post where a guy had written about Steve Reich and Brian Eno's experiments and his attempts at replicating them. It was posted on HN a few days ago: http://teropa.info/blog/2016/07/28/javascript-systems-music.html
There are embedded YouTube videos, MP3s, and code samples to illustrate what he's writing about. He's implemented their ideas using the Web Audio API and you can run the code from within the page and listen to the music being generated in real-time. It's a real testament to how great the web can be.
I think being able to do things like that is worth all the annoying parts of the modern web, in the end. For the developer and the end user. I wouldn't want to go back to the old way. I think it's easy to focus on the annoying parts and take the good parts for granted.
seanemmer · 2016-04-10
I highly recommend the Full Stack Redux Tutorial:
http://teropa.info/blog/2015/09/10/full-stack-redux-tutorial.html
Learning Redux from the get go means you can skip a lot of React's internal state management / lifecycle methods.
The tutorial also covers a bunch of relevant topics like TDD with React, immutable.js, and socket.io.
SchizoDuckie · 2014-02-14
First off, this article is 4 months old.
Second, <everything else that's mentioned here>
Third: You won't get the actual idea behind Angular without some good tutorials indeed.
This one gave me the best insight and i've been churning out my own angular based chrome extension with behaviors, services and modules within a week.
http://www.ng-newsletter.com/posts/chrome-apps-on-angular.html
Fourth: There's a new book in progress (with some free chapters) that explains how to build Angular.js from scratch and explains everything in-depth (Something that was indeed lackin from angular.
Site: http://teropa.info/build-your-own-angular/
Sample:
http://teropa.info/build-your-own-angular/build_your_own_angularjs_sam…
jbl0ndie · 2024-01-30
I really love the https://teropa.info/musicmouse/
tomduncalf · 2019-04-28
Learning computer programming you mean? If you think creating something musical would motivate you, JavaScript using the WebAudio API isn’t a bad starting place, as it provides high level components such as oscillators and filters that you can plug together without needing to know the internals - for example, check out https://teropa.info/blog/2016/07/28/javascript-systems-music.html, which is aimed more or less at newcomers to programming. Another good starting point if you are using Mac (and iOS, if you like) is AudioKit, which has some great interactive “playgrounds” and similar high level “blocks” of code as WebAudio, which you can wire together to get quick results.
If you want to write your own plugins or audio software you’ll need to learn C++ at some point, which I think is a fairly complex language to start with and likely to be frustrating in terms of getting quick results, but your mileage may vary!
A colleague of mine learned C++ as his first “real” language (which is now his job) because he started out playing around in SuperCollider (a DSL for computer music stuff) and wanted to turn his ideas into real plugins, but it can get pretty complex pretty quickly so I’d say you’d have to be pretty motivated to do this!
If you do want to go down this route I would probably start with the aforementioned SuperCollider or something similar (maybe Max/MSP) to get an idea of how the musical side of things works without having to master C++ at the same time, then when you…
mos_basik · 2016-12-11
You are On. The. Money.
When I first started dabbling in web programming a few years ago, I quickly learned about jQuery from SO while looking up common patterns to create the behaviors I wanted in the browser. But even accounting for my unfamiliarity with the browser paradigm, jQuery always rubbed me the wrong way because of how loosely structured it allowed you to be and the amount of leaky scope it encouraged.
I finally decided earlier this year it was probably worth my time learning a framework just to get some structure in my code, so I asked a webdev friend if he had any recommendations for a JS framework I should try; he pointed me towards Vue. I had never heard of it and was skeptical, but I started working through the quickstart guide (Vue docs are great, another +1 to Evan!) and I was hooked before I finished the third example. It was night and day from jQuery, but easy to learn. My experience so far is that Vue (in contrast to jQuery) is astoundingly flexible for how terse it is. My code was probably bad, but rewriting a jQuery page in Vue usually halved my linecount.
>no transpilation
This is huge to people who just want enough JS to get their proposed feature working and don't want their whole site to be JS, and to beginners. True, at this point I have started getting comfortable with the npm/webpack/babel/es6 stack and I enjoy the things it makes convenient - but at the beginning it's a pretty nontrivial learning curve and delayed benefit for a dev team…
larksimian · 2016-05-18
My suggestion is to go through some full-stack tutorials. Vary them up to learn how workflows with different library combinations/boilerplates feel for you.
For React my quick and dirty intro a few months ago involved: http://jamesknelson.com/learn-raw-react-no-jsx-flux-es6-webpack/ and then following along with http://teropa.info/blog/2015/09/10/full-stack-redux-tutorial.html
The first link is very light on dependencies and brief. The second link is basically a mini-ebook going from front-end to back-end but walks you through the choices very well.
What you want to do is build apps, so look for tutorials that make you build an app from start to finish. Do a number of those, semi-rotely, and you'll develop familiarity with the tools and methods they use. That's when you want to deep dive on specific libraries and stacks.
Imagine how complicated it would be to try to learn Rails by learning ActiveRecord and then ActiveSupport etc. The interesting work happens when all the dependencies are combined -- and the challenge/beauty of the framework is how it combines them -- not when they are taken as individual libraries. Boilerplates are shitty, immature frameworks but similar principles apply.
ronjouch · 2015-12-31
The author is indeed well aware of WebSockets limitations, and OP's "Examples of where it's acceptable/recommended to use WebSockets" seem sound.
The problem is that the appeal of oooh-shiny is so strong that some (many?) developers and influencers do end up "using WebSockets for the wrong thing". Last case I met: a tutorial for a client+server js app using React & Redux [1], building... a CRUD voting application. Quoting the article on why choosing WebSockets for this, "This is an app that benefits from real-time communication, since it's fun for voters to see their own actions and those of others immediately when they occur. For that reason, we're going to use WebSockets to communicate."
Well yes, WebSockets work here (modulo problems and missed benefits/tooling that are the whole point of this article), and socket.io seems like a nice library, but a good old long poll would have done just as well :)
[1] http://teropa.info/blog/2015/09/10/full-stack-redux-tutorial.html
interleave · 2025-12-02
Also a huge Eno fan here. Put together, I probably have listened to Music for Airports, Another Green World, Taking Tiger Mountain and Discreet Music more than any other artist. Maybe Philip Glass comes in at a close second.
Anyways, in 2016, Tero Parviainen (@teropa) shared this really cool long-form exploration called "JavaScript Systems Music – Learning Web Audio by Recreating The Works of Steve Reich and Brian Eno" that I enjoyed tremendously (and I don't even like Javascript!)
Check it out at: https://teropa.info/blog/2016/07/28/javascript-systems-music.html
dsp_person · 2023-08-21
Very cool! Have you seen music mouse [1]? I wonder in what ways this intonation keyboard concept could be mapped into a 2d touch interface, maybe with some ideas from music mouse. But if it's just a single XY pad, I guess it becomes just a piano again but with tuning presets? Or maybe 2 pads could be used...
[1] https://teropa.info/musicmouse/
mojifwisi · 2022-11-21
Nice! That guy also made this interactive version of Terry Riley's "In C": https://teropa.info/in-c/
xenocratus · 2020-02-11
While AngularJS is outdated, this book helped me understand how these frameworks do their job behind the scenes:
https://teropa.info/build-your-own-angular/
Also, thank you for posting this question, these are the kind of books that I yearn for when I want to understand how something works!
oblosys · 2018-03-15
Before switching to React, I learned a lot about Angular from https://teropa.info/build-your-own-angular/
isp · 2018-01-26
A few selected examples:
- "Trams of Helsinki" https://teropa.info/loop/#/tramsofhelsinki ("The trams are playing a pentatonic scale, mapped to central Helsinki")
- "Music Mouse": https://teropa.info/loop/#/musicmouse
- "Markov Player": https://teropa.info/loop/#/markovplayer
transcranial · 2017-12-16
I recently discovered this awesome presentation on generative music: https://teropa.info/loop
timpark · 2017-06-30
Neat. I saw something like this recently in game form: Codeshapes http://teropa.info/codeshapes/
Hernanpm · 2017-02-16
Build Your Own AngularJS
https://teropa.info/build-your-own-angular/
amarsahinovic · 2016-04-10
SurviveJS book, you can read it online for free: http://survivejs.com/webpack_react/introduction/
http://survivejs.com/
Full-Stack Redux Tutorial: http://teropa.info/blog/2015/09/10/full-stack-redux-tutorial.html
glossyscr · 2016-02-29
tl;dr + my suggestion:
Use React together with Redux, Webpack and Immutable (my suggestion).
http://teropa.info/blog/2015/09/10/full-stack-redux-tutorial.html
progrocks9 · 2016-02-04
I was working the last year on a Django app. First I hated it, but slowly I started enjoying programming with it. This year I worked mantaining an app with all of this http://teropa.info/blog/2015/09/10/full-stack-redux-tutorial.html This supposed to be a simple Web app but, it's a complete mess. I miss Django so much right now.
mtrimpe · 2015-11-21
I found Build Your Own Angular [1] gave me the most understanding in the least amount of time. It's geared more towards understanding (and Angular 1 not 2) and not so much towards building stuff though so YMMV.
[1] http://teropa.info/build-your-own-angular