Student Engineering Portfolios

This past semester, we radically changed the curriculum for the Intro to Engineering course at the college where I teach. We are focusing more on competency-based learning via constructivism in this introductory practicum course. To track the student progress we used an online website portfolio.  We tried to base this concept on the webpages we had to make in the FabAcademy.  Here is what tools I used and what I’ve learned.

 

In the FabAcademy, students were required to make an HTML webpage each week chronicling their progress with that week’s project.  This HTML page was saved in a Mercurial repository on the students’ computers, and synchronized with the FabAcademy server.  At my college, the port for doing this was blocked, so it was impossible to synchronize the repository unless I did it at home.

Since we can’t run a Mercurial server (due to the port issue) at my campus, and I didn’t want to have to fix the problems of over 100 students creating multiple heads of the repository, I went another direction.

Instead of HTML pages, I created a multiuser WordPress installation only for students at my school.  It was available online from any computer, and students can upload any code or design files in any format they wanted as long as it was a .zip.   This worked marvelously.  I had worked with WordPressMU years ago creating this exact type of environment but I couldn’t get an audience. In fact, I used the same domain name as my first site from long ago. the concept was supposed to be something like instructables.

WordPress was great due to the very low overhead for students. They didn’t have to install any  funky toolchain, learn to use the terminal, or anything like that. They could focus on the assignments themselves.  It did take a while for them to understand the concept of  technical writing but eventually most students turned their website into a great portfolio.  That was the main objective. The students last assignment was to export their website and import it into their own wordpress.com site to continue documenting their work to create an engineering portfolio they could show prospective employers. This is similar to the concept behind InnovationPortal created by Project Lead The Way and many other services of this sort.

In the end, just like FabAcademy, I wanted to scrape the pages and create a static HTML version of each student’s website at the end of the semester. This way our future students could benefit from previous generations and build upon their ideas and projects just like in the FabAcademy. being static HTML frees up resources on the server and reduces the chances of being hacked by reducing the number of live users and database entries. The static HTML copy of all the websites didn’t seem to be a hard task. I had found a plugin called Really Static that does exactly what I needed. I tested it on my own old senior project website.

While testing this plugin on a single site on our server, I accidentally activated it on all 100 blogs.  This was a disaster!  I’m still trying to figure out how to fix this issue.  I emailed the support page and even emailed the author who stated he has used it on many multiuser sites, but I got no replies for help.  I don’t really know PHP, just enough to hack on it to glue code snippets together (if I am lucky) so there’s no way I’d figure out how to fix it.  Also the comments of the code for the plugin are in German, which I’m not great at.

A new solution appears

After this mess, I decided to look more into Static Site Generators (SSGs).  This is a system that creates static HTML pages from the get-go. Users write pages and posts in a markdown language of some type in a plain text file, then the site generator turns this markdown language into a static HTML site. Some common ones are Jekyll and also Hyde.   There are several large lists of Static Site Generators on google as it is the new fad in webhosting.  The issue with almost all of these systems is that it is not user-friendly. For instance, a new post on wordpress is literally as easy as writing an email or word document.  To use most of the systems I’ve seen for SSGs, you have to install a compiler (Ruby or python for instance) then some libraries, then you have to write your code in a text file, compile it into HTML, then manually upload these files to the server or to Github pages.

There is no way my students can handle doing all that without asking millions of questions, even if I make a how-to video showing each step (heck, they asked enough about wordpress as stupid-proof as it is…)

There are some relatively simple solutions out there already. Most notably is Dillinger which seems to be fully featured except missing a toolbar to help complete noobs. Having more features scares me since I’m not great at javascript. I just came across this one and had to mention it because it does integrate dropbox, googledrive, Microsoft onedrive, etc. I like it, but there are some drawbacks:

  1. it is too complicated for me to work on until I learn javascript enough.
  2. There doesn’t seem to be an index page that updates automatically (like Simple below) which is needed
  3. There doesn’t seem to be multiple templates. you get what you get, though it does look quite nice.
  4. There are no buttons to help noobs like I mention below in the RES.

While searching the list of SSGs, I found one solution I think is workable and stripped down enough that I might be able to wrap my heard around it somewhat.  It is called “Simple”  and it uses Github pages.   It is very easy to set up and use and it has a web-based interface with a live preview of the generated HTML from the markdown language.  Markdown is a very simple language to learn and is intuitive enough for freshman students to pick up quickly.  So I forked Simple so I could hack on it.  It has an MIT license, so it is fully manipulable.

