Category: Uncategorized

  • Thread.Sleep(Duration.Months(5))

    Wow, so it’s been a while since I’ve had an update. Life is definitely quite an interesting journey and challenges come in so many flavors.

    With all the events of the previous month, I was spending lots of time teaching my children, while trying to maintain a normal working schedule and being an OKish husband and father. With the schedules all on overload, when I did get any free time I didn’t have more energy to work on the game, so instead I took a hiatus to play Heroes of the Storm for the last few months.

    However, there’s a slight breakthrough in motivation and I’ve started working on the game again recently. I’ve got scaffolding code for the Boss Jellyfish and I’ve implemented an early integration with Google/Facebook authentication for progress saving.

    There are a new set of challenges upcoming in the next few months so there may not be updates again for a bit, but in the meantime … Read the rest

  • Diggem

    Hello friends! I’ve created a game called Diggem, which is a spin of the classic game, Minesweeper. The goal is to provide an experience that offers the same challenging puzzle with more room for forgiveness and rewards!

    I’m having a blast building this and really look forward to adding more features that players will enjoy! This is an initial iteration, if you enjoy classic Minesweeper, it would be awesome if you could download this game and give me your feedback!

    You can find “Diggem” on the Google Play Store or follow the link to review it on your favorite web browser.

    https://play.google.com/store/apps/details?id=com.ninjacrab.DiggemRead the rest

  • XamarinForms – Overriding PageRenderer and NavigationService


    After further implementation on my pet project, I realized that my previous solution on the page renderers would cause the NavigationService to fail from going back. So with more experimentation, I’ve discovered a way to preserve that functionality and still allow the page renderers to override the default view functionality.

    using Xamarin.Forms;
    using Xamarin.Forms.Platform.Android;
    
    [assembly: ExportRenderer(typeof(FooPage), typeof(FooPageRenderer))]
    namespace FooApp.Droid.Renderer
    {
        public class FooPageRenderer : PageRenderer
        {
            private Android.Views.ViewGroup parentView;
            private Android.Views.View origView;
            private Android.Views.View newView;
    
            protected override void OnElementChanged(ElementChangedEventArgs e)
            {
                base.OnElementChanged(e);
    			
                var activity = this.Context as MainActivity;
                var newView = activity.FindViewById(Resource.Layout.foo);
                parentView = activity.Window.DecorView as ViewGroup;
                origView = parentView.GetChildAt(0);
    			
                parentView.RemoveView(origView);
                parentView.AddView(newView);
            }
    
    		private void Restore()
    		{
    			if (origView != null)
    			{
    				parentView.RemoveView(newView);
    				parentView.AddView(origView);
    			}
    		}
        }
    }
    
    Read the rest

  • C# – How the Null Conditional Operator works with Nullable types

    The short answer:

    The null conditional operator also unwraps the nullable variable. So after the operator, the “Value” property is no longer needed.

    ex:

    DateTimeOffset? startAt;
    ...
    System.Writeline(startAt?.TimeOfDay);
    

    The longer story:

    I had a scenario with a Nullable DateTimeOffset and I was trying to perform something like the following.

    DateTimeOffset? startAt;
    ...
    public DateTime? StartDate { get { return startAt.Value.DateTime; } }

    As I tested, I immediately ran into a situation where that date was null, the program threw an exception and I needed to null check it. So I thought I wanted to use that latest, hottest stuff that Microsoft had to offer in C#.

    The null conditional operator. 

    I changed my code to the following

    public DateTime? StartDate { get { return startAt?.Value.DateTime; } }

    But instead it just got angry with me and for whatever reason I wasn’t looking at the obvious clues. I immediately ran off to search the interwebs on how to use this operator … Read the rest

  • Jenkins & Git & Windows Server – oh my!

    Got a weird freezing issue in Jenkins when attempting to pull the tags from a git repository. Turns out that the credential manager was the interactive windows popup and it just locked the build process. The fix was as simple as going into the following location and removing the credential helper

    [Git Install Folder]\mingw64\etc\gitconfig

    Example from this
    [credential]
    helper = manager

    to this
    [credential]
    # helper = manager
    Read the rest

  • Episode 1 of the #WhyWait Hackathon is available to watch!

    The first episode of the hackathon is out. I’m not entirely aware of how much of the build it will show as the episodes are brief, but fear not! Once it’s all done, I will create tutorials and walkthroughs!

    http://whywait.kinja.com/watch-two-teams-of-innovators-compete-in-the-whywait-i-1716856087

    Otherwise, enjoy!… Read the rest

  • Resurrecting Persistent Windows

    Well, my amazing Wife gave me the green light on ordering 3x Dell P2415Q 4K monitors. So I enthusiastically connected them all via DisplayPort on my NVidia 970GTX card on my desktop and low and behold the windows are exhibiting the crazy re-arranging behavior!

    Thus, I’m reviving the project and now since I’ll be able to test it immediately(Instead of building it at home, running it on my work desktop, shipping log files home back home to diagnose), I should be able to improve it even more.

    Stay tuned for updates!… Read the rest

  • Displayport & AMD Radeon with latest Catalyst drivers

    AMD_Radeon_graphics_logo_2014.300

    Thanks AMD!

    The DisplayPort issue is fixed and no longer re-arranging windows across my monitors when I lock my screen!

    It seems as though my PersistentWindows utility is no longer necessary for ATI cards. I’ve just validated it on multiple machines and life is returning to normal with DisplayPort!

    Looking at the feedback from the surveys, it seems as though my utility works on 50% of the use cases reported and hopefully NVidia also resolves the issue at a driver level.

    While I appreciate all the feedback on the PersistentWindows tool, unless I’m back fighting the issue, it’s unlikely that I’ll put more work into it. The code is available to anyone else who wants to pick it up and I’m happy to provide assistance for those who are curious about WinAPI, PInvoking or anything else.

    Otherwise, back to my other hobby projects!… Read the rest

  • Persistent Windows 1.0.3 & CodePlex

    So I’ve updated yet another version of the PersistentWindows app, but this update is literally nothing but better logging, so that I can figure out what’s going on in various instances. I would love the logging output to help isolate the root cause and then I could move on to the convenience features.

    Also, I’ve publish the code on CodePlex if anyone would like to contribute or are just generally interested.

    I would love to make a video on this, but man it’s hard being a Dad, a Husband and a workaholic. I’ve missed this month, but maybe during my Thanksgiving break I can squeeze out a random coding video.

    Bonne nuit!… Read the rest

  • Persistent Windows 1.0.2

    Made a few changes that you can find in the release notes. What’s pretty awesome is that I posted this app as a solution in StackExchange’s Super user and it was well received by the OP. Enough, in fact where not only did he mark it as a solution, he also wanted to contribute in resolving the other edge case issues. So I’ll eventually plop on CodePlex and hopefully solve one of the world’s tiny problems 🙂… Read the rest