Sunday, February 28, 2016

Alive and Kicking

Progress.... is slow. Sometimes faltering, sometimes stagnant. But I'm still here. By now I've signed up for dozens of online courses. Let's not go into how many I've finished... lets not even talk about how many I started.

I mean, I've branched out at least right - expanding beyond the yesteryears of javascript, I've mastered the.. fundamentals... of C++, dabbled with SQL, explored a plethora of IDEs, honed my google-fu from a dull blade to a slightly less dull blade. Book marked or made note of then immediately turned around and forgot about hundreds of websites, blogs, video series, books, etc. Why.. I even made started github account with nothing to show! Spread out too much you say? Maybe a bit too much, definitely a bit too much.

I've got an idea, how about we draw up another list. This time of excuses reasons why I've failed to launch on so, so many endeavors, and then we can write a list of how to change that!

Too depressing. Instead, I'll go with  a list of the positives from the last two-ish years. Yeah, that sounds better.


Let's see, personal life...
  • Married, stable, no - rock solid.
  • Recent acquisition of first child.
  • Sleeping well enough, despite newborn.
  • Energy levels have normalized since changing shifts. Despite newborn!

Yuh huh, now, professionally...
  • Working among the living, no more graveyard shift. Thanks newborn!
  • Concentration fluctuates, but better. Never underestimate the value of access to daylight.
  • Taking pride in my work ethic once again. Keeping a seat warm and getting paid is great. It's the dream job for many. Not me.
  • Stable employment right in next to the desired field! 

Academically...
  • Three years on. I. have. not. given. up.
  • Second year of classes. Slow and steady.
  • Honor Roll, honors society, accolades, enjoyment.

So, to really get down to it, to really break this down like I absolutely love to do, here's the perfect image of how these last few years have gone.



However fast or slow, you better damn believe I'm going to keep playing with those switches.

Friday, June 6, 2014

State of affairs

So it's been an entire year, but I've finally and at a snails pace finished the CodeCademy JS course, one that is allotted for 10 hours. Sad in one regard, however I stuck with it for a year. Perhaps that's something.

I've also been peeking at other web projects from beginner programmers and have come up with an idea of my own that I've been working on. I've essentially gone to the drawing board here to come up with some 'big picture' ideas as well as breaking the pieces down to individual scripts.  Nothing to 'publically' report just yet, but here's a tidbit...

Resource Gathering Model:
BASIC:
On RESOURCE GENERATOR Click:
-Roll random number or grab random int with lower probability for higher RESOURCE TIERs
-Begin by rolling from 1-1000, if number is below 600, set variable to then award LOWEST TIER RESOURCE.
-If number is Above 600 or but below 900, set variable to reward SECOND TIER RESOURCE.
-If number is above 900, set variable to reward THIRD TIER RESOURCE.
-Perform second roll to determine how much of the resource to give.
-Roll Between 1-1000 if Between 1-500, give variable RESOURCE +10
-Between 501-800, give Variable RESOURCE +15
-Between 801-1000, give Variable RESOURCE +20
-Perform function that will pass the +RESOURCE amount to the correct RESOURCE TIER object.

ALTERNATE VERSIONS / BUFF IDEAS:
-First roll is inclusive of the previous tiers, i.e. rolling a THIRD TIER resource will also grant SECOND and FIRST tier resources.
-Resource Multipliers based on temporary buffs or permanent items, be mindful of the math involved as to not inflate numbers too greatly (multiplicative versus additive, order of operations)
-Add a third roll for increase to RESOURCE amounts between random numbers, ie 5-10, 11-15, 16-20 (see above for roll values)

HOW TO BEGIN:
-Begin by creating a single "RESOURCE GENERATOR" button with an onClick function.
-Create an object to store RESOURCE data.
-Create a function to make first roll to determine what TIER RESOURCE will be added.
-Create function to roll a second time to determine the number of RESOURCES to add.

CURRENT PROBLEMS:
 Setting a variable from the first roll that ties into the second roll allowing it to recognize what RESOURCE TIER it will be adding to.
 Adding a function that will return the proper +RESOURCE VALUE to the proper RESOURCE TIER

And so, we go from here. Who knows, maybe in a year I'll either be done with this project or have given up entirely.

Monday, May 19, 2014

RPS Progress Post

It's still ugly, it's not complete, but it's coming along.
 

