First contact with computers at the university programming with punch cards. (At that time never thought I would make something like that my profession) Few years later (around 1985) just out of curiosity started programming on an PC / MS DOS with DBase a software for a pub. Then learned as much as possible about the internals of PCs, worked for small companies, building PCs, doing support, some development etc. At this time started with C, then C++, Turbo Pascal, Delphi plus SQL on various DB servers and some Web. Over the years got a taste of quite a few languages, most fascinated by LISP. Now still working as a freelancer, leaves not enough spare time for my modular.
So working on the move from business software to audio / DSP software development, maybe even work on some crazy hardware ideas - as my nick says I am a tinkerer :grinning:

3 Likes

So my first contact with programming was Basic on Commodore64 - nothing fancy just writing stupid things on screen. Then there was some QBasic in PC DOS but still nothing more than moving color dot on screen. Then I started playing guitar and getting more into music and my interest in computers faded away almost completely. But when in college it occurred to me that software is everywhere and I would like to know how it works when interacting with it so I went to university of technology and it sparked again my interest in computers and here I am now with programming as my day job and it being as big passion as music.
I am mainly using Clojure now (functional programming and immutable data structures is love) and I am rather disappointed with what passes as OOP now (because I think that Smalltalk idea of passing messages is great but java style of .getSomething().getOtherThing().iAmTotallyBreakingEncapsulation() not so much). But I am also looking to learn other interesting languages (I have been eyeing Haskell and Erlang for a very long time and also I loved my time with Prolog at Uni (contrary to my colleagues)).
If somebody wants to start with programming I would recommend processing.org. They have their own IDE so setting it up is painless and there is a lot of libraries for stuff like midi etc. so you can control synths and stuff like that in no time.

7 Likes

i am in no way a legit developer but have done a ton of coding over the years. i have learned what i know solely by looking at, dissecting and experimenting with code. never once have i taken a course or read a book. truth be told i don’t even make to the end of most of the monome studies, i just start tinkering.

i started in the mid 80s with a ti-99. learned basic and spent countless hours making rudimentary graphics (wanted to design an E.T. game and got as far as the intro screen/animation, and in my memory it is still super cool!). in the 90s i learned html for practical reasons which turned into a living as a freelancer. wrote everything by hand at first, then the wysiwyg programs came out and i could do these “commercial” projects way faster but my html got rusty. also around this time i was using macromedia director to author cd-roms with lingo. lots of corporate training cd-roms and some super awful music ones. this lead to flash and action script. i spent quite a few years developing/designing flash based websites. then, the iPhone came out and soon enough no-one wanted flash websites. by that time i was burnt out on the commercial aspect of it and i dreaded the work. ended up getting a day job doing web things, CSS, html and database U.I design etc. but over the years i have purposefully moved away from that to hardware support and I.T. (i work in a editorial post production and VFX facility). putting creative energy into commercial things is very difficult for me, so hardware and support is easier. i still spend quite a bit of time doing terminal stuff for work but very little coding. now the coding that i do is pretty much Teletype which is creative, immediate and fun! i am hoping soon my schedule will allow me to do the same with norns. how i felt working on the TI-99 as a kid is pretty much identical to how i feel working on tt now.

2 Likes

Over the last two months, I’ve been learning some Python (mostly Pandas, Numpy, Matplotlib) and SQL in my spare time on Codecademy. It is a good introduction, but I will need to start working outside of their system to really learn. I find SQL easy enough for me to grasp, but Python breaks my brain occasionally - it isn’t the language itself but more that programming requires me to think in a new way (which is ultimately a good thing). I also learned some basic HTML/CSS last year using online learning programs and designed one not-too-terrible static HTML website, but I don’t have any real enthusiasm for web design.

I don’t know if I will ever have the chops to be a full-time developer - and probably don’t want to do that for a living. However, I think these skills can enhance my work. Even learning some basics has helped me see how I could eliminate a lot of boring and tedious work I have done cleaning up large data sets manually in Excel.

1 Like

My grandfather was an Engineer. He had a few TRS-80 Model IIIs in his home office that he used to organize the various community and support groups for which he volunteered. I remember the program he wrote (in BASIC) that collected a database of names and addresses and printed them on envelopes. (Those daisy wheel printers sure were loud!)

