familyman developer maker

about me tech portfolio woodworking showcase site source
2022 Gardening Journal 12 April 2022

Another year, another garden! In this post I plan on keeping an ongoing journal about my gardening experiences for the year. In some areas I'll probably be less verbose than 2021, and maybe in others, I'll be more descriptive.


2021 Gardening Journal 9 April 2021

This year my garden is more ambitious than ever before. I wanted to write a blog in journal form documenting my experience. I'll start by going over how I gardened in the past, then look at the plans for this year. I'll also attempt to keep this updated as the gardening year progresses.


Moon Lamp 21 January 2021

I recently completed an electronics project for my son's room which I'm calling a "moon lamp." It's more or less a smart night light that's attuned to the phase of the moon! The lamp lights up LEDs in the shape the moon appears in the night sky. This post will go over its features, missing features, and technical details about the build. I'll also include some pictures at the end.


Zig interfaces 3 December 2020

Addendum (March 2022): There is a new recommended pattern for making interfaces in Zig. Check out this blog post for more information.


STM32 Cortex-M3 Deep Sleep Mode in Rust 1 December 2020

Throughout the process of working on a side project, I got interested in putting an ARM microcontroller into the deepest sleep for the best power savings. I believe this is how things like your TV remote can last for years on two AAs. I'm using rust right now for an embedded electronic project with the blue pill development board, and I got deep sleep (standby) working, so I trimmed the code and will paste it here.


Minecraft on Demand 18 November 2020

Every once in a while my gaming group decides they want to sit back, relax, and chill on a little Minecraft. It's not often, so paying for a full time dedicated server doesn't make sense. And joining a local session can be tricky with routers, ISPs, firewalls, and VPNs. Why not try to make a dedicated server which only runs when people want it to?


Archiving Memories 24 October 2020

Family photo and video memories are pretty priceless, and the only effort I had put into saving copies was copying them from SD cards to an old portable hard drive. While a good option to begin with, these hard drives can fail, and are pretty susceptible to damage from kiddos and house fires. So, to the cloud with them!


Urn 11 October 2020

I was honored to be asked to build an urn for my Great Uncle Lewis, who everyone called Babe. The man was a smart guy, principled, and a woodworker himself. His wit would always catch me by surprise even in his later years. He told me often of stories about building his house by himself. You know, I wish more people were like Babe.


Hosting SPA with warp in rust 23 September 2020

I started another web app side project which has been an exploration of both new and familiar frameworks. One of the new frameworks is warp which is a web framework for rust. I've used a few rust web frameworks before: namely iron, nickel, rocket and actix-web (the metal-like naming pattern made me chuckle). This time I was going to give it a go with warp.


Pop can stove 5 July 2019

Sometimes I go down these rabbit holes and get obsessed for a week or two. This time, I started making camp stoves out of pop cans! I don't intend this post to be a DIY instructional but instead I wanted to share my


External Interrupts on Cortex-M3 with Rust and RTFM 18 October 2018

Tonight I worked on getting an external interrupt (EXTI) on my blue pill working with the press of a button. I achieved this by looking at the source of many repos, Googling for examples without much luck, watching a YouTube video, and reading the 1100+ page datasheet on the STM32F103 microcontroller. I hope this blog post will help another dev skip some of these steps.


Rust with Rocket + Elm running on Heroku 24 June 2018

I had this goal of making a web app that was very fast, stable and easy to deploy. This is what I was hoping to accomplish: strongly typed server-side and client-side languages (Rust & Elm respectively), push-button deployments to the cloud with free hosting initially, and sub-second response times for API calls and page loads. With this setup, I think I'm well on my way to accomplishing each of these.


Computer Desk 30 November 2017

I just got an exciting new job where I'll be working from home 4 days a week. For the last 6 years, my home desk has been comprised of a half-size folding card table. It was pretty much the cheapest thing my recently-graduated self could find which could support a couple monitors and a keyboard. Now with a full time job working from home, I wanted to step it up in the home office department.


Snake written in Elm 17 November 2017

Elm is one of the many languages that compile to javascript. It's a statically typed purely functional language. At first glance, I enjoyed the idea and syntax, so I thought I'd give it a try. I like writing the snake game because it gives me a chance to see many facets of the language. Check out the finished product!


Multiple javascript files in Phoenix 24 October 2017

