Category Archives: Blog

Code signing certificate

Hi,

As I recently posted about difficulties with code signing certificates, I finally succeeded to finalize the process πŸ™ˆ πŸŒπŸ˜…!

So the things to I had to do:

  • Go to the Local Register Office for a notary public and pay additional 9€ for the face-to-face authentication form to be validated so two visits to the Local Register Office = 30 km x 2
  • Three evidences: I chose government issued photo ID, Visa debit card and an utility bill addressed to me…

I did get a cool stamp from the Local Register Office though (this is in Finland of course) :grinning:

Next as easy it can be I just scanned the document and three pieces of additional evidence… however this wasn’t enough. The notary public’s identity needed to be verified. I did mention that within EU countries (Great Britain) since something of February 2019 this was no longer required as the Apostille document was now longer needed between the members of the European Union (the document proves that the signing person is an actual person and is at the signing moment in the mentioned profession/duty); Not enough – a verification was required via calling the Local Register Office which was fine by me although I thought they wouldn’t give this information via a privacy concern. Thankfully the notary public’s identity got confirmed! Next I had to explain the meaning of the utility bill because it was written in finnish.

After this I finally got the certificate approved – after few hours spent in the customer support and few emails sent:

Now I can finally provide signed installers! Let’s see how this goes after a year when the certificate needs to be renewed :scream:

The result – note that is my name now in the UAC prompt!

Difficulties with code signing certificates

Hi,

For the frustration of trying to get a code signing certificate from the Comodo company I have something to say 😠

I decided to try and find a reasonable priced code signing certificate authorities (“low budget for a not a wealthy person”) and the solution from there (Comodo) seemed reasonable enough.

The rant begins πŸ’¦

  • There is no mention that I’ll have to provide a copy of my passport or driver’s license or such πŸ‘Ž
  • There is no mention that I should fill this ridiculous form with a notary or a lawyer πŸ₯±
  • This all was done to prevent the “illusion” that the downloaded installer software, i.e. was somehow insecureπŸ˜‡
  • In Finland we do strong digital authentication via the bank’s system of which customer you are – so do I really have to go back to the 80’s again πŸ˜†

So now and not very soon to be fixed you are going to cope with this:

And the second one:

Well – I’m not spreading any viruses here – but I can’t / won’t do this ridiculous notarizing with extra costs (πŸ’Έ)!

PS. The home “infrastructure” is behind a double firewall and all the PC‘s are protected with an antivirus software depending of the OS they using and all computers are behind a NAT.

If any of you have an idea of an easier code signing certificate, please do not hesitate to contact me via email πŸ“§

Have fun again Br. not a certified individual πŸ˜…

News from the developer..

Hi,

A lot of things has been going on since the previous blog post.

First of all I released the vamp# software to the public. It still lacks the proper DVD playback possibility though. First notification of the possibility of this software was mentioned in the blog post called “Silence might be good..” – so lots of hefty coding has been done with a 66 page instruction manual (with lots of pictures – of course 🐣).

A few “side” libraries did spawn with the project as the goal was to make the solution to a single project solution πŸ™Š

Going nuts πŸ˜΅β€πŸ’« – no going NuGet phase has been completed (wow πŸ‘).. The next phase is to go to the GitHub which has already started – after that I’ll “flatten” the SVN repository on the NAS as it already takes 26 gigabytes of disk space and the repository contains lots of and lots of useless stuff (πŸ’¦):

“The long winter is coming..”

I do hate the autumn as it rains all the time and everything is getting wet, cold and dark (I do live in the Scandinavia, Finland) :snowflake: :snowman: – so do develop a bird feeding place to help them to keep alive through the winter 🐦 πŸ’–

A holiday.. I do think I’ll take a few weeks of from the “hobby” as the previously mentioned word should never mean stressful (❗) πŸ’€ 😴

TODO

  • Save the world from Trump πŸ™Š πŸ’€
  • Stuff.. πŸ˜‡ 

Have fun again and don’t let the winter get to you ❄️πŸ₯Ά

– Be seeing you all..

Going NuGet, DONE!

Hi,

Now all libraries which are under development and are published on the web site have been published at nuget.org. πŸ˜“

At least I’m going to use them in my projects as it’s easier than to add SVN externals to your project directory and manually add the assemblies to the References list of a project.

So the developing just got a bit easier! πŸ˜€

BTW: There are now 12 NuGet packages published.. and some have dependencies to another of them, some have dependencies to packages not made by me. Also the links to the nuget.org have been added for the libraries on this site. 🐣

Going NuGet..

Hi,

I added a possibility to get a NuGet package from nuget.org to the first library.

This should help as you now more have to check for updates from the website – source code and releases are being kept in sync with the website as well.Β :sweat_smile:

So the first library – VPKSoft.Utils is now also available as a NuGet package, more of them will get there asΒ I have the time.Β :sleeping:

An updated download section at the bottom of the library’s page

A Visual Studio 2017 Community Edition displaying the nuget

Β 

Have fun againΒ :stuck_out_tongue:Β 

Β 

Leftovers ?

Hi,

As I’m doing this HTPC software all by my self I created a class to help with System.Windows.Forms.Message to access hParam and wParam low and high words, as of yet I didn’t found any use for that so have fun with it as I release it to the public domain πŸ˜€

The code is as follows:

#region License
/*
This is free and unencumbered software released into the public domain.

Anyone is free to copy, modify, publish, use, compile, sell, or
distribute this software, either in source code form or as a compiled
binary, for any purpose, commercial or non-commercial, and by any
means.

In jurisdictions that recognize copyright laws, the author or authors
of this software dedicate any and all copyright interest in the
software to the public domain. We make this dedication for the benefit
of the public at large and to the detriment of our heirs and
successors. We intend this dedication to be an overt act of
relinquishment in perpetuity of all present and future rights to this
software under copyright law.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.

For more information, please refer to <http://unlicense.org/>
*/

// PS. (C) VPKSoft 2018..
#endregion

using System;
using System.Windows.Forms;

#pragma warning disable CS1587 
/// <summary>
/// A name space for the MessageHelper class.
/// </summary>
#pragma warning restore CS1587 // XML comment is not placed on a valid language element
namespace VPKSoft.MessageHelper
{
    /// <summary>
    /// A class to help with Message class in such cases as an overridden Control.WndProc Method.
    /// </summary>
    public static class MessageHelper
    {
        /// <summary>
        /// Posted to a window when the cursor moves.
        /// </summary>
        public const int WM_MOUSEMOVE = 0x0200; // Posted to a window when the cursor moves.

        /// <summary>
        /// // Posted to a window when the cursor leaves the client area of the window specified in a prior call to TrackMouseEvent.
        /// </summary>
        public const int WM_MOUSELEAVE = 0x02A3; // Posted to a window when the cursor leaves the client area of the window specified in a prior call to TrackMouseEvent.

        /// <summary>
        /// Sent to the window that is losing the mouse capture.
        /// </summary>
        public const int WM_CAPTURECHANGED = 0x0215; // Sent to the window that is losing the mouse capture.

        /// <summary>
        /// The CTRL key is down.
        /// </summary>
        public const int MK_CONTROL = 0x0008; // The CTRL key is down.

        /// <summary>
        /// The left mouse button is down.
        /// </summary>
        public const int MK_LBUTTON = 0x0001; // The left mouse button is down.

        /// <summary>
        /// The middle mouse button is down.
        /// </summary>
        public const int MK_MBUTTON = 0x0010; // The middle mouse button is down.

        /// <summary>
        /// The right mouse button is down.
        /// </summary>
        public const int MK_RBUTTON = 0x0002; // The right mouse button is down.

        /// <summary>
        /// The SHIFT key is down.
        /// </summary>
        public const int MK_SHIFT = 0x0004; // The SHIFT key is down.

        /// <summary>
        /// The first X button is down.
        /// </summary>
        public const int MK_XBUTTON1 = 0x0020; // The first X button is down.

        /// <summary>
        /// // The second X button is down.
        /// </summary>
        public const int MK_XBUTTON2 = 0x0040; // The second X button is down.

        /// <summary>
        /// Gets the low order word of the lParam's value.
        /// </summary>
        /// <param name="message">A message of which low order word of the lParam's value to get.</param>
        /// <returns>The low order word of the lParam's value.</returns>
        public static int LParamLoWord(this Message message)
        {
            return BitConverter.ToInt16(BitConverter.GetBytes((int)message.LParam), 0);
        }

        /// <summary>
        /// Gets the high order word of the lParam's value.
        /// </summary>
        /// <param name="message">A message of which high order word of the lParam's value to get.</param>
        /// <returns>The high order word of the lParam's value.</returns>
        public static int LParamHiWord(this Message message)
        {
            return BitConverter.ToInt16(BitConverter.GetBytes((int)message.LParam), 2);
        }

        /// <summary>
        /// Gets the low order word of the wParam's value.
        /// </summary>
        /// <param name="message">A message of which low order word of the wParam's value to get.</param>
        /// <returns>The low order word of the wParam's value.</returns>
        public static int WParamLoWord(this Message message)
        {
            return BitConverter.ToInt16(BitConverter.GetBytes((int)message.WParam), 0);
        }