While it has a simple interface, I wanted to make it easier for my students to use the Markdown language. I’m taking my cue from the Reddit Enhancement Suite (RES) Chrome plugin.  When you make comments on Reddit using RES, there are little icons almost like a rich text editor.  You have an icon for Bold, Italic, Strikethrough, quote, link, etc.

redditIcons

These icons make it dead simple to use markdown language, and especially if the user can see a live preview of the results using the “Simple” interface.

The template for Simple is currently hardcoded, but looks clean and easy to use.  There are only a couple of issues:

  1. Students must get their own Github account and host their site there, making it a bit tricky to scrape the content at the end of the semester…
  2. Students must link images that already exist online somewhere.  This means they will either have to upload the files to Github (yeah right, like I want to get 1M questions about using the sync app)  or use their google drive from their school account. I’m almost 100% on them creating a folder in google drive to host the pics as long as I can guarantee I can scrape the images well enough. I haven’t tested this yet.
  3. They cannot directly embed youtube videos into the markdown language. I can skirt this by making a button that links to the video with a screenshot of the video pretty simply. I have seen other people extend the Markdown language to be able to embed youtube and vimeo videos, but I’m not savvy with javascript, which is what Simple is written in.
  4. There is currently only one template, and it is hardcoded.

Otherwise, it seems pretty darn good. I expect that it could be extended for use completely in google drive, but I’m not sure.

It is going to take me quite a while to implement the RES-style buttons due to my lack of javascript skills.  If anyone wants to help, check me out here

 

Another strong contendor already has a simplified button interface and can be connected to google drive.  This is called StackEdit. It has a great editor, fast previewer, and can export to several options as well.  Since the buttons are a must, this is a good solution. It is too cocomplicatednot even sure if itis open source) for me to modify in any way, like Dillinger, but we can see how it goes.  I haven’t played around with it enough to see if there is a variety of templates to use.

Adam-Atom

Shapeoko Software Adventures

I finally got a little time to work on the Shapeoko V1 to V2 conversion.  I made a video to document for my future self what settings I used for things with explanations of why I used those. I hadn’t previously made many notes so I had to basically start from scratch and I lost a lot of time redoing things. I tested some software and did a quick comparison.  Details of my experience and links to the software are below. I also had a bit of trouble from the top software choice, Chilipeppr that I hope someone could shine some light on.

Software:

1.  http://chilipeppr.com/grbl

UPDATE: John Lauer, maker of Chilipeppr , showed me the error of my ways and addressed most of my concerns with it.  He made an update feedrate modification update that I have yet to test.

Chilipeppr seems to be the best interface by far with full 3D display, code simulation, and lots of neat widgets and macros.  While testing my first milling job, however, I ran into some trouble.  I haven’t really watched all the tutorials on this so it is probably something I’m doing wrong, but when I used the feedrate multiplier on the Gcode widget, I typed a value in by hand and hit “enter.”   I entered 0.15 into the feed rate window, hit the enter key, and tested it out.  This did not work at all.  You can only modify the feed rate by clicking the up and down arrow buttons on the Gcode widget in Chillipeppr. You can verify the feed rate change by watching the lines in the Gcode change when you click the buttons. I noticed that if I watched these values while typing an input, they don’t change, unless I mouse over the Gcode line.

I ran a simulation to verify it would work.  The simulation was slow as expected since I was only going 15% of the full speed. Simulations do not take into account feedrates. When I went to run the real job, I broke a bit almost immediately.  The very first line it cut was at the feed rate I specified (15% of the default speed)  but immediately on hitting the next line command in the Gcode, the speed went back to 100% breaking my bit.

Something I loved about this app was the ease of modifying the positions, zeroing and such.  A couple of improvements might be to add options to only zero one axis at a time, and to add a custom offset to each axis if needed. This can be done manually by entering the appropriate G92 code with the wanted offset, but a button similar to the “Move By” would be nice.  You can zero a single axis by clicking the little triangle next to the axis name (ie X, Y or Z) and select “Zero Out Axis”.

I would also like the “Move By” to default to 0 when you change from one axis to another. I mistakenly drove a bit 10mm into my workpiece after adjusting my Y axis first. I had used 10mm for Y, but meant to change it to 0.1mm on Z.  That was totally my fault, but a “stupid-proof” option would be nice for that.