The Phoenix web framework by default ships with every page including one js file: app.js. I am playing around with a web application which is more traditional in the sense that it's not a single page application. Beacuse of this, I didn't want a global js file, I thought the best way to go about it would be one global js file which everything requires, and then a few page-specific js files. This post explores how I went about it.


Ghost to Cobalt 16 August 2017

After attending a talk at That Conference about static sites, I decided to take the plunge and convert my personal website to a static website hosted in the cloud on a server I don't administrate or pay for.


End tables 8 July 2017

Building and using the coffee table has been great, but there were still times when end tables next to the couch and love seat were needed. Drawers in these end tables would be especially nice to hide away TV remotes and game controllers. With these minimal specifications in mind, I decided to start building a set of two end tables.


Rocking Cradle 23 June 2017

I chose a big project to kick off 2017. A rocking cradle for our baby due Mar 28 of this year. I started in the beginning of January and finished half way through February. This was one of my more complicated builds, but it came out very well and will be a family heirloom for generations (hopefully!).


Coffee Table 26 September 2016

There was a bit of a void in our living room - a big open carpet with a couple small ottomans. When Kaytee and I bring food to the living room to eat, we're often balancing plates and glasses on cushions which is a recipe for disaster. The vital living room piece of furniture that was missing was a coffee table. A squatty and small table for holding food, drinks, books, puzzles, remotes and everything else. I believe adding one of these to our living room will make it much better for... living.


Kitchen Stools part 2 18 August 2016

In May I was able to finish up the remaining three kitchen stools. The first blog post on the stools goes over the motivation, design, and build process. In this blog post I want to use pictures and words to explain the build process more in depth. I especially want to pay attention to the hand cut half lap dovetail joinery on the crossbars. I'll also touch on the jigs I used and made for this build.


GetWoodworking: How I got started 24 March 2016

The #GetWoodworking week was created a few years ago when trying to answer the question: "how can woodworking be saved?" Today, those of us who do woodworking are encouraged to blog, invite people to build things and help close the learning gap some when it comes to new woodworkers. I decided to blog on how I got started in the hobby.


Kitchen Stools 3 March 2016

Our kitchen island is lacking seating. With some stools it'd make a great breakfast area or anytime eating area. We did have one stool but a set of four matching stools would be great. I thought this would be a project that I could take on. I've been able to get a ton of walnut from my dad who had some sitting around in the shed between tractors. I thought walnut would make some beautiful stools and it matches the darker wood of our flooring.


Disabling WPF ListViewItem Hover 19 February 2016

I spent the last couple days trying to build a very minimal and simple grid in WPF. There was no style to it other than the headers were underlined text. No grid lines, no header background color, no hovering triggers. This proved to be a difficult task. Here was my end goal:


York Front Vise Review and Installation 28 November 2015

Throughout the process of building my woodworking workbench, I looked at quite a few quick release front vises before choosing one. I wanted a quick release vise so I wouldn't spend my afternoons turning the handle when switching from a wide piece of material to a thin one.


Workbench Build 25 November 2015

For fine woodworking, and especially working with hand tools, a heavy, flat workbench with abundant clamping facilities is crucial. All my projects until now have been built on a flimsy table saw outfeed table. If I'm chopping with a chisel or sawing with a hand saw, the table surface would flex and bounce. Any time I need to hold a piece of material still while sawing, I was using metal clamps - sometimes rigging up multiple clamps when the material needed to be vertical. So given the play of using multiple clamps plus a foundation which isn't even rigid, it leads to vibrating workpieces, rotating under clamps, and chisels which don't chop easily.


Prototype Stool 7 November 2015