I was always fascinated by machines, and whenever I was at my grandparents’ house I’d invariably be hanging out in the office, playing with technology. My grandfather taught me how to operate the computers and write simple BASIC programs. I was immediately transfixed and have remained so ever since. (My parents tell me the first book I properly read was the IBM BASIC manual. I have vivid memories of reading it in bed.)

Aside from my grandfather’s influence, over the years I met a series of mentors who gave me vital information at key moments. A primary school friend gave me a copy of Turbo Pascal and taught me how to use it. A computer tech at my high school taught me a lot of low-level stuff about hardware and operating systems. The owners of a small ISP gave me my first part-time job and taught me about networking, databases, and web programming. And for the last decade I have had the good fortune to work alongside some incredibly talented people who have taught me more than I thought was possible. I owe them all so much.

2 Likes

I dabbled with BASIC on the ZX Spectrum as a kid, typing out silly little programs from magazines. I wasn’t really serious about it- the Spectrum was a games machine to me and I got into it after the microcomputer scene had shifted to the Amiga, which we couldn’t afford.

Years later, I did some Pascal at A-Level but found the application of it to programs like traffic light simulators uninspiring. I’d started to build silly little websites in pure HTML, using image maps generated in Dreamweaver. I kept dabbling in my spare time but I didn’t think I’d ever do anything with it other than insignificant personal projects.

In the meantime, I got married and helped a family member through a terminal illness. After they died I decided to quit my retail job and study Computer Science as a mature student in my mid-twenties. I was terrified but knuckled down, learnt OOP from a book over the summer and used Java, C# and a smidge of C++ during the course. I made silly little games with classmates and had a good time. One of the highlights of the degree was getting the highest grades in the year for our programming exams.

When I graduated, I ended up working in testing for an IT company and moved on to coding test frameworks in JavaScript as a SDET. After a while I got bored, so I spoke to my boss and started learning modern front-end development, which has kept me on my toes. For the last couple of months I’ve been working almost exclusively with React and Redux. I still have a world of things to learn but it’s mostly fun. I’m really not sure of what the future will hold as I have doubts about staying in the field but it has been an interesting journey over the last nine years.

2 Likes

Another Parent-Has-Stuff-So-Kid-Benefits story:

Engineer-defense-research-Dad always had a few computers lying around the house, never sat down to teach me anything but he was gone a lot so I had lots of time with some of the tools he brought home (as long as he didn’t notice). Sold a few “commercial” websites when I was twelve or thirteen and XHTML just came out, client found out how young I was and not great things happened. In high school there was a year-long course in C, then a year-long course in Java. By the end of high school GW Bush was between his two terms, punk was breathing one last heavy sigh, and I was super interested in anti-capitalism and the ethical/sustainable computer. Was also heavily reinvesting interest in music (piano teachers in the family, childhood lessons, can get very old as a kid) and lead to me learning about Linux and the less profit-motivated side of the computer world.

One day realized that my minimum wage coffee shop barista job wasn’t going to be the best way to pursue some of the dreams I had. I started to confide in my usual customers my intentions and one of them passed on a resume with prose, github links, an “eagle rank boy scout” at the bottom to a corporation. I’ve been working on enterprise distributed computing systems (and after working alongside with recent graduates, questioning the worth of Master’s degrees) ever since.

4 Likes

Started teaching myself at about 7-8 years of age. I had previously taken over my father’s Commodore PC20 which started getting me curious in how it worked. I recall trying to open binary files with hex editors and seeing what happens when I change things around. Shortly after we got a new 386 PC which had MS-DOS, QBasic, and a modem, and I picked up a beginner’s book on QBasic. The modem allowed me to start communicating with the outside world and asking coding questions via local dialup BBS’s (this was in 1987-1992, so mostly pre-Internet).

I had a friend whose dad was a professor at the University of North Carolina, and he slipped me his dad’s login info to the university’s VAX system. I somehow found a dialup number for the VAX and used this to jump to other machines around the world, this platform become my first real exposure to the Internet, infosec, the Demoscene, piracy, UNIX, and the C language. I eventually got in a minor bit of trouble for this when the University discovered the mystery long-distance connections to Europe and elsewhere from his account. :innocent:

