Posts

Web based GPS NMEA Serial Reader and parser

Check it out:  https://gps.makotosan.com The title is quite a mouthful but I figured that should be a decent description of what I have been working on. Maybe my ability to search the web isn't up to par but I was struggling to find a decent NMEA parser online and the ones that I did find just had you paste text into a box. What I really wanted was the ability to automatically parse the NMEA data coming from my GPS receiver. I also did not want to install a program into my computer so having something web-based would have been ideal.  Instead of trying to find something, I decided to create my own. Check it out for yourself! You'll need a USB-Serial adapter so that you can wire up a GPS receiver to your computer. I found a few on AliExpress and Amazon Haul for less than $5 a piece. One thing I learned is that some of the antennas are poorly soldered and are shorted which causes the GPS receiver to not work. If you're not seeing any output from your receiver, try disconnecti...

Using the BIQU Hermit Crab CAN

Image
I was recently offered to try out the BIQU Hermit Crab CAN.  This was great timing as one of my printers was down due to a bad thermistor cable in the cable drag chain.  I was in the process of removing the wiring and also replacing the drag chain to an open style which allows me to open up each segment and easily add or remove wires.   What is the Hermit Crab? The Hermit Crab is a quick change tool, which allows you to easily and quickly change out your tool. For example, you can change to a FDM extruder, or a laser engraver, or a cutting tool, or whatever you want. The CAN version uses just one USB-C cable (doesn't use USB protocol, just uses that style cable for convenience). The USB-C cable carries the data and power to the hotend. The CAN version has a bunch of nice features such as accelerometer, Neopixel RGB LEDs, and TMC2209 stepper driver. Current setup In this photo, you can see my current setup as I'm in the process of rewiring.  I've got an Orbiter e...

Add business days with moment.js

Date . prototype . addBusinessDays = function ( businessDays : number ) { // 5 business days in a week const weeks = Math . floor ( businessDays / 5) ; // Convert business days (5 days in a week) to regular days (7 days in a week) const days = weeks * 7 ; const date = moment ( this ) ; // Convert the incoming date value to a moment value. const newDate = moment ( this ) . add ( days + ( businessDays % 5) , 'days' ) ; if ( newDate . day () < date . day () || newDate . day () % 6 === 0) { // Add 2 more days if we land on a weekend, or we went through a weekend. newDate . add (2 , 'days' ) ; // .add is not pure and will change the underlying value } return newDate . toDate () ; } ;

Leading zeros in SQL

So at work today, I ran across a SQL stored procedure called 'fixLeadingZeros' that has the below implementation. It's actually much longer than this since it does it for several columns.... and some columns have longer values. In other words, if the field is supposed to have 8 digits, it has 8 statements.  I couldn't help but to feel a bit disgusted from it and had to share it. UPDATE [SomeTable] SET SomeColumn = '0' + [SomeColumn] WHERE len (SomeColumn) =4 UPDATE [SomeTable] SET SomeColumn = '00' + SomeColumn WHERE len (SomeColumn) =3 UPDATE [SomeTable] SET SomeColumn = '000' + SomeColumn WHERE len (SomeColumn) = 2 UPDATE [SomeTable] SET SomeColumn = '0000' + SomeColumn WHERE len (SomeColumn) =1 UPDATE [Some] SET SomeColumn = '00000' WHERE SomeColumn ='' OR SomeColumn is null This could have been done a LOT easier.  If your goal is to update existing columns so that t...

Properly disposing COM objects in your .NET code

Here at work, we are using a third party component where they provide a COM interface. We're using .NET code so we are using COM interop to use the COM object. Remember back in the VB6 days when you would set your objects to null when you're done with it? Well, so did someone else here, because that's what I saw. I'm going to show you an example using the Microsoft Excel Type Library. Here's some sample code that I wrote that will open up an Excel file and get the text value from a cell in the first worksheet.      using  System;      using  Microsoft.Office.Interop.Excel;      internal   class   Program     {         #region  Methods          private   static   void  Main( string [] args)         {     ...

Debugging .NET Windows Service apps more easily

Image
Here at work, I keep seeing a couple of my fellow developers struggle to debug their Windows Service apps that they're writing.  What they have to do is remove the service, install the new version of the service, start the service, then attach the debugger. If there's an error when the service first starts up, the workaround is to introduce a Thread.Sleep before it actually does anything, giving you enough time to attach the debugger. By default, you can't directly run the service from within Visual Studio. If you try, you get the following message: If you look at the code that actually starts the service, you'll see that it's not that different from a console app. By default, it looks something like this:      internal   static   class   Program     {          ///   <summary>          ///  The main entry...

Stepping out of my comfort zone, trying different languages and web frameworks.

For the longest time, I've been developing on the Microsoft technology stack, with ASP.net MVC using C# for web application development, WCF for web services, MS SQL server for the database, and of course, Windows and IIS for the OS and web server. But I then started asking myself... is this the best way to develop? What are some of the other languages and web frameworks like?  Easier? Harder? I knew I didn't want to really mess around with PHP, just because I don't like how the code feels like spaghetti code of classic ASP.  Another reason for not going PHP is due to performance benchmarks. Here's a neat site that shows how programming languages compare in performance: http://shootout.alioth.debian.org/u64q/which-programming-languages-are-fastest.php I decided to try out the Python language, using the Django web framework thinking that it would perform fairly quickly due to the fact that it creates "compiled" files, but found that simple web pages r...