The second pieces of finished fancy furniture (after the nightstands for the house I'm planning are a set of four stools for our kitchen island. I designed these stools so they could be built without the use of any screws or nails. Just good joinery and glue. This uses the geometry and properties of the wood to strengthen the design and will hopefully make these pieces of furniture last a very long time. Half lap dovetail joints also add a certain beauty to the piece. Here is my initial design.


Nightstand 12 October 2015

I was finally able to finish my first piece of furniture which will go inside the house and hopefully fit in without looking like an amateur DIY. I followed a plan from Black & Decker Easy Wood Furniture. This build involved a lot of gluing pine boards edge to edge. Many pieces are required to be 14" wide. I think the largest piece was the back at 14"x19". I bought two 1x10" and four 1x6" pine boards. The only other pieces were hardware: an outlet, extension cord, a drawer slide, and a drawer knob.


Combustable Material Containment System 2 October 2015

I thought "Firewood Holder" wasn't elegant enough, so I went with the above name. My new house has a beautiful patio with a fire pit. However there was no way to store firewood other than throwing it all on the ground around the pit. Another option would be bringing the appropriate amount of firewood from the garage every time we want to fire it up.


Sled, desk and table saw outfeed table 21 September 2015

Table saw built!


New house... new workshop 10 September 2015

Kaytee and I just moved into our new house. It's the first house/property that either of us have owned, and describing that process probably deserves a post by itself. However I'm not sure I'd love writing that though as it's been a multi-month process, and I'm sure I'd leave things out.


My note-taking program 29 July 2015

In January through April of 2015, I attempted to fill in a gap which I thought was missing in the area of digital note-taking. I have recipes I want to remember, general to-do lists, packing lists for camping and hunting which could come in handy in the future, a wish list, work notes, journals and more. Although there are several note-taking applications out there, I wanted something a little different than what they all offered. Here is my list of requirements:


Wordpress to Ghost 28 July 2015

note: Out of date. I'm now using cobalt, and that transition is outlined here


Dice Rolling Application 28 July 2015

A few months ago, I wrote an end user application using rust which has a GUI (a console GUI!). The application does what many others have done before it, but it was a good learning process, and it ended up extremely fast and fairly easy to use. It simulates rolling die (randomly generating numbers) in a useful way for those playing table top games. I had a few goals at the beginning:


Toolbox 1 28 July 2015

As of writing this, I'll be moving soon. In 1 month, Kaytee and I will be closing on a house. I've started to accumulate many small tools: files, rasps, wrenches, pliers, hand planes, squares, levels, boxes of screws and nails, etc. Too many small tools to fit into just one toolbox. I decided it was time to design and build a life-long lasting toolbox. It will be very valuable when moving all these miscellaneous tools and come in handy whenever I need to work on something away from my shop. My first toolbox was given to me by my Uncle Rick. For the first of my wood projects, I used software as the designing medium, specifically SketchUp.


My Robot 10 December 2014

I've been building a robot in my free time for some fun. Recently someone came to me and asked if I'd write up a parts list so others could create a similar robot of their own. Well this is a great idea. I should probably also open source/publicize the code, which has been written in python as of now. That will be step number two. So lets get onto the juicy parts:


Phant.io and Rust 30 July 2014

Lately I've been exploring the language of rust. I've really been enjoying getting back to the lower level style of a systems programming language. Rust has a lot of unique advantages over its competitors like C/C++, Go, D, and others as you can read about in other blog posts after a couple Google searches. After doing the first ~30 Project Euler problems in rust (github repo), I started to get a decent handle on the language in its current state (the language is constantly evolving).


MySQL securesocial database script 14 February 2014

A side project I'm working on called for some form of authentication on top of a Play! Framework project. I've decided to use the securesocial library so I don't need to redesign the wheel. I'm using a MySQL database in the background, and securesocial needs some way to persist user data. The only data persistence code that comes along with it is an InMemoryUserService.scala. As the name suggests, all user info is just stored in memory with this method. I needed a way to persist it in MySQL, and after a bit of Googling, I couldn't find a database initialization script for the securesocial identity model. This is the main purpose of this post.


Dog House Heating System - Part 2 18 October 2013

In case you're interested, here's Part 1. Project Completed! Since this wasn't the most complex project, it looks like I'm only going to have 2 parts. I was able to (with some assistance) solder all the components to the board, and the first time testing revealed that everything had been soldered correctly! Normally this doesn't happen and I'm left having to clean up some mistakes which isn't very easy when soldering is involved.


Dog House Heating System - Part 1 16 October 2013

In case you're interested, here's Part 2. It's time for another project! This time I'm going to be installing an active heating system in my dog's house because there are many times where the passive system (straw bedding) doesn't quite do it for him when I'm off at work during the middle of a Wisconsin winter. I'm going to be using an infrared heat lamp as my heating source and an ATTiny44 which will act as a thermostat to turn on and off the lamp depending on temperature. This should maintain the temp pretty well on those cold days.


Chequamegon National Forest Backpacking 9 August 2013

My friend Eric Johnson and I went on a short backpacking trip through the Chequmagon Nicolet National Forest Medford section this last weekend, and had a pretty good time. I took along a notebook and pen to write down some notes and also took my old Kodak camera to take some pictures. This post will try to merge the two and hopefully lead to an interesting read.


New thing: Backpacking 19 July 2013

As if I didn't have enough hobbies, a new one has been added to my list this summer, and that is backpacking. I've never officially backpacked yet, however my friend Eric and I do have a plan to hike 15 miles over 2 days through the woods in the Chequamegon Nicolet National Forest. To be more specific, we'll be doing the southern section of the Ice Age Trail that runs through the Medford district of that forest. This is scheduled to happen 8/2/2013 - 8/4/2013 and will be a great way to test our equipment. Speaking of equipment, let me give you the rundown.


Sprint to Straight Talk 20 June 2013

As a tech dude, I like having access to the wide world of information from right in my pocket. I've reinforced this fact about myself over the last month during which I've been using an old Sanyo SCP-3100. My last smart phone, the HTC Evo 3D died about a month before my 2 year contract with Sprint was up. I've been using Sprint's unlimited everything plan for the last two years, and it's been going fine except that it's slightly more than I'd prefer to pay. With a 20% discount from my employer, I was still paying ~$73/mo for this plan. After doing some research, I found Straight Talk which offers an unlimited talk/text/data plan for $45/mo. So this blog post expands on the details involving switching between these two providers.


A hobby and an operating system 11 June 2013

Backpacking. Linux. Two things that one normally wouldn't read about in one blog post. And probably not even normally in two posts by one author. But get ready for some mind blowing content because I plan on talking about the great hobby of backpacking and Linux.


Using implicit to implement LINQPad's Dump() minus formatting in Scala 7 March 2013

Have you heard of LINQPad? Have you used it? If not, its website defines it as


Arch Linux auto mount USB storage 4 December 2012

Over the last week I've been working on getting my Arch Linux installation finalized. One of the latest things I've been trying to do is get USB storage devices to auto-mount when they're plugged in the computer. This is useful for flash drives, removable hard drives and SD cards (through a USB reader). I posed a question on http://reddit.com/r/archlinux revolving around this subject and what services people use for this sort of thing. One user answered with a service called ldm (lightweight device mounter).


State of the Ethan 26 September 2012

It's been a while since I've posted to my site. I thought it'd be a good idea to check in. Currently I'm still learning the Scala language with Programming in Scala (2nd Edition), and now I'm also taking a free online class through Coursera taught by the creator of the language: Martin Odersky. Along with learning through the book and the course, I really like to see the application side of the language. So when learning a new language, I'll tend to create some apps that don't really do much.


Scala! 30 July 2012

A coworker recently introduced me to a new programming language. My usage of the word introduced is a little off. He briefly mentioned the word "Scala" in passing saying that he was starting to move his personal Java applications to it. I take this guy as a pretty smart guy so I decided to look into it. Little did he know that this would become my obsession for the last 3 weeks and for however long.


Summer! 29 June 2012

It's been a great summer so far. I've been learning a ton at work and at home. At work we've managed to switch the system we're using as the front end of our huge project 2 times meaning we've started 3 times! The latest switch has been in the direction of native mobile development, which is exciting. �At home I've been straying away from the physical computing side and experimenting with java RESTful services. That's been an interesting journey. I've ended up using Eclipse as an IDE, Apache Tomcat 6 server for hosting, Jersey for the Java RESTful implementation, and the Jackson JSON converter for input/output. With all these technologies together, I've started to build a pretty decent service oriented web API.


Bed Frame and Little Table Thing 24 May 2012

This year I was lucky enough to get a tax refund and I've been wanting some tools for a while so I decided to splurge on some nice cordless power tools. I got a set of Milwaukee Lithium 18V tools that include a hammer drill, circular saw, sawzall, and flash light. You can buy additional tools/batteries for this set and they're supposed to last quite a while.


Theobald - The Self-Balancing Robot 17 May 2012

Team


C-Shell 17 May 2012

Introduction


Corn and Soybean Analyzer 17 May 2012

Background


Scheduler 17 May 2012

an easy way to see your busy week


Welcome! 8 May 2012

Welcome to my new WordPress-based website! I'll be converting my old custom-built website (@ ethanfrei.com) to use this nice open source content manager. It's not only to make my life easier when �updating the site, but also to learn the inner workings of WordPress so that I can add this great piece of software to my tool box.