Open letter to SUTD OCIF regarding ozone-generating air cleaner

Here I reproduce my email to SUTD OCIF regarding an ozone-generating air cleaner that has been deployed in my office space. Such devices are marketed base on pseudoscientific claims, which I am committed to combating.

More to come on this.

Hi Yoke Long,

We spoke in-person yesterday about my concerns with the use of an ozone-generating “air cleaning” device (henceforth, “the device”) in a human-occupied office space (Room 1.417). Thank you for being receptive to my comments and agreeing to review additional technical evidence with regards to the safety and efficacy of such deployment of said device.

Here, I briefly restate some key points from our conversation yesterday, as I understand them. The device is marketed as an “air+surface sterilizer” by The Medklinn Group of Companies (henceforth, “the manufacturer”). Specifically, the device in question has model number PRO AS40P. SUTD OCIF has procured and deployed the device in Room 1.417 as part of its strategy to improve indoors air quality (IAQ) in said room — particularly by lowering the elevated formaldehyde levels.

My concern about the deployment of the device is twofold. First, that the device is of questionable efficacy at reducing concentrations of airborne formaldehyde. Second, that the device causes unintended adverse effects injurious to the health of the room’s occupants. I expound on these concerns below.


A useful literature review about the efficacy and safety of ozone-generating air cleaners has been published by the United States Environmental Protection Agency (EPA), with the conclusion that such devices are less effective and carry a higher risk of adverse effects than commonly perceived. This report may be accessed at this link.


In the marketing and technical material accessible by the public from its website, the manufacturer does not provide substantiated evidence for the efficacy of the device in reducing formaldehyde concentrations in indoors air. In fact, the efficacy of ozone-generating air-purifying devices at reducing formaldehyde concentrations have been called into question by (Esswein and Boeniger, 2011). Until and unless the manufacturer is able to provide evidence to the contrary, we must assume that currently available scientific evidence pointing to inefficacy applies to the device.

If the device is less effective at reducing formaldehyde than previously thought, its deployment in Room 1.417 may result in a sense of complacency and failure to pursue alternative formaldehyde-reducing measures aggressively, resulting in unnecessarily prolonged exposure of the room’s occupants to elevated formaldehyde levels.


According to the manufacturer’s website, the device simultaneously generates ozone gas and negative oxygen ions. Ozone is an air pollutant that has been reported to cause respiratory irritation after short-term exposure to relatively low concentrations (0.1-0.2 ppm range), resulting in reduced forced expiratory volume (FEV) and symptoms such as cough and shortness of breath. Effects of long-term exposure are poorly understood and represents an unknown risk. (Lippmann, 1989) provides a review of the literature on the health effects of ozone exposure. It is important to note that adverse health effects were observed at ozone concentrations only slightly above recommended exposure limits.

According to a document published on the manufacturer’s website, the particular device model (PRO AS40P) deployed in Room 1.417 generates 130 mg of ozone per hour and is recommended for use in rooms with 73 square meters of floor area and a 3 m ceiling height. When used according to these manufacturer recommendations, the average concentration of ozone in the room attributable to the device (excluding baseline ozone levels), can be roughly estimated using a conservation-of-mass procedure by considering the ozone-generation rate of the device, the air volume of the room, and the rate of ventilation in terms of room air changes per hour. For reference, the acceptable limit for ozone in indoors air according to the Singapore Standard Code of Practice for Indoor Air Quality for Air-Conditioned Buildings (SS 554:2009), the acceptable limit of ozone is 0.1 ppm. According to the aforementioned recommended use parameters published on the manufacturer’s website, a minimum of 13.5 room air changes per hour is needed to achieve ozone levels below the acceptable limit when the device is turned on. I am doubtful that Room 1.417 achieves such a high rate of air exchange on a continuous basis. In addition, it is important to note that these values correspond to average concentration levels over the entire room, and that the specific pattern of air flow in any given room may result in regions of locally elevated ozone concentration (and corresponding regions of locally depressed ozone concentrations).

In addition to the direct health effects of ozone, recent research has suggested that elevated ozone levels can indirectly worsen IAQ by reacting with other species in the room and generating volatile organic compounds (VOCs) and other oxidation products known to be pollutants (including formaldehyde). This indirect risk is specifically highlighted in SS 554:2009.

