7 ms·
Show HN: Thi.ng – open-source building blocks for computational design
The first stage of the new http://thi.ng website is live, an up-to-date & hopefully more useful springboard to the 250+ projects and overview of my opensource activity since 2006...
Work is ongoing, collecting & re-organizing projects, assets, documentation and extracting interrelationships (incl. older work & music projects (e.g. http://thi.ng/synstack related), clients/people...). Aim is a proper archive of the past 20+ years of outputs & encounters.
This is the first website update since 2015. As the timeline visualizations show, building(http://thi.ng) > marketing(http://thi.ng) - maybe unusual these days, but hey... :)
The entire site is generated w/ tools from the http://thi.ng/umbrella collection, e.g. http://thi.ng/egf (graph file format), http://thi.ng/csv (semantic CSV parsing), http://thi.ng/transducers (functional data transformations), http://thi.ng/defmulti (multiple dispatch for template engine), http://thi.ng/hiccup (HTML/SVG generation), http://thi.ng/viz (timeline visualizations), http://thi.ng/color (heatmap gradients)
There's also a massive spreadsheet (148k cells adjacency matrix) to centrally define & manage the 570+ tags used to categorize the 257 projects/repositories and to batch update their package files (edits ongoing, much fun!). The tag/project relationships are compiled into an HTML list with project IDs stored as base90-encoded data attributes for each tag in the tag cloud (http://thi.ng/#tags)
The timeline visualizations are generated directly from local Git repos, package files and associated metadata stored in a number of linked http://thi.ng/egf graphs. The site toolchain will be released in due course...
Last but not least, any constructive feedback (good or bad) is very welcome! The next phase will include more individual project details, images, making-of docs, videos, xrefs etc. Currently, just a step in the right direction...
- vanderZwan 6y agoAah, thi.ng! The creative coding framework I've been meaning to check out for years but never have! But the things (hah) made in it have always amazed me! So one bit of feedback on the site: it's fantastic as a portfolio site. However, while it's great for getting an impression for everything made with this framework and how large the framework is, what is missing is a big "START HERE" button. I get why that might feel like something you don't need: th.ing is set up differently than Processing, p5.js, OpenFrameworks or any game-loop based creative coding framework. So there is no real centralized starting point. Which is fine, but then that has to be clearly communicated too, and it isn't. It's mentioned in very thin fine print under the How? section, which is hidden under a "read more" link when viewing the website on mobile (also, I do get that thi.ng/umbrella is kind of emphasized as an implicit suggested starting point, but it's still a bit confusing). So basically, the discoverability for how people should get into the framework could use a lot of improvement. It could use a bit more awareness of expectations of your visitors and how you either meet or break those.
- Netcob 6y agoMaybe it's just me, but that seems like part of a common problem on websites submitted to HN - you go to gooblorgs.io, because now apparently it is compatible with snootlr and that somehow got it to the top of the page, only to discover that the entire website doesn't contain a single line that explains what a gooblorg actually does, or would even point you in the general area of the industry this is related to.
- PH01 6y agoIf you read the comments in this thread it's clear that there are readers who haven't understood from the submission title or from the landing page what thi.ng is. When I read the word 'computational design' I don't immediately think of 'parametric design', 'algorithmic design', 'generative design'. Instead, I have to use google and read around. The landing page itself describes thi.ng as 'a truly manifold long-term project devoted to Computational Design'; again I'm a bit stumped, what does the author mean by manifold in this context? Go to the github page and the title reads 'Polyglot computational design tools', are we calling ourselves Polyglots now? Seriously? That's usually about as far as I get before I conclude that I don't care enough. To my mind those are all flags which indicate that it's probably not something I want to engage with.
- Netcob 6y agoExactly, it seems like the intended audience is "people who are already familiar with it", but then it's unclear what use it is to them.
- toxmeister 6y agoThat one is interesting indeed. I'm a bit curious about you taking issues with "manifold" and "polyglot" here: - manifold - something taking many forms - polyglot - https://en.wikipedia.org/wiki/Polyglot_(computing) https://en.wikipedia.org/wiki/Polyglot_(computing) I'm pretty sensitive to marketing BS/buzzwords myself, but unlike the usual "blazing fast" and similar hypephrases, the above two words actually are 100% correct use of the terms (IMHO) See my other reply above re:scope and projects written in: TypeScript, Clojure/script, C, OpenCL, GLSL, VEX, Java, Forth - if this is not polyglot, then what is?
- WalterGR 6y agoSo thi.ng is a collection of open-source libraries for writing software? What am I missing?
- mrtweetyhack 6y agolook like a whole lot of nothing
- tiborsaas 6y agoIs that not enough?
- WalterGR 6y agoBoth the text of the submission and the other comments here suggest that I am missing something. As a specific example, I don’t expect to see making-of videos for collections of general-purpose libraries. So I’m curious what that “something” is. Do you know the answer to my question?
- lemming 6y agoI know you did a lot of work in Clojure(Script) originally, and IIRC you mostly switched to Typescript. Is that correct? How many of your projects are now designed to be consumed from CLJS vs JS/TS?
- simongray 6y agoHe explained this in a Twitter thread a couple of years ago: https://twitter.com/toxi/status/1041143431786115072 https://twitter.com/toxi/status/1041143431786115072
- toxmeister 6y agoThere're about 140 TS libraries vs. 70-80 Clojure/ClojureScript projects (around only half of which are libraries). I partially stopped with the Clojure work because of lack of community/support, perf & workflow issues and changing interests (e.g. got back into C/Forth/STM32). Before that, I've tried for 4-5 years to encourage more people adopting CLJ/CLJS and to provide tools for graphics, data viz, digital fabrication etc. to make the language more appealing/useful for these folks. In hindsight it seems I gave up a year too early... Still, I find the TS monorepo workflow much more suitable for myself (and for the project), since large scale refactoring without types often has been a complete nightmare in Clojure (also using Literate Programming/org-mode made it even harder in these case). Plus, trying to write performant cross-environment code (for realtime graphics) in CLJC has been a quite painful/hairy experience. Still, as I said before, I do have very fond memories of the 6-7 years spent with the language & community. It's been partially commercial suicide (at the time), but an huge and important learning experience and I'm happy that (in the end) quite a few people found (and still do find) those tools useful...
- jackrusher 6y agoI tried to get more people to pay attention to what you were doing, and still miss you in the Clojure community.
- gitgud 6y agoThis site is a bit confusing at first, originally I thought they were modular libraries for writing general software. But it seems to be a collection of tools specifically for generating computational art/design. Still impressive and useful though!
- toxmeister 6y agoMaybe I mentioned Compdes a bit too often... /shrug From this comment and others it seems maybe not many people are familiar with the meaning of the term: Design through/by computational means, incl. procedural, generative, evolutionary approaches... Having said this, these libraries are closer to general purpose computing, but there's somewhat of a bias in terms of topics and data structures towards geometry, graphics, data transformations, visualization etc.
- nextaccountic 6y agoIf you talked about creative computing[0] I would have understood earlier. Or made comparisons with Processing or SuperCollider. [0] https://en.wikipedia.org/wiki/Creative_computing https://en.wikipedia.org/wiki/Creative_computing
- toxmeister 6y agoCreative computing is just a subset of computational design though and wouldn't have sufficed... also see my answer here: https://news.ycombinator.com/item?id=25263818 https://news.ycombinator.com/item?id=25263818
- nextaccountic 6y agoYes, it's a subset, but you should nonetheless talk about creative computing in the landing page. And also about other stuff!
- dimovich 6y agoYou posted on a full moon day, and this is exactly the vibe I get from your projects. Thank you for the wonderful libraries! I've been using thi.ng/geom and thi.ng/color before and the code is easy to use and modify.
- chris_st 6y agoOne suggestion would be to make the carousel a bit slower to switch... I read pretty fast, but I was only able to read a few sentences in each one before it flipped to the next page.
- toxmeister 6y agoThanks & noted! Btw. the scrolling stops if you hover with your mouse over it/touch the area (similar to IG stories)
- nrjames 6y agoI've used Processing extensively, including toxilibs, and follow the creative coding community relatively closely. When I look at projects like openFrameworks or libcinder or Processing/p5.js, it's pretty clear to me both what those project are and how to get started with them. I've kept an eye on thi.ng for years. I like the visuals on the former and current homepage and it seems like something that I would like to understand better. However, exactly what thi.ng is or how I am supposed to use it -- that always remains ever so slightly out of reach to me. The messaging is so focused on cobbling micro-libraries together that it feels like it is left to the reader to understand the possibility space of what you can achieve by doing so. For me, at least, that introduces enough friction to trying the tools that I feel tired and move on to something else. If you can, I'd consider creating a few very straightforward Shiffman-esque tutorials (a la Nature of Code or something) that drop the discussion of why things are structured how they are and focus instead on helping the reader create something. I feel like if you help draw the line between the capabilities of the libraries and using them in production that the entire project will be more accessible.
- toxmeister 6y agoThis is great feedback! I've got a lot plans for those areas, but the main roadblock is personal bandwidth. This has primarily been a spare time project for the past 4-5 years... There're ~100 examples for thi.ng/umbrella alone, all commented, all linked from the readme's of each package used. Additionally, I've spent a lot of time this year adding more readmes, docstrings (again with examples), create diagrams etc. I completely get your comments/position, but I'm also really wondering if any of this work is just wasted effort if no one actually reads/looks at that stuff... and that then makes it even harder for me to prioritize. FWIW I will also start streaming again in December, focusing on smaller projects/examples than previously. Maybe that format will work better for newcomers. Obviously, there's no desire from my end to be overly cryptic about what you can do with these projects, but whereas P5, OF etc at their core all have a fairly narrow scope (DSLs for OpenGL API and some data wrangling sugar) and only gain their incredible flexibility through various addons and sheer community size, thi.ng simply has no core and that is the hardest thing to "sell" to people, even though IMHO it's also one of it's most unique aspects... thi.ng is an ecosystem (as others have put it), not following the standard main pillar/silo + plugin architectures...
- Arkdy 6y agoI used thing/color on a project where I needed to generate color palettes and ensure contrast. I was blown away by the scope of your work, and really appreciate it. Personally, I've been trying to figure out a literate programming style for clojure, but when I saw that you had given up on it, I figured that if it was a barrier to entry for thi.ng contributions, then I might not stand a chance with my smaller projects. 1. Do you have any advice on building community around your projects? 2. Or thoughts on the more recent advances in literate programming like https://github.com/scicloj/notespace https://github.com/scicloj/notespace ?
- toxmeister 6y agoThanks - some of the reasons for giving up on LP using org-mode are here (mainly external factors): - https://www.reddit.com/r/emacs/comments/9w8i2g/orgmode_literate_programing_thinggeom_2d3d/ec7xv5a/ https://www.reddit.com/r/emacs/comments/9w8i2g/orgmode_liter... - https://www.reddit.com/r/Clojure/comments/9deyxe/thinggeom_appears_to_be_back_in_active_development/e6984at/ https://www.reddit.com/r/Clojure/comments/9deyxe/thinggeom_a... The main feedback re: LP style was the additional layer of indirection and unfamiliarity with the idea of code blocks within an .org file. Also obviously the dependency on Emacs for a decent editing experience of these files didn't help either, even though I always thought for Clojure this was less of an issue (at least back then). With more popular IDEs available by now, I'd say it'd be even harder to convince people to contribute in that style... The only practical advice re: community building I can provide is trying to be there for new users, providing answers/guidance/examples/infrastructure, a space to exchange ideas (i.e. our Discord). That's especially important if other things like extensive documentation/tutorials are still missing. Doing this isn't always easy and there're periods when I'll have to disconnect, but I'm super grateful that we now are starting to have more people helping out on that front, even though the community is still rather small... Thanks for the notespace link, will it check out asap...
- thomastraum 6y agoyo just adding my two cents here regarding the presentation. I am sure this is the coolest thing going because we all know the quality of your work. If the idea is to get new people playing with the library it would really help simplifying everything. I do actually like the idea of adopting a landing page style design... (hinted at in some of the other comments_ there are reasons why they work. the website feels cryptic and doesn't give a point of entry ("start here", "look at this thing doing something") there is way too much text in my opinion, its more of a showcase of commits and terminology than of the project.
- toxmeister 6y agoThanks, Thomas! The #1 issue is that a singular entry point simply doesn't exist, largely because of the sheer number of different projects, platforms and use cases involved. The interactive tag cloud was supposed to be the main starting point mechanism, allowing users to explore projects by topic. Yet, somehow this doesn't seem to register with people (at all)... Also, all the timelines have tooltips, are clickable and take you to their respective project pages. Comparisons with tools like Processing/OF aren't right or fair either, because they focus on a much smaller feature range and then rely on external plugins to expand scope. thi.ng projects have a bias (in terms of percentage of sub-projects) towards data structures, geometry and graphics, but, at large, ALSO cover the "full stack" (arrrgh!!) via tools for: baremetal programming (e.g. on Cortex M4/7 ARM devices), functional & reactive programming, data processing (transducers, datastructures, querying), there're several DSLs & general DSL tooling for creating new ones (parser generators, interpreters, transpilers, VMs), audio/DSP (signal generators, oscillators, filters), file format support (importers, exporters) to UI (for web, desktop, in multiple languages)... Also don't forget most of these libraries are independent. So I'm genuinely, genuinely wondering how one would distill this into a traditional landing page setup? Also, how this is comparable to say P5? It isn't, not even close! What this discussion has brought out and confirmed again (to me, at least) is the commodification of ideas and the explicit expectation of ideas packaged into easily consumed products. Products, which can be consumed and need to provide a quick sale, regardless of conceptual depth (or breadth in this case)... it's a little sad to see! By that logic I'd need to create 250 websites... and there also somewhat are already: Most projects have their own URL (e.g. http://thi.ng/transducers http://thi.ng/transducers, http://thi.ng/morphogen http://thi.ng/morphogen etc.) I'm really not trying to be defensive (even if it might come across as such, merely trying to provide more subtlety & context to some of the comments). I'm thankful & there's a lot of food for thought how to approach the next phase of development, but I'm honestly surprised by some of the comments (esp. from this crowd)
- Bnaya 6y agoWonderful
- EzraM 6y agoA lot of what I see on hackerne.ws gives me the emotional feeling of the industrial revolution. Looking at a thi.ng project is closer to the feeling of the renaissance, a period of experimentation and discovery in the arts. Learning, and mastering, a medium through projects over time.