Generated by All in One SEO v5.0.0.1, this is an llms.txt file, used by LLMs to index the site. # GIASSA.NET Engineering, DIY, and Everything Else ## Sitemaps - [XML Sitemap](https://www.giassa.net/sitemap.xml): Contains all public & indexable URLs for this website. ## Posts - [News](https://www.giassa.net/?page_id=17) - A summary of the independent engineering projects I have spearheaded over the years. - [Added more woodworking projects](https://www.giassa.net/?p=1332) - It's been quite a while since my last past. Numerous woodworking projects have been added over the past year. - [Bowyery and other sections online](https://www.giassa.net/?p=1160) - I just finished the bowyery section last weekend, and have added the requested code sections on stacks and linked lists. - [New projects added](https://www.giassa.net/?p=876) - A good while back I started taking part in the Eudyptula Challenge and the Matasanto Crypto Challenge both as a personal test and to further broaden my development background. For anyone with a couple cycles to spare and an interest in core Linux kernel or security development, I strongly advise you to consider taking part - [Revising image processing tutorials](https://www.giassa.net/?p=840) - The image processing tutorials started off as a work of passion and interest in the field of image processing. Then I got a job in hard real-time OS and acoustics development, and work on this page has stagnated to a total halt. I'll be revising the tutorials and will finally finish all the outstanding chapters. - [Donating Microchip PIC32mx/PIC24F Chips + Headers to SFU Students in ENSC305 / ENSC440](https://www.giassa.net/?p=806) - Good day ladies and gents, As part of independent work, I have hand-soldered and tested (at 40 minutes per chip) a bunch of the following chips to SMT (surface mount) to through-hole (ie: SPDIP) adapters with Microchip PIC chips. I now have several spares of the following: PIC24FJ64GB002 (16MHz, 28 pins, USB HOST/OTG capable) - [Website Overhaul ](https://www.giassa.net/?p=804) - I realize it has been a looooooong time since the last update. I have been effectively putting in my usual 80+ hours per week between work and school (only a couple more months from that Masters of Applied Science), but I'm getting some downtime soon, and am looking forward to bringing the image processing tutorials - [Updating image processing tutorials](https://www.giassa.net/?p=778) - I have temporarily taken my image processing tutorials offline, as there have been several LaTeX rendering issues lately. I will be updating the MATLAB code in my tutorials, and will be re-releasing them in a few months when I have time to work on them. - [A conference paper](https://www.giassa.net/?p=739) - Sadaphal, Pankaj; Shuo Liu, Matthew Giassa, Mirza Faisal Beg. “Retooling and Improvement of Routine Smear Microscopy using Image Processing Algorithms”, ICGEB International Tuberculosis Symposium, Dec. 16th, 2010, New Delhi, India - [More Image Procession Tutorials](https://www.giassa.net/?p=728) - I've been working on a few papers lately, and had to take some time off of working on the site. Before the summer is up, I'm aiming to put up several tutorials on Fourier domain filtering with respect to images, along with some sample applications in MATLAB to play around with. On another note, finally - [ThunderVoice Plugin Nearing Completion; Releasing ThunderBird-Java Connectivity Tutorial](https://www.giassa.net/?p=564) - My ThunderVoice extension for Mozilla Thunderbird, as the post heading mentions, is almost complete. I should be releasing the XPI file within the month for others to enjoy, and will be submitting it for review so that it can be found via the Mozilla Plugin Finder. The final result is a quick, lightweight, and easy-to-use - [Voicemail over e-mail via Thunderbird](https://www.giassa.net/?p=558) - I am nearing completion of a project I have been working on over the past few months: ThunderVoice. A full project description and links can be found here. Basically, this extension allows you to send recorded audio clips from your microphone as compressed MP3 attachments quickly and easily using the Mozilla Thunderbird e-mail client. Enjoy! - [PIC24F Tutorials Resumed](https://www.giassa.net/?p=513) - Amidst e-mails from colleagues, classmates, and people reading this blog, I will resume my PIC24F tutorial by early February, and will manage to get at least 5 major sections completed. By the time my PIC24F tutorial are done, they should serve as a complete, concise, and detailed tutorial on learning how to program PICs from - [Getting Juniper Network Connection working in Linux](https://www.giassa.net/?p=192) - As an avid Slackware enthusiast since version 3, I've been using it as my primary OS for more than 7 years now. One problem I've come across lately was getting my VPN client working on it. I've pulled it off on OSX Leopard, and Windows XP through Win7. After going through several guides on the - [I've officially been published](https://www.giassa.net/?p=190) - The abstract is online now. This is one big step for me. Applications for Low Frequency Impedance Analysis Systems http://www.springerlink.com/content/k7897184m1371682/ Abstract We present methodology and instrumentation used to carry out and log automated multiple electrical impedance measurements using multiplexed control. We also address the issue of measurement error introduced by the instrumentation, and demonstrate how - [Ken Spencer Competition - 3rd Place](https://www.giassa.net/?p=141) - Well we pulled through and ranked in the Ken Spencer busisness competition, excellent news for my team and I. We'll be improving on our current business plan and entering it in the Enterprise Canada competition. Still going strong. Looks like the schematics stay with us. I'll be sure to put some PWM and ADC tutorials - [Our new hearing aid, just in time for the Ken Spencer competition.](https://www.giassa.net/?p=136) - Here is our latest and greatest revision to our original design. We're aiming to make it a bit smaller yet. The device is technically an ITC (in the canal) device, with the controls located behind the ear, though it doesn't qualify as a BTE (behind-the-ear) device. The final revision will implement multiple memory slots so - [A $10 (CAD) hearing aid...](https://www.giassa.net/?p=124) - But its closest equivalent is sold at much more. Wish us best at the Ken Spencer competition. In the meantime, the CAD, C-code, assembly code, and a few more DIY instructions should go up soon. Hopefully such a simple device goes far. On the plus side, this implementation also includes a playback feature, so that - [Publication in JETTA](https://www.giassa.net/?p=115) - The EIT system my colleagues and I developed is now being published in JETTA: http://www.springerlink.com/content/0923-8174 This is fantastic news for me. - [WiiMote Multi-Touch Whiteboard](https://www.giassa.net/?p=98) - Inspired by the original project at http://johnnylee.net/projects/wii/ , I decided to try this out for myself. The results were great. For a little under $5 worth of parts from Digikey, I was able to implement a few whiteboard pointers. Although the circuit is really simple (a current limiting resistor should really be put in place) - [Automated SPA Analysis](https://www.giassa.net/?p=91) - Well, time for another project to chew up whatever free time I have lately. This was a fun h/w interfacing project. Another GUI and DAQ setup really, this allows for rapid measurement and data acquisition though an HP4155C semiconductor parameter analyzer (SPA). The GUI is straightforward, and built to run on Linux (Slackware of course). - [Control any GPIB Interfaced Device via USB with Linux](https://www.giassa.net/?p=82) - As part of an ongoing project to allow an Agilent/HP 4192A low frequency impedance analyzer to communicate with a modern netbook or PC via USB, I designed a generic interface class that allows any application designer to control his or her old instruments, such as DMMs, SPAs, and so on, using a ProLogix GPIB controller - [Slackware 12.2 Linux on an SDHC Card on a Dell Mini 9 Netbook (w/ Windows XP already installed)](https://www.giassa.net/?p=70) - Some time back I managed to get a hold of a shiny new Dell Inspiron Mini 9 Netbook. It's been a great tool, helping me with my day-to-day work considerably. The only downsides to this device are that it comes with a maximum of 1GB RAM installed, and the largest available solid state drive I - [Wireless Ultra-Small Solar Panel Charge Controller Interface (w/ Integrated Web Server)](https://www.giassa.net/?p=55) - Earlier in the year I had to finally take my engineering capstone course. This involves forming a team of at least 4 engineering undergraduate students, deciding on a commercially viable product that could be designed to improve on some existing method or system, and implement it, along with providing all details. One of our team - [MRI Analysis Suite](https://www.giassa.net/?p=48) - After taking a course in biomedical signal and image processing, I took a strong interest in MRI and CT analysis techniques. As part of independent research, I have taken on an interesting project: designing an entire MRI analysis suite. Most of the project is done in MATLAB, but as development continues, I may consider rewriting - [Breast Cancer Screening System via EIT](https://www.giassa.net/?p=35) - Not even two months before I completed my work designing an interface for the impedance analyzer used at the SFU Microinstrumentation Laboratory, I jumped on board with a project involving SFU and BC Cancer Agency, utilizing an impedance analysis system as a possible cancer screenin system. Taking the impedance analyzer, a small netbook, my existing - [Impedance Analyzer Automation System](https://www.giassa.net/?p=29) - Over the past year I have been doing a considerable amount of research in the field of biomaterials and electrical impedance tomography (EIT). EIT allows for an impedance map of a material under study to be generated rapidly using an impedance analyzer or similar instrument. I have since produced a conference paper on this subject - [Welcome](https://www.giassa.net/?p=8) - Welcome to my blog ## Pages - [About](https://www.giassa.net/) - Contact: Matthew Giassa, MASc, BASc, EIT E-mail: at dot LinkedIn: ca.linkedin.com/in/giassa/en This site: This is my personal blog. Here you can find out about past and current engineering projects of mine, including image processing, embedded design, and my current hobbies. It is NOT designed to help people skip through homework assignments by simply copying-and-pasting - [DISCLAIMER](https://www.giassa.net/?page_id=163) - The information contained in this website is for general information purposes only. The information is provided by GIASSA.NET and while we endeavour to keep the information up to date and correct, we make no representations or warranties of any kind, express or implied, about the completeness, accuracy, reliability, suitability or availability with respect to the - [Brain Venctricle Analyzer](https://www.giassa.net/?page_id=1144) - As part of an extracurricular project, I designed a MATLAB script to located the ventricles of the brain in MRI images. For the sake of simplicity, let's assume an MRI image can be broken down into four categories in terms of voxel data: White matter (WM) Grey matter (GM) Cerebrospinal fluid (CSF) Non-tissue (ie: areas - [Bowyery](https://www.giassa.net/?page_id=880) - [Maze Generation & Solving](https://www.giassa.net/?page_id=1031) - Generating and solving a 2D maze is a surprisingly simple task. In order to first create a maze with a single unique solution, we define a maze, , with dimensions by , to be an array of "cells", which have four "sides". Each side is a set of parameters: Border: whether or not that side - [Algorithms](https://www.giassa.net/?page_id=1075) - [Challenges & Competitions](https://www.giassa.net/?page_id=1078) - [Base64 Encoder](https://www.giassa.net/?page_id=1080) - From Wikipedia: Base64 is a group of similar binary-to-text encoding schemes that represent binary data in an ASCII string format by translating it into a radix-64 representation. The term Base64 originates from a specific MIME content transfer encoding. Base64 encoding schemes are commonly used when there is a need to encode binary data that needs - [Software Projects](https://www.giassa.net/?page_id=1083) - [Stacks](https://www.giassa.net/?page_id=1116) - A stack is a simple abstract data type with a small number of operations: Push: put a new element on the top of the stack. Pop: remove the top-most element on the stack. Peek: take a look at the element on the top of the stack without removing it. The key principle behind the stack - [Linked Lists](https://www.giassa.net/?page_id=1120) - A linked list is a data structure composed of "nodes". Each node contains, at the minimum, a piece of data, and a pointer to another node. It is a FIFO structure (First In, First Out), but unlike a stack, some implementations allow the insertion and removal of elements in the middle of the structure rather - [Heavy Pyramid Bow](https://www.giassa.net/?page_id=1123) - This is one of my favorite DIY bows. It's a pretty heavy bow, with 72lbs @ 28.5" draw weight, just firing off a few arrows is a workout in itself. It's made from a single piece of BC red oak, has buffalo horn scales on the tips, and is backed with sinew and hide glue. - [Heavy Longbow](https://www.giassa.net/?page_id=1125) - One of my earlier designs, it draws 60lbs @ 29". Made from a choice piece of hickory, and backed with snakeskin, it fires at a slightly lower speed than I'd hoped, which is likely due to the massive limbs on it. Still, a fun project and a successful design overall. - [Bumblebee](https://www.giassa.net/?page_id=1127) - A smaller bow, and categorically a toy. I made this one for one of my nieces based on the design of my heavy pyramid bow. It's made of a single piece of BC red oak, and owes its name to the slight smell of honey from the beeswax applied to the sinew backing to waterproof - [Systems](https://www.giassa.net/?page_id=1129) - [Breast Cancer Screening Device](https://www.giassa.net/?page_id=1131) - As part of extracurricular work I carried out in my undergraduate program, I designed a non-invasive system for screening for breast cancer in humans. First, we start out with an electrical impedance measuring device connecting to a multiplexing and control circuit I designed to work with a PC via a graphical user interface. The - [Matasanto Crypto Challenge](https://www.giassa.net/?page_id=869) - The Matasanto Crypto Challenge is a series of exercises to gain familiarity with cryptography development practises in general, and broadening one's appreciation of the importance of secure software design. As described on the author's site: We've built a collection of 48 exercises that demonstrate attacks on real-world crypto. This is a different way to learn - [AcousticAid](https://www.giassa.net/?page_id=1154) - Towards the end of my undergraduate program, a group of students and I took part in a business/engineering crossover course. The final goal of the course was to prepare a compelling business plan to a group of business professionals who volunteered their time to act as judges in the final presentations for our course, and - [SolarMax Wireless Charge Controller](https://www.giassa.net/?page_id=1158) - In the SFU engineering science program, all students are required to complete a Capstone Engineering Project, which is a course that is a full-time endeavour on its own. My colleagues and I were fortunate to be sponsored by Analytic Systems to design a wireless communications device that could relay data read from a serial port - [Beer](https://www.giassa.net/?page_id=1163) - As with most fermentation processes, the primary ingredients are (clean) water, yeast, flavoring, and a source of sugar which is consumed by the yeast and converted into CO2, alcohol, and a number of other chemicals. With beer, the sugar source is extracted from partially germinated barley, which is toasted to arrest the germination process after - [Mead](https://www.giassa.net/?page_id=1190) - Having watched my grandfather making wine countless times as a youth, making mead was even more intuitive to me than brewing beer. Just take a sugar source, add it to clean/treated water, some yeast and flavoring, and you're off to the races. Having helped with a number of batches of wine, I figured I'd take - [Largest Sub-Square in a Binary Array](https://www.giassa.net/?page_id=1203) - Based on the "largest square in a histogram" problem (shown below), the goal is to analyze a binary 2D array consisting of ones and zeroes, and find the largest square section of the array that contains ones. This is useful for a number of tasks in statistics and image processing. Using a "waterfall" incrementing - [Woodworking](https://www.giassa.net/?page_id=1219) - ["Thomas the Tank Engine" styled wagon](https://www.giassa.net/?page_id=1221) - My little guy, 18 months at the time I started this, was a big fan of Thomas the Tank Engine. With his plastic store-bought wagon broken due to a damaged wheel, I figured we could make something far more entertaining out of some SPF planks. First, a 2' x 5' frame (outer dimensions) using 2x4's, - [Heavy duty workbench](https://www.giassa.net/?page_id=1265) - When I finally moved into my first place with a garage, the first project I set out to finish was a heavy duty bench that could handle any project I threw at it. I ended up deciding on a 3.5" thick bench top at roughly 30" deep by 6' long. So, time to cut some - [Ana White "Tryde" Coffee Table](https://www.giassa.net/?page_id=1277) - This was my take on the "Tryde" coffee table. Credits for the design go to Ana White (Tryde Coffee Table, , last accessed 2016-08-08). The plans were very straightforward, though one should carefully plan the location of the countersunk pilot holes to join the end runner with the leg posts, and the side aprons to - [Christmas Stocking Holder](https://www.giassa.net/?page_id=1294) - This was a quick project. Maybe took an hour to square a few boards, round the edges on some of them with a plunge router, and attach some knobs. From there, a stain and some poly, and now we have a nice Christmas stocking holder that can handle the weight of copious amounts of chocolate. - [Transforming Art Box & Easel](https://www.giassa.net/?page_id=1308) - This was a fun gift to make for one of my nieces, who is always painting something every time I visit. This is a combination of a "diary box" for her art projects (and brushes, paints, etc), which converts into a bench-top easel with extending legs that come out of the bottom. Took longer that - [General Construction](https://www.giassa.net/?page_id=1324) - DIY has always been a passion of mine, as is shown in a number of my technical hobbies such as circuit board design, software design, and so on. One hobby that I've had a chance to get into over the past few years has been bowyery: designing and crafting traditional bows from scratch. My primary - [III - Gamma Correction](https://www.giassa.net/?page_id=475) - A tutorial on gamma correction. - [Papers & Publications](https://www.giassa.net/?page_id=3) - A collection of journal and conference papers that have been presented and/or published. - [Image Processing Tutorials](https://www.giassa.net/?page_id=118) - A collection of free image processing tutorials for people seeking to understand the underlying concepts of this complex and interesting subject. - [0 - The Basics](https://www.giassa.net/?page_id=169) - A basic tutorial on simple image processing operations. - [1 - Downsampling](https://www.giassa.net/?page_id=174) - A tutorial on downsampling (ie: shrinking) an image. - [2 - Upsampling & Interpolation](https://www.giassa.net/?page_id=200) - A tutorial on upsampling/resampling and interpolation with respect to image processing. - [I - Nearest Neighbour Interpolation](https://www.giassa.net/?page_id=207) - A tutorial on nearest neighbour interpolation. - [5 – Image Noise & Spatial Domain Filtering](https://www.giassa.net/?page_id=237) - Now we've arrived at a very common and practical use for image processing - noise removal. Oftentimes in scientific research and even seemingly simple projects, we are presented with imperfect data or images that contain a variety of artifacts due to imperfections in the equipment in use, or outside disturbances from the surrounding environment. The - [II – Bilinear Interpolation](https://www.giassa.net/?page_id=240) - Before we proceed with bilinear interpolation and its applications in image processing, let's review some high school algebra. If we have a set of two data points, $latex x_a$ and $latex x_b$, as shown below ($latex x_a=2 x_b=3$), the function value $latex y=f(x)$ at these points can be defined as: $latex y_a = f(x_a)$ $latex - [III - Bicubic Spline Interpolation](https://www.giassa.net/?page_id=274) - A tutorial on bicubic spline interpolation: a special case of bicubic interpolation. - [IV - Generalized Bicubic Interpolation](https://www.giassa.net/?page_id=371) - A tutorial on the general concept of bicubic interpolation. - [3 – Histograms, Statistics, & Single Pixel Operations](https://www.giassa.net/?page_id=411) - A collection of tutorials on statistical methods and their applications with respect to image processing. - [I - Histograms & Statistics](https://www.giassa.net/?page_id=470) - A tutorial on the application of statistical analysis to image processing. - [II - Contrast Adjustment & Image Normalization](https://www.giassa.net/?page_id=472) - A tutorial on correcting an image's intensity values to handle contrast, brightness, and so on. - [Homebrewing](https://www.giassa.net/?page_id=878) - This section is not intended as a tutorial of any sort, and is just a brief summary of my endeavours over the past years involving homebrewing. - [IV - Logarithmic Transformation](https://www.giassa.net/?page_id=477) - A tutorial on logarithmic transformations. - [V - Error Vectors](https://www.giassa.net/?page_id=479) - A tutorial on error vectors and error analysis. - [ThunderVoice](https://www.giassa.net/?page_id=553) - ThunderVoice is an extension for Mozilla Thunderbird. It adds a button to the message composition toolbar so that users can quickly record a voice memo and attach it to a new message or any other message composition, such as when one replies to or forwards an existing e-mail message. This was designed so that anyone - [4 - Spatial Convolution Masks](https://www.giassa.net/?page_id=584) - A tutorial on convolution masks with respect to image processing. - [I - Basic Masks](https://www.giassa.net/?page_id=588) - Working with simple convolution masks, and dealing with possible limitations that commonly arise in their use. - [II - Special Masks and Edge Detection](https://www.giassa.net/?page_id=590) - A tutorial on advanced convolution mask topics. - [I - Salt & Pepper Noise - Non-Linear Filtering](https://www.giassa.net/?page_id=635) - A tutorial on salt and pepper image noise, and how to remove it - [II - Gaussian Noise - Linear Filtering](https://www.giassa.net/?page_id=637) - A tutorial on removing Gaussian noise from an image. - [III - Adaptive Filtering](https://www.giassa.net/?page_id=639) - A tutorial on removing image noise using adaptive filters to reduce error introduced by the filtering algorithm. - [Finding "holes" in a sorted list of numbers](https://www.giassa.net/?page_id=1215) - Suppose you have a long list of numbers, which increases by 1 for each item in the list, ie: 1, 2, 3, 4, 5. Now suppose an element is missing from the list, say, 3. Now the list is: 1, 2, 4, 5. Now consider a list that is millions of elements long. How do - [Projects](https://www.giassa.net/?page_id=865) - [Eudyptula Challenge](https://www.giassa.net/?page_id=867) - From the challenge author's site: The Eudyptula Challenge is a series of programming exercises for the Linux kernel, that start from a very basic "Hello world" kernel module, moving on up in complexity to getting patches accepted into the main Linux kernel source tree. I am currently taking part in this challenge, and expect ## Categories - [Biomedical Engineering](https://www.giassa.net/?cat=3) - [Computer Engineering](https://www.giassa.net/?cat=4) - [novelty](https://www.giassa.net/?cat=5) - [Papers & Publications](https://www.giassa.net/?cat=6) - [IEEE](https://www.giassa.net/?cat=7) - [general](https://www.giassa.net/?cat=8) - [Image Processing](https://www.giassa.net/?cat=9) - Projects and such related to image processing and manipulation - [Linux](https://www.giassa.net/?cat=10) ## Tags - [hp](https://www.giassa.net/?tag=hp) - [agilent](https://www.giassa.net/?tag=agilent) - [4192a](https://www.giassa.net/?tag=4192a) - [4155c](https://www.giassa.net/?tag=4155c) - [daq](https://www.giassa.net/?tag=daq) - [data acquisition](https://www.giassa.net/?tag=data-acquisition) - [wii](https://www.giassa.net/?tag=wii) - [wiimote](https://www.giassa.net/?tag=wiimote) - [bluetooth](https://www.giassa.net/?tag=bluetooth) - [whiteboard](https://www.giassa.net/?tag=whiteboard) - [multitouch](https://www.giassa.net/?tag=multitouch)