Posts

Showing posts from November, 2022

Building Quality Programs: Stop rushing me; I’m Optimizing

Code optimization improves code quality and efficiency. Software developers should consider optimization as they are writing code and should reconsider code optimization when the project is complete. Code optimization takes extra time and must become an intentional part of a programming experience. When addressing design-level optimization, developers consider the program architecture and focus on gaining optimal performance. When optimizing code, I start with finding similar code pieces to encapsulate into classes, methods, or functions.  I group areas of concern like similar objects or characteristics like shape and color. Next, I look for ways to decrease complexity in operations and functions to make them clear and concise. Program efficiency requires removing dead code, redundant expressions, and unnecessary variables. The create-react-app serviceWorker.js file provides an example of code optimization: const isLocalhost = Boolean( window.location.hostname  === 'loc...

Programming Differences: Coding Preferences Do Not Dictate Value

This program should ask the user to guess for a word 7 times and exit when the word is guessed correctly. This program contains logic errors in that it does not run as intended. This program does not exit after the user correctly guesses the word. A functioning Python program would require additional code. Software Developers utilize linters to automatically format their code according to a modifiable set of rules. Python is a difficult language to utilize a linter in because the linter cannot assume where multiple blocks of code end at the same time. This program is challenging to compare to other real programs in other languages because this program does not run and is not complete. The indentation is wrong after the while loop and quickly breaks this Python program. Indentation does not break a Java program because it contains a predictable syntax to indicate where a block of code begins and ends. In programs of this size, I rarely notice a difference between languages in terms ...

Plant a Seed Watch It Grow: The Journey of a Software Developer

Amazing software developers often approach tasks differently than I do and utilize different tools than I use. Some of the people that I have learned the most from are the people I have found that are the most different from me. Developers often integrate tools that make their coding experience comfortable and enjoyable. GitHub and GitLab are similar tools that accomplish many of the same jobs. When working in GitHub, I modify my study to take place in the browser over the desktop app. On my personal projects, I regularly utilize GitLab instead of GitHub because I prefer the user interface. These choices are my personal coding preference and another developer might completely disagree with me. A personal learning style or preference does not have to limit a developer from engaging in other tools and learning new things. Like GitHub and Gitlab, CRON and Jenkins are similar tools that are used to accomplish many of the same purposes. A CRON or Jenkins job is a scheduled task. CRON task...

Git Flow: Dogmatic panacea is an illusion

Image
On a team of 3 developers working on a startup mobile app, I would recommend Agile Feature Driven Development. A mindmap allows a company to record the desired application features from the customer. After building an overall model with user stories and wireframes, the list of features would be broken down into tasks. A task outlines the work that will be performed by the software developer in a specified time period or sprint. A main branch would be created as the initial shell of the program. Some small startup companies might skip the development branch and work off of main due to a lack of experience or a distaste for complexity; however, building a development branch undeniably enables quality assurance. A comprehensive branching approach requires a main branch, a development branch, a release branch, a hotfix branch, and feature or task branches. A development team should never work without a release branch because then your individual changes are rolling into main without clear...

Database Wizard: The backbone of Machine Learning and AI in an agile environment

SQL, AWS, and SQL Server are useful tools that allow one to load, clean, validate, and retrieve relational datasets needed for AI and Machine Learning. AI and Machine Learning rely on data stored in a database. In traditional models where modeling occurs outside of the database, machine learning still depends on SQL data pipelines for data sourcing and data cleansing. Database Driven Machine Learning allows applications to be built inside of the SQL database without moving all of the data as in traditional models facilitating fast production and reducing company overhead. SQL queries implement Machine Language Models directly. AI tables allow database designers to train data. AI tables enable a database to predict missing data based on previous data trends.  https://www.projectpro.io/article/how-to-become-an-ai-engineer/445 https://www.ijcsmc.com/docs/papers/March2016/V5I3201617.pdf https://sqream.com/blog/the-role-of-sql-in-machine-learning/ https://www.infoworld.com/article/36077...

The Master Toolkit: Develop Depth of Concepts and A Breadth of Languages and Approaches

 Knowing when to utilize a language enables a software developer to manage large teams effectively.  A successful developer may see value in scoping only to a specific language to learn depth of knowledge in a specific area; however, exposure to multiple programming languages allows a software developer to visualize the big picture. After exploring many languages, one learns programming languages all work together to serve different purposes. C Programing: Foundation of many, Ruler of one C provides heavy influence on the creation of many of the popular languages utilized today. JavaScript In Plain English highlights C as a foundational language that shaped other programming languages: “one-third of standard Python libraries are implemented in C.” This suggests C programming significantly influences Python. Some people believe that Python exists as the next version of C programming. Python undeniably provides portable, readable code; however, C programming presents significant...

Big Data Indexing: Surviving consumer motivated mentality

Consumer behavior undeniably motivates society. Large companies utilize databases to store products purchased by millions. Indexing allows a user to move through millions of data rows in seconds. Indexing allows a user to recall information categorically. A phone book organizes information in a similar way: categorically according to alphabet. Instead of searching every entry, a user searches the information in the relevant letter group. Indexes undeniably help users access data quickly; however, indexes require storage space as they utilize two additional columns for the search key and data reference. Indexing causes more work for the database designer as the index must be updated whenever a database receives an update. Updating the indexing in a small database with little traffic may seem simple; however, a database that receives a lot of traffic like amazon requires frequent updates. A covering index improves query optimization by eliminating key lookup. An execution plan allows an...