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

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

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

Doctoral Dissertation or Master’s Thesis Template

I’ve already mentioned one good tool for research papers, so here’s another that might be helpful.

Most schools have a set format for their dissertations and theses. My school was the same.  They provide a manual showing what they expect your formatting to be.  Many people have trouble with this. You must make a meeting with a specific faculty member in the graduate school and she will take a ruler and measure your margins, and go over in extreme detail the spacing, numbering, etc. of your document. Many many people get rejected and I’ve even talked to people who pay lots of money for other people to format the documents for them.  They don’t provide an exact template for any specific software, but using the google machine can help you find Microsoft Word or LaTeX tempaltes.  Personally, I like LibreOffice it is completely cross-platform (works on windows, mac, and linux systems)  completely free, open source, has lots of great plugins and it lives in the world between Microsoft Windows and LaTeX. It is GUI-based (WYSIWYG, visual) like Microsoft Word, but also much more powerful like LaTeX.   I dislike LaTeX because it is incredibly buggy and you have to program your text documents.  I program other stuff all day long, I am sick of that!

Anyway, I made my own template and write up a very detailed explanation on how to use it and my best tips and tricks for modifying the basic template if you want.  I also have a chart of suggested plugins to make your papers look amazingly good and professional. Again, I used LibreOffice, so it can be used in OpenOffice as well. This is specific to my school, so be sure you double check your school’s documents to see exactly what kind of margins and page numbering they require.  (Note it is in Open document Format and though I haven’t tested it, it *might* work in other programs like Microsoft Word).

Download my template here!

Adam-Atom

Easily get Public Link for Dropbox Files in Linux

I got tired of going to the dropbox website to find the public link for files I put in the Public folder.  On Windows you can simply right click–>get Public link, but I’m running LinuxMint with Dropbox version 2.0.22 which doesn’t support this (among many other things like Pausing a sync…)

Anyway I wrote a script that you can just drag your files onto and it’ll pop up a box showing you the public link.  In Linux, a script alone can’t do this, but a script and a .desktop file can call a script to do it.  Here’s what I got:

Save the following in a text file called “getPublicLink.sh” inside your Dropbox/Public folder.  Make sure it has permission to run (right-click the file–> properties –>permission and check the box to allow it to run)

#!/bin/bash
publicLink=$(dropbox puburl $1)
zenity --info --text $publicLink

Now create a new text file named “Get Public Dropbox Link”.  Paste the following there, be sure to change your username, mine says “adam” yours does not and this will make it not work. Save it in the Dropbox/Public folder and give it permission to execute as well. Here’s the file:

[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Terminal=false
Exec=/home/adam/Dropbox/Public/getPublicLink.sh
Name=My Application
Icon=/usr/share/icons/hicolor/48x48/status/aptdaemon-update-cache.png
#Required for double-click running and Drag-andDrop files into this icon.
#reference: http://linuxcritic.wordpress.com/2010/04/07/anatomy-of-a-desktop-file/
Name[en_US]=Get Public Dropbox Link

 

Now you can  simply drag files from your public folder on top of the “Get Public Dropbox Link” file and a window will pop up showing you the public link. from here, simply copy and paste that link to where ever you need.

Information_903

 

Adam-Atom