So, you wonder: what's the 'Long and Short' of who Steve is?
Well, okay let's start with the 'Short'. Briefly put: through website development, I sincerely enjoy bringing efficient administration out of the storm that - like this webpage's background - invariably comprises the "background" of so many of our businesses and our lives personally. I like to teach and yet to remain teachable, and am blessed at seeing that storm calmed into meaningful order. Even since very young, this sprung up in me as I began to program early on from elementary school. Later, after working in basic Information Technology to even highly-sophisticated Systems Administration responsibilities for fifteen (15) straight years, in 2013 I began once again to code professionally! I did so on the job for a few years, then finally in Spring 2017 I ceased an opportunity to learn it even more in depth. There you have it! Scroll all the way down to check out technologies for which I have recently dug more deeply into; they're shown in
Want more details? Absolutely! Grab your favorite cup of java and let's get to know each other as I share with you (the 'Long' of it about who I am) below...
Coding, Almost From Birth!
Born in Detroit as the youngest of eight, I initially learned a great deal from my older siblings' experiences, an advantage which set me ahead of the typical learning pace and mindset. Before leaving elementary school I began coding my first computer programs, and by middle school I was helping the computers-class teacher while also personally unveiling Bill Gates' code to help me in various development including gaming programs, and my own personal financial-management program which I preferred over what I found on the market. By high school this grew to a more-involved accounting program, at which time I also even coded an inventory- and customer-service management interface for a water-well drilling company's daily operations.
Simultaneous to coding, I found a love for administration and statistics - particularly when I could couple it with athleticism that I was blessed to excel in due perhaps to sibling competition as well as defending myself in a larger city. Though my defense was never that of running from a challenge, eventually athleticism manifested most in my running long-distance events. I was amazed to win at it from word "go" (literally) in seventh grade, through high school's county, state, national, and eventually (through overall conditioning) to bring a Cornell University semi-national military excellence competition victory for my University of Michigan. I still love to run competitive long-distance today, have enjoyed running with (and yes - had a share of surgery next to) U.S. and Russian Olympic athletes, and also to analyze the sport with contemporary tools (tools which I aspire to possibly one day take time to code even better). These are used by my social running group friends all over the world!
Other coding that I saw a need for and developed in middle school was that of statistical programs which tracked newspaper-reported information on all the runners in various local counties, and was also able to help local coaches both forecast and sort finish times for large events. Hence by high school I was blessed past my share of common Midwest disciplines of newspaper routes, leaves raking, and snow shoveling to the privilege of working for a supermarket owner who employed me and challenged me immediately to not any longer just bag groceries or be his unprecedented-youngest cashier, but to quickly be on his office staff and learn regarding what he most needed: his banking data! He had me learn what was as-of-the-time less known Microsoft database, spreadsheets, and word-processing, and I innovated creation of a management system for his customers data to systematically communicate with their respective banks in determining who among them no longer truly had valid checking accounts and from whose my employer therefore should not be trusting checks.
Decade of Detour & Development!
I could see I would ultimately continue coding, and could likely have taken advantage of non-military athletic and academic scholarships. However, with a strong United States Marine Corps (USMC) family history and tradition (three older brothers, my dad both grandpas, uncles ... all Marines), I never gave a second thought against the "given" that eventually I too would give back to and serve my country in this way. So after initially exploring long-term USMC career options, I ultimately instead followed a shorter-term enlistment of about six years. During that time I not only did combat training, but through USMC schooling additionally "honed in on" accounting and administrative skills. This was while yet sustaining supreme physical conditioning, ultimately rewarded in being named the honor graduate of "company iron man", the promotion-worthy top physical-fitness designation solely awarded to me of approximately 500 Marines I began training with.
Much more critically important, though: it was also in this service time that I began to learn and experience more spiritually while consequently seeking to see myself then live accordingly to what I learned. To that end, my analytical, administrative, teaching and technology-related endeavors began to be largely pointed toward this primary objective. I am grateful that this time of military service gained me experiences to reflect while residing both internationally in South Korea & Okinawa, Japan, as well as domestically in SC, NC & finally CA.
When my active service with the Marines ended, still in California, I pursued work as a security guard and a few other paths before ultimately finding my way back to Technology. These paths involved doing healthcare-benefits claims entry for a major healthcare company in Irvine, as well as a major movie-theater construction-company Purchasing Coordinator’s administrative assistant, plus lastly being an account executive originating personal loans and secured mortgages. In each of these, my propensity was to quickly increase efficiency, and streamline processes, through leveraging my administrative, analytical and technological skills. Security guard schedules were more easily flexed; claims got entered more quickly for whole teams; national movie-theater subcontracting expenses, awareness, accuracy and contract time processes got majorly improved; pros and cons of available loan products were calculated through a computer program I coded and more loan executives avoided slowdowns and inaccuracies due to no-longer needed manual calculations.
In late 1999, the handwriting on the wall was clear. I finally sought out and gained employment where I would remain for over seventeen (17) years, at a place in which I was able to see materialization come together in one accord for all my aforementioned giftings of administration, analysis, teaching, coding, and seeking organizational efficiency. Before I left my incoming Human Resources appointment, I voluntarily committed to changing their paper timesheet to essentially a complicated Excel “program” which factored in varying HR policies and was then used office wide. Starting as the Information Technology (I.T.) Help Desk Coordinator, I learned a great deal about how to help the “other-than-technically-skilled” staff both in and out of the office implement and remotely navigate their basic and complex computer functions, their advance Microsoft Office functions, their e-mail needs (e.g. Novell GroupWise and Microsoft Outlook) and their complex access needs (e.g. SSO of Relay; PeopleSoft; Goldmine) within the international organization and its tools. A “New Horizons” management class, and their software-related classes proved helpful to me for their more-intricate needs. Additionally, part of my work allowed me to take breaks from the routine and lead/participate on trips teaching English and/or sharing our tools. My international experiences (although some only briefly) expanded to include Canada, Mexico, Costa Rica, Italy, Kenya, Tanzania, Ethiopia, Afghanistan, United Arab Emirates, Germany and China.
In a short time I also actually experienced answered prayer via the rare blessing of bringing back a useful result from a Las Vegas convention: a better Helpdesk ticketing tool. I became a certified engineer ("ACE") for it, installed and configured it, and it remained dependably and robustly in place for 10-15 years while lesser "trendy" tools used by sister organizations and “corporate” came, broke, and were repeatedly replaced. Eventually I enhanced its IIS configuration through ISAPI Rewrite to dynamically route internal vs. external requests. The suite this came with also did large-scale multicast computer deployments, software metering, license administration, remote-control management, and hardware inventory. So not only did I become a CompTIA A+ certified technician of basic desktop and laptop hardware, I quickly became the systems administrator for these things including large-scale operating system deployments, Microsoft Group policy management (GPOs via GPMC), imaging software, batch-file scripting, etc. This eventually lead to taking on responsibility of other systems from MS SQL database administration, to Voicemail Servers, to Print-Servers, to Event media and equipment setup, to Video-Conferencing solutions, to File Servers, Remote Management via Citrix, Bomgar, and VPNs, plus Network user Security administration for Novell, Microsoft Active Directory and ultimately for Google cloud services and Google Apps.
With our organization “going Google” in 2013, i.e. to the cloud with migration of email, files, collaboration & remote-management infrastructure operations, I could envision an eventual lesser need for in-house systems administration. Our Software Development team was just then coincidentally looking to learn together how to convert time-consuming technologically-going-obsolescent locally-installed-desktop applications (in Delphi, Crystal Reports, BDE) into more flexible, portable and industry-standard web-based applications. This potential transfer was also something which I was excited about for a third reason: I had five years prior “bit the social media ‘bullet’” per se by joining Facebook in order to diagnose internal security concerns for posts about our organizational international activity. Now, five years later, I personally had created and operated an international “A-rated” Twitter account and international Facebook page which had grown (around 70,000 likes/followers) - and echoing in my mind was that efficient and fruitful operation of this was crying out for a regular website to come alongside this Facebook page, plus I had created a 300-400 member neighborhood Facebook group similarly in need. Local coding meetings and weekend camps were simply not making realities of these ambitions. However, transferring from Systems Administration roles I did while a "Computer Technician" and instead becoming a Software Developer seemed to be the way to go not only to help my organization, but to learn how to accomplish this outside need too.
So in 2013, I was privileged to join our small Software Development team (about half a dozen), consisting of coders with perhaps dozens of years coding experience each and from places like Siemens and Macaroni Grill, the State of California, and the State of Tennessee - with unique international familiarity having within the team Haitian and Thai gentlemen, plus having Brazilian and Costa-Rican family, and a licensed criminal-law attorney who even decided to join the our team. As we took on our flagship web-based application, the lead former-staff consultant walked us through employing C# through MVC. While some foundational pieces were put in place by the consultant, myself and the rest of the team coded much of the application together, quickly engaging with virtually all facets of full-stack development as guided to do so. Additionally, my previous systems administration tasks came in handy in helping set up our local internal test servers, and even our production server in the cloud with Amazon Web Services (AWS) along with its necessary CSR certificate, SSL certificate, domain purchases, and its secure plus private positioning over our WAN and Site-to-Site VPN, while ensuring IIS was properly configured for secure routing from point to point, and a strategy was in place for periodic security and update patching.
The coding itself involved a steep learning curve for all of us on our team, but after less than a year the initial application's first release was out. Additionally, I personally coded a Microsoft Web-forms application that could be used as middleware to update our marketing website’s product pricing (personally hiring former staff to consult for guided assistance). I thereafter created an application with a PaaS to facilitate automated inter-departmental workflow of new-employee / changed-employee technical setups department leads had approved through Human Resources. However, both of these applications stayed at their non-released first version since ultimately project-management and the team lead chose a different approach, fully within their authority to do. While we all learned a great deal, much of the work necessary - even beyond the foundation - became segmented and no longer learned by each individual but began to primarily land amidst one to three with the most experience (i.e. before I had been on the team). Beyond that, we additionally began to change directions and move to a Platform as a Service (PaaS), outsourcing much of the efforts to Portugal. That new direction as well as our hybrid of desktop / web-based applications' decisions coupled with my propensity for personal comprehensive business analysis toward efficiency hence lead me to instead volunteering to fulfill what was then a need of automation aspects of our team. I therefore began it: about two years of less website coding and instead taking requests essentially of extracting queries from our desktop application, customizing them, and creating requested e-mail triggered and time-triggered PL/SQL (Oracle) stored procedures (and other objects) in our Oracle database that would all together send users desired (no manual-intervention any longer needed) complex reports and data exported and formatted to Excel or even uploaded to FTP in the case of our completed product lists (in 1500+ languages) for our organizational mobile application.
Since we went to a PaaS, web-application modules were being more quickly facilitated with less people, and since several initially-identified needed-automated procedures were tackled, it was understandable that another team member who initially alone did them could handle any identified in the future. Hence there was no longer a need for as many developers. I was therefore offered the opportunity to either look for a different role within our organization, or alternatively if I did not find a suitable one - I would be given assistance toward transitioning away from the organization.
This assistance indeed became the ideal opportunity to fill in any gaps in my full-stack web development understanding, and to finally learn web development in an unhindered, focused, and systematic way. Aligning with other pieces simultaneously falling into place just right, I leveraged this chance and decided to immerse myself at school at Coder Foundry in Kernersville, NC. There I have reviewed and enhanced understanding in
I look forward to continuing to grow, to learn, and to persist in welcoming and overcoming whatever challenge might be put before me!
Coding and Beyond!
Although I began coding as early as elementary school, made programs for coaches in middle-school, and then more for a water well-drilling company by high school, my actual career paths took some other turns (check out details at "Introduction | Who am I”).
If you have glanced at my résumé, you will see that several careers and training toward them are listed there. However, by way of a brief summary: I primarily worked serving in the United States Marine Corps for approximately six years (1993-1998) followed by originating mortgage loans (1998-1999), and then spent over seventeen years (1999-2017) with what is today known as “Cru” working in a gamut of technological roles from first-tier Helpdesk support through backend Systems Administration and ultimately via Software Development.
Various training and credentials during this time have included:
Past and Present:
The Future:
I'm not sure where my next adventure will take place, but I look forward to the possibilities!
After hours I am blessed by opportunities to pour into the community. Whether that be the case via running the 350-member communinity Facebook group I created to administrate more efficient collaboration and camraderie, or the international almost-75,000 member page I created and admin. for folks who like my church denomination, or even particularly fun: running races to raise funds for a children's home (various years together with my daughter, Bella, or with my wife, Monica) ...
Of course, I continue to enjoy dating my wife and going to the movies ...
We enjoy seeing our golden retriever loving her time with classmates in playschool ...
While, lastly, I try and get in reflective bike rides when my body
cooperates and and the sky has become calm and beautiful!
Script Summary:
In this program, I will evaluate a series of five (5) numbers entered by you, the user, in five distinct ways. I will determine:
Please **scroll down**.
To get started, please enter five (5) integers you would like me to evaluate.
Note: For best results, try to stick with numbers less than 1 billion. Otherwise your calculation may be deemeed "infinite".
Results:
Script Code:
function fiveCalculations() { var sampleVarOne = Number(document.getElementById('testOne').value); var sampleVarTwo = Number(document.getElementById('testTwo').value); var sampleVarThree = Number(document.getElementById('testThree').value); var sampleVarFour = Number(document.getElementById('testFour').value); var sampleVarFive = Number(document.getElementById('testFive').value); var leastNumber = sampleVarOne if (sampleVarTwo < leastNumber) { leastNumber = sampleVarTwo } if (sampleVarThree < leastNumber) { leastNumber = sampleVarThree } if (sampleVarFour < leastNumber) { leastNumber = sampleVarFour } if (sampleVarFive < leastNumber) { leastNumber = sampleVarFive } var greatestNumber = sampleVarOne if (sampleVarTwo > greatestNumber) { greatestNumber = sampleVarTwo } if (sampleVarThree > greatestNumber) { greatestNumber = sampleVarThree } if (sampleVarFour > greatestNumber) { greatestNumber = sampleVarFour } if (sampleVarFive > greatestNumber) { greatestNumber = sampleVarFive } var meanNumber = ((sampleVarOne + sampleVarTwo + sampleVarThree + sampleVarFour + sampleVarFive) / 5) var sumNumber = (sampleVarOne + sampleVarTwo + sampleVarThree + sampleVarFour + sampleVarFive) var productNumbers = (sampleVarOne * sampleVarTwo * sampleVarThree * sampleVarFour * sampleVarFive) document.getElementById('resultA').innerHTML = "The smallest number entered is " + leastNumber + "."; document.getElementById('resultB').innerHTML = "The largest number entered is " + greatestNumber + "."; document.getElementById('resultC').innerHTML = "The arithmetic mean (a.k.a. average) of the numbers entered is " + meanNumber + "."; document.getElementById('resultD').innerHTML = "The sum of all the numbers entered is " + sumNumber + "."; document.getElementById('resultE').innerHTML = "The product (multiplication) of all the numbers entered is " + productNumbers + "."; }
Script Summary:
In this program, I will find the factorial of a non-negative integer (between 0 and 170) entered by you, the user.
To get started, please enter the integer you would like me to evaluate. Your number should be non-negative and whole.
Results:
Script Code:
// I establish a function that is passed a number that the user wishes me to evaluate. function factorial() { var numToFactor = Number(document.getElementById('numberToFactorialize').value) // I ensure the number is not negative: if (numToFactor >= 0) { // If it is not negative, I began calculations: var result = 1; for(i = 2; i <= numToFactor; i++) { result *= i; } // I then send the calculation back to screen output: document.getElementById('factorialResult').innerHTML = result; } // However, if the number was negative then I notify the user (and they can try again): else document.getElementById('factorialResult').innerHTML = "Please only submit a non-negative integer." }
Script Summary:
In this program, I will print a number span of [1] to [100] in ascending order. However, I will accept two integers from you, the user, that are between (1) and (100).
In the printed number span:
Please **scroll down**.
To get started, please enter the integers you would like me to consider while I print my span list. Your numbers should be between (1) and (100).
Results:
Script Code:
// I establish a function that is passed the two numbers which the user had entered as samples for evaluation: function produceEncodedResult() { var sampleMultiplesOne = Number(document.getElementById('getMultiplesOne').value); var sampleMultiplesTwo = Number(document.getElementById('getMultiplesTwo').value); // After setting those two number to memorized "variables" (above), // I now make a "list" which will store into memory all of the output necessary: var listNum = ""; // Then I simply loop through from 1-100, checking to see whether the entered // numbers are multiples of the each numbered step of the loop. // If they are, it adds to the list either Fizz, Buzz, or both. // Otherwise it simply adds to the list the number (in brackets) of the loop (from 1 to 100): for(var i = 1; i<=100; i++) { listNum += "[" if (i % sampleMultiplesOne <= 0) { listNum += "Fizz"} if (i % sampleMultiplesTwo <= 0) { listNum += "Buzz" } if (i % sampleMultiplesOne >= 1) { if (i % sampleMultiplesTwo >= 1) { listNum += i } } listNum += "] " } // Finally, all done with looping through 1-100, it simply // outputs the result of the list to the screen: document.getElementById('encodedResult').innerHTML = listNum;
Script Summary:
In this program, I will determine whether a string entered by you, the user, is a palindrome.
Please **scroll down**.
To get started, please enter the string you would like me to evaluate (note: I will convert your string to uppercase to evaluate case insensitively).
Conclusion:
Script Code:
// I establish a function that is passed a string submitted by the user. // This string is then broken apart and found to either be a palindrome, or not. function palindromeChecker() { var wordForward = document.getElementById("wordToCheck").value; // After setting the value of anything submitted to a memorized variable, we // check to ensure there was actually a word entered before clicking the button: if (wordForward.length > 0) // If so, then we begin that conditionally-passed subroutine, starting with // setting a place in memory ("wordBackward") to output the word from the back // to the front: { var wordBackward = ""; // Then a loop is set to go from the beginning of the word however long it // is, one character at a time (don't get confused by zero ... computers often // start with zero): for (var i = 0, len = (wordForward.length) + 1; i < len; i++) {wordBackward += wordForward.substr(((wordForward.length) - i), 1)} // Once the loop is comlete, it's simply time to check to see if they were or // were not the same, and send the answer to the screen: if (wordBackward == wordForward) { document.getElementById('result').innerHTML = "What you entered (" + wordForward + ") is indeed a palindrome!" } else { document.getElementById('result').innerHTML = "That is not a palindrome because '" + wordForward + "' does not equal '" + wordBackward + "'."} } // In case the earlier check for a word having been entered before the // submit button was clicked fails, the user is alerted accordingly: else document.getElementById('result').innerHTML = "Please enter a word before clicking [Submit]." }
Visit "LUXURIOUS COLLECTIONS BY ANTONIO'S"! This was a mock-up E-Commerce starter site built for practice in less than two weeks. Ask me for a test admin. login to see it more fully.
Alternatively choose to look at the preceding couple-hour project of quick (fun) C# exercises whipped up primarily simply to test MVC's use of C# Controller actions vs. those of Javascript.
Visit Steven A. Begin's blog, my personal web-engineering journal. In theory, weekly one could provide an update about projects being worked on and the technologies encountered along the way.
While browsing, folks could then register as a user so as to leave a comment on anything that catches their eye! Feedback is a great help!
Visit SAB-BugTracker, a few weeks' project as a mock-up ticketing interface, aimed at facilitating continuous collaboration and improvement for development teams' various software "projects" being developed, plus a way to submit ongoing enhancement requests for them thereafter. Given more time, this project itself would even be enhanced, but take a look at where it got within a few weeks!
When I first began contemporary coding lessons, I wrote several simple programs using JavaScript. I would improve these today, but everyone starts somewhere. Check them out!
C# Code which I utilized for both basic exercises (coded in just a couple hours) and also using C# slightly deeper via a quick E-Commerce mock-up site starter (done in less than two weeks) that can be seen by checking out respective sites!
SAB Blog is an MVC application I designed to track my development progress across multiple portfolio projects. Read up on my programming odyssey!
SAB Bugtracker is an MVC application I designed to help users experience the life cycle of a help-desk ticket for virtual projects.
SAB Che¢kbook is an MVC application designed to function like an online, modern-day checkbook to track accounts and expenses.
Car Lister is a mobile application implemented here to track nation-wide vehicle inventory through a massive API data import which then invokes database stored procedures leveraged to systematically find the car you want within data served up through my own Restful API!
Let's grab a cup of coffee together!