cmiles - info

Life, Tech and Unimportant Minutiae

Created by Charles on 5/7/2022. Updated on 5/10/2022.

In upgrading an older service to CoreWCF I ran into some Pinvoke code for 'RawPrinting' (DllImport "winspool.Drv") with an unexpected return value that was causing nothing to print. I suppose this could make an interesting article - identify why this code worked under .NET Framework 4.61 and not .NET Core 6+, show the subtle code changes between .NET versions and maybe offer a clever PowerShell one-liner that would fix this problem in all of your code... I did none of that - I quickly made an honest assessment that my DllImports were copy and pasted, that I have only the most basic knowledge of how Pinvoke/IntPtr/Dllimports 'really' work and that exploring the details of various interop printing structures was unlikely to really be all-things-considered worth the time. In the end vague memories and web searches led me to Vanara: A set of .NET libraries for Windows implementing PInvoke calls to many native Windows APIs with supporting wrappers. Several minutes of light refactoring later printing was working again! (Oh and yes - this was all in service of pushing ZPL to the wonder, and occasional terror, that is our Zebra tag printers...)

At work over the past two decades we basically maxed out at 4 in-house developers - always with some part time positions - but right now I'm the sole in-house Dev/IT person. A big challenge with over 2 decades worth of in-house development is figuring out how to move things forward. Recently I took some inspiration from larger dev organizations and made the last commit in a branch that combines 137 projects under one solution. You can easily find information online about monorepo and monolith (usually vs micro-service) setups -> in the big picture our codebase is small and I am currently a team of 1, a much much much simpler situation than anything you will read about - but since our code base has traditionally been divided into silos I am hoping with this change to:

  • Take Maximum Advantage of Tooling - assuming you are on a reasonably capable dev machine Visual Studio+Resharper is happy to show you references, apply refactorings and show you errors from ALL 137 projects! Forget remembering what else your code change might impact - just have it all in front of you.

  • One Version - different syntax across language versions, library versions across framework versions, constantly changing external libraries and confusing problems referencing one library from another because of versions - all of these things cost painfully valuable time as projects spread out over years and decades of different versions... My hope is that having everything accessible in one solution makes keeping everything at one version possible.

  • Latest Versions - I know that staying on one version is at best a hopeful goal - but in truth I have a more ambitious goal: stay on 'latest'. Sure, every upgrade is a chance for some painful bug - but every update is also a chance that your programs improve with zero effort or new opportunities emerge. I have no idea why some of my database related code is running better under .NET 6 and latest EF - but it is, and in many projects it cost me basically zero time... My best guess is that in many cases the time to make upgrades will pay off in only having to do it once - upgrading Automapper to the next version even with breaking changes isn't that bad, having to figure it out multiple times with months/years in-between with upgrades from different versions involved each time is costly.

  • Constant Updates: What I have watched at work is that software that stagnates not only make life hard for devs but also causes process stagnation - this could be about the latest big-new-thing but is just as likely to be about small/quick changes: adding a shortcut key, coding a new warning when a user does something that works but is usually wrong, or a new report for a new problem. There are only so many resources (especially time) but both software and processes benefit when software can keep moving forward. In this setup the app with the shortcut key is already open, updated and ready to go in Visual Studio and adding the shortcut key might be an 'actual' 5 minute or less project! Right now it might be a 5 minute project - or it might be a half day to figure out which repo, checking it out and make sure the right build tools are installed, find the config file that was missed in the commit a year ago, try to upgrade packages but instead fall into a mire of version/package conflicts, figure out internal updates, etc...

  • Let Go of Believing You Know - In the 'old days' between number of people, fresh code and operational setup there was a period of time when the best skill may have been knowing who to talk to about some code. Over the years as decisions, software, people and processes have spread out over years, decades, of time - there is no one to ask, you just have to read the code, and that holds true even if you wrote the code! The single solution approach puts all the code in front of you - exactly what you need if you can't hold it all in your head.

We have plenty of code not in the current 137 project solution, legacy problems to solve and business challenges ahead - it isn't that I think this is a magic solution to our, or anyone's, problems - but I'm writing about it because I'm excited to find a way to improve and move forward even if it isn't a silver-bullet-everything solution to all software issues.