2. Gcode-Sender Chrome plugin

This neat little app is a chrome browser plugin. It is very basic. (this link is that video cued to exactly the point I’m testing this software). It autodetects and connected to my GRBL device instantly. I didn’t have to install any executable alongside this.  An issue is that there is no visualizer for the gcode so you can’t really see what it is going to cut or graphically how far along it is in the cutting job.

3. Universal Gcode sender

You can see in the first video of this post (this link is that video cued to exactly the point I’m testing this software)that I detail this app.  I couldn’t get to display correctly. I have java 1.8 and for some reason, none of the buttons or objects display correctly. I also couldn’t get the visualizer working at all. I tried version 1.04 and 1.07 with no joy. I was able to manually move the machine, but I couldn’t trust it with a cutting job since I couldn’t really see what the button said and couldn’t get the visualizer working.

4. Grbl Controller

Here is the video cued to this software.  This is the software I ended up using in for my first mill job after I couldn’t get the chillipeppr feed rates to scale with its default Gcode.  I created my own code quickly in easel.com and threw it into GRBL Controller to mill.  I liked the simplicity of the  interface.

I have a few gripes:

The serial terminal portion is really slow on my machine and I don’t know why. it takes 5 full seconds to connect to the serial port and print the GRBL stats.  When I send commands manually, there is a definite delay of a couple of seconds before the machine moves.

The visualizer is good, and I love that it prints the extents of the design.  I dislike that it is a 2D only viewer. While it is a good viewer overall, if it was 3D, that would make this tool much better.

The GRBL Settings under the “advanced” tab really messed up my settings.  Since I am running GRBL0.9g, when I loaded this window, it populated the window with my GRBL settings, but when I changed a value ($110 for instance) in this window, it actually wrote it to the OLD GRBL setting number for that setting.  This really confused me for a while. I’m not sure why this happened.  I fixed it in a serial terminal and decided not to use that option again.

 

Other CAD/CAM tools I surveyed

Easel.com is the CAD/CAM software package from Inventables designed for their machines.  It only works with GRBL 0.8c directly, but there’s a way to export the Gcode so you can use any gcode sender.

I ran a job I created in Easel. I had to make sure I selected the correct bit size and on Machine–>advanced I created, then exported the Gcode.  I brought the Gcode into “Grbl Controller” to send the job.  Since I milled with a 0.5mm bit, and I wanted to go 1.5mm deep, that takes 3 passes (rule of thumb is to only cut as deep on a single pass as the width of your bit).  This worked pretty well because Easel generated the multiple passes without telling me anything about it.  I had manually entered 30mm/minute as a feed rate into Easel.com, but it seems to have automatically calculated the feedrates based on either the Gcode it exported, or used the GRBL defaults for each axis because it cut much faster than that.  I would have really liked to have some kind of stats or a note about the number of passes or the approximate mill time based on traveled distances and feed rates.

MakerCAM.com is kind of a precursor to easel. It allows you to import SVGs and do things like pockets or outlines. It then generates toolpaths based on your entered tool values.  It is really easy to use and what is great is that you can download the whole things so you can use it with a device not connected to the internet. There are some great tutorials here.

GRBLweb is another browser-based gcode sender. I didn’t try it out, but the video on the webpage makes it look like a good tool.

JScut is a tool that GRBLweb and Chillipeppr use. JScut is a browser-based CAD/CAM package that helps you create toolpaths. It is similar to Makercam but being JS-based, other browser-based tools can interface and use it.

 

 

Miscellaneous notes about my setup and justifications:

