Writing a script for a simple hook in OpenSCAD is easy but I wanted to do something more and make a parametric hook. With parametric I mean that a user can easily adjust the script by changing some variables to make your own hook.
To make it even easier the script makes use of the Customizer of OpenSCAD. This means that users don’t have to tinker with the code but can adjust the values of the variables with a easy to use panel on the right side of the GUI of OpenSCAD called the Customizer. (If you don’t see the Customizer in OpenSCAD go to the menu bar and click on Windows and then Customizer).
Aside from changing the dimensions I also added the possibility to add a fillet or a chamfer to the hook. And I added the option to change the radius of the hook and the diameter of the screw holes.
If you’re interested here is an explanation of some parts of the code. The fillet of the cube shaped parts of the hook is created with the fillet module. Within this module I simply intersect a cylinder with radius r1 and a cube of the desired length l.
We first need to create a involute of a circle in Solvespace to get a better understanding of an involute gear. This video will be followed by another where we create an involute gear and a third where we adjust the gear in Solvespace.
I’ve used version 2.3 in this video but v3.0 should work fine too for this tutorial. This is a series in progress. I will at least make one more video to demonstrate how one gear drives another in Solvespace.
First video tutorial: Involute of a Circle in Solvespace. Before creating an involute gear we first need to understand how to create an involute of a circle.
Second video tutorial: To create an involute gear we only need three parameters, the module which determines the length of the teeth, the number of teeth and the pressure angle. With these parameters we can determine the Pitch Circle, Addendum Circle or Top Circle, Dedendum Circle or Root Circle and the Base Circle. With these circles and the pressure angle the shape of the teeth can easily be created in Solvespace.
Third video tutorial: This is the third video in a series about creating an involute gear in Solvespace. If we want to adjust the module, number of teeth or pressure angle of an existing gear in Solvespace we don’t have to start from scratch. We can take an existing gear and change one of the three parameters. This will save us a lot of time. However this change must be done following a procedure that I’ll demonstrate. Other wise Solvespace will give us the error message ‘unsolved constraint’.
Solvespace is an open source, parametric, 3D CAD program that is lightweight and easy to use. It is available for GNU/Linux, OSX and Windows. In Solvespace the user applies geometrical constraints to a sketch and the program’s solver calculates the result (comparable to the FreeCAD part design workbench).
Solvespace is open source (GPLv3 license) and is available for Window, OSX and Linux. Originally developed by Jonathan Westhues and currently maintained by Paul Kahler and others. It can be downloaded here: http://solvespace.com/download.pl
OpenSCAD allows the user to create complex shapes with the polygon function for 2D and polyhedron for 3D. Polygon and polyhedron both accept a list of 2D and 3D coordinates (points) respectively as parameters. A functions can generate a list of points eliminating the need to manually created these lists. This property can be used to create shapes that are impossible with the 2D and 3D shapes that are build-in in OpenSCAD. In this blog post I’ll show how to create some simple 2D and 3D shapes and explain how to create more complex shapes.
Creating a 2D shape
To create a circle with a radius of 20 in OpenSCAD we just have to type
However OpenSCAD doesn’t allow us to reshape this build-in function to for instance an ellipse. Alternatively we can write a function that generates a list of points needed for a circle and then use polygon with the points as parameter to draw the circle. The function uses the trigonometric formulas, x = r cos φ and y = sin φ, to convert polarcoordinates to Cartesian coordinates.
When F5 is pressed a circle is drawn however the x,y coordinates of this circle are available to us. By adding echo(circle(20)); to our script the list of points is printed in the console. The circle function can easily be altered thus gaining a new shape. An example is shown below.
Now let’s take a look at the syntax of the function. Every function generates a value and in this case it is a list of points. In OpenSCAD a list of points in a two-dimensional space is represented by [[x1,y1],[x2,y2],[x3,y3],…] where all x’s and y’s are numbers. In this case of the circle function the point are generated in a for loop. The loop begin at 0 and ends at 720 with a step of 1. The radius * cos(phi/2) and radius * sin(phi) calculate each x,y coordinate for every given phi.
The ellipse, a generalization of the circle, can now easily be created by slightly changing our function.
a second parameter is added. r1 is the radius in the x-direction and r2 is the radius in the y-direction. If r1 is equal to r2 a circle is drawn.
Creating a 3D shape
To create a 3D shape is more complex than 2D. We use polyhedron function of OpenSCAD instead of polygon. For polyhedron to work we need a list of 3D points instead of 2D points and in addition a list of faces. Each face contains the indices of 3 or more point. All faces together should enclose the desired shape. So let’s start create a cylinder. First we need to calculate a list of the points of the cylinder.
h = 180; //height of the shape
step = 18; //height of one layer of the shape
a = 36; //step size for angle in degrees
r = 40; //radius of the base of the vase
p = [for (z = [0:step:h], angle = [0:a:360-a]) [cos(angle) * r, sin(angle)* r,z]];
If you want to display these all the points in the list create the module plotList.
To display all the points in the list p in red type.
Press F5 and a cloud of points in the shape of a cylinder will appear.
Next we need a list of faces. This is often the most difficult part. In this case we create faces that consists of four points.
Imagine that we define a matrix that has n columns and m rows and we use this to systematically work our way through the points to create perfectly connected rectangles. So the first rectangle will be [0,1,7,6], the second [1,2,8,7] etc.
If we want to translate the complete matrix above we need the code below. Note that instead of using fixed numbers for the matrix the size of the matrix is calculated based on the variables that we defined earlier.
m = floor(h/step); //number of rows in matrix
n = floor(360/a); //number of columns in matrix
fcs = [for (j = [1:m], i = [0:n-2]) [(n*(j-1))+i,(n*(j-1))+i+1,(n*j)+1+i,(n*j)+i]];
We are getting there but we also need to create a top and bottom separately or else we wouldn’t get a solid.
top = [for (i = [n*m:(n*m)+n-1]) i];
bottom = [for (i = [0:n-1]) i];
And we need to connect or stitch the end points by creating additional faces of each row of the matrix. For example [0,5,11,6] for the first row.
You could ask why choose such a complex method to create a cylinder. However just as with polygon this method enables us to create shapes that are impossible to do otherwise in OpenSCAD. Imagine to have the z-direction smoothly curved and on top of that have a periodic curve in the xy-plane of the shape. We would end up with a vase shown in the image below. It’s impossible to create this shape in another way in OpenSCAD. In a next post I’ll explain how to do that.
OpenSCAD allows the user to create complex 2D shapes using functions that generate lists of points This list is used as the argument in the polygon function of OpenSCAD. Every shape can be generated as long as the mathematical expressions are known and can be translated to OpenSCAD script. This opens up a world of possibilities. The same is true for 3D shapes but instead of polygon the more complex polyhedron function of OpenSCAD should be used.
Caveat: List comprehensions as shown in the functions of this article are only possible with OpenSCAD v2015.03 and above.
OpenSCAD is open source (GPLv2 license) and is well maintained by Marius Kintel et al. Besides the stable releases for Windows, OSX and Linux, developmentsnapshotsare available. I recommend using these development snapshots since they have all the latest features.
EDIT: If you render the cylinder that we created above, export it as an .stl file and import it in Prusaslicer you’ll see a message like “auto-repaired 2246 errors”. This problem is caused by the reversed normals on (part of) the faces. I’ll demonstrate how to solve this in a next post. The model however prints fine thanks to Prusaslicer.
Last May I received a new Terms of Service request from YouTube. In this request I had to grant YouTube the right to monetize my videos. In other words when I agree, YouTube can insert ads in the videos. This is the final straw for me with YouTube and Google.
I’ve created this YouTube channel with tutorials about open source 3D CAD programs and never had any intention to monetize the channel. So I definitely don’t want YT to monetize it for me.
My goal has been to inspire people to use open source software instead of proprietary software and judging by the number of views and reactions I’ve been mildly successful with that. I had over 200.000 views with my tutorials and more than 1100 subscribers. Not much for YouTube of course but keep in mind that the channel was about open source 3D CAD. Very much a niche market
I’ve put up with all YouTube’s privacy invading policy and data mining because of the popularity of YouTube. YouTube has a near monopoly when it comes to video sharing and has a huge worldwide audience. So to reach my audience with my video tutorials it made sense to use YouTube.
However where does one draw the line. I’ve created the video tutorials believe it or not with a lot a sweat and blood. And it’s important that I keep sovereignty over these videos. So whether ads will be part of the video is up to me and not YouTube. This leaves me no other alternative than to delete all my videos (except this one).
Luckily I’ve already had found an alternative home for my tutorials. It’s called PeerTube. PeerTube is video sharing software but contrary to YouTube, it is open source. In addition it’s also decentralized and federated.
This means that anyone can create a PeerTube server and host videos. These servers can connect to each other and share the videos between them (federation). As a result there is no single owner of the network. If the server that I joined fails or I don’t like the policy on that server I can either upload my videos to another server or even start my own.
I already have some content on PeerTube and I’ll upload new videos to PeerTube. However it’s unlikely that I’ll upload my older videos to it. I figure that they are less relevant anyway. I’ll put a link in the description to the new home of my videos and I hope to see you there.
I hope to see you on PeerTube and keep using open source software.
It’s more than two years ago that I started using the social network #Movim after a tip from an acquaintance. I had left G+ and never wanted to use a centralized social media platform again. I tried Mastodon and Friendica, Diaspora and Movim but eventually I kept using Movim and Mastodon with my Friendica account as a back-up for Mastodon. The secret of Movim is tranquillity. After logging in for the first time the news stream is empty, much like Diaspora, and it only gets filled with post from people that you follow, communities that you subscribe to and rss feeds. This in combination with an easy to use chat option that gives access to whole #XMPP network makes Movim very powerful.
It’s also incredibly easy to create a community in Movim, although I think community isn’t the most appropriate description here. It’s more a blog from one or more persons where other users can subscribe to, like and comment in a linear fashion.
I recently introduced my wife to Movim and the first thing that surprised her is that, contrary to FB, the news stream contained articles worth reading instead of ads and other bs. She also liked the fact that she could use any XMPP-client for chat. Time will tell if she’ll keep using it but her initial enthusiasm was very encouraging.
Although, I’m pretty psyched about Movim I would like to see some features. First, coming back to the tranquillity, when in the news stream on the right side five posts of other Movim users appear. I suppose that this is meant for discovery and that’s great but in some of the posts I’m less interested but I can’t block or hide these posts.
Also there is no way to block or hide a person entirely. This may become a problem since Movim appears to be becoming more and more popular and with that the interaction between people grows exponentially.
Currently I’m lazily using the European server of Movim but I (or anyone else) can deploy a self-hosted instance and I’m tempted to experiment with that. I’ll probably get back to that.
Finally, I want to thank Timothée Jaussoin and other contributors for developing Movim and making it available to all of us. It’s awesome. And if you read this please consider donating to the Movim project.
I watched the famous speech ‘Freedom in the Cloud’ of Eben Moglen in 2010 at the ISOC-NY. Again if I might add. That speech had a great influence on me. It was the first time that I realised that client-server infrastructure of the internet is a huge problem. This very infrastructure ensured that all the data were aggregated and used (or abused) by the ones that owned the servers. At the same time the clients were being deprived of power. And that with the accumulation of servers in a data centre and he virtualisation of the servers (cloud) these owners were getting even more powerful.
I wasn’t the only one that was influenced by this speech of Eben. It also marked the beginning of the development of Diaspora social network. As it happens some of the initial developers of Diaspora were present at that Friday night at ISOC-NY and it inspired them to build the Diaspora software.
A lot has changed the last eleven years, and I will get to that, but what hasn’t changed is the client-server infrastructure, the source of evil. If anything the power of ones that own the servers like Facebook, Amazon, Google, Apple and even Twitter has increased greatly in the last 10 years. And as a consequence the ones working on the client side have become even more powerless. Snowden (2013) and Cambridge Analytica (2016) are just a few examples that demonstrate that this abuse of the ‘architecture of the catastrophe’ took directions that we couldn’t have envisioned.
On the plus side since 2010 a lot of developments have started to halt this catastrophe. Some were more successful than other but it’s undeniable that if someone is looking for a free (as in freedom) alternative right now a lot more options are available than 10 years ago. Also these options seem to be sustainable and rather successful. The Fediverse with Mastodon, Pleroma, PeerTube, Funkwhale, Pixelfed, Lemmy and others have made great progress since the introduction of the ActivityPub protocol. XMPP has made great progress with the introduction of advanced clients like Conversations, Movim and Gajim.
The Freedombox hasn’t lived up to it’s expectations though. The development of Freedombox was initiated by Eben and allows to set up a simple private server in your home. The last time I checked even Diaspora was not supported by Freedombox making social networking with it impossible. Luckily other initiatives have taken flight such as Yunohost. They make it easy to self-host a server and install software for blog, chat, social networking, online storage and file sharing. Yunohost and others bring the dream of Eben closer of a peer-to-peer network instead of a client-server network.
Another noteworthy development is Scuttlebutt, a client-based peer-to-peer application for encrypted social network. Just install the app on your PC or phone (Manyverse) and communicate directly with others that installed the app.
Or Briar, a client for messaging that uses Bluetooth, WiFi and the Tor network to communicate. The need to host your own server has been replaced by simply installing an app that doesn’t rely on a central server. Even if the internet is down the information keeps flowing over WiFi and Bluetooth.
Although we still live in the catastrophe that Eben spoke about eleven years ago there are more possibilities to escape and it appears that more and more people are discovering this. With every scandal, every update of the term of service a wave of new users appears on the networks that I mentioned above and that’s something to be grateful about but it should also motivate us to keep fighting for a free (as in freedom) internet.
My laptop is a Thinkpad T40 from 2003 with 1GB of RAM and a 30GB HDD (Yes, you can laugh now). I bought it second hand many years ago, it had Windows installed and it was slow as molasses. It was also a time that I got interested in FLOSS. So I looked for a suitable Linux distro and I found Puppy Linux (Slacko and later the TahrPup release). It turned my unusable laptop into a fast and very capable computer. I’ll never forget the amazement when I booted Puppy for the first time and saw how fast it was.
I’m not much of a distro hopper but last year I switched to AntiX because I felt that development of Puppy had slowed down. AntiX does more or less the same as Puppy in that it brings life to an old computer. Both are very lightweight but at this moment I find AntiX definitely more polished with JWM, FluxBox and IceWM as window managers to choose from.
Both Puppy and AntiX contain, as do most of the other Linux Distros, proprietary bits and pieces (e.g drivers and it’s possible to install proprietary programs from the Snap store or PPM) but are mostly FLOSS and are available thanks to many volunteers that dedicate so much of their time to these operating systems. So I think it’s fair to contribute back e.g by donating to the developers that make this possible.
Since I left Google+ and Reddit four years ago I always missed the community approach of both social networks. I’m pretty active on Mastodon, the federated (and better, kinder) version of Twitter. However on Mastodon it’s hard for me to have a structured conversation with a group of people about a single topic. It’s for that reason that lately I’ve spend time on Lemmy.
Lemmy is easiest described as a federated Reddit alternative. This means that with Lemmy members can send text posts, links and images that can be up- or down voted by other members. Lemmy already consists of tens of instances and thousands of communities. Communities (the equivalent of subreddits) are the cornerstones of Lemmy. Popular topics like Linux, open source and privacy already have their own community. If a community doesn’t exist the user can easily create one. Just click Create Community, fill in a form and press Create and you’re done. Every post has to be posted in one of the communities. A huge advantage is that posts don’t get buried by hundreds of other posts in the timeline. As a consequences discussion threads are easy to follow.
The UI of Lemmy is minimalistic but very effective. The user is presented with a list of comments that are ordered by popularity. The comments can easily be filtered e.g to only show the new comments. Via a menu selection all the communities are shown and can be searched. Overall search is very well implemented. I use it a lot to learn about topics of interest to me that were discussed earlier.
Lemmy comes with a built in slur filter which I believe is a very good idea if you want to have civil discussions. Perhaps not everyone does agree with this filter but Lemmy is free and open source software so one can always create his own fork.
I was active on the lemmy.ml instance but I left it because it’s too extreme and there were too many trolls and zealots on that instance. Luckily I found a more moderate instance called Beehaw. It’s smaller that lemmy.ml but that’s not very relevant since the it federates with the other instances of Lemmy. I can still access and subscribe to communities on other instances and take part in discussions there by clicking the All tab. One difference that Beehaw has with other instances is that the downvotes are disabled.
Besides the slur filter mentioned above the Lemmy comes with a Code of Conduct that is enforced by a team of moderators. Again a good idea for the above mentioned civil discussion. It’s worth mentioning that the moderators keep a public Modlog where one can keep track of all the actions taken by the moderators. A gesture of transparency that I haven’t seen on any social platform.
The beauty is that Mastodon and Lemmy (and all other federated social networks) serve different purposes so I don’t have to choose. They can co-exist and enable people to optimize their online social needs all with free and open source software and all federated.
EDIT: This post was rewritten on 17th August of 2021 and again on 3th November 2022 to include my latest experience with Lemmy.
Framasoft the non-profit organisation behind PeerTube (and other free software) has started a fundraiser for version 3 of PeerTube. They published a roadmap accompanied by a progressive fundraiser over a period of 6 month. The current roadmap looks very promising and is divided into four main steps. Each of these steps can be fulfilled if a specific financial target has been reached. New features and improvements are among others: global search through the Fediverse, moderation improvements and features, playlists and finally live streaming.
Global search within PeerTube is a much needed feature to enable the user to find videos that are outside the instance-bubble. The PeerTube instance that I’m using (linuxrocks) only federates with a couple of other instances making it difficult for my videos to be found while I can’t find much when searching for content.
Moderation. An online video sharing platform isn’t without problems like copyright violations or not safe for work material. PeerTube already has some moderation tools like a report tool but more tools certainly won’t hurt and the roadmap show a long list of new moderation tools.
Playlists. e.g allow clips of the same video in a playlist thus making this a remix tool.
Live streaming is already big and according to market research it will grow rapidly in the coming years. For PeerTube to keep up this is therefore a necessary feature.
At the moment of this writing over half of the required amount of funds and two of the four main steps in the roadmap has been reached but Framasoft will surely appreciate more donations to be able to fulfil the complete roadmap. So either contribute financially or at least share the news!
It’s been 1.5 years since Google+ closed and I started dipping my toes into the Fediverse and other distributed social networks. It also kicked off my search to get rid of everything Google. To DeGoogle is easier said than done because Google is everywhere from search to fonts, from the video platform YouTube to the file storage and synchronisation service Google Drive, and from blog publishing service Blogger to the Google mobile operating system Android. And the list goes on. So chances are you’re using a lot of these services and most of them require a Google account, a devious move from Google. It’s for this reason that it’s very hard to get rid of this o so convenient account.
The shattered Google logo (that I made in Inkscape) illustrates that we need to break the power of Google on the web.
To get a more comprehensive view take a look at this article. Below I’ve compiled a list of the most important Google services and products that I replaced with something else.
Search was perhaps the easiest to replace (or is it). While Google search is by far the largest search engine in the world DuckDuckGo (DDG) is becoming increasingly popular. I’ve used DDG to great satisfaction and only had to use Google search a couple of times. The only gripe that I have is that DDG isn’t free and open source software (FLOSS) let alone distributed. In that respect I’ve read some good things about Searx and I may give that a try in the future.
The Chrome browser of Google has become very popular with an estimated market share of approximately 70%. A large portion of the Chrome’s source code is based on Chromium, the open source browser project from Google, however Chrome is proprietary freeware because it contains large blobs of proprietary code. The Spyware Watchdog considers Chrome’s Spyware level extremely high this due to multiple spyware features that are built-in such as Google Account and Navigation Assistance. Another threat comes from the earlier mentioned market share. This gets even worse when we include the other browsers that are based on Chromium such as Microsoft Edge, Opera and Vivaldi. I currently use Firefox. It’s perhaps not the most privacy minded browser around but it’s FLOSS, it has a reasonable market share which is important for support of web developers and development of Firefox is very active.
Next is YouTube which BTW is becoming more and more annoying with all these ads and the recommendations with the sole purpose to keep the user as long as possible on YouTube (and serve even more ads). I invested a lot in YouTube in the past with over 70 video made about 3D CAD, 3D printing and electronics so replacing it is not easy. The solution that I found is two-fold. I remastered (part) of my existing videos and uploaded them to both PeerTube. If I want to watch YouTube videos I use Invidious in the browser of NewPipe on my Smartphone (still Android sadly).
Over the years I got dependant on Google Drive e.g to store the CAD files that I wanted to share after I published a project either in blog or a video. I want readers and viewers to be able to reproduce the project. Since I didn’t want to self-host a solution such as Nextcloud(see edit below), I started looking for a paid service. I currently have a contract with Strato, a German hosting company that also hosts my websites. Strato offers HiDrive, it’s not FLOSS unfortunately but it offers 100% storage in the EU and (paid) end-to-end encryption is possible although only in the HiDrive desktop program for Windows (which is a bummer but I don’t need encryption for this purpose anyway).
Instead of Google maps I started using OpenStreetMap and products based on OpenStreetMap such as OsmAnd (on Android) and Komoot both on Android and the web browser. Komoot is excellent for hiking and cycling but unfortunately it isn’t FLOSS. These alternatives have proven to be good enough for me since I haven’t used Google Maps any more.
I somehow started using Gmail. I don’t know exactly why because I already had very good email services. I also fail to understand why it’s so popular because every other email service does about the same. My own ISP comes with a very good email service and so is the web hosting company that I’m using. To stop using Gmail takes some preparation most importantly to list and notify all the people and organisations that send you email to your Gmail address. Also list all online services that use your Gmail address. Now replace this Gmail address with another email address.
You may want to delete your Gmail completely but it’s possible that it’s linked to your Google account. If this is the case you can either use a different email address for this account or more radical delete your Google account completely. In case you choose the latter remember that lots of Google services are couples to your Google account and can’t be accessed any more. Having said that if you start to purge Google from your life the Google account becomes less and less important with every Google service that you delete. So at a certain point deleting the Google account will be painless.
Although Android is Free and Open Source software most Android phones come with proprietary software and services that prevent users from using the phone the way they seem fit. The easy way to free the software on your phone is to install FDroid. For most users the Google Play Store is the only way to install software on their phone. FDroid is an alternative software store that enables the user to easily install and maintain Free and Open Source software on their Android device. BTW installing FDroid and replacing proprietary apps is what I have done thus far and it’s a good start.
Even better is to replace the Google infested Android with a free version of Android like LineageOS. LineageOS is a FLOSS version of Android that can be used without a Google account and that comes without the proprietary Google apps (and perhaps other junk from the phone manufacturer). Make sure to check if your phone is supported before trying to install in on your phone.
Yes I know, I have Google fonts in my blog. That came with the choice of the WordPress theme and I didn’t realize that at the time. That’s just another example how Google infested the web and how difficult it is to DeGoogle my life but rest assured fonts will be next.
To get Google out of your digital life is hard, very hard. This tells us how much Google is integrated into our lives and probably for the most part without being aware of it. Luckily we still have choice (other than just say goodbye to the web), choice that gives us freedom to use the web without being used. The freedom to control our data and not being exploited.
Edit: As someone on Mastodon pointed out it’s not necessary to self-host NextCloud. Examples of cloud service providers running Nextcloud are Disroot, OwnCube and Operationtulip.com (currently in beta).