In light of the above, I call upon OCIF to review the scientific evidence presented and take steps to quantify the efficacy and safety of the use of the device in Room 1.417 specifically, and as a tool to improve IAQ at SUTD in general. In particular, I recommend OCIF begin monitoring ozone levels alongside formaldehyde levels in Room 1.417 and cease operation of the device until its safety and efficacy has been substantiated.

As I consider this a matter of public interest, and in keeping with principles of openness and transparency, this letter is reproduced verbatim on my personal website and should be considered an open letter.

I am happy to extend any assistance necessary to OCIF as it moves to address this issue. After all, I, as an occupant of Room 1.417, have skin in the game.

You may reach me at this email address, or via telephone at [contact details redacted]

Thank you.

Best regards,

Shien Yang Lee
MIT-SUTD Dual Masters’ Student
Singapore University of Technology and Design (SUTD)
[contact details redacted]

Handcrafted ‘Saya’ Knife Sheath

I had some beech leftover from building the precision standing desk for class and some free time over Memorial Day weekend, so I decided to make a sheath, or saya as it is supposedly known in Japanese, for one of my kitchen knives. The intention was to have a relaxing Saturday taking a break from ‘work’ instead of making the piece in the most efficient manner, so I restricted my power tool use to the initial resawing — all subsequent operations were done using hand tools only.

Stock preparation

Resawed pieces

I picked out an approximately 3″-wide length of 4/4 beech stock I had leftover for this project. It came from a board that had previously been surfaced, so it ended up about 3/4″-thick. To get a nice slip-matched finish between the two halves of the saya, I started by resawing the board into two thinner pieces. I had read a few articles and watched a few saya-making videos that said the ideal saya should be asymmetrical, with most of the blade being inlaid into one half. The sources I came across prescribed this as a matter of tradition, but it makes a lot of sense mechanically too: by burying the sharp edge of the knife in the solid wood of one half, you dramatically reduce the stress placed on the glue joint by the knife trying to wedge it open. To achieve this effect, I split my piece asymmetrically, with the thinner piece about 1/4″-thick.

Jointed flat with a plane

The next step was to joint the sawn faces flat so they can be glued together down the line. I used a jointer plane instead of the power jointer for this operation. Given the luxury of time, nicely tuned hand tools really are some of the great pleasures of woodworking. The result: beautifully smooth and flat faces without having to worry about washboarding or snipe.

Blade fitting

Tang relief cut

Next, I clamped the two halves together and cut a relief into one corner to accommodate the knife handle and put the blade further into the wood. This is both an aesthetic feature and to provide more wood behind the heel of the blade so that I have room to drill a hole for a retaining dowel if I so choose (I still haven’t decided)

Laying out the slot

Once the handle relief is cut, it is time to mark off the outline of the blade. I left some additional clearance around the tip of the blade here to protect the often quite fragile tips on these Japanese knives with acute grinds and super hard steel. My plan was to have the saya lightly grip the blade near the spine above the heel, and to make contact with the edge at the relatively thick and strong heel region.

Carving the slot

After cutting the blanks to length (turns out I have enough for another saya for my petty knife!), I spent a relaxing hour or so carving the slot for the blade. This part wasn’t as easy as I had hoped for. Beech, for all its excellent machining qualities, is really quite hard and a bit slow to work with hand tools. However, it was incredibly enjoyable to do it by hand (and quite possibly faster, too) instead of measuring the knife and programming a job on a CNC router.

Slot carved on one half

You can see in the image above that most of the blade is buried in this half, with only the rear half of the spine slightly proud, to be accommodated in the mating piece.

Mating halves

The image above shows how most of the insetting happens on one half, with only a little relief towards the rear end of the spine on the mating piece. It is also pretty obvious I badly need to work getting better at holding clean corners with a chisel. I roughed out the exterior outline on one piece before gluing them together, so that I would have a reference for contouring the outside surfaces without having to worry about cutting through into the cavity.

Glue-up and contouring

Ready for contouring

After a quick glue-up, I started to work on the exterior of the saya. I wanted it to mirror the geometry of the blade, so I worked in a tapered section and a prominent ridge marking the transition to the flat section further up the blade. This ridge is intended as a reference to the shinogi on the actual blade.

Exterior contour roughed in

A rabbet plane (a plane that can cut right up to a shoulder) made quick work of those tapered sections, and a selection of cute finger planes took care of the rest. A quick progression through a few grits of sandpaper took  the surface to a respectable quality and I left it at that for now.