        /// <summary>
        /// Gets the high order word of the wParam's value.
        /// </summary>
        /// <param name="message">A message of which high order word of the wParam's value to get.</param>
        /// <returns>The high order word of the wParam's value.</returns>
        public static int WParamHiWord(this Message message)
        {
            return BitConverter.ToInt16(BitConverter.GetBytes((int)message.WParam), 2);
        }

        /// <summary>
        /// Gets the low order word of the lParam's value unsigned.
        /// </summary>
        /// <param name="message">A message of which low order word of the lParam's value to get unsigned.</param>
        /// <returns>The low order word of the lParam's value unsigned.</returns>
        public static uint LParamLoWordUnsigned(this Message message)
        {
            return BitConverter.ToUInt16(BitConverter.GetBytes((int)message.LParam), 0);
        }

        /// <summary>
        /// Gets the high order word of the lParam's value unsigned.
        /// </summary>
        /// <param name="message">A message of which high order word of the lParam's value to get unsigned.</param>
        /// <returns>The high order word of the lParam's value unsigned.</returns>
        public static uint LParamHiWordUnsigned(this Message message)
        {
            return BitConverter.ToUInt16(BitConverter.GetBytes((int)message.LParam), 2);
        }

        /// <summary>
        /// Gets the low order word of the wParam's value unsigned.
        /// </summary>
        /// <param name="message">A message of which low order word of the wParam's value to get unsigned.</param>
        /// <returns>The low order word of the wParam's value unsigned.</returns>
        public static uint WParamLoWordUnsigned(this Message message)
        {
            return BitConverter.ToUInt16(BitConverter.GetBytes((int)message.WParam), 0);
        }

        /// <summary>
        /// Gets the high order word of the wParam's value unsigned.
        /// </summary>
        /// <param name="message">A message of which high order word of the wParam's value to get unsigned.</param>
        /// <returns>The high order word of the wParam's value unsigned.</returns>
        public static uint WParamHiWordUnsigned(this Message message)
        {
            return BitConverter.ToUInt16(BitConverter.GetBytes((int)message.WParam), 2);
        }
    }
}

See you later..Β Β πŸ‘

Silence might be good..

Hi,

It has been a few to 6 months since last time I released or posted something here, no to tell the reason.

I have been working on a software which would somewhat replace the KODI software for my HTPC as the system seems to be low on resources – the KODI is just unable to present suitable video playback.

So as a solution I started creating a new software – as there is no other way to fix the problem (of course) πŸ˜€

To create a new HTPC solution from scratch is somewhat time consuming.. πŸ™ˆ

The recipe goes as follows

  • Find suitable libraries for video and audio playback
  • Find suitable libraries for full screen web browsing
  • Do code as a maniac
  • Do remember to relax
  • And do think what other users might have to expect for the software to do
  • Use the “nightly” release to do what you might expect and be prepared for a catastrophic disappointment 🐣 😒 🍺
  • The name of the software to become, I decided to name it as vamp# (video amp) as the audio software this is using via WCF will be the amp#

The project seems to be creating a lot of side projects – with Windows.Forms, reminder: Learn something more efficient 🐌 ..

 

So to the conclusion, it might take another six months before this project will released as I’m doing this as a hobby, not as work.

By the way I try not to release any beta version of any software, so just email me or contact me other way if you found more bugs on the previously released software however I use my laziness as an excuse to do nothing.

A teaser 😾:

The most time consuming issue seem to be a license compatibility with the GLPv3 – someone (hopefully not me) should construct a mind-map or a software to see the compatibility with the selected license :innocent:.   

TODO

  • Make it work
  • Have the time to make it work
  • Release the updated projects such as amp# before releasing this project
  • Lot more of of this hobby
  • Duplicate the amount of swearing out loud :mega:

I have not spared any resources on this one, all the images used in the software are PNG images sized enough to scale to a 4K television and this is made possible by the openclipart.org with an excellent selection of image as I don’t have any visually artistic talents.

The resources

As I mentioned before I have spared no resources – first the working directory

NSIS creating an installer with the best compression (took about 7 minutes with a Intel(R) Core(TM) i7-4770K CPU @ 3500 GHz whit a SSD drive):

Surprise, the size is now a lot smaller πŸ’½ !

See you all at the next time (TODO:: update the manifesto of something to support the GDPR).. πŸ’–πŸ˜˜

Things to do next

 Hi,

As I today released updates on the amp#VPKSoft.Utils and Poslib it seems that there is still lot to do with my hobby πŸ˜³

TODO:

  • Comment the amp# code “PROPERLY” πŸ˜‰
  • Create a HTPC front end for the amp# as it now has this undocumented WCF remote control possibility..
  • Keep learning Python πŸ˜…
  • Change to a newer version of Visual Studio
  • I forgot the rest.. hope the hobby doesn’t get stressful – as then it wouldn’t be a hobby anymore :innocent:

Keep having fun! πŸ‘