15 ms·
Show HN: What would mechanical programming look like?
- felipereigosa 6y agoHey guys, I've been working on this Clojure project for a while now, honestly I'm not even entirely sure what it is, a game? a game engine? a 3d editor? a visual programming language? Anyway, it's a system to create mechanical contraptions and interact with them. I built a few test machines and you can see them in the first video I posted on my channel [1]. For instance you can create a fully functional piano in 5 minutes and play it, the keys move, it plays the sounds as you would expect. And this system turned out surprisingly powerful, to build these machines it often does not require any coding which was kind of surprising. I created this tetris game in half an hour [2]. It's not perfect but it is functional and again it required only a tiny snippet of code to coordinate the different submachines and even that might be unnecessary. The "programs" i.e. the machines created also interact in a way that you usually only see with command line programs. You can create a machine then someone else can use that machine as a part for a more powerful machine, for instance that lever that turns the tetris game on and off doesn't "come standard" with the system, I build it separately then imported it. Using the program is a lot like programming, thinking logically, coming up with solutions to problems, fixing bugs, but it's entirely visual so you can use your physical intuition to figure things out, maybe that's why it's possible to do things so fast. Anyway I was hoping some of you would give it a try and give me some feedback. I need people to see what they can build with it, I don't even know what's possible at this point. And if you want to give it a go and get stuck, feel free to contact me with any questions. [1] MockMechanics Introduction Video - https://www.youtube.com/watch?v=HrwxbQj5mj0&t=193s https://www.youtube.com/watch?v=HrwxbQj5mj0&t=193s [2] Tetris Machine Video - https://www.youtube.com/watch?v=cSPm1xxQ-qY https://www.youtube.com/watch?v=cSPm1xxQ-qY [3] https://mockmechanics.com/ https://mockmechanics.com/
- gbasin 6y agoThis looks awesome, great work!
- felipereigosa 6y agoThanks!
- dkersten 6y agoThat's pretty cool! It seems like a weird mixture of physical contraptions (lego/meccano etc) or minecraft redstone circuits, and something you'd see in Media Molecules' Dreams (especially the graph-motion). I just watched the Tetris video and it reminded me of this mechanical pong game: https://www.youtube.com/watch?v=iBoe3yM9IKs https://www.youtube.com/watch?v=iBoe3yM9IKs What inspired you to create this?
- felipereigosa 6y agoThanks and that pong game is a great idea for my next machine, unless someone beats me to it! If I recall correctly the very first thought that led to this project was thinking about how to formalize mechanical devices, they have a language of sorts to describe chess games, same with choreographed dance I think. I was thinking how can I do that for machines without all the extra stuff like heat and friction, but I pivoted a lot since then and ended up with this.
- luminati 6y agoCould you elaborate a bit more on “formalize mechanical devices”? That has really piqued my interest especially since you mentioned dance choreography as an example. Do you have any examples/prior art you found interesting? One of the topics I occasionally like to think about is how to formally describe manufacturing steps in some structured/programming language. Maybe your program could be it. Would love to hear other folks’ thoughts on this too!
- felipereigosa 6y agoWell, I was really into formalizing stuff when I was in college, you know proving that a cryptographic algorithm was correct by formalizing them as black boxes talking to each other, that sort of thing. Then I just started thinking about how to formalize mechanical things. One of the very things I remember is coming to the conclusion that all motions of a machine can be implemented as a combination of linear and rotational motions (and that's where the two things that move on mockmechanics, the track and the wagon, come from), but I don't know if that is true. But I don't really have any prior art, I had a 2d version that didn't work years ago but I think I lost it.
- amelius 6y agoThis reminds me of logic gates based on pulleys and weights: https://www.youtube.com/watch?v=CNbScb8v-MI https://www.youtube.com/watch?v=CNbScb8v-MI (someone posted this here on HN a few weeks ago)
- felipereigosa 6y agoIt's interesting you'd mention that, because most of the program is "mechanical", you manipulate things in 3d, but for some things you have to go into a window and connect a few 2d nodes like the gates in motherboard mode. I was thinking maybe I should use 3d manipulation for everything, maybe the video you posted could serve as inspiration for 3d gates.
- NikolaeVarius 6y agoYou can also play factorio https://www.youtube.com/watch?v=28UzqVz1r24&t=145s https://www.youtube.com/watch?v=28UzqVz1r24&t=145s
- jimnotgym 6y ago...if you want to waste 100 hours without realising it.
- vagrantJin 6y agoThis is so cool. It would be great to use this as a teaching tool so students can visualize things. Keep at it man.
- felipereigosa 6y agoYeah, as an introduction to programming, it could even be used with very, very young kids, apparently people are born with an intuitive physics module (babies are surprised by things that don't make physical sense), so who knows? Maybe someone may claim one day that she has been programming since age 2!
- punnerud 6y agoMy son have been programming since he just got 2 years. Started with code.org, then codeSpark and now scratchJr on iPad. Everything have to be visual, and small doses every week. Love your work from the little I have tested now. Anyway I can contribute for translating into other languages?
- felipereigosa 6y agoThanks, if your son (or you!) builds anything with it I would love to see it and put it on the gallery on the website :) Thanks for the offer, I'm dealing with so many moving parts here (pun intended) I hadn't even considered it. I think the most helpful would be translating the documentation, if you'd like to do that. Or posting a video explaining how to build something in the other language you speak would be great too.
- luminati 6y agoThis has to be one of the best show hns I have seen in quite a while. It looks amazing - congrats and thanks!
- felipereigosa 6y agoThank you so much! I've been working hard for quite a while on this, you don't know how much it means to me that people liked it.
- mikevin 6y ago>... honestly I'm not even entirely sure what it is, a game? a game engine? a 3d editor? a visual programming language? Anyway... It's refreshing to see this kind of exploratory project. Every now and then, I need to be reminded there's room for play and exploring in life, not just productivity and producing. Thank you for reminding me!
- felipereigosa 6y agoYou're welcome :) I remember someone saying somewhere that most of the great computer programs probably haven't been written yet, if we remember that maybe we'll be the ones to write them!
- dllthomas 6y agohttps://en.wikipedia.org/wiki/The_Incredible_Machine_(series) https://en.wikipedia.org/wiki/The_Incredible_Machine_(series...
- traceroute66 6y agoSurely I can't be the only one who saw the title "Show HN: What would mechanical programming look like?" and thought ... sure mate, just go back to the 70's and you've got mechanical programming galore in the form of punch cards. ;-)
- felipereigosa 6y agoHaha... I remember talking to a teacher in college that used punch cards when he was young and I thought it was awesome, people were closer to the hardware you know? Hopefully my version of mechanical programming is a little more convenient :)
- bigiain 6y agoYou know, punched cards and/or pianola rolls was the first thing I thought of watching you piano video when you mentioned wanting to record it. (my second thought was one of those cylindrical hand wound chimey music box things - https://en.wikipedia.org/wiki/Music_box#/media/File:Music_box_elements.jpg https://en.wikipedia.org/wiki/Music_box#/media/File:Music_bo... )
- felipereigosa 6y agoThat's a good idea. When I recorded the piano I hadn't built the tetris machine yet so I didn't have the proximity-test library part. Now it would be so easy to test if there is a hole or not (or a bump) in a block working as a sheet as it moves down. And now that scripts have editing powers, I can see how I could add a block to where the "cursor" is when I'm recording the song.
- fallous 6y agoI went a bit further back when I saw "mechanical programming" and thought of this video. https://www.youtube.com/watch?v=gwf5mAlI7Ug https://www.youtube.com/watch?v=gwf5mAlI7Ug Mechanical analog computing FTW!
- 6y ago
- rjsw 6y agoHave you looked at ThingLab [1] ? [1] https://en.wikipedia.org/wiki/ThingLab https://en.wikipedia.org/wiki/ThingLab
- ArekDymalski 6y agoVery interesting - I'm going to show it to my 11yo son and see what we can build.
- felipereigosa 6y agoCool! If you guys build anything you can send me pics so I can put in the gallery of the website.
- Animats 6y agoThat looks like Working Model, from Knowledge Revolution, from the early 1990s. That was a great little program for Macs that let you build 2D machines. It was too slow and the physics engine was primitive, but I used it to figure out how to do robotic legged running up hills. The CEO went on to found Roblox, which is much more successful.
- gitgud 6y agoOne of the best things I've seen in a long time on here. It reminds me of a few different games; "Little Big Planet", "The Incredible Machine" and of course "Factorio" but this synthesises the best part... Inventing machines!
- felipereigosa 6y agoThanks, one of the great things about creating a program where other people can create things is seeing them inventing things you wouldn't even think of, it's so open ended. Alan Turing and those other guys had no clue what we would do with his idea. I'm looking forward to see what people will make with this. (Not that I'm comparing myself to Alan Turing!)
- c22 6y agoYeah, this makes me think of an "open-map" version of The Incredible Machine [0]. Very impressive! [0] https://en.m.wikipedia.org/wiki/The_Incredible_Machine_(series) https://en.m.wikipedia.org/wiki/The_Incredible_Machine_(seri...
- frompdx 6y agoAwesome project. Can you share which libraries you are using with this project?
- felipereigosa 6y agoorg.clojure/clojure obviously, org.clojars.nakkaya/vecmath, org.clojars.nakkaya/jbullet, batik and lwjgl. All the other stuff, the opengl shapes and whatnot I wrote myself over the years, mostly to learn how to do it. In fact I probably can speed up this program a lot by not using my own code for those parts where libraries are available.
- peanutz454 6y agoThis looks amazing... can't wait to go home and try it with my daughter. How long did it take to create this btw?
- felipereigosa 6y agoThanks, it's a little hard to be sure, my first commit according to git is March 30th, 2018. On one hand, I did take months long breaks while I worked on other things since then, but I also have tried to build something like this once before, years and years ago, but it went nowhere back then.
- frompdx 6y agoInteresting. Thanks for sharing!
- JoshTriplett 6y agoThis looks amazing. Several times in the last couple of decades, as graphics and physics engines have evolved, I've built little prototypes whose main goal was "this should work using real physics and mechanics", and then built things like marble machines. Games like Crayon Physics always felt so limiting; they were only about things bouncing off each other. I'd like gears that turn and mesh, light that diffracts, motors that naturally work in reverse as generators, and the ability to build machines that use more than one of those effects without any special-casing. I look forward to playing with this, and extending it!
- felipereigosa 6y agoThanks, once you are familiar with it you can start extending it right away, a couple of motherboards running custom short scripts could implement all those things you mentioned and then you could make that machine (for example the motor/generator) available for others to use on their own machines!
- taneq 6y agoI think what you're looking for is a "shed". It's a space in the real world where all the usual physics apply and you can make things using them. ;) All jokes aside, this sandbox looks awesome and I want to play with it more. :)
- ethbr0 6y agoMost importantly, the amount of things in your shed increases exponentially with respect to time. In the blink of an eye, you'll have old lawnmower blades (for when I start forging), a full shelf of two stroke engines (shame to throw them away, when they almost run), at least 3 power tools that have been used a total of once (but they were on sale), a "random fasteners" drawer, and an entire woodworking area. * * Woodworking area may only exist in your mind if you're younger than 50.
- magnusmundus 6y ago> Woodworking area may only exist in your mind if you're younger than 50 Why is that?
- issa 6y agoThis is fantastic. I would have absolutely loved this as a kid. Thanks for all of your hard work!
- felipereigosa 6y agoThanks, if I manage inspire some kids into coding just like I was, my work here is done :)
- theodric 6y agoIt would look like an automatic transmission
- doinathing 6y agoThis looks amazing! Please consider making your website more accessible... the menu cannot be focused with the tab key, the images in your gallery do not have alt attributes. Those are some low hanging fruit you can correct. The overall strategy of toggling the main content with CSS might need some aria announcing so folks at least know different stuff is on screen as you move from one thing to another. Again, AMAZINGLY COOL project, not wanting to take anything away from that. Just want everybody to be able to learn about it, even if they are not mouse users, not sighted, etc.
- felipereigosa 6y agoNot at all, this is exactly what I want, some good feedback, I hadn't even considered those things you mentioned, I'll look into it thanks!
- doinathing 6y agoIn order to make it fully accessible you might want to start from scratch and make a more traditional site that's not doing so much with JS to manage what content is on screen. Which might be more than you have time to deal with. But generally, when showing/hiding/navigating with JS, you are short-circuiting a lot of stuff you get for free with the browser (focus reset, announcing of changes etc.) and you have to reimplement a bunch of stuff in JS to get the same effect. Sometimes it's worth it if what you are doing with JS is highly interactive & there's a payoff. But in this case, each thing of content could be its own page, and that plus a little more semantic HTML would do wonders.
- felipereigosa 6y agoYou're probably right, it's just that I'm more of a programmer than a web designer (this is my first site) so I just built everything with Clojure/Clojurescript. But I'll definitely do that once I have some time.
- febin 6y ago
- maddyboo 6y agoThis is one of the first things I’ve seen in a looong time that got me genuinely excited. I can see so many possibilities for the future. Kudos and great work, I think you have beginnings of something great on your hands.
- felipereigosa 6y agoThanks, we do :). From now on what the program can do depends on what people build, the library machines they create so that other people can use them as parts and so on.
- bmcahren 6y agohttps://youtu.be/gwf5mAlI7Ug?t=697 https://youtu.be/gwf5mAlI7Ug?t=697 https://youtu.be/gwf5mAlI7Ug?t=521 https://youtu.be/gwf5mAlI7Ug?t=521 Mechanical algebraic computers for aiming systems
- xfer 6y agoNice idea. Another related game i have been waiting for is Logic world[0]. [0] https://logicworld.net/ https://logicworld.net/
- K2h 6y agoVery nice. I use some very expensive cad packages and for training and certain applications i think this is better. In my opinion you hit a home run. Nice job
- felipereigosa 6y agoThanks! If you already have experience building things with cad you probably can build super cool things using this, I can't wait to see it.
- mattigames 6y agoI was working on an mini-game just like this using Unity but with lasers, some sort of kids game to learn the basics of programming concepts by completing simple puzzles, I lost motivation so its idle, so far it looks like this: https://i.imgur.com/MN4xm4j.mp4 https://i.imgur.com/MN4xm4j.mp4 (the T-shaped object represents an if-else, if blue go left else...), I was thinking of making orbs to represent lists/arrays and so forth, anyway I'm glad you stuck with it and I think it has a lot of potential.
- rbliss 6y agoYour mini-game looks really cool! I think you should stick with it.
- 0df8dkdf 6y agonice it is like pure data for mechanics. thumbs up!!!
- opan 6y agoI didn't see any mention of source or a license while browsing the site. Is it proprietary? Do you have any plans to license this as free software in the future?
- felipereigosa 6y agoWell things are a little fuzzy right now. I was just telling someone who asked me this, the plan is to make it open source eventually (after I refactor the code so that people can actually understand it!), but I would like to make a little money from it too (stupid covid!). So if I can make some money through patreon, crowdsourcing, youtube ads or something like that, then that's what I'm going to do.
- ada1981 6y agoThis would probably be awesome as an immersive VR “game”.
- felipereigosa 6y agoIn time, why not? One of the main aims of this program is to exploit people's natural physical intuition, making it VR is a step in the right direction.
- gnramires 6y agoAwesome, if you're looking for another language that "tries to formalize X", where X='3D Rigid object', look up OpenSCAD. You build complex shapes using primitives (using a descriptive language), but the idea is a bit different. I like the mockup aspect of this: trying to capture functionality and abstracting away detailed looks or positions. I'm thinking of a system where mechanical ideas can be tried quickly to get a functional idea of whether they work, using a maximally abstract functionally-equivalent basis of elements. I feel like common mechanical subsystems like cams (which, for example, allow a rod to follow an arbitrary velocity curve when you move a knob), gears, and other devices may be abstracted away by a simple primitive (plus something like a descriptive curve or function). Your system of 'wagons' and 'tracks' seems to achieve this, at least partially. It's like when, in programming, we use a high level, abstract description of behavior. Perhaps it would be possible to analogously "compile" wagons, tracks and probes into actual mechanical elements like gears, cams, rods and shafts. Abstraction is a powerful tool! (for creativity, productivity, expressiveness, and fun)
- felipereigosa 6y ago> I feel like common mechanical subsystems like cams (which, for example, allow a rod to follow an arbitrary velocity curve when you move a knob), gears, and other devices may be abstracted away by a simple primitive This is exactly how I was thinking before I pivoted the project to a more practical version, spot on. I feel like this project has moved on from that, but someone should really investigate this. Just off the top of my head imagine how easy it would be to run a genetic algorithm to find machines if we had an abstract description for them, or maybe there could be a whole branch of mathematics to prove that a certain machine does what we think it does (a lock is secure, this sort of thing).
- shireboy 6y agoThis looks incredible. I’ll be testing this with my kids tomorrow
- felipereigosa 6y agoGreat! Be sure to share pictures of anything cool you build. I should have mentioned this before, I'm on Twitter and Instagram as MockMechanics too if anybody wants to share anything with me. I haven't posted anything there yet, but I'll start tomorrow since people seem to have liked the program.
- shaunxcode 6y agoThis is awesome. We are witnessing the birth of the Minecraft killer! For real this could really usurp it if they get to the point indicated in the video (shareable worlds, castles and building siege machines etc!)
- felipereigosa 6y agoThanks, I'll try my best to get there, for now though I'm just the one guy doing it so it might take a while. If my plans work and I make the project opensource though, then we're talkin'.
- deepspace 6y agoI learned something new from the article and that is that GCJ-02 - the coordinate system used in China - is terrifyingly terrible: "'Topographic map non-linear confidentiality algorithm' is a geodetic datum formulated by the Chinese State Bureau of Surveying and Mapping, and based on WGS-84. It uses an obfuscation algorithm which adds apparently random offsets to both the latitude and longitude, with the alleged goal of improving national security. There is a license fee associated with using this mandatory algorithm in China."
- peterkelly 6y agoWrong thread; I think you meant to post here: https://news.ycombinator.com/item?id=24917394 https://news.ycombinator.com/item?id=24917394
- xingyzt 6y agoVi Hart's EleVR research group had a similar concept in 2016 (implemented in VR of course), though they ran out of funding. https://web.archive.org/web/20190320232253/http://elevr.com/portfolio/future-programming-interfaces/ https://web.archive.org/web/20190320232253/http://elevr.com/...
- shatgupt 6y agoThis looks so awesome! I was genuinely excited to use something like this after a long time but the jar crashed on my Mac. Is it Windows only?
- felipereigosa 6y agoIt shoudn't be, I've include the lwjgl natives for macos, but I don't have a mac so I don't know. The jar works on ubuntu and windows, I did have an issue on windows initially due to the different path separators. If you run it from the command line, when it crashes does it say anything? Mail it to me if so and I'll have a look.
- Arkdy 6y agoI noticed that you have a visual editor for connecting the parts. Kosmos might provide some inspiration or insight given that it's a open source visual editor for clojure. https://kosmos.antonvolkoff.com/ https://kosmos.antonvolkoff.com/
- skellystudios 6y agoReally cool project – but I found it took quite a bit of digging before I could work out just how cool it is. Have you thought about making the gallery from videos or even gifs? The movement is sort of the best part, and a bunch of people (like me) might skip the long video on the homepage.
- felipereigosa 6y agoInteresting, I think I'll do that, I even already have the gif for the tetris machine, but I ended up not using it.
- ZeikJT 6y agoGIFs are inefficient and pretty resource intensive, if possible use video formats instead. Modern machines are optimized for running video so they work quite a bit better.
- roryokane 6y agoTo fill in the missing step, you can play a real video format in the browser using the HTML <video> element, optionally with the `loop` attribute (https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video https://developer.mozilla.org/en-US/docs/Web/HTML/Element/vi...). <video> elements, like GIFs, are supported in all browsers. You can choose a codec and container format to export your video to with the help of https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Video_codecs https://developer.mozilla.org/en-US/docs/Web/Media/Formats/V.... All of those formats make for much smaller files than GIF-format video files.
- nonsince 6y agoThis would be a fantastic way to teach programming to kids, in the same way that redstone or (for people of my age) wiremod makes programming tangible and feel more real. I’d love to see this adopted in schools or something. Really well-designed mental model for this kind of thing too.
- felipereigosa 6y agoThanks, yeah a couple of people have been saying how they are going to try this with their kids, depending on how that goes I can think about how to take it further in that direction.
- whiskey14 6y agoDude this is great! I think this would be superb for teaching children physics, coding and design. Also, it could have minecraft type vibes of addictivity and fun
- felipereigosa 6y agoThank you. Yes one of the directions I want to take this is to create an avatar you can move around just like minecraft and then interact with your machines like I show in the first video. I always thought educational gamefication is something that could be done better. When I was a kid I knew every pokemon, their evolutions, their powers and I wasn't even trying, I just wanted to play pokered. If I create something that makes people, especially kids, care that much about programming... To storm that castle you have to build a catapult and to do that you have to understand these programming ideas...
- arendtio 6y agoJust from watching the video it looks great :-) What I like especially is the idea of teaching the keyboard shortcuts while using the software. In addition, the avatar mode sounds like it could be really fun. Any chance of increasing the size of the world and making it like a first person gaming experience?
- felipereigosa 6y agoThanks. > Any chance of increasing the size of the world and making it like a first person gaming experience? That's the plan, except it will be the most open ended game ever, what you do inside is up to you... want a epic battle game? Build medieval siege engines yourself and fight other people. Want a city simulation? build the transportation system yourself, charge people to use it...
- felipereigosa 6y agoJust for fun, I created a poll of my top ideas from my idea text file, which one you think I should do next? https://linkto.run/p/ZGHCIQW1 https://linkto.run/p/ZGHCIQW1
- punnerud 6y agoThe JAR-file can easily be decompiled: http://www.javadecompilers.com/data/30.10.20/77670d3f04408fb127ea0da1393243f8/program_source_from_cfr.zip http://www.javadecompilers.com/data/30.10.20/77670d3f04408fb... Should support the developer on Patreon (see he mention it, but can't find a link). I think this a great work that deserve to be supported!
- felipereigosa 6y agoMaybe this is moot as I'm thinking I may release the code as opensource anyway, but I didn't think I was giving much away by not using proguard, since the code comes from clojure? There is no link to Patreon because I haven't created an account there yet, let me do that right now. And thank you! If I can get some support on something like Patreon, crowdsourcing, youtube ads or something like this I definitely will release the code.
- felipereigosa 6y agoHere you go: https://www.patreon.com/mockmechanics https://www.patreon.com/mockmechanics I'm super thankful already for all the support I received with all the comments from you guys. But if you want to support me a little more, now you can.
- punnerud 6y ago$100 on Patreon your way :)
- felipereigosa 6y agoWow! I just saw the patreon notification and thought that was some kind of mistake. Thank you so much!
- nullandvoid 6y agoVery neat, shall give it a go. The site is buttery smooth as well, really nice job there
- denvercoder6 6y agoMy employer creates Simscape Multibody[0], which does kind of similar stuff, but it's more targeted towards business/research needs. This looks like a more fun variant of it! This looks very interesting to me, and I'm sure my fellow colleagues would love playing around with this. [0] https://www.mathworks.com/products/simmechanics.html https://www.mathworks.com/products/simmechanics.html
- felipereigosa 6y agoSimscape Multibody looks very cool and I can see how it and MockMechanics could complement each other: create something super fast without any real physics considerations on MockMechanics just to brainstorm an idea, then once you have narrowed it down, model it properly with Simscape Multibody.
- coldsmoke 6y agoReminds me of The pattern on the stone by W Daniel Hillis where he builds a tic-tac-toe computer out of mechanical components. It's a great book for explaining how computers actually work. https://en.m.wikipedia.org/wiki/The_Pattern_on_the_Stone https://en.m.wikipedia.org/wiki/The_Pattern_on_the_Stone
- agumonkey 6y agoside note: after dabbling into electronics and electromechanics.. I tend to see them as programming already. You're coupling geometries in a mathematical way. If you do reactive/dataflow programming that's very very similar. Also, army videos of 40s mechanical computers hint that way I think. (in a way the meaning of programming is quite blurry)
- amatic 6y agoThose videos are amazing. Analog computers are computing by analogy, eg. rotation speed represents variable A, and the roatation position represents the integral of A. Programming an analog computer means setting up an analog of a system of differential equations, then the system computes the solution.
- terse_malvolio 6y ago@felipereigosa https://youtu.be/CNbScb8v-MI https://youtu.be/CNbScb8v-MI https://www.youtube.com/playlist?list=PL_6VEfozyAFfN1L6HgAeYErpjqd4n8VXr https://www.youtube.com/playlist?list=PL_6VEfozyAFfN1L6HgAeY... :)
- felipereigosa 6y agoI saw that first one yesterday, it was one of the first things people posted on this thread. Very cool stuff. The second one will be a great reference for the kinds of movements to try to create once I get gear mode working. Thanks.
- ano88888 6y agowow. amazing. You have great skills. I bet that if you spent your time working on making programming tools easier, you will be able to beat most low-code, no code products in the market.
- felipereigosa 6y agoThank you. One idea I thought I might implement is to have little special library machines to do things like read a file and create a physical representation of it so that other machines can manipulate it. Maybe a XML file can be represented by a physical tree which machines could prune and rearrange. You could make sure it works on a small test file then there should be a way to run the program without the expensive 3d rendering on bigger files.
- jermaustin1 6y agoI came here originally thinking this was going to be about stuff like how before CNC, machining lathes had series of levers and knobs that controlled gearing that would then cut different patterns into the part being machined. I watched a great video on Adam Savage's YouTube channel [1] about his lathe and setting up the levers to make nuts and bolts on it. Thus mechanically programming. 1: https://youtu.be/98MCz9gQaiE?t=622 https://youtu.be/98MCz9gQaiE?t=622
- ishouldmention 6y agoThe creator is very humble and didn't mention, so I will: You can support this awesome work on the Patreon site: https://www.patreon.com/mockmechanics https://www.patreon.com/mockmechanics Surely at least worth a few of your dollars.
- felipereigosa 6y agoHey thanks for that, I hadn't seen the message until now, I really appreciate it!
- ohiovr 6y agoI'm surprised this wasn't mentioned in the text because it looks like it is perfect for making them: https://en.wikipedia.org/wiki/Rube_Goldberg_machine https://en.wikipedia.org/wiki/Rube_Goldberg_machine
- IIAOPSW 6y agoI don't say this very often, but I think you're sitting on the next minecraft. You've captured that brilliant, simple, elegant, open ended thing-beyond-words which can be instantly recognized but rarely built. Whatever you do, please never ruin the simplicity. Every object's state is defined by a single number. The logic of numbers is connected like plumbing. Never change this recipe.
- felipereigosa 6y agoThank you so much! I won't, if anything sometimes I go too far trying to make things even simpler. For instance I use a track for both building wagon paths and as a motor, I thought maybe that's confusing but the track value wasn't being used for anything why add yet another part when it isn't necessary? In fact, there are things I know I can simplify. The button part for instance is completely unnecessary, I have built one that looks and works identically using a wagon on a short path and a few chips hidden in another layer. One of the things I may do is to make it a library part that can be imported instead.
- Cieplak 6y agoThinking of some ways you could build this product into a business, which I think is the best way to scale the positive impact of your work. First thought was building a network interface so folks could interact and collaborate within the environment. The other thought was to offer it as an educational tool, as a gateway to more advanced programming; for that to work, though, I think it’d need some sort of game-like attractions, to pique the interest of the user and create positive feedback loops so they delve deeper into the tooling. The Minecraft comparison resonated strongly for me; even if it’s not your long term vision, it seems an apt template to follow while you crystallize your ultimate product vision.
- felipereigosa 6y agoThat's exactly how I have been thinking. What I was thinking was to make it a Steam game, but entirely open ended, maybe with a bit of resource scarcity so that people have to scramble to get what they want. I said to someone else yesterday maybe things like cities with user built transportation systems for rent, resource wars with medieval siege engines all designed in an arms race between users could evolve organically. In a way that combines the two things you mentioned: the shared aspect and the incentive to learn programming. When I was a kid I knew all the pokemon and their stats, why? Because it was required to advance in a game. Now suppose you have a castle and someone figured out a way to outsmart your defenses. Either use programming ideas to update your cannons or lose the castle... I could add a basic "building block" of damage to avatars like being hit with anything moving faster than x, then anything you can design that throws things could be a weapon, figure a way to store balls "under pressure" triggered by a step plate and you have a bomb/booby trap. edit: (sorry I keep having ideas and editing the post) At some point the game itself might be open kinda like the internet, the reality of the game what things exist where, who has what can be agreed upon with some sort of blockchain system, then several "browsers" can be written to "plugin to the matrix" if you know what I mean.
- trungdq88 6y agoLooks amazing! I can imagine this become a wonderful sandbox game! I try to run the app on macOS but it crashes immediately. Do you know why? Log: https://pastebin.com/amQgGz43 https://pastebin.com/amQgGz43
- felipereigosa 6y agoThanks! I just looked up "sandbox game" on Wikipedia to refresh my memory and it gave me the idea of maybe adding challenges to make it one of those "solve this problem anyway you can" deals. Maybe a puzzle mode? I'll add it to my idea file. Someone else mentioned that it crashes on mac but didn't provide the output yet so thanks for that. I don't have a mac but I'll have a look to see if I can fix it.
- roryokane 6y agoI emailed you the error log I see when trying to run the jar on macOS 10.14. It contains more errors than the log that trungdq88 posted does. Oh, whoops, I see that the Download page says JRE 11 or newer must be installed. My JRE version was 8 (Java 1.8). After switching to OpenJDK 14, I get the same errors as trungdq88.
- king_magic 6y agoThis is one of the coolest Show HNs I’ve seen in years. This is awesome, I hope you turn this in to something incredible (which it already is).
- felipereigosa 6y agoThanks, I'll do my best!
- nidhaloff 6y agoThis is awesome. Definitely, the best showHN I ve seen this year! Keep it up ;) As a developer, I want to ask which programming languages did you used to build this & why. I think you didn't open sourced the tool or am I wrong?
- felipereigosa 6y agoThanks! Clojure all the way. Why? Because lisp is awesome :) I haven't made it open source yet, and I'm not entirely sure I will, depends what's best for the project, if making it a paid game on Steam is the way to go... But even if I do I would have to refactor the code somewhat first.
- nidhaloff 6y agoAwesome. I'm a fan of functional programming too :D I definitely think that there is a possibility to turn this project to a business. I would find it ideal if you can do both, turn it into a business and at the same time open source the code. Maybe you ll find a way. Good luck ;)
- rbliss 6y agoI really love what you've put together. So much so that I'm going to boot up a VM to try it out. I'd echo the responses here that there may be a business in it to help you fund further exploration. Nice work.
- felipereigosa 6y agoThanks, let me know how it goes!
- mryalamanchi 6y agoThis is brilliant. Do you think it will be possible to have abstraction layers that can be commonly used by everyone? Like dependencies/modules that can be imported and tweaked on giving them parameters.
- felipereigosa 6y agoThanks. Yeah, one of the great inspirations for this project is Emacs, which I love. Emacs is so good because of the different modes that everybody can write. In the future maybe anybody can write a mode for MockMechanics (like the Avatar Mode that I keep talking about), we'll see. Unless you are talking about the machines themselves? The copier machine for instance can be set to copy in place or not, it has a toggle button for it. So, yeah, people can build library machines with all sorts of toggles, sliders etc to tweak their behaviour, and then you can use those to build even higher machine abstractions.
- felipereigosa 6y agoHey guys, I'm not sure if I should post this here or create a new post on the main page? I spent the morning implementing the music box that I talked about with @bigiain yesterday. I went even further and created a little submachine to load text file songs from the computer. I hope you like it. If you would like updates like this, follow me as MockMechanics on twitter and Instagram, and if you'd like to support my work I'm now on Patreon too. Music player - https://youtu.be/Kz9GDBJuVwk https://youtu.be/Kz9GDBJuVwk
- scitechx35 6y agoThis is so cool and exciting! I have always been fascinated by the idea of making a virtual world where you can build test actual machines so the cost of experimentation is really low. It would enable so many people to experiment innovate in the physical world.
- felipereigosa 6y agoThanks! That's an interesting angle I hadn't thought about before. I mentioned in the site creating prototypes of real machines, but I was thinking more of you brainstorming your own ideas. Maybe people can create virtual machines, ask other users to use them in the virtual world, work out all the design bugs, then if people really like it (and it is physically feasible) build it in the real world.
- scitechx35 6y agoYes, that would be super interesting. Not sure about the specifics but it would be a great place where people could come and collaborate on projects (maybe in future). It's also such a great teaching tool for kids. Just curious, is it a personal hobby project? How do you plan to sustain it? This is definitely one of the most interesting project I have seen. Thanks for building it :)
- felipereigosa 6y agoThanks, it started as a hobby project that gradually became more and more "the thing I do" as I noticed it's potential, whether it makes money or not. I'm investigating two routes right now, one is to see if I can get support through patreon, youtube ads and things like that and then eventually release it as open source. The other is to release it as a game on steam, maybe get funding first, but not necessarily. I'm leaning more towards the second one at the moment, people have pointed out that the project would have a wider impact that way.
- gene-h 6y agoThis is pretty interesting. One problem I think the field of mechanical engineering has is that there is no high-level hardware description language to describe mechanical devices. Sure we have things like modelica which come close, but there are some pretty big disadvantages. It is very difficult to describe a work piece being moved through a factory and having operations performed on it with modelica. It is even a challenge to formally describe what mechanical devices do! Honestly, I think Charles Babbage may have made the most progress in this area with his mechanical notation[0]. It is crazy that Babbage was able to design a the difference engine without any CAD software! [0]http://blog.plan28.org/2014/11/babbages-language-of-thought.html http://blog.plan28.org/2014/11/babbages-language-of-thought....