The slot turned out better than I had hoped and the blade sits snugly in the saya. Right now it is secure enough to not fall out even if I hold on to the sheath and shake it around. That being said, the wood is probably going to move a little over time, so I am glad I still have the option of drilling a hole for a retaining pin to keep the blade in the sheath. But for now, I am going to leave it be — I just love the clean, minimalist lines and want to keep it that way.

Closing the Loop: Actuator Load Capacity

The final component in my design loop-closing exercise concerns the load lifting capacity of my desk. My previous torque and power analysis had suggested that I would be able to lift the desktop with 20 kg of live load placed on top, and be able to comfortably do so at a rate of 150 mm/min without running out of power (using a 12 V, 1 A wall wart). However, in my testing, I had found that I could only lift up to 12 kg of live load before stalling the motors. This stalling behavior persisted even when I reduced the speed and tried out a power supply capable of supplying up to 5 A at 12 V, suggesting that the system is torque-limited rather than current-limited.

High-uncertainty parameters

Even though a desk that is capable of lifting 12 kg is perfectly usable, I sought to understand which part of my modelling went wrong so I can explain this discrepancy and learn from it for future designs. I am fairly certain I have the correct model form, so the error is likely to be in parameters that I have estimated. After reviewing my detailed engineering spreadsheet, I homed in on two high-uncertainty parameters that I thought could account for this discrepancy:

  • Coefficient of friction between leadscrew and leadnut
  • Coefficient of friction between teflon slider pads and interior surfaces of the boxway

These numbers were estimated from typical values from datasheets and other resources on the Internet, as I did not have time to carry out bench-level tests to accurately determine these coefficients. I am interested to determine how far off my initial estimates had to be in order to provide the observed performance.

Single-parameter sweeping

I had recently learned to use the Solver tool in Microsoft Excel (in a Sloan class) to run quick optimization routines, and decided to put this newly acquired skill to use here. Adding on to my detailed engineering spreadsheet (download here), I ran three scenarios to determine the effect of estimation errors of each parameter on desk performance.

I duplicated the underlying model relating input parameters to the key output variable — total life load lifting capacity and placed them into new worksheets. For the single-parameter variation scenarios, I set the coefficient of interest (either leadnut or slider pads) as a variable and ran a non-linear optimization program to drive lifting capacity to the observed value (12 kg live load = 118 N, 45 N dead load, 162 N total). In these two scenarios, I held the other coefficient of friction constant. These scenarios are in the “ls-friction-sweep” and “slider-friction-sweep” sheets in the spreadsheet. My optimization models indicate that, all else being constant, the desk would perform as observed if:

  • leadscrew coefficient of friction = 0.43 (initial estimate = 0.25); OR,
  • slider pad coefficient of friction = 0.54 (initial estimate = 0.2).

Both of these values are rather high — much higher than I expect them to be and out of the typical ranges reported by most sources. This analysis suggests that it is unlikely that I was wrong on only one of these parameters — I would have to be too far off to produce observe results. It is more likely that I was wrong on both of the parameters, but to lesser degrees in each one.

“Minimum-deviation” parameter sweep

Operating under the assumption that I was “equally wrong” on each parameter (i.e., spreading my total error evenly across the two parameters), I ran a scenario to arrive at the observed lifting capacity while driving the sum of squared adjustments to the two parameters to a minimum. Under these constraints, I found that the following parameter values would produce observed performance:

  • leadscrew coefficient of friction = 0.37 (initial estimate = 0.25); AND,
  • slider pad coefficient of friction = 0.28 (initial estimate = 0.2)

These values are much more plausible. It is important to note that this analysis by no means produces the actual realized parameter values. It is just an indirect form of a sensitivity analysis to show whether it is reasonable for me to observe the lifting capacity I did despite being “in the ballpark” with my estimated parameters.

Conclusion and lessons learnt

I think the clear conclusion here is that I did not have a sufficiently large design factor of safety built into my system to accommodate the high uncertainty in input parameters. While working on a project for another course (analyzing how safety factors can be used to compensate for uncertainty in material properties), I came to realize the importance of matching the degree of conservatism to the level of a priori knowledge one has about the system. More uncertainty required more conservatism to give acceptable probabilities of success.

A second lesson I learned is that simple “sensitivity analyses” like these optimization routines, or even more elaborate ones that are easy to write in MATLAB or other similar environments, are useful tools to have early in the design process. This is a fitting final lesson for this project:

Deterministic design is great for getting into the ballpark of a feasible design, but incorporating simple statistical/probabilistic analyses locally at the early design stage helps you account for some of the uncertainty and can help you converge more rapidly.

