Jeff Epler's blog

17 February 2018, 17:31 UTC

Watch Repairs

My friend, "Time Guy" Chris Radek has gotten back into the watch repair business! He writes:

After a 15-year break, I'm now accepting repair work again!

I do everything from routine cleaning and oiling (full disassembly and inspection, multi-stage ultrasonic cleaning, reassembly and correct oiling using appropriate modern synthetic oils, timing and adjustment as necessary) of automatic and manual-wind wrist and pocket watches to manufacture of unavailable parts for chronographs or repeaters.

I specialize in Accutron tuning fork watches and I have a large stock of parts and many years of experience working on them.

Please contact me and tell me how I can help you. If you are a collector I've previously worked for, I'd especially like to hear from you.

His work winding new coils for Accutron watches is particularly exciting; he tells me he's heard of just one other person doing this in the last 20 years. These particular watch parts are otherwise irreplacable.


10 February 2018, 2:58 UTC

Finding all numbers produced by short, digitless 'GNU dc' programs

Stream of consciousness updates: More bugs in my search program, found and excised. More, shorter numbers. Maybe all 10-character programs.

A few years ago, possibly in 2014, I saw this code golf problem, which invites you write a short program that prints "2014"—the caveat being, the program may not contain any digits in its source code.

read more…

2 January 2018, 19:48 UTC

Four years of Prius (2013) fuel efficiency

Year Miles MPG Gal
2014 7546.8 44.4 170
2015 7333.6 43.9 167
2016 9368.8 44.8 209
2017 9936.2 45.1 220

Fuel economy and total mileage both went up in 2017 compared to earlier years. However, due to taking more road trips total fuel usage went up.

This year had my best mileage on a single nontrivial trip, shown as 99.9 MPG on 58.5 miles. This drive included significant downhill portions (descending from 12,000 feet to 6000 feet, if I recall correctly).


6 August 2017, 2:26 UTC

poc: Python OCE Composer

poc is a tool in the vein of OpenSCAD for creating 3D models in a high level language with a minimum of boilerplate. It's now live at github, though I don't know how actively I'll deveop or maintain it yet.

Here you can see that the input format is fairly terse, and it has some abilities OpenSCAD doesn't, like selectively filleting certain edges:

with Difference():
    Box((-50,-50,-50), (50,50,50))
    Cylinder((-100,0,0), (100,0,0), 25)
    Cylinder((0,-100,0), (0,100,0), 25)
    Cylinder((0,0,-100), (0,0,100), 25)
Fillet(12, [e for e in Edges() if e.boundingBox().min.z > 0])


1 August 2017, 0:48 UTC

occmodel as Python alternative to openscad

I like openscad a lot, but I'm still on the lookout for alternatives.

Recently I ran across occmodel. Its biggest prerequisite, OpenCASCADE, is packaged in Debian Stretch as "liboce"; the rest are fairly lightweight (though compiled) extensions.

So I gave it a try for a small piece, little extension legs for a dish drainer. I plan to add two leg extensions to the antisinkward legs of the dish drainer, to improve its draining behavior. So one key feature is that the captured leg will end up being at an angle to the counter.

My python program has a few "configurables" near the top, inner and outer diameters, heights, and the distance between the legs. From this, I do some basic operations (difference of two cylinders, rotation of that intermediate solid to represent the required angle, then intersection between it and a large cube that represents the half-space 'above the countertop'. Then, just to show I can do something openscad can't do trivially, I fillet every edge by 1mm.

from __future__ import division
from math import *
from geotools import *
from tostl import occ_to_stl # a little homebrew module
import os


dist = 12*IN
dia = .7*IN
od = dia + .25*IN
elevation = 1*IN
engagement = 1*IN

angle = atan2(elevation, dist)

outer = Solid().createCylinder((0,0,-elevation), (0,0,elevation+engagement),od/2)
inner = Solid().createCylinder((0,0,elevation), (0,0,100),dia/2)
outer.rotate(angle, (1,0,0))
b = Solid().createBox((-100,-100,0), (100,100, 100))
with open("", "wb") as f: occ_to_stl(outer, f)
os.rename("", "drainboots.stl")

(I couldn't get a screenshot that did the part much justice)

What is the gap between here and a real OpenSCAD alternative?

First, I'm not confident of the robustness of liboce; I saw some segfaults and since they were dependent on specific numbers in the geometry I am tempted to assign blame there and not to the occmodel wrapper. (not that OpenSCAD is beyond reproach here)

Second, it needs an integrated environment like OpenSCAD has. Maybe one of the python "notebook" interfaces would be suitable for this.

Third, it needs less boilerplate.

Fourth, it needs broad buy-in by users of sites like thingiverse, because OpenSCAD has massive momentum behind it.


12 July 2017, 14:34 UTC

MP Select Mini: Heated Bed Repair

With some help from Chris and some Things from Thingiverse, my bed wiring is repaired and now runs in a cable chain instead of tightly flexing against a cable tie. Let's hope this version holds up!


6 June 2017, 11:54 UTC

My internet usage would fit on six 33.6kb/s modems on average

.. and only a handful of days in the last year would have come close to saturating a T1 at its nominal 1.544Mb/s. Still, that's a total of around 800GB/year downloaded. Something big would have to change before I could switch to metered cellular data; the upload and download taken together would cost about $1000 a month with my current cellphone provider.


18 May 2017, 0:16 UTC

Monoprice Select 3D Printer Review (part 4)

Now the hardware problems have started in earnest. :(

I estimate I've made between 200 and 300 individual prints, though I stopped tracking at around 200.

The first hardware failure was in the hotend side quick connect fitting for the bowden tube—the tubing itself would pop out midway through a printing job, and that would consistently ruin prints I bought a set of 5 replacements from the internet, and that fixed that.

The second hardware failure is more severe, because to resolve it I'll have to work with wiring: the bed has stopped heating in some Y-positions. I had not made any of the hardware mods that are supposed to improve the durability of these under-table moving wires.

An inspection turned up that one of the large-gage wires is almost totally cut through by the cable tie under the bed, which sure explains the failure to heat.

For now I'll just write off the ability to print in ABS and PETG, and stick to PLA, and wait to see what fails next. If I get suitably motivated, I might try to fix the heated bed. I'm not thrilled with the idea of junking it, because the obvious replacement would be the MPSM v2, but my friend Sam has already had the bed thermistor fail on his v2 after less than two weeks.


19 March 2017, 20:16 UTC

Time Reversed Cosmology

19 November 2016, 19:08 UTC

Monoprice Select Mini 3D Printer Review

16 November 2016, 2:04 UTC

Monoprice Select Mini, sight unseen

All older entries
Website Copyright © 2004-2018 Jeff Epler