My first substantial/released programs were a few BBS door games written in C, and a DOS command-line animation player. When I become of legal working age I got a few part-time PC tech and networking jobs, this diverted my career down the IT path for a number of years, but I eventually returned to coding as a first love.

1 Like

My mom was a programmer in the mainframe days, and I grew up wanting to do that too (since I couldn’t be an astronaut and didn’t want to risk making a living in music).

I begged my parents for a computer when most kids my age probably wanted a bicycle :slight_smile: and finally got a Commodore 64 for Christmas. By then I’d already read a couple of introductions to BASIC and done some Logo stuff in school.

I would up studying programming, then “management information systems” in college, got a job developing a software package for boat and RV dealerships, then moved on to the computer game industry for a couple of decades before switching to an engineering software company. I poked around DSP just a little and wrote a few no-frills experimental VST plugins, but mostly I don’t want to write code when I’m not at work. The tiny amount of coding to use Teletype doesn’t count :slight_smile:

4 Likes

I’ve been thinking more about the ways in which the modern coding paradigm, rooted in 17th and 18th-century notions of the clockworks, is actually regressive, and that the older “analog” style of computing actually surfaces more holistic and ecological ways of thinking. My purpose is not to propose one way of thinking as necessarily superior to another, just to promote awareness that there are different approaches and that to have one approach dominate (in the sense of what counts as engineering), risks crowding out all the rest.

[For an extreme example, which is totally is beyond the scope of this post, imagine if Descartes’ idea of ‘meditation’ was replaced with the completely opposite idea put forth in the 14th century Cloud of Unknowing treatise, how that would have led to completely different conceptions of technology and so forth. The point is always to be aware of and question the fundamental narratives and conceptual oppositions that give rise to predominant technological paradigms.]

Anyway, as an exemplar of systems thinking, take a look at this article from 1966, which focuses on building comparators and hysteresis elements out of ideal saturation circuits using positive and negative feedback.

http://www.philbrickarchive.org/1966-07_v14_no1&2_the_lightning_empiricist_01.htm

This article was in George Philbrick’s Lightning Empiricist journal which was meant for a lay audience, basically his customer base, not academic in any sense. Philbrick’s business from the early 1950’s was based on system modeling through self-contained, modular circuit blocks, apparently a form of modular analogue computing different from monolithic “analogue computers” – this no doubt had a strong influence on Moog’s synthesizer.

Anyway, in terms of the article (it’s worth a slow read), purely symbolic approaches actually don’t explain the circuit behavior, they lead only to equations that have either no solution or multiple solutions. Thinking like a programmer, in other words, results either in head-scratching or complete nonsense – nothing shows up at all. One must at the very least, think creatively like a mathematician, for instance by introducing an infinitesimal time delay, an element nowhere found in the logical or symbolic reduction, in order to arrive at an accurate prediction of circuit behavior. Basically, as is often the case with feedback, the unmodelable, non-ideal part (the ‘gremlins’ in the non-idealities of circuit physics) completely overtakes the ideal parts and wholly determines what the circuit will do.

(Sure, at a lower level the infinitesimal delays or integrator-lags do admit some explanation in terms of the physics. But the Turing paradigm with its multirealizability – its independence from physics, in other words – elides such considerations. The point is to think simultaneously at the level of parts and wholes, and to negotiate in the moment precisely what even “counts” as a symbol – this is the hallmark of ecological thinking.)

To design with such technologies requires one to be open to these conceptually unassimilable parts, which are often at first simply discovered through practical experience (through hacking, in other words) – and only then rationalized in ways that require the full creativity of mathematicians – by for instance introducing infinitesimals, epsilons that locate themselves precisely nowhere, signifiers without a signified, entities that in the end that must be taken to vanish. But it could be argued as well that the circuit simply performs the reframing, the circuit itself is what acts like the creative mathematician. The circuit on its own solves what 60+ years of AI research still cannot: the dreaded “frame problem”. The idea that a self-driving car should suddenly give up on its plan to get from A to B because there’s a funny smell coming from the engine; in other words that it may explode if it doesn’t reframe what are inputs, outputs, objective function in light of what is threatening to surface from the background-- this lies still beyond the scope of computational thinking, for which there is only foreground.

