site  contact  subhomenews

SolveSpace extrude limitation

February 13, 2025 — BarryK

I posted about examining script-based 3D CAD apps, then returing to SolveSpace:

previously, I have only done wire-constructions, both 2D and 3D; now learning how to do extrusions, so as to get a proper-looking 3D object. I designed the upper-swing-arm of my trike, using knowledge from the SolveSpace getting-started tutorial here:

https://solvespace.com/bracket.pl

It was OK, designed the swing arm and exported a PNG image:

img1

Nice, but there is a problem. Notice the ends of the swing-arm; sharp corners. I was unable to get rounded corners. The extrude feature does not support it. The holes were created by punching-through circles, and I thought that the same technique could be used on the corners. But no-go. I tried triangles and arcs, but it seems that the punch-through only works for circles.

I came across some discussion; the developers are aware of this limitiation, and there is a hint that SolveSpace v4 might tackle it.

It's not a deal-breaker. For anyone interested, the SolveSpace file is here.    

Tags: linux

Scripted 3D CAD applications for Linux

February 12, 2025 — BarryK

EasyOS has SolveSpace builtin, that I have been using for years. It is very powerful, and relatively easy to use; however, recently I have been wondering about the script-based CAD apps.

Reason is, the precision of defining a 3D design in code, appeals, as opposed to sketching on a GUI work surface. Basically, you write code in an editor, click on a "Render" button and another window shows the generated 3D image.

Started off looking at OpenSCAD, then some others, such as PyMADCAD and ZenCAD. But then started to wonder about limitations. In a forum, someone who was using OpenSCAD, asked, how to measure the distance between two arbitrary points on the rendered 3D image? He commented that he often needs to be able to do that, and I thought, me too. But you can't; that is going "backwards". The 3D image is just a render, and seems that none of the script-based 3D CAD apps support measuring distance between arbitrary points?

This page has links to lots of script-based CAD apps:

https://www.reddit.com/r/openscad/comments/135dllm/better_openscad/

That is not a complete list. For example PyMADCAD:

https://github.com/jimy-byerley/pymadcad

There are so many to investigate, it just goes on and on. But for me, wanting to be able to experiment with adjusting linkages directly on the 3D image in the custom trike project, SolveSpace does it beautifully. So, I've been working through some SolveSpace tutorials, learning more how to use it.

SolveSpace homepage:

https://solvespace.com/index.pl    

...there are tutorials, here are more:

https://www.farwire.net/SolveSpace-LearningGuide.htm

https://www.youtube.com/watch?v=dHnVAw7fCPg

https://www.youtube.com/watch?v=IlY1YFid8HA

...there are heaps more on YouTube.

So despite the title, I am back on SolveSpace. It was an entertaining diversion for awhile, and I might even look at a couple more.      

Tags: linux

The Zig language

October 21, 2024 — BarryK

Back in 2022 when I was looking around for alternatives to BaCon, did briefly look at Zig, but decided on Nim. Here are introductions to BaCon and Nim:

"The BaCon programming language"
https://easyos.org/dev/bacon/index.html

"The Nim language"
https://easyos.org/dev/nim/index.html

Last couple of days, took another look at Zig; it has grown enormously in popularity since 2022. Why?...

Zig is a relativitely young language, started by Andrew Kelley in 2015. It is a complete compiler, generating binary executables, unlike BaCon and Nim that generate C code and then require a C compiler such as gcc to generate the binaries. I've been "kicking the tyres" of Zig...

I compiled the traditional "Hello World" CLI program, and it is only 3KB. Furthermore, that binary is statically-linked. First impression, that is incredible.

But it gets better; out of the box, the Zig compiler cross-compiles. You can choose any target you want, x86_64 or aarch64 for example. Furthermore, you can specify specific CPUs. I specified the Intel "nocona" CPU for my "Hello World".

Right off, I see why this will appeal to people who code for embedded systems.

The Wikipedia has an overview:

https://en.wikipedia.org/wiki/Zig_(programming_language)

The Zig website:

https://ziglang.org/

img1

There are some great getting-started websites:

"Introduction to Zig"
https://pedropark99.github.io/zig-book/
...online, also available as an ebook or printed.

"Zig Guide"
https://zig.guide/

"Getting started with the Zig programming labguage"
https://blog.logrocket.com/getting-started-zig-programming-language/

I have a particular like for associative arrays, and yes, Zig has them in the standard-library; they are called "hash tables". I also want the language to support regular expressions; it seems need an external library for that.

