21 ms·
Accidentally making a language, for an engine, for a game
- RandyRanderson 5y agoIn the limit, every configuration file becomes turing complete.
- arduinomancer 5y agoI don’t get why are programmers so obsessed with the tools they use for the job? More than any profession
- alx__ 5y agoObsession with the tools is part of every interest/job/hobby! There's always someone who thinks: "I could make this better". Some of them even try to. Emphasis on try :)
- astrange 5y agoRich amateur photographers are a lot more concerned with their tools than professionals are, and about different parts of the toolset too.
- stuu99 5y ago
- exdsq 5y agoYou should see the arguments gardeners can get into over lawnmowers
- Agentlien 5y agoI am only moderately into gardening and somehow I've ended up with three lawnmowers.
- rileyphone 5y agoBecause languages are not tools, but rather media. They are the basis for the structured thought that unveils, as such their form and function is critical to the process of programming.
- burnished 5y agoYou should check out the comment section of a woodcrafting (or the like) Youtube channel. I think 'tool obsession' is probably a personality trait and one you're more likely to see in your day to day in programmers than in other crafters due to proximity to the internet. Oh, sewing rooms are another good hit for that as well.
- omniscient_oce 5y agoIn Table Tennis we call it "being an EJ" or "EJ-ing" where EJ stands for Equipment Junkie.
- burnished 5y ago..what kind of equipment do you even get in Table Tennis? I understand there are different makes of paddles but I thought it was limited to a couple materials applied to one or both sides. If you don't mind I'd love to know more.
- vasco 5y agoThe first page of results for "table tennis ej" on Google has all the answers. I had no clue about it either.
- sandos 5y agoThe rubber and the wood (or other material) itself, that is enough for people to delve deep into. Different rubbers on different sides.
- omniscient_oce 5y agoThe wood part is called the 'blade' in English and there are MANY different brands and models. They come in either 5 ply or 7 ply, where it might be full (5 or 7) wood or 5 wood plies + 2 thin carbon wafers. I use a carbon blade (Viscaria) - they are more stiff with less vibration, or feedback, but generally have a higher speed ceiling and larger sweet spot at the expense of a little bit of control at lower speeds (gears). The other component of a setup is the rubbers, you can have one black rubber and one red rubber (although new colours are soon being made an official part of the sport) - generally they're split into two categories "tensors" and "tacky" or "chinese" rubbers and recently "hybrid" rubbers. Rubbers are comprised of a sponge and a top-sheet - which manufacturers can customise to produce different playing characteristics. Long story short: tensor rubbers historically were favoured by Europeans (on both sides, whereas Chinese would use a hard tacky rubber on forehand + softer tensor backhand) and are more elastic with built in catapult effect. They require less physical effort to produce good spin and speed. Tacky Chinese rubbers are very hard with a very tacky surface, the harder sponge makes them easier to control at low gears (close to the net for short game) and have great top-end spin as well as spin on serves. They require more physical exertion and efficient use of the body to use effectively (although there are also substances called "booster" which we apply to make hard tacky rubbers come alive). Hybrids are a sort of mixture of the two that have become popular with the new 40mm plastic ball and can be used on either side. Typically you will use a harder rubber on the forehand than on the backhand, but it's up to personal preference.
- tikhonj 5y agoWhy are musicians so obsessed with their instruments? Just use the right tool for the right job, don't call yourself a "pianist" or a "drummer", call yourself a musician.
- TillE 5y agoYeah semi-pro musicians are probably the worst. It's really easy to get obsessed with both accumulating shiny new (or vintage) toys, and tweaking your favorite instruments so they're set up exactly how you want.
- pjmlp 5y agoThat is what being a music composer is all about actually, not siloing oneself in a instrument category.
- Rochus 5y agoBecause it takes the fameous 10'000 hours to become a master?
- eternityforest 5y agoPlaying an instrument is harder than any basic non-mathematical programming. It's almost shocking to finish a project, clock out, practice guitar a bit and realize the difficulty difference. Buying stuff on the other hand is very easy. Just like running is(I assume, having never seriously done any sports) way harder. Buying more crap and then not even using it is easy. Everyone always wants their fast instant gratification hits, regardless of hobby.
- bobnamob 5y agoAs much as I think the other replies to this question hit the nail on the head, I think there’s more to it than just tool obsession. Software developers are in the fairly unique position where most of our tools are software defined. We are experts in the discipline required to improve our own day to day work lives. How many other professions have this liberty? Woodworking does to an extent, carpenters regularly make their own jigs and clamps but rarely venture into the realm of sharpened tools. Contrast this with anyone working in the medical or retail(?) industries. People working in these fields are close to powerless to improve the tools they use every day. Embrace the tool improvement life, there’s still a long way to go before software tooling is “finished”
- eternityforest 5y agoIt's hard to tell what benefit there actually is from this kind of thing. There's definitely great new tools developed all the time, but most of them seem to be planned megaprojects. I've never seen a custom build system or VCS or personal/project specific tooling I'd want to use. Seems like most of it happens just cause devs enjoy it. Making your own clamps seems very much the same. The other reason is there's a real cult of assuming that minimal is always best, and devs resent using any tool that has more features than they absolutely need. They also resent any more opinionated structure than they need, even if it makes things safer and easier, because they seem to really enjoy blank canvas creativity.
- arduinomancer 5y agoYa this is what I was thinking as well, the unique thing is that making the tools and doing the work are the exact same process Plus its just very easy to work on a tool, I don't need to go buy a bunch of materials or anything
- carrolldunham 5y agoI can't believe all the catty defensive replies. The answer is that programming is designing automation (automatic computation) and functionality of computers. So getting into that mindset naturally leads to "well, what If I can automate what I'm doing too? What if I can make a function that makes these functions?". Not to mention, a gardener isn't tempted to trim his rake into a better rake, because that wouldn't work - the tools are made by a different process than what they are used for. Not so in programming
- linspace 5y agoAren't computers tool themselves? It's only natural people interested in computers are interested in tool making
- pjmlp 5y ago> These languages are mostly fine... but C# is slow,.... First of all, it is a matter of which implementation we are talking about. Second, all major implementations wouldn't have had any issue dealing with the demos shown on the blog. I guess it was a good learning process about compilers for the author.
- gary_0 5y agoC# is very fast on average, but due to its runtime/GC it won't give you the consistent performance you need for game engine internals, which is what they meant by "slow".
- pjmlp 5y agoUnless we are talking about Assembly, all languages have runtimes. As for the GC, it can be turned on in critical code paths, C# supports manual and stack memory allocation. Profilers exist, many console games have been shipped in C#, besides Unity, there are Xenko, FNA and MonoGame custom builds for game consoles. Compare the demo on the blog with, https://store.steampowered.com/app/236090/Dust_An_Elysian_Tail https://store.steampowered.com/app/236090/Dust_An_Elysian_Ta... https://store.steampowered.com/app/985890/Streets_of_Rage_4 https://store.steampowered.com/app/985890/Streets_of_Rage_4 https://store.steampowered.com/app/107100/Bastion https://store.steampowered.com/app/107100/Bastion https://www.pcgames.de/Arena-Wars-Spiel-18141/Tests/Arena-Wars-329308 https://www.pcgames.de/Arena-Wars-Spiel-18141/Tests/Arena-Wa... All of them done in regular C#, not even taking into account Unity and its DOTS/Burst C# subset.
- gary_0 5y ago> Unless we are talking about Assembly, all languages have runtimes. My point was that some languages have heavier runtimes than others (out of the box, at least). And yes, C# is very popular for gameplay code, but I'm talking about the parts of an engine that typically use systems programming languages. Even then, you can shoehorn C# into that role with some tweaking and AoT compilation (which is a testament to the C# ecosystem's versatility). But I was just explaining why I think the word "slow" was used regarding the C# language in general, even though it's not perfectly technically correct.
- IYasha 5y agoAhh, 1337 A.D. What a year!
- verdagon 5y agoAlways a pleasant surprise to be scrolling through HN and seeing one of my articles on the front page! For anyone interested in how that code would get zero memory safety overhead without the classic borrow checker, a big part of it is because of the "region borrow checker" [0]. There are some other factors (iso regions, hybrid-generational-memory, etc.) but region borrow checking is the big one. [0] https://verdagon.dev/blog/zero-cost-refs-regions https://verdagon.dev/blog/zero-cost-refs-regions
- readthenotes1 5y agoIt was Fred Brooks, not Confucius who said that, but I think you got the date right.
- ilovejosysss 5y ago
- EdwardDiego 5y agoIs this blog entry out of date? Or is this still a WIP? > Note that hybrid-generational-memory is not implemented yet, it's still just a design. From https://verdagon.dev/blog/hybrid-generational-memory https://verdagon.dev/blog/hybrid-generational-memory
- mijoharas 5y agofyi, your links on that page to hybrid generational memory seem incorrect (i.e. 7 in the sidebar, but I think there was another). I'd not heard of vale, but after reading around a little looks very interesting. Nice job! [0] https://verdagon.dev/blog/hybrid-generational-memory https://verdagon.dev/blog/hybrid-generational-memory
- runevault 5y agoTo someone else's point the article says it was not implemented yet at the time. Assuming it is I'd love to see a follow up after you built what you discuss in this post.
- ncmncm 5y agoThat just seems like poor discipline. But not like creating a typesetting system to use to write your book. It seems like it is shaping up to a pretty nice language. But writing the compiler in itself is very 20th-century. Just add a parser to LLVM or Gcc and call it good. But don't make the mistake C, C++, and Rust did, using a prefix dereference operator. Pascal got that one right. BTW: "get" in a pure function name is code smell. More generally, transitive verbs in pure function names are code smell.
- slewis 5y agoThis comment is a roller-coaster and I love it.
- miloignis 5y agoBased on the "Compiler Overview" page, they do use LLVM for codegen: https://github.com/ValeLang/Vale/blob/master/compiler-overview.md https://github.com/ValeLang/Vale/blob/master/compiler-overvi...
- stevage 5y agoThe difference is the original goal of writing a game was frivolous anyway, so it doesn't matter if it gets done. Whereas if you have a book contract, writing LaTeX instead is a bit irresponsible.
- lifthrasiir 5y ago> [D]on't make the mistake C, C++, and Rust did, using a prefix dereference operator. This is only a mistake when the deference is frequently followed by postfix operators, in most cases field and method accesses. Unlike C or C++, Rust does auto-dereference that essentially eliminates such situations and thus a prefix operator doesn't do much harm.
- ncmncm 5y agoC and C++ also have a postfix field access operator. People still have to write "(*p)->m". Being obliged to write "(*p).m" is no better.
- 5y ago
- Magnusmaster 5y agoVale looks very interesting and I hope it takes off
- didip 5y agoScala for a game engine seems like an odd choice. What was the initial decision to choose it? Also, how’s the compile time? If it’s too long won’t it drive you crazy?
- lmm 5y agoSounds like it was for the compiler, not the engine itself. IMO Scala is the best general-purpose language going, but it's particularly good for data transformation, so it's a good fit for compilers.
- cyber_kinetist 5y agoMany years ago I was turned off at Scala for its weird ergonomics (relying heavily on implicits, also the syntax is too wild for my taste) and large build times, along with Project Valhalla still not being finished. Maybe things have gone better for Scala 3?
- lmm 5y agoScala 3 has put in some specific replacements for the main use cases of implicits, which IMO is a worse approach and a step backwards but I guess you might prefer that. The syntax has been pushed to be a bit more Python-like, but again I don't know if that'll be a plus or minus for you. But on the last point Scala has had "Opaque types" for 3+ years now, and IMO that's a better alternative to what Project Valhalla is trying to do for the cases that it covers.
- cyber_kinetist 5y agoCan you use opaque types to make “value-like” matrix/vector types like vec3, vec4, mat4, etc.? This was the biggest reason I eliminated the Java platform as an option for using it in gamedev. The alternative for Project Valhalla is to either live with the GC costs or use a hack from LWJGL (MemoryStack) which is very unergonomic to use.
- wtetzner 5y ago
- ReactiveJelly 5y agoHey, making games isn't my job, so I'm just as happy making OpenGL demos instead of games. > It's like I've been driving a Honda Civic in city traffic, and now I'm in a BMW cruising down the highway. There's a certain satisfaction in doing my own thing, even if it's crappy. Like Gilfoyle's electric car in "Silicon Valley".
- ffhhj 5y agoIf someone had told me the second part of that mantra: "... but don't make a game, make an MVP and check with your friends if the game mechanics are fun, first!"
- andrewflnr 5y agoAHA! I should have known that generation-reference business was intended for games all along. Reminds me of the time the FoundationDB team wrote a compiler to write a simulator to test their database: https://www.youtube.com/watch?v=4fFDFbi3toc https://www.youtube.com/watch?v=4fFDFbi3toc
- mathgladiator 5y agoThere should be a competition of yak shaving. I've writing a Rust based canvas engine, with content via my own IDE, the runtime is fed data via WebSocket using my own API protocol, web proxy routing through a streaming and distributed load balancer using a new protocol, landing on my back-end platform running my own language, writing deltas to my own data store. https://www.adama-platform.com/ https://www.adama-platform.com/ Why? For board game glory!
- bcbrown 5y agoIt's not quite yak shaving, but it certainly is... something: > I mean, we are running Access in Wine in X11 on Linux in an isolated user account on our server slice that revision controls your Access database in git, and we're displaying it using VNC in your web browser in flash. People can't possibly want that. But they need it. https://apenwarr.ca/log/20120326 https://apenwarr.ca/log/20120326 (Not mine, but seems relevant)
- justinjlynn 5y agoWow. That's amazing. Any other stories you know like that one?
- cyber_kinetist 5y agoThat’s the total opposite of yak shaving, but in the most hilarious way. Layers upon layers of systems and protocols to maintain legacy systems… lazily use a bunch of glue and duck tape to build the whole thing… and it miraculously works!
- abrookewood 5y agoThat's such a good article! The pain, suffering and mind-numbing boredom of SUCCESS ...
- noisy_boy 5y agoI find it somewhat disturbing that this felt like a reasonable approach to me...
- 5y ago
- Townley 5y agoIt's interesting that this phenomenon is much more prevalent in game development, as opposed to (for example) web development: some people build their own web development frameworks, but it seems like every game dev tries to make an engine at some point. My theory why: good web frameworks consider developer experience to be of paramount importance, and invest heavily into examples, documentation, and API improvements. Unreal and Unity by comparison are unpleasant to work in. The UI is clunky, the examples cap out after a certain point of complexity, and community input is almost nothing when compared to the Django, Express, Rails, or language-specific ecosystems. Anyway, I can't say I've ever made it far enough down the rabbit hole to want to make my own language... but I know for me, the desire to make my own engine* has punctuated every attempt over the years to get better at both Unity and Unreal *Acknowledgment that I might be partially disproving my own point, as I've tried to build both my own web framework, AND my own game engine... but I spent a lot more time on the game engine (https://github.com/RobertTownley/gamehook https://github.com/RobertTownley/gamehook)
- coptun 5y agoTake a look at Godot. At least then it will be "our own game engine" rather than "my own game engine".
- BeefySwain 5y agoSpeaking of making a language for an engine for a game...
- sli 5y agoThere's the Mono version that supports C#, which is also faster than GDScript already, if it's at all a (real) sticking point. And you can use C/C++ or Rust if you really want.
- Agentlien 5y agoI've worked with a lot of game engines, and indeed made my own engines and editors. My reason for making my own was partly that it felt like less work to write what I needed than to learn the intricacies of an existing engine. Also, back then the big engines didn't have as generous licenses as now. As for Unity and Unreal: I found them both very easy to get into and get productive with.
- deleted 5y ago[deleted]
- klabb3 5y agoThe way structured concurrency is implemented in Vale is exactly what I've been missing in every language I've been working, including Rust which gets pretty close. Amazing job!
- verdagon 5y agoThank you! We're pretty excited about it too. Though, I do want to be clear for readers, Seamless Concurrency [0] isn't fully implemented yet, we've only just started to play with its first building block, the region borrow checker. It's promising, but I don't want to get anyone's hopes up too early. [0] https://verdagon.dev/blog/seamless-fearless-structured-concurrency https://verdagon.dev/blog/seamless-fearless-structured-concu...
- hoseja 5y agoYeah, this seems like a research project for Rust, but wonder if Rust is still capable of such evolution.
- Nijikokun 5y agoIt's unfortunate that the majority of comments are centered around Yak Shaving rather than the amazing leaps that this small language has done.
- alwyn 5y agoI didn't even know what yak shaving was! Not sure if I'd ever heard the term before. Alas: http://catb.org/jargon/html/Y/yak-shaving.html http://catb.org/jargon/html/Y/yak-shaving.html
- eternityforest 5y agoYak shaving is easy to understand and evaluate, whereas the value in creating a language makes no sense to anyone outside the language scene. Most people have no way to guess of the new ideas will be influential, but we do know we aren't interested in using niche tools regardless of what they are. It could be an amazing leap forward for computer science, or a slightly interesting toy, and either way it's above most people's heads.
- pjmlp 5y agoEvery year millions of CS students invent new languages, and publish SIGPLAN papers about them. This language is great for the author as learning process, and that is about it.
- Centigonal 5y agoI don't know what it is about game development that really brings out the yak shaving in people. One time, about 8 years ago, I backed a game called Nowhere[1] by a very talented programmer. The original premise was an alien life simulator. Well, it's been eight years, and development is still going strong! The developer is currently working on the String implementation for the programming language he invented[2], which he's using to write the other programming language he invented[3], which is eventually going to be used to write the game. [1] https://duangle.com/nowhere https://duangle.com/nowhere [2] https://hg.sr.ht/~duangle/scopes https://hg.sr.ht/~duangle/scopes [3] https://hg.sr.ht/~duangle/tukan https://hg.sr.ht/~duangle/tukan
- onion2k 5y agowhich is eventually going to be used to write the game At what point do you stop believing that?
- jfoutz 5y agoShhh. The man of La Mancha has a windmill that must be faced. I mean, never. But sometimes people just need to make stuff, and that's super cool. They're doing no harm, let them enjoy their fantasy.
- headsoup 5y agoI think sometimes the followers find out that being engaged in the process of creating something brings more value than the game they're waiting for anyway. I have been in a couple of communities involved with developers as they built games and it was almost disappointing when the game was released because the 'journey' was finished and so time to disband. It can certainly be a curse though if the developer isn't or stops enjoying it.
- bendbro 5y agoSorry about the game, but it looks like you funded a pretty cool programming language! https://sr.ht/~duangle/scopes/ https://sr.ht/~duangle/scopes/
- pkaye 5y ago
- throwaway81523 5y agoGreenspun's 10th law?
- quickthrower2 5y agoMaybe I would make a good game dev after all: I have no interest in making a language, would be happy knocking one up in JS
- winrid 5y agoThese days there are even cross platform PHP game engines/frameworks... for most ideas that can be executed by one person - use what you know!
- wiz21c 5y agoFTA : > So, having learned that lesson thoroughly, I then made the same mistake again! So true ! I don't know if it is written with a bit of sarcasm, but this one made me laugh ! 'cos in the end, it's about doing what one loves. So if you think you like to make games but have fun writing the perfect game engin instead, it's not less fun !
- vsroy 5y agoWhat are some of the interesting tradeoffs this language has made? Ideally with super small code samples
- skywal_l 5y agoThe author details some of them in the "Featuring" section in the front page [0]. There is also a comparison with different languages [1]. It seems the language is still in very early stages. Not production ready. [0] https://vale.dev/ https://vale.dev/ [1] https://vale.dev/comparisons https://vale.dev/comparisons
- RugnirViking 5y agoWe did this for Patafour https://github.com/OwocekTV/V4Hero https://github.com/OwocekTV/V4Hero Hasn't gone quite as far as making our own language, we did it all in c++. For us we know doing things this way is a vastly more difficult approach, but nonetheless we plough on. Yesterday I was learning how bezier curves work so we can animate wind effects. The list of interesting maths and physics problems to solve are endless but oh so satisfying, and ultimately its a hobby not something we sell for money.
- jokoon 5y agoI decided to use Godot to make a lowpoly online FPS, I don't think it's a great choice, but I've read good things about godot networking... I first wanted to make it in C++ and opengl, and it did not look like a difficult thing to do, but godot is good enough for a lot of things, it's small, and it allows me to do multiplatform, which is such a big bonus, since C++ is never easy to use on several platforms. I have no idea if I will be able to implement network prediction with godot.
- candiddevmike 5y agoAre you using GDScript? How are you liking it? To me, the biggest hurdle with game development is always assets. I'm a terrible artist/musician.
- jokoon 5y agoWell it's not as comfortable as python, but it's good. I plan to make assets using procedural generation of terrain, building indoors and streets.
- SeasonalEnnui 5y agoFor any comparison to C# (it being slower or having GC pauses), it probably doesn't take into account the latest advances (.NET 6). That's understandable given there isn't really incentive to gain a mastery in every language during a comparison. With regards to C#/.NET 6, it is now easy to: - Have zero-allocation code through the whole stack, making garbage collection zero/near-zero. [Span<T>, Memory<T>] - Distribute platform specific all-in-one binaries with no unbundling/uncompression or need to install any runtime. [dotnet publish -r win-x64 -c Release -p:PublishSingleFile=true -p:PublishTrimmed=true] - For hot-path optimisation (many available profiling tools), dive into new high-performance APIs such as CPU vector intrinsics, or native memory allocation (aligned or unaligned). [System.Runtime.Intrinsics.X86, System.Runtime.InteropServices.NativeMemory] - For faster startup times: AOT compilation. (Not necessarily faster at runtime in general; JIT has advantages there with being able to detect hot paths) These are just the features I've used, there are doubtless many more. In the future .NET 7, it will be possible to disable runtime marshalling so interop calls to C DLLs have no overhead (along with a compile-time analyzer to throw errors if the types you're using are not compatible, aka 'blittable'). Credit to Vale - it appears to be addressing all these things so there's certainly an interesting future ahead.
- pjmlp 5y agoI think many of these complaints tend to be focused on the aging Mono runtime experience used by Unity pre-DOTS, or classical pre-.NET Framework 4.5.
- SeasonalEnnui 5y agoAgreed, that would be a worthwhile caveat for authors to add.
- Jyaif 5y ago> We're adding a parallel keyword Why is there a need for a "parallel" keyword? Can't the compiler decide for you whether to parallelize a loop for you? If the decision to parallelize depends on the data, couldn't the compiler generate code for both implementations and select the right one at run time? Or maybe the programmer could describe in code what they expect the data will look like, and the compiler will take a decision based on those annotations (and other signals, such as the HW the program has access to, what the programmer wants to optimize for (memory? latency?)).
- empgodot 5y agoI hate when that happens.
- UltraViolence 5y agoGlossing over the language it seems very similar to Rust, but with a somewhat friendlier syntax that's closer to C#/C++. So, I'm wondering if and when someone will write an operating system in it.
- bogwog 5y agoGotta start with rewriting all of those programs that were rewritten in Rust.
- cmrdporcupine 5y agoBeing distracted building tooling and frameworks is one of the harder things I find with personal projects. In paid $work, there is a) an imposed direction and usually a schedule from a customer b) often a team of people to distribute work to, and to help keep one disciplined. Example: I'm writing a VST synthesizer, virtual instrument, as a personal project in my time off between jobs. Maybe I'll make it commercial someday, not sure. I became increasingly frustrated with the half-assed portable GUI toolkit bundled with the VST3 SDK ("VSTGUI"). There's a complete lack of decent cross platform UI options that will work in this context (QT won't do it here, for reasons.) I realized that there's already a cross platform UI option with millions of man hours put into it: the web. So I have spent the last three or four weeks writing a bridge to embed Edge-Chromium, WebKit, etc. Have that working on Win32, at least (still have to do the work for Linux & Mac, but ok). Then on to actually making the UI in this platform. Now I'm learning npm, webpack, TypeScript. Need a nice little HTML/CSS knob for my UI. Most are bundled in a giant framework I don't want. Oh, here's one in pure JS. But, hm. I think I'll refactor this into Typescript. Now it's forked, just for me. Ok, well, yes I have that mostly working. Some warts, but basically is very similar to the "native" (VSTGUI) UI I had before. But now I want to write a graphical envelope editor. Off to learn HTML Canvas drawing. Many parts of this whole process could themselves be spun off into separate projects, that I could spend years maintaining, on their own. And so it goes. The Yak is pretty shaved at this point.
- deleted 5y ago[deleted]
- ryukoposting 5y agoHow timely! I'm sketching out a visual novel engine that implements a simple DSL (think of it like Ren'Py, but with Ruby instead of Python). Yesterday, I spent hours rewriting the line-by-line preprocessor into an LR parser. Oh, and I had to write my own FFI library to bind into the MRI. Oh, and the language I'm using has an SDL2 library available, but it was incomplete the last time I checked. Fun!
- sriku 5y agoThis reminded me of a statement David Zicarelli (creator of Max/MSP/Jitter) made many years ago - that he originally started working on Max in order to make a tool to help him compose novel and interesting music, and then he got so drawn into making the tool that he lost interest in the music composition itself. If we're to call Max/MSP/Jitter "yak shaving", it is a shining star of it since so many artists - both visual and sonic - build their work on it. The other obvious one is Knuth - inventing TeX and Metafont and Computer Modern typefaces so he can write his books the way he wants to. Another shining star.
- mamcx 5y agoThe other niche where this kind of thing happens: ERP/eCommerce applications. And at least from my POV, is where it ACTUALLY need it, not just is fun.