Purely rational thinking, indeed, admits no openness. It’s what reduces all ethics to trolley problems in which someone somewhere will always get killed. Virtue ethics in this light, becomes invalid because it’s uncomputable. One must already know what the program will do, one must already have unit tests and so on according to current best practices. Otherwise one is simply hacking, not coding.

In fact the very concept of “lightning empiricism” was couched in opposition to what Philbrick and Paynter saw as an excess of rationality, a hypertrophy of reason emerging in the immediate postwar culture, one that was also being challenged by the late 1940’s Macy conferences on cybernetics which helped bring forth an entirely new, holistic, system-oriented way of thinking.

By “lightning” it seems Philbrick and Paynter simply meant what we do by the terms enactive, embodied and so on. Curiously, it seemed in the 1950’s and 1960’s that everyone including engineers understood this. Where is this understanding today?

8 Likes

Wow everyone here has such cool stories! I unfortunately had a very normal programming path; went to university for music and my dad encouraged me to take programming classes. However, I struggled real hard in my Python/Java beginner classes and my Arduino class. I remember barely getting a simple MIDI controller to work for a final project (everyone in my class ended up building MIDI controllers because it really is one of the easier things to do with an Arduino…). After that, I honestly thought that programming had no relevance in the music aspect of my life.

I think I really started to “learn” how to program after understanding how audio, programming, and engineering are all related to each other. It’s crazy that you can make so many cool effects and sounds through programming and I realized a lot of my comp sci classes didn’t really try to convince me why/how programming could achieve this. I remember having to program a sine wave oscillator for my iOS class; it blew my mind. I always thought it was magic but now I could do it with relatively simple math. I believe that was the turning point for me and I started to fall in love with programming and circuits. By the end of university, I pretty much focused on DSP and algorithmic classes. It’s cool now because I get to write DSP code + program microcontrollers/chips to make music/serve audio purposes. Building filters, oscillators, delay effects really make me feel like a kid again.

9 Likes

Hey, I think this is a plenty cool story! :smiley:

3 Likes

please forgive the bumping of an old thread, but i have some questions and wondered if maybe some of the new users had similar questions, or if some had new answers.

as i’ve been getting deeper into music making over the past few years, i’ve found myself growing more and more interested in diy projects and have found that i really enjoy that side of music, sort of the engineering/building/technical side of it. it seems like most of the things i’m interested in doing (primarily creating audio effects) require some level of coding. i was wondering if anyone had any input as far as which language(s) to learn and how to get started, keeping in mind that i’m most interested in musical applications. i feel like my ideal project would be creating a multi-fx box to use as an aux send/return for my mixer with my current setup.

i don’t have any notable programming experience. my dad bought me a “code your own pc game” kit thing when i was like 10, but i never got very far with it :joy: i learned a little html around the same time at a “computer summer camp” where we built our own websites from scratch. i’m good with computers and am learning a little bit about linux commands as i recently got a raspberry pi, but still have to google how to do a lot of things/specific commands.

anyway, thanks for reading. i really enjoy this community and think it’s a really wonderful, supportive and “healthy” network. there seems to be a shared mindset and aesthetic that really vibes with me and i’m so happy i’ve found this place, even though i don’t own any monome gear and don’t have a eurorack system. neither do i own a single houseplant. :grinning:

3 Likes

Programming concepts are shared across many programming languages. For audio work, I think most people use C/C++ for embedded DSP gadgets.

There are many free resources for learning online such as Google’s Python classes.

Maybe check out JUCE and start making a prototype.

1 Like

building your own DSP thing from scratch is a big project if you don’t know any programming. I’m not saying it’s not doable, by any means, but if you want to make something usable more quickly, I’d suggest learning one of the more “end-user” focused languages and building up your knowledge from there.

