What guides your choice of FoC project direction? ...
# thinking-together
s
What guides your choice of FoC project direction? For example, are you scratching an itch, or trying to maximize global creator productivity? I’m guessing those result in very different (at least initial) directions, though we tend to assume the former will result in the later. For example, I’m a big fan of structured code editors and it was one of the first things I worked on, but in retrospect I’d put them low on the list of things that could significantly increase creator productivity. I chose it because it was new and neat, not because it was particularly helpful.
👍 3
i
For me (making Hest), it's 1/3rd "This is what my company needs to solve a business problem", 1/3rd "I see an obvious shortcoming in existing tools", 1/3rd "Making the tool I wish I already had".
👍 5
d
For me (Curv), I am scratching several itches. I'm building a tool for myself that fixes shortcomings in the other tools I was using at the time I began. I wanted to increase my own productivity, and be able to create things in Curv that were impossibly difficult in OpenSCAD. My secondary motivation is that I think that pure functional programming is the future. But Haskell has this very steep learning curve, and you spend all of your time appeasing the type system. Haskell is great if solving type system puzzles is super enjoyable and is your main motivation for programming. But that's not the reason I see value in pure functional programming. I think that properly packaged, pure functional programming is easier than OOP and more powerful. The language I want must be simpler, easier to use, and more dynamic, than Haskell. I didn't see any such languages out there when I started, so I decided to build one in order to demonstrate the idea. A simple, easy to use language with a super powerful model for graphics programming is exactly what I would have loved to have as a kid.
👍 3
i
Honestly? Laziness and annoyance. I’m lazy. I don’t wanna do in 7 clicks or 20 commands what should be done in 3 - both as a user and developer. I don’t wanna fight configurations and toolings, I want to express my ideas as I create them in my head, not as someone else imagined them. I’m annoyed when I see the huge amount of boilerplate and configuration that goes into making even the most basic thing, like who the fuck thinks this is a good path for software development culture? I don’t want to spend half of my day trying to set up the proper configs so I can start working, I don’t wanna spend half of my day rewriting the same models the backend developers have or just connect UI to REST and call it software development. Software costs a ton because we keep writing the same boilerplate over and over again on each side that’s involved into the process. I’m terribly annoyed that instead of seeing development culture evolve, it’s just rehashing and selling same old shit under new guises. Instead of focusing on developing, I’d say 50% of the development community is focused on self-promotion and “oh look at us we’re experts because we write boilerplate”. I hate going to conferences now because they’re so full of marketing, boilerplate and blatant self-promotion instead of being about code and ideas. This culture is forcing talented developers into highly specialized factory workers that work with only specific frameworks and can’t see out of their own framework’s comfort zone. I don’t like that. I want to unbox everyone from that box. So I let the laziness and annoyance guide me - I see what I don’t like and think should be done in a better way and the annoyance with current culture drives me forward to change it and make a tool that’s not gonna be a specialized tool for a special subset of people, but something that everyone can use, no matter what their development domain is.
☝️ 5
k
We all think our experiences are shared by others. And we expect scratching our own itch to also help others. We're often wrong, and we often over-estimate the "market size of the opportunity". But the original question seems fundamentally impossible to answer in the first person and present tense with anything but "both".
i
I disagree — I am absolutely not interested my project doing anything resembling "maximizing global creator productivity." In the place of that, I'd say I'm only interested in my project helping six of my coworkers solve a specific problem they face. I very specifically do not want global productivity to be improved. I want productivity reduced. I want more global leisure time instead, and I don't believe that'll come about from improved productivity unless we first dismantle capitalism, which is a whole other battle I'm not going to fight.... here, today. 🙂
❤️ 2
k
I want more global leisure time..
I agree with that! But it's not quite what was said? Productivity is usually defined as efficiency of production (https://en.wikipedia.org/wiki/Productivity). So it takes you less some to do something. What you do with the time you saved is not dictated here, whether you choose to do more things or go chill. In any case, I admit I wasn't attending that closely to the wording, just the dichotomy between scratching your own itch and building something others would use. Now that I think about it, even there I'm not airtight. I'm sure there are people who just want to scratch their own itch. But I think anybody trying to build something for others here is also trying to scratch their own itch.
👍 2
i
Good catch — I do mean that I want emphasis on productivity reduced, not actual productivity itself.
d
Copy code
I want productivity reduced. I want more global leisure time ... we first dismantle capitalism
This is a noble goal. Nothing in the Curv project is meant to go against this. By "increase my productivity", I merely meant that I'd like to make cool things in less time. Although in retrospect, inventing a new programming language was an odd way to go about increasing my productivity. I think that the real story is: I was looking for an interesting and challenging new project, right at the limits of my ability to accomplish it, because I hate being bored. I also wanted something tangible to show for all my efforts at the end, so downloading and playing videogames was ruled out.
s
By “maximize global creator productivity” I meant enabling lots of creators to create more with less effort, as opposed to other motivations. That is, 1) helping lots of folks do things they’d like to vs 2) helping oneself or a few to vs 3) exploring ideas mainly for reasons other than usefulness, such as novelty. Though we tend to talk about the differences between 1 & 2, I suspect it’s not uncommon to find oneself (as I did) doing 3.
👍 3
e
In my case, i was wanting to make both web apps, mobile apps, and desktop versions of software, and was faced with either learning multiple systems for each platform, or using a cross-platform framework. I wasn't happy with the complexity and opaqueness of the frameworks, and particularly unhappy with the languages that one has to use with those frameworks. So thought, why not throw away the entire computational stack, and start with a clean sheet approach? I knew that one of the biggest problems facing software today is the inability of large projects to stabilize, and that end user errors are not being fixed promptly at all by most companies. Typically now large companies like Apple are using their customer bases as their unpaid QA dept., and only the errors reported by the largest number of users are investigated, the rest ignored. So i reverse engineered the design starting from the feature of being able to reproduce every customer error at HQ. I am going for robustness and minimum error rate. Basically the tool i wish i had had all those years ago.
💡 1
💪 3
k
Wow, Edward, have you talked about the telemetry aspect of your project here before?! First I've heard of it.
s
A great question and so many thoughtful answers. Thanks, @Steve Dekorte, it’s so useful to initiate such a discussion every once in a while because people come and go and directions change over time. My main motivation is to build better tools that help us think and communicate those thoughts — in the augmenting human intellect sense. We have the technology to summon any idea into fluorescent rectangles in front of us (and into the 3D environment around us). There are so many unexplored possibilities with this. Augmenting intellect is further away from programming than I initially thought, and so I have been looking at disciplines outside our domain concerned with the nature of human thought, e.g. cognitive science, linguistics, mathematics, design, or the arts. I want to connect ideas from these disciplines that haven’t been combined before, hoping this will lead to considerably different ideas, and eliminate some of the complexity along the way. It’s a quest to leave the local maxima we’re stuck on behind and make it into the mountains that I believe lie further away. A problem with that approach is — not surprisingly — that the more you learn, the more you understand that you don’t understand. At this point I might well be lost, lifted by abstract concepts, drifting away at high altitude, and losing the gravitational pull of a concrete project that brings all these ideas back down to the surface. Nonetheless, computer science and programming is ultimately at the root of building such tools. It’s also still the discipline I‘m most familiar with. Anything I might come up with will be based on valuable principles found in computer science, and shaped by many of the inspiring discussions we have here.
👍 2
k
Stefan, for what it's worth, I think of 2011-2013 as my "wilderness years", where I spent a long time just exploring lots of different things. I had a concrete problem in mind, but no idea how to attack it.
o
Thanks for this interesting thread! For me, it is a mix of the two. I guess I have some mental model of a kind of FoC environment/language/tool which I guess will make it easier to create and reason about "programs" and other complex things (here I follow @Stefan). And I experiment with some ideas from different places that I think will be central or simply usefull. For example, at one time I found MaxMSP/PureData very interesting, but feel that they miss a way to easily switch to and to integrate text based coding. So I tried something on that idea. Or, as I feel collaborative offline first editing is very important, and need to be adressed early, I have experimented with some CRDT/CausalTree algorithm. And sometime, it is just an experiment which code I will throw away (my MaxMSP experiment), and some other time I do it with the objective to keep it (CausalTree). But always, with the main objective is to ease creativity. And if I feel something doesn't work on that regard I leave it early (well, I try to...).
s
I’m bringing this up because I’ve been wondering what an FoC project focused on increasing global creator productivity would look like. When I say “creator”, I don’t mean just me or other developers. I mean everyone on the planet who wants to create things with computers. I’d guess most people’s common desires would be focused on communication and roughly be described as ways of creating and sharing professional quality interactive documents, which seems worlds apart from the typical FoC demos focused on helping existing developers with code editor or debugger features.
👍 1