Project Wrap-up

With the class demo and functional testing concluded, the design and build process for my adjustable standing desk is just about concluded. This project (and the class) was a great learning experience for me, not in the sense of fundamental engineering principles or even how to model structures — I think most people who have gone through a typical undergraduate engineering course sequence knows all of that.

Instead, my biggest takeaway from this class is the importance of sticking to the deterministic design process. I think for many people who like to build stuff (that’s why we became engineers, right?), it is more enjoyable to be mucking around in the shop doing the hands-on work instead of plugging away at spreadsheets working out equations. Throughout the design process for this desk, I have often found myself tempted to size some component simply based on gut feeling instead of making the effort to go through the analytical modelling process. This kind of instinctive design is fine — it’s how humans got along for centuries before all the analytical models came about, but it is a deplorable way to do engineering. It is the professional duty of the engineer to draw on the full extent of her knowledge to produce the best design possible using the minimal amount of resources, moving fast and iterating (and breaking things) is fine, but iterating on prototypes is much more expensive than doing the math properly and getting as close as possible the first time round. Iterative design has its place (e.g. when models don’t exist or are too complex to solve expediently), but one must be careful not to use it as a crutch against analytical laziness.

Enough of the philosophical musings for now. Here is a fun video I made by placing my camera on my rising desktop. It showcases the Hobby Shop’s quaint collection of mallets and hammers.

Adjustable Standing Desk: Vertical Panning Shot from Shien Yang Lee on Vimeo.

Next steps

While the precision design aspect of my desk is more or less complete at this point. There are few improvements I need to take care of before I can fairly call it a complete and usable desk. Over the coming weeks, I plan to clean up the wiring by burying it in slots along the columns and permanently attaching my control board to the desk. Then I plan to install limit switches and tilt sensors on the desk to allow it to self-home and to catch error conditions should the axes go out of sync or the desk threatens to tip itself over by descending onto a component below the desktop. Once these are in place, I think the desk will have the basic usability and safety features needed to be a functioning product. The final step would be to do a final sand-down of the surface and finish the wood.

Closing the Loop: Motion Repeatability Test

The next test I carried out on my desk was a motion repeatability test. For this test, I loaded the desktop with 20 lbs. of dead weight to simulate motion under a typical loading configuration. I then indicated the tip of the desktop to track the vertical motion of this point while I ran the desktop up and down.

Motion repeatability test setup

To stay safely within the 1″ measurement range of the indicator, I restricted the desktop motion to back-and-forth moves of 5 mm and 10 mm. The desktop reliably repeated to within 0.001″ (0.025 mm) on each move. From the footage I got of the tests, the actual positional uncertainty is likely less (in the tenths-of-thousandths). This is consistent with my expectations, given the step size of the stepper motors and the lead on my leadscrews. For the 200 steps/rev. motors and the 2 mm pitch leadscrews, I expected the positional “float” to be within a single step, i.e. 2/200 = 0.01 mm. This is approximately 0.0005″, which is consistent with the test results.

After doing these tests and filming the videos, I realized I could have done the test across a much wider range of motion simply by allowing the desktop to come off of contact with the probe for part of the move. I don’t expect the results of this test to differ significantly, since the error motions due to actuation is almost entirely due to this within-step float in the motors (unless the motors skip steps somewhere along a longer move). I may repeat this test if I have time next week.

The following two videos show the test in action:

Adjustable Standing Desk: Motion Repeatability Test 1 (Camera on desktop) from Shien Yang Lee on Vimeo.

Adjustable Standing Desk: Motion Repeatability Test 2 (Static camera perspective) from Shien Yang Lee on Vimeo.

Closing the Loop: Stiffness Test

Adjustable Standing Desk: Static Stiffness Test 1 (Bottom of travel) from Shien Yang Lee on Vimeo.

Adjustable Standing Desk: Static Stiffness Test 2 (Top of travel) from Shien Yang Lee on Vimeo.

The first test I did to close the loop on my design process is a static load test to determine the stiffness of my desk. I took differential measurements at the very edge of my desktop with a dial indicator while adding and removing dead weights (10 lbs. nominal). In addition to the two large weights you see me placing and removing in the videos, there is also a small 2.5-lb. plate that I kept on the edge of the desk throughout the test (out of shot). This is intended as a small preload to take up any geometric errors (i.e. slop) and give me a good structural stiffness reading.