Still need to tie some of the elements together for proper functionality (right now the graphs don't update), change the appearance and color scheme on nearly everything, add a few more controls (show / hide graphs), and then... to the stars.
 
The graphs are courtesy of Chartsjs.org, which to my understanding are not able to be modified on the fly in the manner I'm seeking. I'll need to find something else that better suits the need, however this serves as a nice proof of concept. The code snippits I'm looking at here are certainly far and above what I'm capable of on my own at this point. I'm not keen using code unless I'm actually learning from its usage, this will be a key factor in choosing the final chart script.


Update: Looks like I spoke too soon, there are some simple tutorials out there on dynamically updating the graphs though a solid API from the developer does not yet exist, it will be possible to suit my needs if I land on Chart.js as my final choice with this. [Source1] [Source2]

Sunday, May 4, 2014

Disappeared already? What a jo-oh there he is.

So posting on here has slowed a bit, JavaScript learning has as of late as well- but I'm certainly not down and out.

For a good week there I felt like I had hit a spot where my brain was full as referenced in the last post. I gave myself a bit of a rest, slowly dipping my toe back into it over the last few days. It's been quite refreshing, as I feel as though I'm again starting to grasp the concepts that were evading my memory in lieu of hammering down the syntax. I wouldn't say I'm ready to dive back into coding head first just yet. I've been busy elsewhere...

Projects, Project Goals, Long term learning:


What I have been doing is focusing more heavily on my project ideas, specifically the long term project, which we'll call Project E. Project E is going to have a lot of elements involved that I have not yet began to study. While I have already had in mind a few other projects, it is starting to seem more natural that each one should each have a piece leading up to and fitting in with Project E.  The goal is multi-factor.

  • Each small project will require its own planning, roadmap, and code. The hope here is to enforce project planning and small project coding through repetition.
  • Each project will be quite different. I hope to approach the coding aspect in different ways as well, working with JavaScript and eventually moving into Java or some form C.
  • The differences are beyond the chosen languages. Each project has been thought out to attack a problem logically in a different way than the previous.
  • In addition to the differences there, the functionality of each is different. Requiring different types and levels of user input, storing (or not) data in different ways, and displaying the results differently from project to project.
  • Differences in mind, each project will have a 'theme.' A piece of the logical puzzle that will eventually and hopefully directly relate to Project E.
With all of the above factors and more in mind I am heavily focused on developing well rounded skills starting with several small pictures, and eventually a much larger one should begin to emerge. This is to avoid one-track-minded projects that would eventually fail to challenge.

Projects A through E:

So to lay out the bare basics here are the most rudimentary and simplistic means to describe each project goal:

Project A: (Rock Paper Scissors) Strictly controlled user input, UI/UX (HTML/CSS) refresher.
Project B: (Contact List) Data input / deletion. Data storage (Local and DB). Database considerations and practical application (SQL vs Oracle).
Project C:  (TBD) Hoping to dabble in data presentation (charts / graphs), best security practices, and scalability. Bear in mind this is still a placeholder of sorts. As I'm slowly thinking of obstacles that will arise in Project E, I will eventually hammer this one down with more specifics.
Project D: (RSS Reader - Mobile - Java or C variant) This will be a springboard to developing a desktop client and anonymous meta-data collection.
Project E: (Unannounced) This project will combine the unique elements of each project before and introduce data analysis, data verification tools, and version control. The Data Analysis aspect will be center stage, for this I have already enlisted assistance, more to announce later. Whew!

Given a rough estimate, I would say project A is about 50% done at this point. I cannot say that I will stick with each project until completion. Ideally I would however realistically I'll likely be bouncing around between them. This will be determinate on several factors not limited to: core concepts I'm learning at the moment, what I believe I need to strengthen at the moment, and any ideas I come up with that would make a good addition to an individual project, and what I had for breakfast.

In summary: If at this point is has not been cloudy enough, I will clear the air by stating my career interests heavily lie in project management with coding as a springboard to that ultimate goal. To achieve this, I must develop deep knowledge of coding and coding concepts, as well as the management side of the dice.

Up next: Abstractly realize the individual projects A through D, recognizing the unique problems each one intends to solve and the various ways to reach those goals. Much like a software development cycle from a competent business' perspective, this will give me 'quarterly' goals, helping to further clear the fog and set course for the future.

Thursday, April 24, 2014

Object, Class, Constructor, Instance, Literal String, Regular Expression, Cranial Explosion

A few days later than I'd like to be on an update here. I'm slowly reaching toward getting over one of those "my brain is full" slash "Where did my motivation go?" slumps.  I changed directions a bit and have been slowly picking away at Mozilla's JavaScript offerings as mentioned in my previous post.  It reads quite a bit differently than the 'For dummies' book I've been perusing. I'm running into a lot of concepts that for now seem over my head and unfortunately are muddying the waters a bit for one I have previously covered as well.  For starters, the challenge is both frustrating and pleasing. Frustrating in that I'm not fond of taking steps backwards while moving forwards, or forgetting/confusing previous knowledge while wrapping my head around something new. On the other hand, it is rewarding in that there is such a treasure trove of new concepts and new resources to plunder. The challenge is a driving factor, and limiting factor. Time to turtle up!

I've also been dabbling a bit on the Rock Paper Scissors script I got up and going a few weeks ago. I spent a few hours planning how I want a 'final' version of this product to look and behave, as well as a roadmap for how to get there. This includes physical drawings of the functionality of the code, and visual design of the user layout. After laying the groundwork, I spent a fair amount of time researching CSS3 and the capabilities as such. It has, to my enjoyment, come a long way since the original incantation of CSS. Specifically, I've been utilizing the 'animation' and 'transform' functions to layer several visual actions on top of another for specific elements of the page.

In doing so, I'm hoping to fill several knowledge and experience gaps. Re-learning the basics of CSS as well as picking up new (and developmental) functions will be helpful in moving forward with any web design. Layering multiple visual actions has been a bit tricky thus far, but has also been an excellent refresher for my creative mind. At some point, I will need to tie the CSS into the JavaScript, to modify the page layout on command with a visually stunning, modern look and feel in mind. Combining CSS3 and JavaScript will add to my repertoire as I continue to focus on learning scripting languages, and in fact, the long term project I have in mind will heavily include the meshing of CSS / JS - and I may even end up reusing some specific elements.

My current objective is to delve deeper into Mozilla's development site, and take a healthy amount of time going back to patch up the elements I am starting to let slip or question myself on. The RPS project is still on the side burner, hopefully I'll have some results to share soon.

Friday, April 18, 2014

Resource Numero Uno

Reminder to self:

http://gitbookio.github.io/javascript/

Take a break from the coding, brush up on the concepts!

Further reading:

http://www.theodinproject.com/courses?ref=home

Mozilla offers a great JS resource, as well as many others.

https://developer.mozilla.org/en-US/docs/Web

Saturday, April 12, 2014

Project Management 101 Introduction to Project Management.

I've given my brain a rest for today on the coding and cramming end, instead I began thinking about the next couple of projects I have in mind. Namely the address book, and another more long term idea I'm mulling over that I believe will be a great labor of love project.

I realized I'm in a good place to start looking at the bigger picture, outside of coding and coding concepts, and start thinking about what software development lifecycles look like. As I suspected before doing my 'rigorous' Googling, there are multiple models one could follow here, each with their pros and cons. This has got my brain churning over the logistics of various projects built for various clients within various team environments and how this might look from the perspective of a code monkey - working on bits and pieces to meet deadlines, and a project manager - putting the jagged pieces together to meet their own deadlines. I've realized that when I eventually make the shift into this field, I want to go in with my eyes on the big picture just as much as on my own tasks. While I haven't yet dug into many resources on this, it's yet another topic of interest to try and pile on to my growing desire for knowledge.

That said, I'm currently in the market for a tidy little piece of software development...software to help me plan and track these ideas and get them off the ground. I'm going in blind here, while taking some of the above in mind, I'm trying not to overwhelm myself with bulky planning software adding yet another layer of learning on top of everything else. The features of the software or software package I need seem simple enough:

-A visual planning apparatus for a design roadmap
-Timeline and task breakdowns able to be built for an individual in mind in lieu of an entire team.
-Feature changes tracking / revision history or some other fancy sort of note taking addon.
-Ease of use, as in really, really easy.

These 'features' will I'm sure have different nomenclatures in the programming community (hey I'm still pretty green to this), but I'm sure I'll connect the dots. Maybe someday I'll write up a review of different types of such software, who knows.

