I have had a minor annoyance with my 3D printer that it skews the print in the X/Y place and will print a cube as a bit of a parallelogram instead. This is not that the X or Y are misaligned, the sizing is consistent, there is just a skew. After some research I found a solution in the slicer instead of manual tweaking the frame or flashing the firmware.
This is my personal blog and mainly contains technical solutions, open source code, and other projects I have worked on. Much of the technical solutions are very niche so your milage may vary.
Thursday, November 1, 2018
Wednesday, May 2, 2018
Monoprice Select V2 3D Printer Customizations
I have a Monoprice Select V2 3D printer. This is just a few notes and recommendations for the modifications and part's I have customized it with to get improved print speed, reliability, and quality.
Monday, January 8, 2018
Creating FreeBSD images in Google Compute
I found various instructions to create a FreeBSD image in Google Compute but non of those instructions where complete of functional. Here are the correct instructions.
Wednesday, November 8, 2017
Shrink PDF Files in OS X and Control Image Quality
This guide is using information from here and providing clearer instructions and a Automator script to compress many at once.
- Go here and click the green Clone or download button, then select Download ZIP.
- Go to Downloads on your computer and rename the downloaded folder to Filters.
- Make a new Finder window (Command+n) and then hold Option while clicking Go -> Library in the menu.
- Drag the Filters folder with he files you downloaded into this new Library folder.
- Download this program to your Applications folder or Desktop.
- Now you can just all your PDF's files at once and drop them onto the application and it will compress them and save the compressed versions to your desktop.
Thursday, August 17, 2017
Connecting to MySQL Server from a Microsoft SQL Server
This seams to me that connecting MySQL and Microsoft SQL databases is something that should be simple to do. Unfortunately looking around online there was no real clear directions or even indications that this was possible without buying some additional drivers. While fear not because this does work out of the box without needing to buy any additional software on pretty much any versions of the two databases.
In short what we will do is add a MySQL ODBC driver, configure a System DSN using that driver, Link MsSQL to that DSN connection, and to do a few test queries and updates. This will allow full insert, update, and delete commands.
In short what we will do is add a MySQL ODBC driver, configure a System DSN using that driver, Link MsSQL to that DSN connection, and to do a few test queries and updates. This will allow full insert, update, and delete commands.
Friday, July 21, 2017
Netflix to Trakt.tv Sync
Update Details Below. Note that if the dialog shows an older version you may need to recreate your bookmarklet.
Also note that this will probably only work in English, though you may be able to temporally change your language on Netflix to get the sync to work.
There used to be a nice Chrome plugin to synchronize by Netflix history with Trakt.tv but it had been unreliable and doesn't seam to be working now. I wrote this code to solve my own need but it does the same thing and I am posting it here for others to use.
Note that this is not 100% perfect as some show names aren't exactly the same and some Netflix show's don't use episode names at all. This code it not using any Netflix API calls but rather just scraping your Viewing Activity page and then making API calls to your Trakt.tv account to post the item's it finds.
Also note that this will probably only work in English, though you may be able to temporally change your language on Netflix to get the sync to work.
There used to be a nice Chrome plugin to synchronize by Netflix history with Trakt.tv but it had been unreliable and doesn't seam to be working now. I wrote this code to solve my own need but it does the same thing and I am posting it here for others to use.
Note that this is not 100% perfect as some show names aren't exactly the same and some Netflix show's don't use episode names at all. This code it not using any Netflix API calls but rather just scraping your Viewing Activity page and then making API calls to your Trakt.tv account to post the item's it finds.
Monday, June 19, 2017
Restricting Access at in Varnish Server Wide to Admin Areas
There are lots of ways to implement access controls and additional security on your hosting. I recently implemented a very restrictive but easy to manage implementation for our FreeBSD server that runs everything through Varnish. I could have placed this restriction in Apache via .HTACCESS files or global rules but placing them in Varnish they execute earlier and have less server overhead and ensure there are no caching related flaws.
Read XML Sitemap to a CSV File
You may need to process a sitemap for redirects or get a list of all your pages for some testing or monitoring process. Here is a simple script you can run to convert your sitemap to a CSV file. It even supports multi-file sitemaps.
Monday, February 6, 2017
Configure SSL Termination with Varnish Caching and HTTP/2
To create the fastest web pages possible in a LAMP stack can be a bit tricky. This document covers configureing blazing fast HTTPS sites on Freebsd with Apache,
Varnish, Nginx, PHP, Mysql and letsencrypt.sh. Of course you can swap out the PHP/Mysql parts as needed, or even use your own certificates instead of lets encrypt.sh as you need.
Monday, January 30, 2017
Easily post leads in Wordpress Fast Secure Contact Form Plugin to iContact
When using the Fast Secure Contact Form plugin for wordpress is is very very simply to seamlessly forward leads from any forms you wish to the iContact platform with very little configuration.
Tuesday, November 1, 2016
Guide to Custom Database Access in Umbraco 7 With Built in PetaPoco
Though there are a lot of ways to write custom database code, and in many place in Umbraco custom tables my no be needed as the CMS can handle most any custom data needs. There are reasons and use cases for using custom database tables and code including:
Though there are a lot of ways to do the database code and everyone has their own preferences, this guide is using the same PetaPoco system that Umbraco uses internal. This has a few key benefits:
- Reading data from external systems.
- Large datasets that we don’t want to clog out cache’s and Umbraco tree with.
- Performance sensitive querying where the Document -> Property models setup may not be preferable.
- Complex cross-joins and many-to-many relationships that may not be easy to replicate in Umbraco.
- Customer data, log data, or “write once” style form submissions where the data need not be in Umbraco trees.
- Data that may need to be easily accessed from external systems.
- They can also use public Web API methods or custom views that read from the Umbraco core tables but writing data this was it less safe.
Though there are a lot of ways to do the database code and everyone has their own preferences, this guide is using the same PetaPoco system that Umbraco uses internal. This has a few key benefits:
- Very lightweight system yet powerful.
- Fully compatible with Umbraco models, methodologies, and serialization.
- Easy to implement and generate models.
- All code is using existing database code already present in the Umbraco Core to minimize overhead.
Monday, October 31, 2016
Guide to using Strong Typed PublishedContnetModels in Umbraco 7
The recent Umbraco 7.4 release there is an included Model Builder tool. This may not seem like a big deal but it can be very helpful to developers and I recommend embracing it. In essence what it does it let you generate strong typed models in .Net based off your Document Types and Media Types and their hierarchy. This can be done a few ways including at runtime in memory or with pre-compile DLL’s. Then in Views, Macro’s and Controllers these strong typed models can be used instead of normal code to reduce potential coding errors and typos, and to provide IntelliSense in Visual Studio if you do editing there. These changes for the most part are non-breaking and the old style can still be used.
In short if will replace the first example template with the second.
This article describes the following approach: Generating C# models in the live Umbraco Instance and then pulling them down into the generated models down into the source Visual Studio Project and pre-compiles them there in the main application DLL. This has some major benefits over other approaches including:
In short if will replace the first example template with the second.
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@Model.Content.GetPropertyValue(“myProperty”)
@(Umbraco.Media(CurrentPage.myImage).umbracoFile)
@Model.Content.GetPropertyValue(“myProperty”, true, “Missing”)
@Umbraco.Field("myProperty ", recursive: true, altFieldAlias: "defaultProperty")
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage<DocumentType>
@Model.Content.MyProperty
@(((Image)Model.Content).MyImage.UmbracoFile
@Model.Content.GetPropertyValue(s => s.MyProperty, true, “Missing”)
@Model.Content.GetPropertyValue(s => s.MyProperty, true, Model.Content.DefaultProperty)
This article describes the following approach: Generating C# models in the live Umbraco Instance and then pulling them down into the generated models down into the source Visual Studio Project and pre-compiles them there in the main application DLL. This has some major benefits over other approaches including:
- All code is pre-compiled and no generation or compilation is happening when the website is actually running or starting up.
- Models generation isn’t dependent on IIS Express and you don’t have to do desin work there or start up slow projects to manually create models.
- Models are generated the same place you edit the document types and generated automatically.
- Models are partial class’s that can be extended and can implement custom interfaces as needed.
- There is no need for any special visual studio plugins or deployment rules to make this work. All parts described will work on any Visual Studio Editions.
Wednesday, October 26, 2016
Removing Double Redirects or Redirect Chains form .htaccess files.
If you manage and large site using mod_rewrite or ISAPI_Rewrite 3 you will eventually run into issues maintaining the rewrite rules. After doing a few redesigns or moving things around repeatedly you can end up with situations where one page redirects to another page then another and so on in a chain. This is functional but inefficient, it can have a negative effect on user experience and on SEO value, and makes everything harder to maintain. This tool is a simple script you can pass you
.htaccess file through to remove all these multi-step redirects and all pages redirect immediately on the first redirect to the final destination page.Tuesday, October 25, 2016
Steam won't connect on mass Sierra 10.12
I was running into this odd issue after upgrading to OS X 10.12 and nothing I would do seamed to resolve it. Tired tracking down error messages, reinstalling steam, changeling to beta and back, and other fixes. Ended up doing the following fix which straightened everything out.
Monday, December 28, 2015
Quick and Dirty OCR on OS X for Free
Wait, Stop, Don't spend that $80+ on some fancy OCR software just yet. There are some free open source tools out there and with a bit of work you can have very functional workflow using them and OS X. This guide will help you set up an applet you can drop images onto to OCR them to plain text. This will not create PDF's, formatted, or indent documents, but rather just one large text block that is structured the same as the source text with line breaks. The following tools are used, but instructions are provided below so you don't need to download anything from the sites.
Friday, December 4, 2015
Bookmarklet to Post to Slack from your Bookmarks Bar
I use Slack, and one think we love to do is share new articles and discuss them. But the good old copy and past the link was annoying me, so I created a Bookmarklet that will share your current page to a selected channel.
Monday, October 19, 2015
Fix for Pillars of Eternity Blank Screen on OS X
Here is a quick fix for the blank/non-responsive screen in when going full screen in Pillars of Eternity on OS X (El Capitan). Note that you will have to do this before you run the game each time as it will reset the settings with bad ones each launch.
Thursday, October 8, 2015
Making Time Based Graphs with Chartist
I have been implementing some custom charts with Chartist recently. Overall things have gone very well with some simple tweaks and fiddling to get things exactly how I want. It is very nice to be be able to easily adjust the charts with CSS right in the normal site code.
Friday, October 2, 2015
Problems with Java Based OS X Applications Hanging when Entering Text
So I found another problem with my new upgrade to OS X 10.11. That is that the Java web application I was using, Adobe Ad Hoc Analysis in this case, would hard lock every time i tried to enter text in a text box. The only solution was to force quit the application. After much testing I found the culprit was the RescueTime helper applet. Basically this applet gets Accessibility access so that it can inspect windows and record time used but is glitching on the java windows and causing the lock up.
There could be other programs causing the same issues even if you don't use RescueTime but are having the same problem. To troubleshoot do the following.
- Close out of the java program that is locking up.
- Open
System Preference > Security & Privacy > Privacy > Accessibility. - Note with items are check and then uncheck them all.
- Restart your java program and attempt to reproduce the issue.
- If it is working correctly then quit, re-enable one item, and try again until you find the culprit.
- If you can't get around the error even with all Accessibility options off that you must have some other issue.
Anyway if you find any items fix the problem you can just leave them off though they might hinder there applications functionality.
OSX 10.11 Stuck On Grey Screen After Login
After upgrading to El Capitan yesterday I ran into an issue where my computer would boot up going through the loading bar and display the login screen if enabled. Upon logging in, or automatic login, the system would hang at a grey screen. After some testing with the network I figured out that it was not actually locking up and would respond to traffic.
Or if using the Recovery Mode terminal the following thought the drive name may be different.
If either of these commands produce any results that you have found your problem. The culprit is Unsigned Kernel Extensions or .kext modules. In the good old days developers could just install these as needed to add code level kernel functionality but no for improved security OS X requires that all Kernel Extensions be signed by the developer. This is overall a good thing because these are privileged and could easily lead to malicious behavior by untrusted sources.
Anyway the problem where is that the upgrade didn't disable the unsigned Kernel Extensions it found and instead just doest't load them. This is fine and normally it would just mean that whatever applications depend on them would jus not work until updated but for whatever reason there are a few special cases that cause the login process to hang. I ended up removing all the Virtual Box and Soundflower modules and then was able to boot without issue. I have not tried to Re-install or upgrade wither yet but atlas my computer boots.
To remove these again go to the Terminal and do the following. You will nee to authorize them with your administrative password.
Again note the additional prefix if using the Recovery Mode ant that thedick name may be different.
Finally just reboot and enjoy.
To determine if your issues is due to the same problem wither SSH into the computer once booted if remote login was enabled or boot to Recovery Mode and launch the Terminal. Then run the following to see recently logged errors.
tail /var/log/system.log | grep 'Segmentation fault'
Or if using the Recovery Mode terminal the following thought the drive name may be different.
tail /Volumes/Macintosh\ HD/var/log/system.log | grep 'Segmentation fault'
If either of these commands produce any results that you have found your problem. The culprit is Unsigned Kernel Extensions or .kext modules. In the good old days developers could just install these as needed to add code level kernel functionality but no for improved security OS X requires that all Kernel Extensions be signed by the developer. This is overall a good thing because these are privileged and could easily lead to malicious behavior by untrusted sources.
Anyway the problem where is that the upgrade didn't disable the unsigned Kernel Extensions it found and instead just doest't load them. This is fine and normally it would just mean that whatever applications depend on them would jus not work until updated but for whatever reason there are a few special cases that cause the login process to hang. I ended up removing all the Virtual Box and Soundflower modules and then was able to boot without issue. I have not tried to Re-install or upgrade wither yet but atlas my computer boots.
To remove these again go to the Terminal and do the following. You will nee to authorize them with your administrative password.
sudo rm -Rf /System/Library/Extensions/Waco*
sudo rm -Rf /Library/Extensions/VBox*
sudo rm -Rf /Library/Application\ Support/VirtualBox/*
sudo rm -Rf /System/Library/Extensions/Soundflower*
sudo rm -Rf /var/folders/*
Again note the additional prefix if using the Recovery Mode ant that thedick name may be different.
sudo rm -Rf /Volumes/Macintosh\ HD/System/Library/Extensions/Waco*
sudo rm -Rf /Volumes/Macintosh\ HD/Library/Extensions/VBox*
sudo rm -Rf /Volumes/Macintosh\ HD/Library/Application\ Support/VirtualBox/*
sudo rm -Rf /Volumes/Macintosh\ HD/System/Library/Extensions/Soundflower*
sudo rm -Rf /Volumes/Macintosh\ HD/var/folders/*
Finally just reboot and enjoy.
Subscribe to:
Posts (Atom)
Project Licenses
These works by Jeremy Pyne are licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License