I carried out two stiffness tests with the desktop at the two extremes of its travel. The results of my stiffness tests are summarized in this spreadsheet. In summary, my error budget overestimated the stiffness at both positions (by 57% at the bottom of the travel and 34% at the top of the travel). I think there are a number of reasons for this:

  • My coarse estimates for contact stiffnesses (both linear and rotational) at bearings and joints were significantly overoptimistic. One issue with designing structures in wood is that these numbers are not well-documented in the literature. The anisotropicity of wood also makes it much more complicated to calculate these values analytically. In future, I am likely to resort to quick first-order FE simulations to get better estimates for these contact stiffnesses early in the design process.
  • The aggregate material properties I used are likely to have significant uncertainty due to natural variation in biological materials. But I think this is a minor contributor to error in this instance because the clear beech I used is probably quite uniform.
  • In my error budget, I treated most members as pure Euler beams for simplicity. In hindsight, this probably contributed significantly to the prediction error for deflections due to flexing of my boxways/columns, since they have such heavy cross-sections. The fact that there is a much bigger deviation from predictions when the desktop is at the bottom of its range of motion (57% vs. 34%) supports this hypothesis — shear deformations become more influential as the beam spans shorten.

Despite the significant deviation from predicted stiffness values, going through the error budgeting process and using first-order analytical models in the design process has put me in the ballpark of where I need to be. Had I relied on “intuition” or the famed “hackathon approach” to size components, I would have made a few members significantly smaller… Even considering possible modelling errors, deterministic models are invaluable in quickly getting into the neighborhood of the optimal solution.

Composite Bracket Stiffness

Offending bracket

One of the first observations I made after successfully mounting my desktop was how compliant in torsion it was. This error motion was previously a source of concern — I decided to make fibreglass-reinforced nylon brackets because it turns out the 12-gauge steel framing brackets I was planning on using would have yielded at the corners under full design load. Some preliminary testing with 20 lbs of dead weights on the edge of the desktop showed that the brackets were significantly less stiff than I expected.

Error in Analysis

Going back through my error budget spreadsheet, I realized that I had made the mistake of using material properties for fiberglass instead of the composite material, resulting in my modulus being off by a couple of orders of magnitude. Looking back, this is really a juvenile error — the Markforged printers lay down continuous-fiber reinforcement instead of extruding chopped-fiber filled polymer, so the resulting part stiffness really depends on how much reinforcing fiber you put into your print and where you put them. I should have taken more time to do a sanity check when designing this part.

Remediation Plans

Fortunately, I managed to finish my desk about a week before the demo, so there will be time to fix this. Simply making the same part out of aluminum would give me all the stiffness I need and more. The easiest way to do this would be to reproduce the sandwich structure by stacking two aluminum angle sections to give the two parallel projections. However, I didn’t like the aesthetics of this design, so I decided to machine my replacement brackets out of some scrap aluminum stock I found at the Makerworkshop. This is obviously not the most efficient way to manufacture these parts, but they are going to be highly visible, and this desk is going to be a onesie, so I decided to do it anyway.

The print for this part can be found here.

Assembly and Integration Testing


Last week, I finished building the two linear motion axes and tested them individually. See this post for more on the repeatability test. After some quick work contouring the desktop and drilling the bolt hole pattern, it was time to assemble the desk. To ensure a nice fit and absorb dimensional errors built up from previous manufacturing steps, I dry fitted the desktop to the brackets and cut the cross ties to fit. In the photos above, I am using angle plates and the cast iron bed of the table saw to keep the two linear motion axes parallel to each other and vertical. The measured cross tie length was 3 mm shorter than my designed length. I think this kind of cut-to-fit approach is very useful for building small runs of precision products as the in-situ cutting/grinding/scraping work is more economical than having to hold much tighter tolerances elsewhere to allow interchangeable parts. The final assembly process went smoothly.

Axis Synchronization Test

Desk Axis Synchronization Testing from Shien Yang Lee on Vimeo.

One of the risks of using two parallel axes is jamming due to unsynchronized motion. I decided to synchronize the axes using the stepper controller instead of coupling the two drive systems mechanically. If significant racking occurs with the desktop installed, large forces could be applied to the bearings and drivetrain. I didn’t want to risk damaging components so close to wrapping up the project, so I did my initial axis synchronization test with a spirit level placed on top of the brackets without the desktop bolted in. As expected, I had no problem keeping the two axes synchronized with the CNC controller and keeping the brackets level throughout the range of motion.

Desktop Clearance Issue

