Monday, August 17, 2015

Jagged Juggler

Jagged Juggler!

Starting today and until the end of the week I accepted an app challenge. The goal by the end of the week is to make a game app that is playable and fun. Below is a scan from a sketch I did 30 minutes ago from writing this post. I'll keep you updated with the progress. At the end of the week I'll make the app playable for both web and android. It may take some time to get onto the Google Play Store for android devices, but, the web version should be playable. Tell me what you think!



Jagged Juggler © Black Crow Software, LLC

Wednesday, August 12, 2015

Music

I'm Sorry for the Delayed Post :-(

I promise I've been productive though. A journal lays here on my desk. Every day I try to write something in the journal of something productive I did that day. Not everything I write in the journal will get recorded here on the blog (a lot of projects that can't be published yet). However, I still thought of you. Monday I re-recorded 2 songs (piano 21 and 22) which can be found here on the music list. Thank you for your patience.

Wednesday, August 5, 2015

Artwork

Random Nostalgia

 

 

I accepted a design challenge a year ago to make an abstract art piece for a good friend of mine. The challenge was to incorporate one of their favorite things into an art piece while keeping it abstract. I ended up printing this particular piece onto a 3'x2' canvas and hanging it on my wall (later gave it away). Hope you likes!

Music

Music

I'm going to keep a collection of my piano music in this section here. Some music will not work because I still have to re-record them. As I continue to record I will start adding links to the music below. If you want to hear a specific instrumental and the audio is not here, please contact me and I'll make it a priority to record.



(000) Serenity
(001) Something Precious
(002) Rest In Silence
(003) Nostolgic Reflections
(004) Echo Harmony
(005) What Is Said In Sincerity
(006) Heartfelt Memories
(007) The Strength To Go On
(008) Lullaby
(009) Inquiries And Solutions
(010) Short Fable
(011) Dreaded Anxiety
(012) Mystical Order
(013) Raindrops
(014) Meek Melodies
(015) Excursion Commencement
(016) Destiny
(017) Chance Happening
(018) Whispers In The Wind
(019) Liquid State
(020) Springtime
(021) Initial Bond
(022) Forlorn And Withdrawn
(023) <No Name>
(024) <No Name>
(025) Broken
(026) <No Name>
(027) <No Name>
(028) <No Name>
(029) <No Name>
(030) <No Name>
(031) <No Name>
(032) <No Name>
(033) Beautiful Words
(034) <No Name>
(035) Blue Sky
(036) <No Name>
(037) Predetermined Fate
(038) Fresh Mountain Breeze
(039) <No Name>
(040) <No Name>
(041) <No Name>
(042) <No Name>
(043) <No Name>
(044) Trickling Stream
(045) <No Name>
(046) Here We Go!
(047) Desolation
(048) Carefree Existence
(049) Regrets
(050) Hope
(051) <No Name>
(052) <No Name>
(053) <No Name>
(054) <No Name>
(055) <No Name>
(056) <No Name>
(057) <No Name>
(058) Grace
(059) <No Name>
(060) <No Name>
(061) Peaceful
(062) Acquired Memories

(063) Cascading Flow
(064) Light Blue
(065) Rest Mind, Rest Soul
(066) <No Name>
(067) <No Name>

Monday, August 3, 2015

Technical

Broken Phones

So a week ago I was given 2 phones to extract all the text message data. Both phones had been dropped and the displays on the phone no longer worked. Both phones were Samsung Galaxy S4. There is no way to actually plug the phones into the computer and extract the messages so I had to get a bit creative. My first thoughts were to plug my brother's 5-pin HDMI adapter (used for his Galaxy S2) into the phone so that the phone's display will show up on a computer monitor. This did not work because the Galaxy S4 required an 11-pin HDMI adapter.

 

I took the phones to Fry's Electronics and got the adapter. They allowed me to test the 11-pin adapter on their monitors to no surprise worked. I took the adapter home and plugged the first phone into the monitor.

 

The display showed nicely on the screen, and using the digitizer (touch screen) on the phone I was able to enable the Debug Mode in Android and extract all the messages to my phone. The particular message I was looking for was not on this phone.

 

The second phone I plugged into the monitor, the display showed nicely on the screen. The digitizer on this phone, though, was broken so I wasn't able to enable Debug Mode. Because I didn't want to fix a broken phone to get 1 message off, I took apart both phones and swapped the Main Board (the text messages and other data are stored on the board). After I put the swapped boards in and put the phone back together, I connected it to the monitor and the digitizer worked! I was then able to turn on the Debug Mode and extract all the text message data.

 

