CNC Clock Mills Itself, Displays The Time

[Christian] wrote and sells some CAM/CNC controller software. We’re kinda sticklers for open source, and this software doesn’t seem to be, so “meh”. But what we do like is the Easter egg that comes included: the paths to mill out the base for a clock, and then the codes to move steel ball-bearings around to display the time.

Of course we’d like to see more info (more, MORE, MOAR!) but it looks easy enough to recreate. We could see redesigning this with marbles and a vacuum system, for instance. The seats for the ball bearings don’t even need to be milled out spheres. You could do this part with a drill press. Who’s going to rebuild this for their 3D printer? You just have to make sure that the machine is fast enough to move the balls around within one minute.

Now usually we feature clocks that are built by CNC machines, so it’s refreshing that here the CNC is the clock.

Thanks [Kevin] for the tip!

42 thoughts on “CNC Clock Mills Itself, Displays The Time

  1. For some reason, no one has managed to write any good CAM software as open source. This is huge gap in the open-source CNC toolchain that could turn a team of skilled coders into open source rock stars. Even Inventables is not willing to open-source Easel. So for the moment Estlcam is one of the cheaper usable options. It does seem that excluding the $3000+ CAM packages, everyone stopped working on their CAM software somewhere around 2005.

      1. I think that perhaps you don’t know what CAM is. The two projects you mentioned are essentially web-based GCODE senders. I don’t have any problem driving my CNC machine with LinuxCNC or Mach3, thank you…but generating the GCODE file from a CAD file is what I’m talking about.

        1. Laserweb2 actually supports Gcode generation.
          For CNC.js, there is another similarly named project that I was confusing this for ( can’t remember the name ). That other project does CAM, I’m pretty sure Laserweb’s lasercutting CAM is based on it’s CNC CAM.

    1. Well you are right when it comes to more than 3 axes for sure…
      4 axis CAMs are already crazy complex – 5 axis and more makes it even more complicated.
      The calculations needed are pretty intense and the market is rather small, compared to lets say video-codecs or GPS-systems. People who buy a 0.5 mio. CNC usually have the cash to buy/lease a CAM. And anyone just building one for shits and giggles will pirate some version of SolidCAM/similar and use that.

    2. Please excuse my ignorance as I know noting of CAD/CAM software.

      I have started building a CNC router that I want to be four axis. It is going to take so so long to save the money needed that I want to build something simpler along the way.

      I considered a scara platform with moving work rather than moving arm and I found that I could just write code for a RAMPS board to do the G-Code (Cartesian) to polar conversion and drive the steppers.

      I assume that is not what you’re talking about here as it’s easy to do / code for.

      I have always just (dumbly) assumes software was freely available.

      What problems am I going to run into with the software side?

      1. Do you do any 3D printing? A slicer is what converts the 3D model into GCODE to plan the paths to move the nozzle around. CAM software is basically the same thing, except subtractive and needs to pay attention to tool shape, climb/conventional milling, pocketing, drilling, etc. So…let’s say that as far as free/open options go, CAM software is about where RepRap software was 6 years ago. Like, trying out some of the open source CAM projects is much like going back and trying to use the official RepRap Host Java software today.

        1. No, I haven’t done any 3D printing but I sort of understand the basics. I wanted to build a router as I prefer to work with metals (probably just light alloys). With a router I can make printer anyway.

          To me it seems to be less than optimal to have some software to go from shape to router movement. The movement is best designed to specifically suite the router so the router itself should have the shape to movement conversion.

          So it sounds like I should just find out what the standard file format is for defining a shape.

          So the router ends up being driven by G-Code anyway and has to work out how best to convert that to motions and velocities?

          Is it the same in all cases or is it harder to find software to generate router instructions for 4 axis’s.

          I will have a play with G-Code. I have a RAMPS on order and I think that has an ATmega2560 which doesn’t have much RAM so I might make a MEGA form factor board with an ATmega1284 and use the shield.

      2. A trick some systems do is substitute the X or Y axis to a rotary device so that both ‘ends’ are in exactly the same place. It’s most commonly used for cutting pipe on a CNC plasma cutter.

          1. For 2.5D (which is probably 95% of the use cases) Vectric’s Cut2D and VCarve are about right. No fuss, take in a range of vector formats and let you break paths into various inner/outer cuts, drill operations, etc. I would say Estlcam is a good example of the minimum functionality, though the pocketing paths are very crude.

            Minimal functionality: easily import paths, select them, and add internal/external offset and pocket milling paths with configurable stepdown/stepover. Drill cycles selectable to line intersections or to center points of circles. Easy to edit tool rack with configurable diameter and shape. Add dogbone/overcuts to corners for clearance in tab/slot type constructions. Preview the resulting GCODE paths. Cross platform without relying on ancient/deprecated libraries. If web-based, UI needs to be as fluid as a desktop app and I need to be able to download and run it on my own server.

            Basically a mixture taking the good parts from dxf2gcode,, and CAMotics, all with a UI refresh, would just about get there.

  2. > this software doesn’t seem to be, so “meh”.

    Someone please help me out here. This is an honest request for education.

    I have been raised in a world (1970/80s+) where having access to the “Public Domain” helped a lot in getting my fingers dirty with software development. So I am all for publishing code, where it helps others to learn OR, eventually, make the code better.
    The later statement, however, abused by people whose only drive in live is to get everything for free, more often than not leads to bugs being introduced into a codebase and more work for the maintainers than necessary.
    Sure, sometimes open-sourcing code does help spotting bugs, I do not neglect that, but it is by no means a silver bullet and “the only good thing since the invention of self-aware mosquitoes”. Open Source as such is not “a good thing”. It is a choice.

    Judging someone for making his own choices, to me, sounds very close minded (as opposed to “open sourced”).

    Meaning: If development is done by a single individual, he/she/it may well face the problem of being confronted by some obscure community to fix bugs in “his” (published) code that were introduced in some fork or rewrite “because we needed that change, but it doesn’t work”.
    I have been there, I know what I am talking about.
    You need time to figure out “hey, that ain’t even my code I am fixing here!” and NOONE is going to pay for your professional time/help. Because it’s open source. And your code. Kind of.

    Nowadays I work in a field where knowledge is rare and every busy developer keeps getting dissed and banged at for not giving away his daywork for free (because it is tedious to acquire the knowledge for doing it yourself, so the “open source” community “demands” that everything is free AND the developers keep fixing bugs and releasing new versions).
    Paying for rent, food and photos of cute cats (or whatever your heart’s content) is commonly considered a “poor excuse” for asking users to pay for software. I have read statements that a developer should do his (open source, of course) coding “in his spare time” and “work a day job”, so that “the community can benefit from it”.
    I did not read that once or twice. It is a common idea of solving the “problem” that those stupid developers create by begging for bread and water.
    Needless to say that, except for some (if any) “praise” by anonymous people that would not even greet you on the street, that community will not bend a toenail to help the developer. It’s a one way ticket.

    I do understand that “open source” is not equaling “for free”, in theory.
    In reality however it is (for the most copies). Publishing your code means that people will compile it (and nag you for support to get it compiled) but NOT pay for it. In a field where you are happy to sell a few dozen licenses per year, while basically having to work 3/4 of that year’s available working time, those licenses need to cover your costs, otherwise you starve and “no community benefits”.
    It’s cool when you are the one who sat down to solve a common problem, taking an hour or a week, and be done. And then …

    Someone here wrote:
    > “open source rock stars”
    … for a piece of code that used by many users and where being a rock star may turn into some income by getting hired or paid tips, that may be cool.
    Being a dead rock star because a community of a few dozen people is using the result of several years of learning, studying, experimenting and creating the code and then having nothing to eat, because it would have been “meh” to SELL your work’s results and, in order to keep users motivated to pay, NOT publish the code … sucks.
    In my world there just aren’t enough groupies that dig a dead dude. It’s hard enough to keep them interested being alive – with all that pizza dangling from your filthy hair.

    Please explain to me, why, in an area with a very limited number of users, almost no available “open source base” or “community” and having to make a living from doing SOMETHING else than watching cute cats on Cattube, NOT publishing your life’s work for everyone to copy, compile and crash without paying you (so you can buy cat videos) is “meh”.
    Publishing the code for “paid software”, in reality, equals giving the software away for free. There is a gap between theory (open source is good for everyone) and reality (dead rock star).

      1. Sorry, Mr. Wolf,

        I get your point. But … it’s a bit different if you have very constant costs of living that need to get paid for versus doing something for fun and making “a bit of tip money from it”. It’s the same kind of gap I was talking about: In theory “hoping for some good souls” is nice. But if the COMMUNITY your code is addressing is extremely small already, hoping for the typical 0.1 promille of donators is … just not cutting it.

        1. The community of Octoprint users is likely smaller than the community of folks that’d want a good Open-Source CAM package.

          I’d expect somebody who would prove they can create such a package, and would ask for money on patreon, would get more than the 4k/month foosel gets. I can think off the top of my head of a dozen companies that’d sponsor such work if it were serious ( likely reaching 4k just with that ), and that’s not counting “normal” users.

          1. OK, I accept that as a “could be”, tailored to this specific need (open source CNC software). One could discuss how much work had to go into building a proof of one’s abilities in order to get the money to get the actual work done … but that’s for a personal discussion over a beer or two :-)

            My approach was a bit broader, since the “not open source = meh” statement by the author of the article seemed to me like a very general, global equation.

        2. If you’re doing open source coding in the sole and explicit hope of getting paid for it, you’re doing it wrong. Which is not to say one can’t possibly get paid for doing so, but the main reason open source code is any good is supposed to be that it’s written by people who are actually passionate enough about the particular issue to see it getting addressed (and hopefully addressed _well_), not by the jaded people IT is full of who are just checking in daily for a paycheck. There are other, much more lofty moral considerations too, generally revolving around the fact that a good that can be produced at a limited single-time cost but can benefit unlimited people without further costs should NOT require all those people to pay to use it, but that’s digressing onto much more controversial philosophical ground.

          At any rate, the “my time is too precious to ‘code for free’ so you should not do that either even if you can” is a piss-poor argument against open source – as far as I’m concerned, my time is too precious to waste it on either developing or learning to use code tightly locked away when I could do the same using and writing code that will benefit anyone with a use for it. I do need to eat, but I’d much rather create a “tide that lifts all boats” than build a crane that will only lift mine. But it’s an entirely volunteer thing – those who get a stroke at the mere thought of anyone using their work without paying first are absolutely welcome to keep playing with their precioussss cranes…

          1. Sorry, Sir,

            I do not understand you. You seem very angry. I did not (or at least did not intend to) offend anyone by claiming that “my time” (or anyone’s) is “too precious to code for free” (actually, I did just the opposite).

            The question I raised was why THE CHOICE someone made to try to make a living from his work (something that you seem to consider a morally questionable choice?) is considered “meh” by the author of this article. To me that feels like there is a “right” and a “wrong” in how software developers treat their code, again, from a moral/ethical point of view.

            Your dismissive way of calling out people who have to pay for their rent (as opposed to – maybe, don’t know – living with their parents and getting fed four times a day for free) “play with their cranes” seems to be the same arrogant attitude the author of the articles shows. It definitely does not advertise the “open source” idea as anything productive, on the contrary.

            If you read my question again, you will see that I both learned from open source (what we called “public domain” back then, which often included open source but wasn’t the same) AND support the idea for learning and improving purpose. The question, again, since your anger may continue to cloud your judgment, is: Why put yourself (in a general meaning, including the article’s author) on such a high horse that you can say “meh” to people who want to live from their craft? Or, in your case, diss them as “playing with their cranes”?


    1. HaD writers and (most) readers prefer open-source.
      Hence ‘meh’. Go ahead and release your code or not, it’s indeed your choice.
      My choice is to avoid proprietary software – and web services are even worse IMHO – unless it’s hard to live without.
      An exception could be made for video games : they’re “unique”, so there’s no alternative. I keep them on a separate PC though.

      HaD by definition, is about doing it yourself :
      – Copying a hardware project that can’t be bought
      – Modifying a hardware and software project to add your own feature
      – In small code bases, checking there’s no obvious backdoor or such (e.g. in a security camera).
      Proprietary systems don’t fit here, unless we’re talking about modifying them to change their features

  3. Now that the clock has been milled, place a whole bunch of coils underneath each dimple and enclose device with a clear shell. You could launch those bb’s out of each space/hold them tight! I’m know somebody’s built a similar idea before. Would love to try and build what I just described in the future.

    1. A deta can’t rout!


      Belts – laser cutter, pcb drill, 3d printer
      Delta – factory organizer, 3d printer
      Lead screws: Wood router – cnc lathe
      Ball screws: Metal router / lathe

      Speed goes in the opposite order except that delta can be faster than belts in a smaller work (build) area.

        1. Routing or milling with a delta is not impossible of course but I think you’ll find that the delta structure itself is really poorly suited to accept and resist the lateral loads that a traditional mill is built to handle. In machining there is no such thing as too much rigidity, and the strong suit of a delta is speed and agility, definitely not strength. All things being equal, the same amount of metal and the same degree of precision in the linkages will get you much further in a traditional rather than a delta configuration any time lateral loads are significant.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.