I’m using GRBL 0.9g as I wanted to take advantage of the 4th axis in the future. this has a different pinout than version 0.8c.  0.8c Is what Easel.com uses when you click the “Carve” button on their interface (they use a server app to send the gcode to the machine from the browser, for some reason, I couldn’t get this to register correctly, even when I had 0.8c and the website kept telling me to download and install the server app. The settings I used for the 0.9g setup and justifications for these values are at the bottom of the post.

 

Grbl 0.9g [‘$’ for help]
$0=30 (step pulse, usec)
$1=50 (step idle delay, msec)
$2=28 (step port invert mask:00011100)
$3=2 (dir port invert mask:00000010)
$4=0 (step enable invert, bool)
$5=0 (limit pins invert, bool)
$6=0 (probe pin invert, bool)
$10=3 (status report mask:00000011)
$11=0.050 (junction deviation, mm)
$12=0.100 (arc tolerance, mm)
$13=0 (report inches, bool)
$14=1 (auto start, bool)
$20=0 (soft limits, bool)
$21=0 (hard limits, bool)
$22=0 (homing cycle, bool)
$23=0 (homing dir invert mask:00000000)
$24=100.000 (homing feed, mm/min)
$25=250.000 (homing seek, mm/min)
$26=250 (homing debounce, msec)
$27=1.000 (homing pull-off, mm)
$100=5.470 (x, step/mm)
$101=5.470 (y, step/mm)
$102=320.000 (z, step/mm)
$110=300.000 (x max rate, mm/min)
$111=300.000 (y max rate, mm/min)
$112=50.000 (z max rate, mm/min)
$120=250.000 (x accel, mm/sec^2)
$121=250.000 (y accel, mm/sec^2)
$122=50.000 (z accel, mm/sec^2)
$130=290.000 (x max travel, mm)
$131=290.000 (y max travel, mm)
$132=100.000 (z max travel, mm)

Here are the justifications for these settings:

Note: GRBL 0.9g runs at 115200 baud.

I needed to change the X and Y steps/mm based on the following:
Motors have 1.8degrees (200 steps/revolution)
MXL belt has 2.03mm pitch
My belt pulleys have 18 teeth on them
I’m single-stepping my stepper motors
I used these values in the following calculator: http://prusaprinters.org/calculator/#stepspermmbelt
= 5.470 step/mm for both X and Y

To test this, enter the following code
G01 Y-10 F300
Which means “Move Y axis -10mm at a speed of 300mm/min”
I confirmed this motion with a micrometer
My Z axis seems fine using the values from the shapeoko website (I meanured about 1mm when I sent it the command to move 1mm.)

I’ve had to invert my direction on a couple axes:
https://github.com/grbl/grbl/wiki/Configuring-Grbl-v0.9 ctrl+f “$2 – Step port invert mask:binary”

 

Adam-Atom

My Shapeoko Version 1 to Version 2 Conversion Adventures

whole machine Forgive this messy rant….

After obsessing over CNC machines for about 10 years, and having some misadventures from time to time designing my own hardware and software, I jumped at the chance to order the original Shapeoko CNC mill mechanical kit as soon as it came out. It took me a year to find time to put it all together. After it was assembled, I connected up my old HobbyCNCPro Motor driver board to it. This driver board is for Unipolar motors, so I searched for some that would work.  I found these NEMA 17s from pololu <<LINK>>

 

On a previous attempt at making a CNC machine, I used Mach 3, but this time I went with LinuxCNC.  The main reason I wanted the machine was to mill PCBs. The workflow was EaglecAD–>pcb-Gcode–>autoleveller–>linuxCNC.<<LINK>>  I made a few really horrible PCBs with the machine before realizing it simply wasn’t the tool for the job. The gantry had way too much play.  The eShapeoko community was constantly updating and improving on the designs, so I waited it out until the V2 came out before the obsession hit me again when I saw how they doubled the gantry slides to improve strength.

 

After a year of V2 being on the market, I searched forums for a conversion pack but none was to be found. So I spent a while trying to define the differences between the machines. In the end, I spent probably just as much as buying a whole new mechanical kit, but here’s my process.

First, instead of buying all new motor mount plates, I only bought 2.  I then modified a couple of my plates from my original machine.  IN the image below, you can see the original plate on the right, the new plate on the left, and the modified one in the middle. I basically just had someone with a drill press line up the new plate with the old and drill out a two holes at the top that could attach the 70mm machine screws through to make the carriage assembly (pictured further down.)

plates1

The V1 Y rails became my new gantry, leaving me with something like 375mm in that dimension. After I mounted the carriage assembly, I saw that the Z axis had no holes to mount to.  To remedy this, I simply used the V1 Z plate as an interface between the new Z axis and the carriage.  In the image below, you can see the bolts I had to extend with short nylon spacers so they could mount the old Z plate and line up with the original eccentric nut circled in green while the four 70mm long spacer screws are circled in blue. (I had to buy 4 70mm M5 bolts on amazon as inventabes doesn’t sell them for some reason).

plates2

Zplate

Below you can see the spacers and everything inside the carriage assembly. This is a “bottom-up” view after the Z axis has been mounted.

Carriage1

I was able to use the belt and the belt standoffs from my V1 on the gantry with no problem, but the lower profile of the new motor mount plates that became my new Y axis required the belt to be clipped to the slide itself.  Instead of buying them, I just laid my V1 standoffs for the belt flat and mounted them that way. This reduced cutting area, but the first thing I will cut will be smaller belt clips.

I ordered a 1000mm piece of Makerslide and cut it directly in half, leaving me with about 500mm rails.  I mounted these up with new end mount plates and some 80 X 20 aluminum.  I was disappointed to see that I couldn’t use readily available half-inch MDF as spoilboard on top of the extrusion, so I just mounted the entire machine on a 500mm X 500mm piece of half-inch MDF.  This gives me a bit more Z depth.

I was not very excited when I saw that my cutting area is less now than it was with the V1. I’m contemplating ordering more makerslide if I need to in the future.

Another change I made was to get a unipolar stepper with the shaft sticking out of the back for my z axis, and used a 3d printer to print a thumbwheel to attach to it. Now I don’t have to struggle to adjust the Z axis by hand anymore. I hadn’t used this company before, but <<LINK HERE>  stepper world?  was cheap, shipped fast and packaged everything great. The only problem I found with the datasheet they included is that they had labeled the brown wire “BLW”  for some reason.

 

If I can find another NEMA23 aound the house, I will replace my Y axis motors with NEMA23s for added power.

 

I’m also hacking on the electronics. I added the 4th axis motor driver to the HobbyCNC Pro board and would like to use it to drive a 3d printer extruder. Since the HobbyCNC Pro board interfaces with a parallel port, it isn’t very practical for my laptop, so I decided to slap an arduino on there running GRBL to simplify the entire process. After seeing a demonstration of chillipeppr for GRBL, I’m thinking of using that.  I kind of dig the browser-based tools available for controlling the machine for their simplicity.I don’t wanna use my PhD to make PCBs I just want to click a button and be done with it. It shouldn’t be such a pill to make things on the CNC. For using GRBL with 4 axes, I’m looking at using the spindle speed control as my extruder, or using a slave ATmega328, or even just getting the timing set for strapping my 3doodler onto the thing.  The interfacing of the driver and the arduino should be pretty straightforward, I just need to wire X direction on one to X direction on the other, etc. for the most part.

My tool tip wobbles as the Z goes up and down, which sounds to me like I have a bent leadscrew somehow. I’ not sure about this and will have to hack on it later.

Anyway, that’s my progress so far. Any more info and I’ll post it when I get the chance.

 

Adam-Atom

Zooming in on LabVIEW (and fixing Windows Magnifier)

My students keep complaining about not being able to see the connections and icons in LabVIEW.  I decided to write a post with some solutions to this.

  • Using Window’s Built-in magnifier:  Windows 7 and up has a built in magnifier installed.  Simply hit the start button and type “Magnifier” and run it.  By default, mine was in “Docked” mode and I couldn’t get it out of that mode which basically made the program useless.  I found a tweak to the registry to fix it  at this site  but it did not work with my version of windows. I decided to write a short fix for it.
    1. My regedit was at the same path, but my options were different. Open the start menu and type” regedit”  then click “continue” or whatever at the next nag screen to actually open the registry editor.
    2. Navigate to Computer/HKEY_CURRENT_USER\Software\MicrosoftScreenMagnifier
    3. Doubleclick “Classic Doscked” and change the number from ‘1’ to ‘0’. 
    4. Open Magnifier again and you should now have a non-docked window.
    5. For fun, play with the key called “CLASSIC DOCKED POSITION” to make the dock appear to the top, left, right, bottom, etc of the screen.
  • Download a windows app called Zoom It, which has a bit more options then the built-in software.
  • For taking good screenshots of your code, you can use the LabVIEW Code Capture tool. This will be useful for student reports or webpages.

That’s it, hope this helps!

via NI forums

Adam-Atom

Backsplash Edging Tips

In June of this year we moved into a new house. It was a foreclosure and unlike our first house, we had to tackle quite a few projects to get this place back into shape.  Some of the things we’ve done so far aren’t really required, but make us feel better about the space.   One of those projects was  to put in a glass and tile back splash in the kitchen.

The color on the walls when we first moved in was actually a tinted primer and it was was on every wall.  The problem with primer is that is kind of absorbs oils and such when you touch it and there were several paces that had shiny spots from this.  Jess painted the entire downstairs in almost the same colors as our first house.  She stopped short and only did edging in the kitchen.  I should have known something was up…

One day I come home to find she’s bought a bunch of glass tile and grout. We didn’t really discuss it beforehand in depth, it was one of the many things on the list of things we eventually wanted to get to, but it wasn’t very high on the list. Neither of us had done tile before but it seemed like it might be fun and literally  cost about $250 in total so it wasn’t a hugely expensive project.

Though it took us one and a half complete days (literally like 18-20 hours of work) for the entire tiling job, I think it best to break down the task into several logical subtasks.  I learned a lot while edging the area we planned to tile. The tools required include:

edgingTools

Jess wanted to just start tiling and then use some of the extra tiles to make an edging for the back splash.  I disagreed and wanted a more finished look.  We agreed to try out some edging material and see what it looked like. The edging we got was an extruded aluminum in brushed nickle finish.  The brushed nickle has browner finish to it.  We chose this because while the other walls in the house were painted light gray, the light fixtures were a dark bronze color.  The appliances and interior doorknobs are brushed stainless steel.  The brushed nickle somehow ties all of these together.

We discussed different placements of the edging because the counter tops and upper cabinets were not placed in vertical alignment with one another. We chose in most cases to align the edging with the counter top.  I began cutting the edging for test fitting.  To cut the edging, I used a hacksaw and an aluminum miter box from a hobby shop.  This proved to be invaluable for making accurate 45-degree cuts! Always use a sharp blade and you can put the blade on the hacksaw so it will cut on either the push or the pull stroke of the saw. For this kind of precision work, I find it easiest in most cases to put the blade on so it cuts with the pull stroke.  The way to tell which direction the blade will cut, simply look at the teeth. Usually one side of every tooth is angled with a gentle slope and the other side has a harsher slope.  The harsher slope is the cutting edge.  By flipping the blade in the hacksaw, you can determine which stroke (push or pull) will be the cutting stroke. Typical saws cut on the push stroke, but some saws (especially those used for precision cuts like the Japanese pull-saw) cut on the pull stroke.

TIP: Use a miter box and insert the hacksaw blade such that it cuts on the pull stroke for more precise cuts.

sawteeth

Once the sections were cut, we placed them on the wall.  We chose to edge the entire top of the tiles where they meet with the cabinets.  When tiling, you usually have your tile starting at the bottom of the wall, then tile as high as you can until you hit the bottom of the cabinets above.  Then you cut the tiles to make them fit to the edge of the cabinets. It is usually OK to do this because people don’t usually see that last row of tiles, but in our case the tile we chose was very thin and hard to cut.  When we measured the distance form the counter top to the cabinets, we found we were off by 1/4-inch in some places.  This would make it very hard to cut the tiles lengthwise to fit.   The edging, on the other hand, has about 1/4-inch of space that you can use to make up for any gap.  So we decided to edge under the cabinets as well.

TIP: Edging material can be used to give you a tolerance of 1/4- inch so you won’t have to try to cut tiles length-wise.

We held the edging in place on the wall with tiny tack nails.  The hardest thing about edging was what to do in the corner.  We had to do a miter cut of 45 degrees, but we had to do so on the face of the edging material.  I simply turned the edging material in the miter box so I could cut the angle I needed.

 

In the picture below, you can see the two types of miter cuts. The top one is the cut on the face of the edging (This part if for the corner of the room). The bottom one is just a regular 45 degree miter cut that is used in all other places.

cornerMiterCut
This is a cut on the face of the edging.
normalMiterCut
This is the normal 45 degree miter cut
differentMiterCuts
The top is an example of a face cut, and the bottom is the regular cut.

In the spot under the microwave oven, the cabinet was off by more than 1/2-inch from the counter top.  To fix this without making it look crooked, we simply split the difference.  We angled the edging 1/4-inch to the right on the bottom (at the counter) and 1/4-inch to the left at the top (where it hit the cabinet).  This made it look good on both ends with no excess space and the edging didn’t look obviously out of the vertical.

TIP: When edging, split the difference between places that are slightly not aligned and match the counter top, not the upper cabinets for places that are largely misaligned.

misaligned
This picture is a bit of an optical illusion. The vertical piece looks crooked, but in fact when you see it with the rest of the room, it looks perfectly straight. You can see how the top of the counter and the bottom of the cabinets aren’t aligned.

There is still a lot of work to be done, but the finished edge will definitely help give this back splash a professional look.

Adam-Atom