I took no pictures during this process (my later projects I'll start doing so)

Sunday, August 2, 2015

Technical

Initial Technical Post

This is the section I originally decided to start a blog. Here I will describe symptoms of computer problems and how to solve them. For the tech-savvy I will go into difficult problems with a step-by-step method of how to solve them. Also for a resume of programs I know well and file associations, a link is provided below.


If you would like a tutorial on a specific technical fix or you are having technical problems, feel free to contact me and I'll write a post about the problem and how to fix it.

Programming

Initial Programming Post

Do you want to see this stuff?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace AutoInputer
{
    public partial class AutoInputer : Form
    {        //Grabs the user32.dll for the mouse and keyboard events.
        [System.Runtime.InteropServices.DllImport("user32.dll")]
        public static extern void mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);

        private const int m_mouseLeftDown = 2;
        private const int m_mouseLeftUp = 4;
        private const int m_mouseRightDown = 8;
        private const int m_mouseRightUp = 10;

        private int m_runLimit = 0;

        public AutoInputer()
        {
            InitializeComponent();
        }

        private void intervalBar_ValueChanged(object sender, EventArgs e)
        {
            intervalText.Text = intervalBar.Value.ToString();
        }

        private void intervalText_TextChanged(object sender, EventArgs e)
        {
            try
            {
                int temp = int.Parse(intervalText.Text);

                if (temp <= 0)
                {
                    temp = 1;
                }
            }
            catch
            {
                intervalText.Text = "1";
            }
        }

        private void runLimitText_TextChanged(object sender, EventArgs e)
        {
            try
            {
                int temp = int.Parse(runLimitText.Text);

                if (temp <= 0)
                {
                    temp = 1;
                }
            }
            catch
            {
                runLimitText.Text = "1";
            }
        }

        private void goButton_Click(object sender, EventArgs e)
        {
            GoEvent();
        }

        private void GoEvent()
        {
            stringText.Enabled = false;
            eventTypePanel.Enabled = false;
            eventQueryPanel.Enabled = false;
            intervalText.Enabled = false;
            intervalBar.Enabled = false;
            goButton.Enabled = false;
            stopButton.Enabled = true;

            intervalTimer.Enabled = true;
            intervalTimer.Interval = int.Parse(intervalText.Text);

            statusLabel.Text = "Running";

            m_runLimit = int.Parse(runLimitText.Text);
        }

        private void stopButton_Click(object sender, EventArgs e)
        {
            StopEvent();
        }

        private void StopEvent()
        {
            stringText.Enabled = true;
            eventTypePanel.Enabled = true;
            eventQueryPanel.Enabled = true;
            intervalText.Enabled = true;
            intervalBar.Enabled = true;
            goButton.Enabled = true;
            stopButton.Enabled = false;

            intervalTimer.Enabled = false;

            statusLabel.Text = "Stopped";
        }

        private void opacityBar_Scroll(object sender, EventArgs e)
        {
            Double temp = opacityBar.Value;
            Opacity = temp / 100;

            if (Opacity <= .05)
            {
                Opacity = .05;
            }
            if (Opacity >= 1)
            {
                Opacity = 1;
            }
        }

        private void intervalTimer_Tick(object sender, EventArgs e)
        {
            bool temp = bool.Parse(Control.IsKeyLocked(Keys.Scroll).ToString());
         
            if ((scrollLockGoRadio.Checked == true) && (temp == false) || (runLimitCheck.Checked && (m_runLimit <= 0)))
            {
                if (runLimitCheck.Checked && (m_runLimit <= 0))
                {
                    StopEvent();
                }

                return;
            }
            else
            {
                int x = 100;
                int y = 100;
                string c = intervalText.Text;

                if (runLimitCheck.Checked)
                {
                    --m_runLimit;
                }

                if (stringRadio.Checked)
                {
                    SendKeys.Send(stringText.Text);
                    return;
                }
                if (leftMouseClickRadio.Checked)
                {
                    mouse_event(m_mouseLeftDown, x, y, 0, 0);
                    mouse_event(m_mouseLeftUp, x, y, 0, 0);
                    return;
                }
                if (rightMouseClickRadio.Checked)
                {
                    mouse_event(m_mouseRightDown, x, y, 0, 0);
                    mouse_event(m_mouseRightUp, x, y, 0, 0);
                    return;
                }
            }
        }
    }
}

This program was built to simulate a mouse-click or typing a letter or phrase (auto-clicker). An interval is given on how fast the function would run. In the image above, the phrase "Type Here" would be typed 10 times a second (1 every 100 milliseconds).