The final step after verifying that my linear axes sync up successfully with each other is to install my desktop. Unfortunately, I found that the desktop is running on the outer surfaces of the keeper rails at some points along the travel, causing it to bind up. The reason for this is that I had started off with 4/4 beech boards, which were approximately 20 mm thick instead of the 18 mm board thickness I originally designed the desk for. This is not a critical dimension (exterior faces of boxway) and the problem can be easily remedied by skimming off the excess on the planer. However, this does mean I have to break down the assembly to do that. Lesson learnt: be more careful with tolerance stack-up analysis in future!


Closing the Loop: Linear Motion Axis Powered Test

This past weekend, I managed to finish assembly on one of the linear motion axes that will go into my desk and carry out a motion repeatability test. Based on the error budget, I know that the most significant source of random error motion in my sensitive direction (height) is rotation of the slider within the box way due to radial clearance. Here I am using the familiar “laser pointer method” to determine the actual angular error in my axis by measuring the resulting sine error as projected on a surface a known distance away.

Desk Linear Motion Axis Repeatability Test from Shien Yang Lee on Vimeo.

This time, I am projecting onto a wall 2770 mm away from the most proximal position of my slider (measuring from the most proximal position is conservative since it overestimates the angular error at more distal positions along the axis). I ran my slider from end to end three times and recorded the location of the projected beam at each end position. The most extreme vector displacement between projected points I observed was 20 mm, corresponding to end-to-end motion along the axis. Points projected from the same position along the axis were consistently within 3 mm of each other. Part of these deviations could be attributed to the cosine error coming from not squaring the axis perfectly to the wall, but the bulk of it comes from sine error due to slider rotation.

These results indicate an angular error of 0.4° from one end of the axis to the other, and less than 0.065° at any one point along the range of motion. Theoretically, most of the end-to-end error will be systematic and mappable since it is due to straightness and parallelism errors in the boxway, while the errors observed when the slider is at the same position are due to clearance and therefore random or non-mappable. In this instance, however, I do not plan to map the errors in my desk, so I will continue to lump the systematic and random errors together in my error budget spreadsheet. I also updated the random translational error for the attachment point of my slider to my boxways to match the observed end-to-end angular error. The new random translational error is 0.22 mm (assumed to be the same in all three directions). This is significantly greater than the 0.1 mm I initially specified, but still keeps my overall height error within the apportioned 5-mm range.

Linear Motion Axis Build Update and Updated Part Drawings

Linear Axis Build Update

Pattern Routing

I took advantage of the Hobby Shop’s hours on Tuesday (while there are no classes) to make some more progress on my linear axis builds. I chose to mount the free-end bearing block for the leadscrew to the foot instead of the boxway body in order to make my system as compact as possible at the bottom end of its travel. This meant that I had to make the feet before I can complete my linear motion axes.

I decided to cut the curved outer profile of the feet using a laser-cut template and a flush trim bit on a router table. The mass production option would have been to set up a job on a CNC router and do the hole pattern as well as the exterior profile at one go. However, I think my approach made sense for the short run I was doing since it takes a lot less time to laser cut a template than to fixture and program a CNC router job with the amount of care necessary to get good results.


After discussions about fasteners in class and during peer review meetings, I decided to move to cross dowels and mating bolts (a.k.a. Chicago screws, sex bolts etc.) instead of using axial threaded inserts like I originally intended. This mitigated the risk of fasteners pulling out of the material due to preload or loads encountered in service, which allowed me to design all my bolted joints as slip-critical joints. This is advantageous because the critical shear area is described by the large head diameter of the bolt or nut in slip-critical joints, whereas the critical shear area in shear joints are described by the projection of the much smaller bolt shank. This is especially important in wood as the strength of most joints is limited by the shear strength of the wooden members instead of the tensile of shear strength of the fastener (I am using class 12.9 socket head cap screws, but almost any steel fastener would be much stronger than wood).

Detailed analysis of the bolted joints in my desk can be found here.

Updated Part Drawings

I also spent some time regenerating my part drawings to bring them up to date with recent updates to the CAD model. These changes were mostly additional details that were omitted the first time round, such as counterbores for bolt heads and seating holes for the cross dowels I recently adopted. I also prepared a preloaded slider design in case I run into trouble holding the 0.2 mm of straightness and parallelism I budgeted for the boxways. This is a backup option. To maximize stiffness and minimize actuation force, I intend to stick with plain sliders with radial clearance.

Updated part drawings can be found here.