Instagram filter used: Normal
Blog
-
Comprehensive Uncle TechTip Simulator
Around 1988–1991 there was a weekly computer magazine in the UK called New Computer Express. This period coincided roughly with the time I was a freelance writer in the same field.
For childish reasons now lost to time, a group of us freelancers had a major hate-on for NCE’s advice columnist. Writing under the name Uncle TechTip, this columnist seemed to answer most questions with something like “Hmm, I don’t know anything about _____. Maybe a reader can help?†Almost without fail, he’d have readers write in answers for next week’s issue.
Not realizing that Uncle TT’s economy of response was a sly precursor to crowdsourcing websites, the neophyte journo brigade were incensed by his lack of knowledge. One of us wrote an Uncle TechTip Simulator in BASIC, which I recreate from memory for your enjoyment:
10 CLS 15 PRINT " *** Uncle TechTip Simulator ***" 20 PRINT 25 INPUT "What is your question for Uncle TechTip";a$ 30 PRINT 35 PRINT "Uncle TechTip's Answer: " 40 PRINT 45 PRINT "Hmm, I don't know anything about" 50 PRINT " ";a$;" ..." 55 PRINT "Maybe a reader can help?"
-
Using SI prefixes/multipliers in spreadsheets
Note: I’ve lightly tested this with Microsoft Excel (Windows 10), Excel Online, Google Sheets and LibreOffice Calc. It seems to work. Like all spreadsheet data conversions, please verify before trusting your PhD thesis tables to it …
Asked on the GTALUG mailing list the other week:
Does anybody know how to display and work with SI numbers like 10k or 20M or 40G within LibreOffice?
I came up with the following formula, in this example for data in cell D3:
=IF(LEN(T(D3))=0, D3, CONVERT(VALUE(LEFT(D3, LEN(D3) - 1)), RIGHT(D3, 1) & "m", "m"))which results in:
Input Value 1u 1.00E-06 10u 10.00E-06 100u 100.00E-06 1m 1.00E-03 10m 10.00E-03 100m 100.00E-03 1 1.00E+00 10 10.00E+00 100 100.00E+00 1k 1.00E+03 10k 10.00E+03 100k 100.00E+03 1M 1.00E+06 The right column is displayed in LibreOffice Calc’s newly(ish)-supported engineering notation.
This function works through creative (mis-)use of the
CONVERT()function:- if the argument is a numeric value, pass it through;
- if the argument is a string, return
CONVERT(«numeric part», "«prefix»m", "m"). This is lightlymisusingoverloading the unit conversion function by going via metres, but it saves having a lookup table.
This function doesn’t work with IEC 60027-2 binary prefixes, but they’re silly and I wouldn’t be caught dead using ’em.
-
vase mode
I’m still a sucker for vase mode/spiral contour prints … this one made in OpenSCAD:
Thanks to Andrew at ProtoLab for the loan of the PrintrBot. I’ve got a demo at UofT on Wednesday, and my Reach 3D isn’t exactly portable. Yeah, I should probably get a cheap Monoprice printer to lug around to occasional demos, but I’d need to find a donor …
-
Thingiverse Customizer: a tiny guide
Thingiverse‘s Customizer allows users to customize suitable OpenSCAD models without knowing any OpenSCAD code. While it does have some documentation to help developers along, there’s still a lot of guesswork.
I released my first (working!) Customizer design the other week: Parametric Finger Pen Holder (Vertical). While the docs are the primary source of developer information, you might want to know the following:- Customizer assumes that every variable defined before the first module definition in the script is a user parameter. To give it a hint that it should stop displaying variables, add an empty module (such as module naff() { }) after the last variable definition you want Customizer to display.
(There’s supposed to be a CUSTOMIZER VARIABLES/CUSTOMIZER VARIABLES END comment pair that will do this too, but it didn’t work for me) - Customizer will fail if there’s any character other than strict ASCII in the script, and won’t give useful diagnostics about the problem. Check your comments for accents and fancy punctuation
- Customizer displays a real-time preview of your model. This means the rendering will be a little rough, especially if you use set operations such as union(), difference() and intersection(). If you have to hit F6 to render your model in OpenSCAD properly, it’s going to look a bit off in Customizer
- If you must use resource-intensive functions such as hull() and minkowski(), try to limit them to 2D paths that are subsequently extruded. Everyone else in the Customizer job queue will thank you
- Similarly, keep the circle smoothness variables ($fa, $fn, $fs) in sensible ranges
- Customizer creates a new Thing under your name rather than just letting you download your customized model. You likely want to delete that once you’re finished with it.
(This also means that Customizer only works for registered Thingiverse users. I can’t see any way around this, unfortunately)
- Customizer assumes that every variable defined before the first module definition in the script is a user parameter. To give it a hint that it should stop displaying variables, add an empty module (such as module naff() { }) after the last variable definition you want Customizer to display.




