What I don't need, at this moment, is something as complex as SCRUM or some of the SCRUM derivatives. Which seem to have a focus on tasks broken up into teams in a much more dynamic and fast paced environment than I'd be facing for the time being.

To close, I found this tidbit of information I thought worth saving via a reddit thread from one of the previously mentioned subreddits I'm subscribed to.

The original post is a novel question, which seems simple enough, asking for tips on collecting requirements from clients before a project begins. The top comment provides useful insight:

Identify problems. Problems are what you are building a system for. Don't let them make design decisions for you.
Example from today's meeting: the business I work for has indicated that payments of a certain type must not cross fiscal boundaries and if it does it must be broken into two payments, the first ending on the last day of the current fiscal year and the second starting on the first day of the next fiscal year.
This is a design solution. It doesn't tell me the problem. The problem is that the budget allocated to payments of this type is tracked by fiscal and needs to be both communicated to the people receiving the payment and to accounting to consolidate against.
The requirement in this case is two-fold: Allow accounting to see payments by fiscal year for consolidation and to change the output of the system to indicate limits by fiscal.
Their solution would have been: Semi-complicated date math that arbitrarily splits payments across fiscal year boundaries. This is roughly a full two days from a developer to implement then change all the unit tests to expect this result.
The true solution is: Add a column in a report and add a definition to the contract template. This is zero project time because reports and policy/contracting are separate departments not constrained by the project scope. Arguably the work could have already been done by now.
Requirements gathering is asking a question and getting a problem. Design is asking a question and getting a solution. Don't let people who know nothing about the system other than it's use dictate solutions.


 Obvious words, let's hope I don't loose sight of them.