Mojave Sonoran Trail: A 625 Mile Thru-Hiking Route Introduction & Guide - always interesting to see something new and I have to say that even with 2 decades in the Southwest this route touches on MANY areas that I never considered exploring - worth checking out although I'd watch the first few YouTube videos before getting too excited as some of the scrambling looked a little intimidating to me!

Advanced Outdoor Technologies - I do love a good front-pack setup and this new-to-me company is making some interesting gear! I haven't ever seen these bags in person but at a glance they to be designed with a smart 'depth' - having tried a decent number of front packs this is key if you want to be able to see your feet (and you really do want to see you feet)... I currently use a Pajaro GRANDE Field Bag as a front pack, mainly for my camera.

2022 April Dusty Sunset
Dusty Sunset. Charles Miles. 4/12/2022.

Created by Pointless Waymarks CMS on 4/17/2022. Updated on 4/22/2022.

I came to WCF thru work after its heyday and never used it in any complicated scenarios. In the mid-2010s I used WCF in a set of WPF apps to exchange information across applications (it worked but later I added better drag and drop and the WCF based exchange was dropped), created an over built service that was never used (the library code was used directly) and in the late 2010s I wrote a backend for a Xamarin Forms Android App (still in production). These days I maintain several WCF services and while it is a little odd not to see REST calls and JSON these services mostly 'just work'. I can't speak to the experience of working with WCF in security heavy environments with complex business driven requirements - but by the time I used WCF the tech, tooling and help were quite mature and creating an internal service to exchange .NET objects was incredibly easy.

For better or worse full WCF support wasn't added to .NET Core - not a complete surprise but an incredibly painful detail (much like edmx...) in the effort to move existing Framework code to .NET Core!

So seeing the preview releases of 1.0 from the opensource CoreWCF Project project made me feel excited and grateful!!! I'm barely getting started with it but have already been able to get a test version of an old service running in a sort of 'hello world' way and have used the dotnet-svcutil to generate a client from the published metadata (if you tried CoreWCF earlier you likely found metadata publishing missing - it is now included!). Early days but I'm crossing my fingers this will be one more set of projects that can more to .NET Core!

.NET 7.0 - With preview 3 released it seemed like time to jump in so I moved PointlessWaymarksCms to .NET 7 and LangVersion preview. Tests pass and I'm writing this from a .NET 7 build so things appear to be working... This move was made easier by finding out about Directory.Build.props which lets you specify properties for all projects via a single file.

I met up with a photographer friend recently and got to see some of his workflow for processing images on the computer. It was inspiring and one thing it made me do is look around at additional tools. For years I have been reluctant to use tools outside of Lightroom. Partly because with my photography I could usually get 98-99% of the results I cared about in Lightroom - but also because for me processing photos is only part of the challenge... It turns out cataloging, keeping track of, finding and searching decades of photos is probably just as important as the processing! So the various things I have done over the years that have taken photos outside of Lightroom have occasionally made the cataloging very painful - eventually I settled comfortably into 'just Lightroom'.

From a look thru photo processing tools this round what seems to be sticking with me is DxO PureRAW. Basically at for-me-normal viewing sizes the results are not always impressive - but zoom in and I am finding that the denoising and sharpening DxO PureRAW is applying to distant details in landscape photos really might be worth paying for...

2022 April Sun over Cat Mountain
Sun over Cat Mountain. Charles Miles. 4/13/2022.

Created by Charles on 4/22/2022.

I don't know how or why you are here - in truth everything here is, and always will be, best classified as personal minutiae... the very definition of meaningless - a blast from past when internet was a a different place, bits of life floating peacefully in the dark void of the forgotten outer reaches of the net... the only new thing likely to happen here is more randomness thrown into this strange rippleless deep!

Why are you here again?

History:

In 2006 I started writing on cmiles.info using WordPress.com and for a good few years I wrote about tech, life and adventures. By the 2010s the posts were all about adventures, more and more about the Santa Catalina Mountains. The site was never taken offline but it was last updated in 2015.

In the early 2010s I started another WordPress.com site - consuming.cmiles.info - on which I put notes about what I was reading, watching and listening to. That effort ended in 2013...