I have a need to create small statically-linked binaries, for use in the initrd. But they are useful anywhere, as no reliance on glibc or any libc library. Developers will have encountered this problem, when linked against a particular version of glibc, the binary won't work with a different version of glibc. Yes, you can statically-link with glibc when compiling, but the binary is enormous. So, I have used musl. Up until now.

Another thing I like is to write little programs with GUI, that is, Graphical User Interface. Most commonly I do this with shell scripting and one of the GUI tools, such as gtkdialog, xdialog and xmessage. BaCon and Nim also have GUI toolkits; I have used HUG with BaCon.

What about GUI toolkits for Zig? There is a website with links to all-things-Zig:

"Awesome Zig"
https://github.com/zigcc/awesome-zig

I like the look of "capy":

https://capy-ui.org/

https://github.com/capy-ui/capy

img2

Here is another GUI toolkit, not in the Awesome-Zig list:

https://github.com/desttinghim/zig-libui-ng

...awhile back, in 2022, did look at the Nim binding for libui-ng and liked its simplicity.

Finally, some Zig reviews:

From the perspective of a Rust programmer:
https://blog.lohr.dev/after-a-day-of-programming-in-zig

This looks like a sales-pitch:
https://leaddev.com/tech/why-zig-one-hottest-programming-languages-learn

From the perspective of a Go programmer:
https://medium.com/@vladimirvivien/things-i-like-about-zig-as-a-go-programmer-75eb02aab00f

Looks good. The intention is that once Easy Daedalus 6.4 is released, will take some time out from Easy development and play with Zig. As an exercise, might rewrite 'debdb2pupdb' in Zig, see how it compares with the Nim code.

EDIT:
Here is another Zig tutorial, very recent:

"Programming with Zig: from basics to mastery"
https://gencmurat.com/en/pages/programming-with-zig/
   

Tags: linux

BookwormDog build script

September 23, 2024 — BarryK

A very great thing about the Puppy Linux Forum is that it has been the home to incredible creativity. There are many derivatives of Puppy Linux, including the *Dog distributions. I use the word "derivative" rather loosely; The *Dog distros are really Debian or Ubuntu or Devuan distributions made to look like Puppy Linux. Which they do very well.

I want to checkout the latest offerings on the Puppy Forum. Apart from the *Dog distros, there are others including FatDog (nothing to do with the *Dogs; a different pedigree), the KL* distros, VanillaDpup. etc.

Starting with DebianDog, there is a build script for Bookworm:

https://forum.puppylinux.com/viewtopic.php?t=5069

I ran the script:

# ./mklive-bookworm -gui

A huge selection to choose from:

img1

...I chose the Jwm minimal. Next-up, ticked some checkboxes:

img5

First error:

img6

...however, the script did download the deboostrap deb and I was able to install it. Had to run the script again from the start. Then it put up another message that package dpkg is missing. I installed that from PKGget, and it required starting the script from start again.

A few more windows came up, all good, and packages got downloaded. I did see some errors flash by on the terminal:

Preparing to unpack debootstrap_1.0.134_all.deb ...
Unpacking debootstrap (1.0.134) ...
dpkg: dependency problems prevent configuration of debootstrap:
debootstrap depends on wget; however:
Package wget is not installed.

dpkg: error processing package debootstrap (--install):
dependency problems - leaving unconfigured
Errors were encountered while processing:
debootstrap
Setting up debootstrap in bookworm/chroot

...note, wget is installed. Another error:

Reading package lists... Done         
W: GPG error: http://dl.google.com/linux/chrome/deb stable InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY E88979FB9B30ACF2
E: The repository 'http://dl.google.com/linux/chrome/deb stable InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
Hit:1 http://deb.debian.org/debian bookworm InRelease
Hit:2 http://security.debian.org bookworm-security InRelease
Hit:3 http://deb.debian.org/debian bookworm-updates InRelease
Hit:4 http://deb.debian.org/debian bookworm-proposed-updates InRelease
Get:6 http://dl.google.com/linux/chrome/deb stable InRelease [1825 B]
Get:5 https://github.com/doglinux/book-worm/raw/master/amd64 ./ InRelease [2304 B]
Err:6 http://dl.google.com/linux/chrome/deb stable InRelease
The following signatures couldn't be verified because the public key is not available: NO_PUBKEY E88979FB9B30ACF2
Reading package lists... Done
W: GPG error: http://dl.google.com/linux/chrome/deb stable InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY E88979FB9B30ACF2
E: The repository 'http://dl.google.com/linux/chrome/deb stable InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

The script asked a question about squashfs compression and I chose "xz":

Now we will create compressed kernel: k-6.1.0-25-amd64.squashfs and filesystem: '01-filesystem.squashfs'
Please enter your choice, xz compression will give smaller size than gzip,
but xz takes much longer time to compress
Type gzip or xz :

This is where things went wrong, or so it seems. Lots of error messages flashed by, captured some of them:

[===/    ]   690/21205   3%Failed to read file chroot/proc/irq/6/node, creating empty file
[===/ ] 690/21205 3%Failed to read file chroot/proc/irq/6/smp_affinity, creating empty file
[===/ ] 690/21205 3%Failed to read file chroot/proc/irq/6/smp_affinity_list, creating empty file
[===/ ] 690/21205 3%Failed to read file chroot/proc/irq/6/spurious, creating empty file
[===/ ] 690/21205 3%Failed to read file chroot/proc/irq/7/affinity_hint, creating empty file
[===/ ] 690/21205 3%Failed to read file chroot/proc/irq/7/effective_affinity, creating empty file
[===/ ] 690/21205 3%Failed to read file chroot/proc/irq/7/effective_affinity_list, creating empty file
[===/ ] 690/21205 3%Failed to read file chroot/proc/irq/7/node, creating empty file
[===/ ] 690/21205 3%Failed to read file chroot/proc/irq/7/smp_affinity, creating empty file
[===/ ] 690/21205 3%Failed to read file chroot/proc/irq/7/smp_affinity_list, creating empty file
[===/ ] 690/21205 3%Failed to read file chroot/proc/irq/7/spurious, creating empty file

Then it seemed to be stopped, though the hard drive remained very busy. After about 15 minutes, I typed CTRL-C to quit:

[===/    ]   690/21205   3%Failed to read file chroot/proc/keys, creating empty file
[===| ] 690/21205 3%^CUnmounting mount binds in chroot
#

Should I have waited longer? I will ask on the forum.

EDIT:
Forum member fredx181, the creator of the BookwormDog build script, has fixed it for EasyOS:

https://forum.puppylinux.com/viewtopic.php?p=131626#p131626

That's great!     

Tags: linux

Doubts about Linux rolling releases

September 20, 2023 — BarryK

I have stayed away from rolling releases as I consider them to be inherently unstable, or prone to unexpected side-effects. However, have ventured into playing with Void Linux, see post a couple of days ago:

https://bkhome.org/news/202309/first-experiment-creating-a-void-rootfs.html

I even built "easyVoid"; EasyOS built from Void packages, and it works, with some issues. Installed LibreOffice from the Void package repository; works. However, installed Shotcut video editor, and at startup there was a popup window informing that "libjack0" package is missing.

Well, the version of libjack that it wants isn't in the repository. I had to get it from the Debian repo. Then Shotcut worked.

This has reminded me why I don't like rolling releases. Dependency management has to be very rigorous to work properly in a rolling release, and I have just got an indication that it isn't up to scratch in Void Linux. Unless I hit one very rare example.

But other, very serious, problems can occur, that versioned releases avoid. For example, a couple of years ago there was a version bump of the 'pango' package that caused many applications to misbehave. The misbehaviour might only get noticed sometime later, when users complain. A versioned Linux release might not eliminate that particular problem, but will greatly reduce its likelihood of occurrence or the severity.   

Tags: linux

Apps running as spot extra secure in Puppy

March 27, 2023 — BarryK

I watch what Dima (dimkr in the forum) is doing on woof-CE with great interest. In particular, the steps that he has implemented to enhance security for applications running as user 'spot'.

See his summary here:

https://forum.puppylinux.com/viewtopic.php?p=70405#p70405   

Tags: linux

Puppy Linux S15Pup 64- and 32-bit 22.12 released

December 12, 2022 — BarryK

It is over two years since the last official release of Puppy was announced on Distrowatch. There have been plenty of releases since then, and derivatives; however, none has been presented to Distrowatch as the latest "official" Puppy.

There has been lengthy discussion about what will be the next official pup, and finally, peebee's S15Pup was chosen. The discussion thread is here:

https://forum.puppylinux.com/viewtopic.php?t=7204

Here is the announcement on Distrowatch:

https://distrowatch.com/?newsid=11706

Announcement thread, also for feedback:

https://forum.puppylinux.com/viewtopic.php?t=7464

Snapshot:

img1

Feedback is very positive!   

Tags: linux