-
Looking back at 2024
12/22/2024 at 21:56 • 1 comment... and a bit beyond. 2024 is at its end. Time to have a look back and see what has happened in the project.
End of 2023
Still back at the end of 2023 I added two generators on popular requests.
SkadisBoard, simple version of the IKEA storage system with the same name. There currently are no generators for anything that attaches to the board. Maybe the WallMounted series could grow an option for that.
An "urgent need" in our hacker space was better pizza handling. PizzaShovel does just that. It uses a conveyor belt action that is kinda magical. It sneaks its way under the pizza without it needing to slider over the surface. I had seen this years ago as an industrial handling device that can even pick up a blob of ketchup and place it down just the way it was. Pizza is not quite as challenging but raw dough is not trivial move around either.
Boxes with a mission
First project actually in 2024 was the AirPurifier I did on collaboration with MachineryEnchantress Naomi Wu. It's a simple box with a filter or two and a few PC fans:
It is the first in a long list of boxes with a few features added to turn them into something else - even if they are still very boxy at heart.
A very beautiful example is ojensen5115's CoinBankSafe. It's "just" a box with a hinged lid. But dials and a slit on top make it into a very nice piggy bank. The "lock" is simple but just fine for this purpose. There is a future project to upgrade to a proper combination wheel for someone.
The BrickSorter by fidoriel turns boxes into a set of sieves to sort your favorite building blocks.
A DiceTower has been on my ToDo list for a long time. But there are so many options and possible features: a bowl to catch the dice, a lid so it can be used as a dice container, may be have the catching bowl be detachable to you can toss the dice back in with it, ...
I never could bring myself to just do the simplest possible solution - just a box with a few angled walls within. Thanks to tljuniper for doing just this.
ZBeam by jasondunsmore is meant as a cable channel with a mounting tab. It also offers a U channel option. It is basically the continuation of the LBeam by the very same means.
Storage Solutions
Storing things and especially small objects is the bread and butter of Boxes.py. There are quite a few new options in this area. But a good portion are variants of other generators.
The GridfinityDrillBox is just the normal DrillBox but rehashed for the Gridfinity system. This is something one could probably been able to do before by carefully selecting the sizes and gluing on the the foot pad. With this generator this is much easier. These drills look a bit funny, though...
The BinTray has been around for quite a while. But it is meant to be stationary. pkochubey took the idea and combined it wit the Stackable Edge to get these beautiful and very useful StackableBins.
AlexCPU adjusted it to get it into the WallMounted group as WallStackableBin - allowing it to be hanged on a French cleats or slat wall.
But he was not quite finished with the whole bin idea and created the WallHopper for even more storage space. I wonder if screws really is the best use of this when one could just as well put some candy in.
WallRack is a bit of an odd one as it is not part of the regular WallMounted crowd that supports slat wall and French cleats etc. It instead sports just mounting holes for screws. Still a handy little storage solution that does not quite come with the complexity of the TypeTray configured for wall mounting.
J-Waal's CompartmentBox is a blend of the TypeTray and the CardBox offering a sliding lid over a grid of compartments.
HobbyCase that JGrzybowski did for Hacktoberfest is a very nice storage solution for everything than needs many small pieces that need to stand in an orderly manner - like figurines. The picture below does not quite give it justice. It allows for fixed and removable shelves that can be configure on assembly. The doubled up walls allow shelves on the same height from both sides - without them being just one big piece like a turned up TypeTray.
One could add several different types of shelves in the future. For now you can just use plan rectangles or cut simple boxes with the right dimensions from other box generators.
Gift Boxes
There isn't clear line where utilitarian storage boxes stop and more ornamental boxes start. I'll just draw it here - acknowledging is is an arbitrary line.
A RoundedRegularBox had been on my ToDo list for so long that I thought I had actually already done it. Turned out yes, I do have a file with that name in my local development tree - but it's just a copy of the non-rounded RegularBox. The sample image unfortunately is still missing but is looks basically like the RoundendBox but is shaped like a regular polygon instead of a rectangle.
Please donate a picture if you cut one.
FlexBook is another of ojensen5115's gems. It sports a very neat sliding latch. and the rounded corners give it a refined look.
This isn't gcollic's first appearance in Boxes.py. His SideHingeBox does have a few firsts though. It allows using Cherry MX buttons as spring loaded latches. This would be a weird choice if building custom keyboards wasn't a pretty common past time in many hacker spaces. Not being content with just one innovation he also ships the 3D printed "key cap" as a OpenSCAD script - as text in the drawing.
Framed for being a Box
Frames are also just a box with a big hole on front - more or less. So there are a few of those, too.
PhotoFrame isn't even a box but a set of layers. I would normally argue one might not need a generator for that. But marauder37 does know something I don't: How to make a frame look good by choosing the right dimensions and proportions. So now everyone can.
Most beautiful addition of the year clearly goes to the ShadowBox also by ojensen5115. A "picture" frame for multilayered shadow art made from paper. Sorry, you need to supply the art yourself. Boxes.py only does the surrounding frame.
Another Boxes.py just providing the frame situation is the (LED-) Matrix also by fidoriel. You have to bring your own WS2812b matrix and power supply.
Beyond Boxes
tljuniper's BookHolder is a book stand that can also be used for a laptop or tablet. It supports a ledge on the front to keep the book open - or the laptop from slipping off - although it is not shown below.
FatBallDispenser by mrab is the last addition for the year. Instead of relying on finger joints it marks how to grind, file or sand the edges to the right compound angles. It comes with a cute blue tit as a mascot, too.
Other Changes
Rotzbua has been trying to drag Boxes.py into the current decade for quite a while. Many places were - and some still are - showing that it started as an Python 2 project. He has been doing all kind of chores that are going unnoticed by most users. The more notable change is the introduction of a pre-commit based CI that checks all PRs and commits. Beside a lot of code sanity checking it also generates all boxes with default settings and checks them for changes.
At the same time I moved the build infrastructure to pyproject.toml. There is probably more to be cleaned up there. Luckily the decade still has a few years left...
Workshop on the IGERla in Bamberg
I did a work shop "My own box" in June. Unfortunately there isn't a video recording. But the slides are in the respository.
The first one being an introduction into whether and how to do your own box and the second is a bit older introduction into the API. I actually did a few talks about Boxes.py that got recorded. May be I should collect the links somewhere at some point...
Conclusion
When I started this retrospect I thought the year was pretty quiet and this shouldn't be too long. Looking up right now I is pretty obvious how I could have made this error. While I only wrote a few new box generators several community members have done fantastic work. Not only are their new generators fantastic, a huge number of pull requests were of much higher quality than I was used from previous years.
Don't get me wrong! I am very happy to help a novice wit a great idea to get a new box generator to the point where it can be merged into the main tree. I have basically accepted that some details like generating the thumbnails or adding the example SVG for the test suite is my duty.
But a lot PRs have been very complete and done by very competent developers. They come with lengthy descriptions texts and assembly instructions, great pictures, SVG for the test suite. These put my own additions to shame which are more often than not of the quick and just good enough variety.
With such a vibrant developer community out there I am looking forward to what will 2025 will bring.
-
New Server!
05/13/2024 at 20:25 • 0 commentsAs people surely have noticed the web instance was pretty slow at times. The issue was not really too much load but some weird latency or time out problem. As my hackerspace has setup a new server I asked if they would host Boxes.py. So now a new instance is available at https://boxes.hackerspace-bamberg.de. I added a redirect to the old location so you end up there no matter what. For now this is still in testing. Please report any issues you have here or on the GitHub project. If everything works out fine I will change all the links to the new instance.
Update: Looks like everything is working fine. I switched over the URL in all places I could think of. So the web instance is now officially move to its new home. Please enjoy the much quicker response times!
-
Personal Backlog
03/08/2023 at 23:13 • 1 commentBeing able to put more time into the project have I looked into my local repository and it is full of half finished projects - most of them new "box" generators. I have been working on getting some of them in shape for inclusion. Additionally there where a few needs that popped up that also needed instant addressing. Funny enough a lot of these new generators come in pairs.
So I did a roll holder for the kitchen after the old, 3D printed one broke:
Well, it is mounted to the wall... so a "Wall" variant was needed:
After finishing both I found another 20% finished holder in my working dir. It is more ambitious with 3 layers on each side that allow locking in the axle by rotating the middle layer. No idea why that didn't get finished. May be one day the two above get a fancy sibling...
For another project I need to 3D print a small part (yes, I know, heresy) but the filament didn't come with it's own spool. So, I did a spool that can be separated into two parts using the BayonetBox as a basis:
And as I was at it it was just too easy not the strip it down to a one piece spool (and then add some fancy reinforcements):
One generator I started a long time ago was one for generating Tetris blocks. At the time this wasn't that easy and quite a bit of work. Nowadays this is much easier as we have the polygonWall method that gets a list of lengths and angles and handles the rest. There also is a companion method to create all the side walls from the same list. So the only tricky part was getting the lengths right as we do want the walls to be within the perimeter of the block structure. I am optimistic they fit, but I have not yet cut them out. So if you feel adventurous and "need some Tetris blocks in your life" please donate a few good pictures.Another "thing" that I started long ago and started over with more than once is my Seven Segments feature. The idea is to use a LED stripe on its side and wind it through the seven segments. So you can create a seven segment display without much soldering or special circuit boards and from semi small to quite big. The obvious use case is a seven segment clock. Both of them are still flagged "unstable". But I am not sure if I get to build one any time soon. So if one brave soul is looking an LED stripe fueled clock project let me know.
So far my backlog is all but empty and I still have more ideas. I just started with a wire straightener holding two rows of v-groove ball bearings. I have a cryptic font that is mostly finished with each letter is just a few shapes that are only legible when surrounded by a border. I wanted to create a calendar with them, preferably perpetual or even some clever mechanical one. I saw a cube box at the Fablab of the University of Oulu that is cut directly between pieces without creating gaps. And I have a half working one for arbitrary sizes. I have toyed a bit with flexures and thought about doing a laser cut microscope like the OpenFlexure Microscope although with very different kinematic. And I have a dozen more that are not much more than the first few lines of code and I am not confident enough to publicly admit here. -
Old News and New News
02/17/2023 at 10:43 • 0 commentsIt's been a while since the last proper log entry...
The last few years were not that great for many things - including Boxes.py. But even with things going slow or not moving anywhere for months a lot of changes have piled up over this long time. Also it looks like this year is a lot better and things have actually already picked up speed in December of last year. Not only have I been able to do more but several old and new contributors have shown up and gave the project a very notable boost. To deal with the long backlog of new features and box generators while there is so much new stuff coming in I decide to mix in the old with the new.
Wall Mounted Boxes and Tool Holders
After a brief discussion here in the comments in early 2022 I factored and renamed the SlatWall group to WallMounted. While slat walls are fancy not many people have them. The whole group is only there because a few panels fell into the hands of our hacker space. Now the generators can have different styles of hooks and also work with DIN rails or French Cleats. It is relatively easy to add new ways of hooking the boxes and tool holders to different things. So it you have ideas open a ticket on GitHub - or start a discussion in the comments below.
There are also few new generators in this group:
- SlatWallPinRow allows you to hang stuff on the wall.
- WallStairs allows you to design your own tool holders.
and I recently added a few more sample images.
On the search for the right box generator
Caleb Crome is one of our new and very prolific contributors. One theme of his work is making finding the right box generator easier. He wrote a Gallery page that shows all sample images side by side for a quick overview.
The second, complementary new feature is a search field on the menu page. It shows all matching box generators and matches the English name but also the translated name and short description. This is all done with some - not even too complicated - Java Script magic directly in the browser.
A third feature is not merged yet. It will allow getting or adding QR codes with a link and settings of a generated box. That way it is easier to pass the settings around with a mobile phone or to figure out how to get the drawing from an already laser cut piece.
These new features are not all Caleb has done so far. Prepare to hear more from him as soon as we get into new generators.
-
Server Health Improvements
01/09/2023 at 15:35 • 0 commentsThe last few months complaints about poor performance and an increasing number of 502 errors have been piling up. The later were especially puzzling as it means there is a problem in the communication between the web server and uwsgi instance in the container. While there was some load on the machine everything looked fine at the first glance and there was nothing in the logs that hinted at a bug.
At the same time there were similar complaints for the web2py application that runs on the same machine. Well, actually this thing is a VM that runs on a server of a friend of a friend that does a few other things and is only maintained to the bare necessity. When I put Boxes.py there the question I asked myself was not "How do I host the greatest box generator on the internet?" but "Now that I hacked argparse to produce web pages how can I show this to a few people?"
Over the holidays I had time to look a bit deeper. Turns out the web2py app offers the data with different sorting and filtering and a horde of web crawlers eating it all up. Adding a robots.txt got rid of them and dropped the load from 0.7 to below 0.1. I may loosening this up a bit in the future but for now I just banned bots completely - including from Boxes.py.
Looking at the logs from Boxes.py it was very apparent that there are even more connections coming in. Most of them of course are these nice pop-up images in the menu. While I still didn't have access the the main machine it dawned on me that the Boxes.py instance probably gets throttled down due to too many request. This would create timeouts and though the 502 errors. To fix that I moved all the pictures to the GH (documentation) pages and adjusted the links to point there. As this would be very annoying for people that run Boxes.py locally (me) this change affects the wsgi mode only. Yes, the boxesserver should grow a config file for things like that but I just couldn't be bothered.
So performance has notably improved and I hope you all can now create your boxes without seeing 502 error messages. Looking into the access log it turns out there are quite a lot of you. There are tens of thousands of request per day - even with the pictures moved elsewhere. This is kinda cool but also kinda scary...
-
It's all Fun and Games...
10/23/2020 at 17:29 • 0 comments...until someone makes an insert for Agricola - then it is even more fun ... and even more games:
Kudos to Guillaume Collic who wrote this master piece. I especially like how he made use of already existing code and pieces and combines them with new edges types and new ideas. It re-uses the Divider Tray and regular boxes but combines them with new solutions like cutouts to make gripping the tiles easier. A very neat idea (but a bit difficult to see in the picture) are the sliding dividers in the trays for the wooden pieces. They are prevented from tumbling around by small triangular feet but are otherwise free to move left and right depending on how much space is needed in the compartments.
The two box types holding the tiles clearly deserve to get a generator on their own. Guillaume already has ticket opened to make it easier to re-use complete generators by others. Splitting these boxes out might be a good exercise to create the infrastructure still missing.
If you are on your way to your laser cutter you should probably stick to the default material thickness of 3mm or something close. While not stated in the generator description I have the suspicion that adding too much width with thicker material might end up with an insert that cannot be - well - inserted into the box.
Inserts and organizers for board games is a very welcome new topic in the Boxes.py. I hope at some point we can make this a category in the UI and rescue this gem from the "Misc" section. I have the hope that Guillaume may contribute some more. But may his works also inspires others. The more pieces and features there already are the easier such task becomes.
-
New Boxes For Your Electronics Projects
05/21/2020 at 12:32 • 0 commentsOften just a generic box is just not enough, but you need something that can house the electronics of your project. The ElectronicsBox was the first variant with this in mind. But in the end it is just a box meant to be bolted down and screwed shut:
QuitButton needed something else: A housing with a slanted front to mount a LCDisplay and a few buttons.
As a first stop gap solution (other than just turning a pentagon box on it's side) I implemented Console using the relatively new polygonWall() code that turns a list of lengths and angles into a side wall. The actual win here is that there is a .polygonWalls() method that is rendering all the walls between the sides. The result is still a bit simple, but at least has the right shape:
But as with a lot of other boxes there is a severe lack of lockable doors or hatches. And while non rectangular finger joints are cool they are rather distracting around the front panel.
So here is an improved Console2:
There are a few variants. You can choose with or without removable back wall, with or without removable front panel and the front panel - as seen here - clean and glued or attached with finger joints on the sides.
The panel is held in place by spring loaded tabs:
The two tabs per side and both springs being one single, laser cut piece.
The back wall is hooked in at the bottom and has two flush latches at the top:
The latches are made small enough that they cannot be opened or closed by hand but need a small tool like a screwdriver. This is on purpose to avoid people accidentally sticking their fingers into the electric parts inside. To prevent the latches from opening they have an integral leaf spring and a very small recess that locks them in place when closed. This way they can only be re-opened when pressed in a little bit against the spring.
-
Boxes.py on heise.de
05/20/2020 at 19:48 • 2 commentsHeise.de is the German speaking IT news site. The Heise publishing house also issues the Make magazine. So via the Make news feed this article in German (translated by Google) made it to get global feed at heise.de.
There is nothing in the article regular readers of this project log don't already know about. But getting this level of exposure is quite nice and made my day.
Herzlich Willkommen an alle Heise-Leser!