Max, Pd, SuperCollider and Reaktor are the examples of such languages that come to mind for me. Each of these has its own “quirks”, pluses and limitations. Pd and SuperCollider can be run on something like a Raspberry Pi, if you wanna keep an eye on building your own hardware thing. These languages, in addition to being easier to learn, have built-in puzzle pieces that will teach you about the building blocks of musical DSP, which is very handy before you feel comfortable writing your own DSP processes from scratch.

8 Likes

Nice thing about supercollider is it will get you used to programming by typing. If you eventually intend to move on to JUCE/C++, having some prior experience with text based programming will be very helpful.

2 Likes

Also, these languages themselves remain excellent prototyping environments should you take the next step towards writing your own tools in C++.

You can focus just on the core essentials of your algorithm. All of the other “overhead” is handled by the environment.

Max for instance, provides convenient handling of UI, audio and MIDI routing, and so on. You just focus on developing your “black box” in the form of an external. Developing externals in C/C++ is a straightforward process with plenty of documentation; https://cycling74.com/sdk/max-sdk-8.0.3/html/index.html

5 Likes

not seen this thread before - would certainly caveat things by saying - how you learn is how you learn not how someone else learns.

I was fascinated by systems & ‘machines’ long before I touched anything electronic - I borrowed books for the library about ancient (ie 60s) coding etc. First machine I programmed was a teaching box - my uncle was in the department of electrical engineering at a university - it had an 8080 in it and you could set a memory location with flip switched and increment program counters and things. First proper machine I programmed was a commodore PET the school got in the very early 80’s and I’ve been programming ever since. It became my career - lisp. C and C++ at first and then in the mid 90’s I switched away from telemetry/box coding stuff to this new fangled “internet” thing that was arriving in the UK ( I was on CIX before that - remember the ‘tenner a month’ forum that became Demon ISP) then switched from an interest in compilers and interpreters and embed code to web crawlers. Last 15 years I was CTO of a startup (now quite a large company) - didn’t code at all for the last couple of years of that but left at the start of the year and am coding again commercially

I don’t think I’m a particular great programmer - I’ve worked with people a lot more technically capable. I think I’m pretty creative and can solve problems I’ve seen other people claim are too hard (I had a job in the 90’s interfacing COBOL/CICS running on a mainframe with Java generating PDFs - I wrote the CICs interface code - byte packing fun!! all the way though an interpreter for something that looked a lot like Java server pages before they’d been invented except the language could also generate PDFs). I’ve also always loved real time stuff - wrote telemetry stuff for formula 1 cars in the mid 90’s - including device drivers in x86 assembly running on 286s and debugging with storage scopes.

It fascinates me how many longer term programmers are in this thread with similar stories from mine - I guess the confluence of music, software and devices is quite a broad set of skills and to feel comfortable with that set does need some experience. HOWEVER don’t be daunted by that - you can start small, there is no need with things like Norns or Max MSP or Supercollider or the like to do everything - there. is always a place to get a foothold - write a little script.

One of my friends says the useful skill isn’t writing code - it’s debugging (which is lucky because that’s basically how I code - write some stuff and then fix it :slight_smile: )

7 Likes

One of my friends says the useful skill isn’t writing code - it’s debugging (which is lucky because that’s basically how I code - write some stuff and then fix it :slight_smile: )

For past few years I have been programming in Clojure and I have REPL opened in Emacs all the time to easily check various stuff, run various fns while server is still running etc. And coming back to languages which doesn’t have such fast feedback loop for debugging feels really weird, like if those languages overslept few decades in CS :D.

But returning back to question I think that for prototyping stuff and seeing results early mentioned enviroments like max, supercollider etc are great for beginners.

2 Likes

thank you @alanza, @corpusjonsey, @jasonw22, @ht73, @junklight and @karol for the kind and thoughtful responses! i really do appreciate it a lot. :smiley:

i think that y’all are correct: starting with supercollider/pd/max/etc. is probably a much easier way to get started as opposed to just jumping right in. i am really intrigued by supercollider because it’s the one of those 3 that i’ve understood the least when briefly messing with it. i started working through the included tutorials in SC and am already enjoying it. i can tell that this will definitely be helpful in terms of getting me used to writing code while being able to create functional little experiments and stuff. so thanks a lot for helping point me in the right direction! :slight_smile:

5 Likes