These first sites informed my efforts on Hike Lemmon! | Hiking and Adventures in the Santa Catalina Mountains which I started in the mid 2010s. For many years that site took all my attention - and of course the 2010s were huge for Facebook, Instgram, Twitter and other now forgotten social media sites that at the time seemed useful and important.

Since 2019 my focus has changed - Pointless Waymarks and the software to generate it Pointless Waymarks Cms: A .NET 7 WPF Gui for Static Site Generation have taken my time and attention, I'm rarely on social media and a new house last year has meant fewer adventures.

Sometime in 2022 I looked back at cmiles.info, enjoyed it, and with the Pointless Waymarks CMS in a very usable state converted the tech and life posts to this new version of the site along with the content from consuming.cmiles.info. The posts related to the Santa Catalina Mountains will move to a new version of HikeLemmon (in progress atm) and adventure posts about areas outside of the Catalinas have been moved to PointlessWaymarks.

If you're reading this you are either here randomly and are unimaginably deep into the long tail of content on the internet or your a friend - either way send me an email, charles at cmiles dot info, and say hello, if nothing else I will be glad to congratulate you on somehow finding this!


Created by cmiles on 2/3/2015.

The Shape of Jazz to Come - Ornette Coleman: I love this - still some familiar forms/ideas/content - occasional lyricism - plenty of variety - and most importantly just enough freedom from standard forms to allow - for my ear - this to become something wonderfully true and expressive (or maybe personal?) . Rating: 4 of 5

Bitches Brew - Miles Davis: Obviously working thru some well regarded jazz albums - but while I immediately connected to The Shape of Jazz to Come (and to some extent Coleman's Science Fiction also) I just have not been able to hear/feel why this is so well regarded... Rating: 2 of 5

Science Fiction - Ornette Coleman: More diverse, but harder to listen thru than The Shape of Jazz to Come - and with less familiar to hang on to. Maybe some of this will grow on me? Rating: 3 of 5.

Gotham 7.5K, A Rare High Altitude Night Flight Above NYC -Vincent Laforet: Visually stunning pictures of New York at night. Rating: 4 of 5

High Hopes (1988) - In the beginning of 2014 we tried another Mike Leigh film - Life is Sweet - like that film I suspect that having no frame of reference for the characters and setting really killed the joy of this. Rating: 2 of 5

Short Term 12 (2013) - Simple - good story, believable characters and good actors. Rating 4 of 5

Rushmore (1998) - In Casa Video and lost among all the videos we needed a theme - Wes Anderson... This seemed great for fans - but really feels like a warm up for some of the later films (Moonrise Kingdom and Life Aquatic are certainly still my favorites). Rating: 3 of 5

The Squid and the Whale (2005) - Definitely some strange surprising moments but slightly strange characters couldn't make up for being basically a not so interesting divorce story. Rating: 2 of 5

Boyhood (2014) - I have deep respect for this having being filmed over so many years - great that it could be done that way and the film hangs together. However, I have to say that I would take slightly jarring actor switch outs in exchange for something that - once I was over the slick time jumps - seemed like a standard coming of age tale.

Gone Girl (2014) - Well I admit there were a number of plot twists that I didn't see coming - and showing the two stories was clever - but ultimately too long for too little payoff... Rating: 2 of 5

The Wind Rises (2013) - I have deep respect for Hayao Miyazaki - a human tale in the face of war - I don't love all of his films I have seen equally but have to say I have had some kind of emotional connection to each one I have seen. I also think the subject matter is a bit of a puzzle - I am not really sure how to feel about the beautiful creations in service of war. Rating: 4 of 5

3rd Rock From the Sun - Season 2 - I see this in reruns sometimes but seeing a bunch of these back to back reminded me these are pure genius! Rating: 5 of 5

Quarantine - Greg Egan - So techy, so cool... But by part of the way thru all I could think of was Neal Stephenson's Anathem - Quarantine was a little more fun but by the end I was kind of done. Rating 3 of 5

Diaspora - Greg Egan - This is one of the best science fiction novels I have read. I certainly admit that I skimmed some in some of the super deep tech theory explanation sections - but even with that this is great hard sci-fi on a grand scale, still with some personality and a lot of imagination and interest - this feels like a classic. Rating: 5 of 5


Posts Before: