Search Results
Search this site
36 results found with an empty search
- Elevating the Developer Experience (DevEx)
While the number of software developers continues to grow worldwide, the demand for software developers is growing much faster. It seems everything we use or interact with in our daily lives is now “smart,” provides insights, is connected to the cloud, automated or integrated into our home/car/wearable ecosystems. Imagine 20 years ago, convincing your grandparents that the development of their coffee maker would one day require a software engineer. Software development is involved in some, or all, steps of the product lifecycle for nearly every product. Attracting and retaining strong software developers has become increasingly more challenging as the opportunities outpace the supply. Plus onboarding new employees is not only costly but very time-consuming. Efficiently using the technical resources available in a productive manner can overcome these challenges. For these reasons, the Developer Experience (DevEx) has become incredibly more important as we head into 2024. So what is DevEx? As developers navigate complex frameworks, collaborate on distributed teams, and adapt to emerging technologies, a positive DevEx can make all the difference. The DevEx is the compass that guides innovation, collaboration, and productivity. It encompasses every interaction with tools, frameworks, libraries, documentation, and team collaboration in a developer’s daily life. It’s creating an environment where developers can thrive, be effective, and produce high-quality software efficiently. It’s about an organization’s strategic and purposeful effort to maximize developer productivity and satisfaction. How does CANA cultivate a strong positive emphasis on DevEx to facilitate the experience, quality, and efficiency of product development? Collaboration As a remote distributed workforce, collaboration tools are critical to everyday functions at CANA. The DevEx is amplified through access to chat, video conference, screen sharing, hosted code repositories with version control, task management, and defect tracking tools across all devices. Normalizing these tools across projects accelerates the onboarding process for all team members. In addition, the establishment of a regime of routine company and project meetings for sharing status, risks, blockers, and progress ensures issues are addressed in a timely manner. Platforms, Tools and Environments Developers spend a large portion of their time leveraging tools, Integrated Developer Environments (IDEs), version control systems, and collaboration platforms in their daily engagements. A significant aspect of DevEx is developing integrated toolsets and systems that facilitate a smooth workflow. At CANA, we leverage cloud services and hosting options in our development environments, Artificial Intelligence (AI) programming tools to increase efficiency, the latest IDEs, and robust collaboration tools for efficient lines of communication. Documentation Documentation is not only essential for historical significance, certification & accreditation, and product delivery but also for efficient onboarding of new team members to software development efforts. At CANA we focus on documentation from the end user down to the last block of code. As cloud services, microservices, and full-stack application development becomes more important, it’s essential that each technical component is fully documented. DevEx ensures that every aspect of the environment is documented so that a new developer can jump in and create their own development environment without pulling critical resources from ongoing work. This encompasses detailed versions, code examples, installation, setup, and configuration. Onboarding In rapid-paced, matrixed organizations, such as CANA, the importance of seamless onboarding facilitates the movement of key resources from one project to the next as demand changes. At CANA we strive to utilize core tools and processes across the organization to ensure a common working environment. We also leverage frequent communication across disciplines to ensure all resources are aware of ongoing efforts. Lastly, we leverage the detailed documentation discussed above as a launching point for new developers to strengthen our DevEx. Automation Automation enhances the DevEx and plays a pivotal role in reducing manual overhead and improving overall efficiency. At CANA a focus on DevOps practices, Continuous Integration/Continuous Deployment (CI/CD) tools, and automated testing streamlines workflows and contributes to honing steady improvement. Skill Development A positive DevEx requires opportunities for continuous education and building new skills. The technical landscape rapidly changes and building competitive products requires the workforce to keep in lockstep with the latest advancements. It also provides positive challenges and growth opportunities for developers. CANA has established several opportunities including monthly roundtable presentations, team demonstrations, pair programming, internal research and development, and organic mentorship for our team to share and gain knowledge. Distractions Some tasks and roles are easy to jump in and out of, while others require deep focus and concentration. A five-minute distraction could cost over 30 minutes of progress once a resource is stopped, distracted, and re-engaged at full steam again. Daily distractions such as meetings, notifications, and project fire drills can result in unintended impacts on productivity and efficiency. A constant awareness of the impacts of these distractions can greatly improve the DevEx at a company. One of the adopted strategies at CANA has been the implementation of a deep work day (no meetings) where all employees can focus 100% of their time on forward progress without distraction. This has proven to be extremely productive in all disciplines of the organization. “Focus on signal over noise. Don’t waste time on stuff that doesn’t actually make things better.” -Elon Musk Work-Life Balance A positive and successful DevEx must focus on the importance of a quality work-life balance in the development ranks. At CANA, a “work from where you are” culture, flexible hours, and fun initiatives encouraging healthy activities are at the core of our company mission. Monitoring the health and workload of the development resources is essential to a positive DevEx. A successful DevEx is not easy, otherwise everyone would be doing it. It requires constant attention to continuous improvement and monitoring trajectories to ensure each facet continues to remain in a healthy equilibrium. Although the effort required to build a positive DevEx may seem daunting, the returns on investment are priceless and far outweigh the cost of acquiring new talent. In addition, the efficiency gains through positive morale, structured coding practices, and quality are immeasurable. #CANA #SoftwareEngineer #CodeLife #DevLife #CodeCrafting #DevelopersWorld #CodersCommunity #InnovationHub #TechInnovate #BuildTheFuture #CodeJourney #DeveloperMindset #SoftwareDeveloper #SoftwareDev #PoweredByCANAAnalytics “From DevOps to DevEx: Empowering the engineering experience.” Deloitte, https://www2.deloitte.com/xe/en/insights/focus/tech-trends/2024.html#from-devops-to-devex. Accessed 16 December 2023. “Top 10 Elon Musk Productivity Secrets for Insane Success.” Medium, https://dansilvestre.medium.com/top-10-elon-musk-productivity-secrets-for-insane-success-dae584c88e03#:~:text=Musk%20is%20careful%20to%20filter,t%20actually%20make%20things%20better.%E2%80%9D. Accessed 17 December 2023
- Git Repo Access With Multiple Identities
Written by Rick Hanson, Senior Operations Research Analyst, CANA, LLC. Background In this short article, we will outline a useful method of organizing access to version control repositories (“repos”) on remote machines while needing to use more than one set of credentials. The context for using this method is the following. You use the git version control system but work on various projects that require different credentials to access the private upstream repos for each of these projects. Any credential you use is not a user-password pair, as you would normally use to access systems, but a PKI key pair consisting of a public and private key. Since git uses ssh (the Secure Shell program) to access the upstream repo, these keys are often referred to as “an ssh key” (when you are using one of the key pair) or “ssh keys” (when using both). The pair of public and private key is sometimes referred to as an identity in the ssh manual. Now, the issue is: how do you manage the access to these various repos with these various keys/identities? For instance, at work I use a set of ssh keys to access all the repos under my company’s organization in GitHub; also, I have another ssh key pair that I use for my personal projects; I have yet other ssh keys, one for each of the volunteer organizations to which I belong. I used to run a program called an ssh key agent, as a background process, which sorted out the multiple keys for me but the method lacked the fine-grain control over which keys should be used for which repos and often would fail to pick the correct key and so my access to the repo would fail. Yet, there is a simpler method to sort all this out that only involves setting up git configuration files in the most minimal way and also has the added benefit of not needing to run the ssh key agent program. Setting up the configuration for the user’s name and email Git allows one to set up configuration options at (i) the global level (also called the user level) and (ii) at the repo level. If you only need one identity (and thus one set of credentials to access the remote repo), the solution is simple: set up your user information and credentials at the global level. This is done by setting your name and email in the .gitconfig file located in your user’s home directory. You can edit this file directly; however, a better way is to use the following two git commands at the command line interface (or the shell). Just replace the great running back’s name and email with yours. These two git commands will end up writing the following lines into the .gitconfig file located in your/Barry’s user home directory. Setting up the configuration for the user’s ssh identity There are several ways to configure the user’s ssh identity. One way is to load a program in the background that manages the ssh keys (the key manager); then, when git calls ssh to authenticate you to the remote (located on a central server like github.com), the key manager program will handle passing the key/identity to the ssh client so that you can gain access to the remote. But as mentioned above, this method sometimes fails to associate the correct identity with a particular repo (when you need to use multiple identities). Another more direct way of doing this is to set up this association in the git configuration itself and to not bother running the key manager. We’ll start using this new method by setting up a key association at the global config level in git. The following command is an example of how to do this. That command tells git that when it calls ssh to gain access to the remote, it should use the identity (-i) defined by Barry’s ssh key located at the path ~/.ssh/my-personal-key. (The ~ part of the path is an alias for the home directory, which for Barry could be /Users/barry on his computer.) After the git command, the following lines will be written to the .gitconfig file located in the user’s home directory. What are multiple identities? So now, by the above, git knows which one identity/key to associate to all repos governed by git. That’s not exactly what we want yet. Now, we need to take one more step to configure git to make an association of a different identity (from the global one) to a particular subset of git repos. Now, let’s say Barry Sanders gets hired at CANA, LLC. Before being hired, he has already been using git with his personal ssh key (identity). Now, he needs another identity for his access to CANA git remote repos. This identity is now located at ~/.ssh/my-work-key. Now, Barry has multiple identities and he has separated his work credentials from his personal credentials. At this point, how can Barry indicate to git that when he is in a CANA repo on his machine, to use the work identity to access the remote and to use the personal identity to access his other repos’ remotes? Here is the method. Barry creates a directory under his home directory called CANA and now has the directory /Users/barry/CANA on his system. His CANA git repos will now be located in any subdirectory under this directory. Before he clones a work repo, he creates a .gitconfig file in /Users/barry/CANA with the following contents. Then he edits the global/user git config file at ~/.gitconfig by adding the following lines at the end. This tells git to include the lines in the configuration file located at ~/CANA/.gitconfig for all git repos located in any subdirectory under ~/CANA/ – which on Barry’s machine is shorthand for /Users/barry/CANA. This effectively overrides the values of user.name and user.email as well as core.sshCommand when Barry is executing git commands anywhere under the ~/CANA directory. Finally, Barry can start cloning git repos from his employer’s github without having to manually enter credentials. And, as long as Barry issues git commands such as clone, push, pull, and fetch, under the ~/CANA/ or any of its subdirectories, git will know which credentials to apply and the entire remote processing is completely simple and seamless for Barry. As an added bonus, this configuration setup also works when Barry is using the git integration layer in his IDE or editor, because the integration layer is using the same commands, behind the scenes, that Barry was just using from the command line. Final thoughts There is one more level of granularity for git configurations and that is at the repo level. Indeed, at the beginning of this article, we mentioned that the two levels of configuration were at (i) the global, or user, level and (ii) the repo level. The method described above has essentially added another (intermediate) level in between those two levels. We could informally call it the “all work repos” level. This intermediate level only obtained when the user runs git commands – that access the remote(s) – from a directory located at or under the primary work directory (in Barry’s case, ~/CANA). We did not need to change any git configurations at the repo level when using this method. In fact, if we were to work on many projects at work, we might have scores of repos, and in this case, it’s much easier and more simple to handle repo access at the “all work repos” level, rather than at the repo level. In summary, when multiple identities are needed to access git remote repos, we were able to replace a common method of managing these identities — by running the memory-resident ssh key manager — which is sufficiently error-prone in matching the correct identity with a particular repo, by a simple method of configuring git that always matches the correct identity with the repo. #plugins #git #gitrepo #repository #coding #programming #developer #software #CANA
- The Future Of AI
In recent years there has been a huge AI boom. New technologies like OpenAI’s ChatGPT and Github’s Copilot have excited the public and paved the way for rapid innovation. As a result, we are seeing many new AI technologies across fields: AI based anti-virus software, medical databases with integrated AI tools, and AI virtual assistants for programmers. AI technology will soon become a necessity for companies wishing to keep their data secure. In the near future, criminals will use AI to create more effective malware, more believable phishing attacks, and to convincingly impersonate users. The best way to counter these attacks may be to fight fire with fire. AI security systems could be used to detect attacks as they are happening, identify suspicious emails written, or monitor users for suspicious or risky activity. For example, researchers from the Commonwealth Cyber Initiatives at Virginia Tech and Deloitte are currently developing an AI system that can detect interference and jamming attacks on 5G networks as they are happening, and take automatic actions to prevent the system from going down. Through the use of AI, this system could stop attacks in a fraction of the time it would take a non AI system or manual reviewer. Healthcare will see a large amount of AI integration in the coming years. With AI technology healthcare providers will be able to improve their data gathering and analysis capabilities. One important use of AI is to improve the way we capture and reconstruct images, which can be extremely valuable for diagnosing and treating patients. In addition, AI can be given access to electronic health records and genomic data, allowing doctors to easily find relevant records to a specific case, and allowing researchers to find previously undetected connections between the health records and genomic data. On a more global scale, AI could be used to monitor the spread of diseases, allowing international health organizations to spot potential pandemics before they spread. Of course, the AI technologies that will most affect CANA will be those that assist with software development. Already many new technologies have been developed for software developers, most notably, Github’s Copilot and soon Copilot X. Copilot assists programmers by giving code suggestions and generating code from natural language prompts. In the near future, Copilot X will offer additional features such as locating bugs and generating tests for selected sections of code, writing descriptive descriptions for pull requests, and an early adoption of OpenAI’s GPT -4. Another up-and-coming AI tool for developers is Warp, an AI assistant for your terminal. Similar to Copilot, Warp can provide command suggestions, explain errors, or write scripts. No matter what field you are in, AI will soon become a necessary part of your business and everyday life. Whether you need to protect company secrets, improve your health, or develop the next big technology, AI will be there. We must keep up to date with the latest developments because AI is the future. Works Cited: Aubley, Curt, et al. “Cyber Ai: Real Defense.” Deloitte Insights, 7 Dec. 2021, www2.deloitte.com/us/en/insights/focus/tech-trends/2022/future-of-cybersecurity-and-ai.html. Spatharou, Angela, et al. “Transforming Healthcare with AI: The Impact on the Workforce and Organisations.” McKinsey & Company, Mar. 2020. “What Is Artificial Intelligence in Healthcare?” IBM, www.ibm.com/topics/artificial-intelligence-healthcare. Accessed 25 July 2023. “GitHub Copilot · Your AI Pair Programmer.” GitHub, github.com/features/copilot. Accessed 28 July 2023. “Introducing GitHub Copilot X.” GitHub, github.com/features/preview/copilot-x. Accessed 28 July 2023. Loyd, Zach. “Introducing Warp Ai.” RSS, 16 Mar. 2023, www.warp.dev/blog/introducing-warp-ai.
- MY CANA Sabbatical Experience: Sol Searching
These last two years of LIFE have been anything but smooth sailing; with a crazy pandemic lingering, a challenging school year with opportunities for my boys to learn how to stand strong for their constitutional rights, a cancer misdiagnosis (yes, misdiagnosis!), and much more, it was definitely time to BREATHE. CANA introduced a new Sabbatical benefit available to team members beginning after their third year with the company. The intent of the CANA Bridge is to provide a unique and meaningful way for CANA team members to invest in their personal and professional “why” - what moves them, invigorates them, and gives them meaning. In May 2022, I celebrated my three-year anniversary with CANA. So after allowing the world to overcome me a little too much for a little too long, I knew that a CANA sabbatical was just what was needed for this girl to do a little SOL SEARCHING! Watch below as I tell you about my CANA Sabbatical Experience: VLOG GALLERY To learn more about CANA, please visit canallc.com.
- An Idea From UNIX for R Tidyverse Pipelines
R’s Tidyverse is a collection of R packages that work together with a common functional interface to accomplish data transformations and analysis in the R programming language. To see it in action, let’s consider the following sequence of data transformations on some dataframe (called df) as an example. df <- read_csv(“some_file.csv”) df <- groupby(df, name, a, b, c) df <- summarize(df, qty = qty) df <- ungroup(df) df <- mutate(df, version = “20230130”) Each of the functions groupby( ), summarize( ), ungroup( ), and mutate( ) are from the Tidyverse collection. Notice that the first argument of each of these functions is the data (usually a dataframe) to be operated upon and is the data just updated on the previous line. However, the standard practice is to code such a sequence, not as consecutive assignment statements, as above, but as ONE expression where each step is a “link” in a “chain” of transformations, as in the following code. df <- read_csv(“some_file.csv”) %>% groupby(name, a, b, c) %>% summarize(qty = qty) %>% ungroup() %>% mutate(version = “20230130”) Notice that each step of the transformation is now “linked” to the next with the infix operator %>% (sometimes called “pipe”). Also, note that the first argument of each Tidyverse function is now dropped. That is because the passing of the data from one transformation function to the next is handled by the pipe operator %>%. Eliminating the repeated “noise” on each line also makes the code more readable. The chain of such transformations is called a “pipeline.” Code Usage Example Now, here is a usage of the above idea that we see a lot in our code. If we want to create a dataframe A for output (and possibly use A for further processing), we like to write code like the following (where [step i] is not real R code, but represents some Tidyverse function call, as in the concrete example above). A <- [step 1] %>% [step 2] %>% [step 3] %>% [step 4] %>% [step 5] write_csv(A, "A.csv") But in our codebase, we've seen a variant of this code too, where we want to peek at what the data looks like after step 3, but before going to step 4, as in the following: A_intermediate <- [step 1] %>% [step 2] %>% [step 3] write_csv(A_intermediate, "A_intermediate.csv") A <- A_intermediate %>% [step 4] %>% [step 5] write_csv(A, "A.csv") The variable names often don't say "intermediate" and this fragmentation of the pipeline is often more difficult for the reader to read, especially when this “peeking” method occurs several times in a long pipeline. To the rescue, enter the idea of tee which is an old UNIX utility. UNIX shell expressions have pipelines too -- I believe that R pipelines are inspired by them (or by something else that was in turn inspired by UNIX shell pipelines). A Unix pipeline looks like this: [step 1] | [step 2] | [step 3] where each [step i] is some UNIX command, and each command is “linked” to the next by the | character (analogous to %>% in Tidyverse pipelines). If a call to the utility tee is inserted into the pipeline, e.g., as follows: [step 1] | [step 2] | tee foo.txt | [step 3] then the file foo.txt has the intermediate result of the pipeline after step 2, but before step 3, and can be inspected for audit or debug purposes. Using this idea, we write an R function called tee( ) so that our code looks more like the original (non-fragmented) version of the pipeline: A <- [step 1] %>% [step 2] %>% [step 3] %>% tee("A_intermediate.csv") %>% [step 4] %>% [step 5] write_csv(A, "A.csv") The definition of tee( ) is simply: grab the given dataframe, write it to a file and then pass it along (for further processing down the rest of the pipeline). tee <- function(df, filename) { write_csv(df, filename) df } More Tee Fun We can simplify our new code even further by reusing tee( ) for writing the final version of A also. A <- [step 1] %>% [step 2] %>% [step 3] %>% tee("A_intermediate.csv") %>% [step 4] %>% [step 5] %>% tee("A.csv") This puts all the processing for dataframe A in one expression, making it easy for the reader to see it as completely self-contained. This final version is the form of the data transformation found in our codebases. Summary We can see how the Tidyverse package collection is an extremely useful programming construct for data analysis. Tidyverse functions have a common interface which can be leveraged so that we can code our data transformations into easy-to-read pipeline expressions. Easier reading entails easier development, less coding mistakes, and easier debugging, if it should come to that. We have additionally leveraged an idea from UNIX to help us “peek” into the partially transformed data in a pipeline to help us understand what the data looks like at a particular point in the transformation pipeline.
- Program Modeling, Simulation, and Analysis
By Shawn Charchan, CANA Technical Director of Energy Solutions As CANA's Technical Director of Energy Solutions, I also serve as the Modeling, Simulation, and Analysis (MS&A) Coordinator for several CANA clients. In that capacity, I have the privilege of working with the analytical leads of various pilot programs to ensure the composite group is capitalizing on work already completed and working with unity of effort. This ensures the collective body of work continues to expand in line with the client’s larger objectives. The analysis and research that CANA supplies often relies on modeling and simulation (M&S) when completing studies in support of pilots. M&S is a powerful, yet often misunderstood, tool that has many uses in the analytical realm; it can be used for applications spanning requirements analysis, to forecasting, to - in several instances -system impact assessments. One of the challenges our teams face when performing pilots is the data we obtain is based on limited lab testing and/or field demonstrations comprising one or two of the systems being tested. M&S can provide the study team a rich synthetic environment in which 10s or 100s of the systems being tested can be represented as a digital twin in a virtual scenario, thereby enabling our study teams to explore the contribution fully fielded systems will (or will not) supply in the context of future warfare. The combination of real-world system testing combined with analysis in a synthetic environment has proven time and again to be an excellent method for obtaining the type of insights that help us engage external stakeholders, inform requirements, and ensure each pilot ends with success. #digitaltwin #optimization #modeling
- Designing Innovation
Innovation has become a major buzzword of the 21st century and many companies feel they have established incubators for innovation in their market. Hard to believe? Search any major company plus the word “innovation” and you will find it appears at least once on their website; in fact, it probably appears repeatedly. They probably even have their own “Innovation Lab,” but do they understand how to design innovation for success? At CANA we strive to continually perfect how we tackle tough problems, and we would like to challenge your perception of the approach to innovation. What is innovation? Wikipedia defines innovation as the practical implementation of ideas that result in the introduction of new goods or services or improvement in offering goods or services. Many companies innovate and bring new goods or services to market. Some succeed and some fail due to a wide range of factors. It is intriguing, though, to dig a bit deeper into the traditional approach to innovation. What we find is that the design phase has the greatest influence on profitability, market acceptance, adaptability, time to market, and inevitably, success. Yet, the least amount of time and money is often spent on design. Focus is often given to the quickest solution in an effort to obtain first to market. The critical long-term success factors can be overlooked as companies rush to push a product out the door. As we look back through history, it is often the approach to innovation that singles out successful icons such as Thomas Edison, Henry Ford, Steve Jobs, and Elon Musk. Most companies focus on the newest shiny object. Any company with enough funding and time can release new features that are tacked onto an existing product or copied from the greatest competitor. The product needs to be more than just the shiniest object in order to succeed. Often the innovation itself is in the design: what’s going on under the hood or the work that takes place behind the curtain before the product hits the shelf. It is not a shiny object at all, but a facilitator of success through calculated design and implementation. We need to identify and design to the critical factors of success surrounding the problem: What differentiates it from the competition? How long does it take to build? How to minimize or eliminate dependencies? How cost-effective is the solution? How are quality and longevity addressed? How to source the supply chain or human resources? Who is the market and will it be embraced in the final form factor? How does the design support automation? What is the training required for staffing to scale? What features, data and processes are being duplicated with the new components? Can it be marketed, and how? Countless dollars and time are spent on band-aiding new products and features onto existing platforms rather than developing from the ground up to achieve real success. The result is a spider web of poorly integrated capabilities that provide a less-than-ideal user experience and rarely scale. We need to challenge the status quo that throwing out what works today and starting from scratch to meet tomorrow’s needs is bad. Adding new features often requires the removal of as many components as it adds. Just because something has always been done a certain way does not mean it will make sense tomorrow. We should approach problems with the most naive and childlike perceptions: forget everything we know and start from the ground up. Elon Musk said, “I think it’s important to reason from first principles rather than by analogy. The normal way we conduct our lives is we reason by analogy. We are doing this because it’s like something else that was done, or it is like what other people are doing.” Instead, we should, “[b]oil things down to the most fundamental truths…and then reason up from there.” You must break the paradigm. Do not become so attached to the current state, and so lost in the details, that you cannot see the forest for the trees. The simplest solution that will reduce total accounting cost, and training, and meet the delivery timeline while also increasing quality, is often staring us right in the face. Thomas Edison is often credited with the invention of the light bulb. The fact is that several inventors, some claim up to 20, had developed incandescent lamps prior to Edison. Where Edison succeeded was the first commercially practical light bulb. Rather than simply inventing an incandescent lamp, he was innovating using design considerations for incandescent material, such as exterior packaging to achieve a higher vacuum and higher resistance to allow power distribution from a centralized source. His innovation was not the light bulb, otherwise, cavemen would have been credited with the invention through their discovery of fire. Edison’s innovation was in the identification of an economically viable solution to the light bulb: a product that could be widely accessible to the general consumer. This is why he is credited with success. Henry Ford graced us with the Ford Model T. It was a brilliant innovation that was a simple and robust solution to all the downfalls of a horse and buggy and was far more versatile and superior in capabilities. The problem was that Ford could not scale because of minimal cost margin, and it was too expensive for the average American. This primarily was due to the fact it took over 12 hours to build a single vehicle. While flying over a meat packing plant in Chicago, Ford was intrigued watching cows march into one end of the plant, and packaged hamburgers flowing out the other. He determined if a cow could be processed through a disassembly line, then his Model T could be built much more efficiently through an assembly line. When we think of Henry Ford, we often think not of his Model T, but of his innovative design of the automotive assembly line. It changed the industry forever. His design to bring that innovation to market was what made him successful. Steve Jobs was arguably the innovation mastermind behind much, if not all, of Apple’s success. He continually beat the competition, but his approach to innovation was his greatest strength. Just one of his great achievements was the iPod. The Sony Walkman was, by all standards, the industry leader, but continued to focus on removable magnetic memory (cassette tapes and CDs). Steve Jobs saw this as a limitation so he went back to the first principles of the problem. Jobs went back to the drawing board and designed a solution with solid-state memory that allowed the portable music player to be delivered in a more user-friendly and smaller form factor. His innovation was not the portable music player, but an innovative design to the form factor, battery life, capability, and future features through updates that the Walkman could not deliver. Elon Musk has succeeded in beating the odds over and over again. One can argue launching rockets and sending payloads to space was barely innovative, as this was first achieved in 1958 with the Explorer 1. It can also be argued that electric vehicles are not groundbreaking inventions; after all, the first electric vehicle was developed in 1832. In fact, several attempts were made to produce them on a wider scale in the 1870s and beyond. Elon Musk instead focused on the practical fundamentals of these problems. His innovation was in the cost-effective delivery to market. At SpaceX, Musk focused on developing reusable first-stage rockets that effectively reduced the cost of a rocket launch by 80% per launch. At Tesla, he focused on developing and building his own battery technology at scale, while limiting the number of parts and designing for reusability. A Tesla EV drivetrain has, on average, just 17 to 18 parts compared to roughly 200 in a standard internal combustion engine. And, each model of Tesla shares up to 75% of its parts with other models. In addition, Musk focused on robotic assembly lines that would scale to reduce the cost of entry to electric vehicles for the average consumer. Elon Musk defined a 5-Step Design Process that SpaceX utilizes to reinforce these concepts during their innovation process: 1. Make the requirements less dumb. Requirements often make too many assumptions and are not clearly defined. Take a rigorous approach to the question and simplify the requirements. Test all assumptions. 2. Delete the part or process. Simplify through the removal of parts or processes that unnecessarily overcomplicate the solution. Musk challenges his team to delete until they have to add back in to achieve meeting the requirements. “If you’re not adding things back in at least 10% of the time, you’re clearly not deleting enough.” 3. Simplify or optimize the design. Do not optimize something that should not exist in the first place. 4. Accelerate cycle time. Ensure efforts are being utilized to move forward in the right direction. “If you’re digging your grave, don’t dig it faster. Stop digging your grave.” 5. Automate. Design for automation, but automate last. Make it work first before wasting time automating something that is not required in the first place. When approaching a problem, step back and reason from the first principles. Look deliberately at the approach to innovation from the entirety of design through delivery. Develop a solution without any preconceived notions. Realize the solution may not be the quickest nor the easiest. The goal is to beat the odds by reinventing from the ground up for long-term success. At CANA we embrace this challenge and continually evaluate, adapt and execute an approach to innovation that will solve our client’s toughest challenges and ensure their long-term success. 1 “Innovation.” Wikipedia, https://en.wikipedia.org/wiki/Innovation. Accessed 21 October 2022. 2 Kevin Rose. (2012, September 7). Foundation 20 // Elon Musk [Video]. YouTube. https://www.youtube.com/watch?v=L-s_3b5fRd8 3 Christopher McFadden. “Who Actually Invented The Indcadescent Light Bulb?” Interesting Engineering, https://interestingengineering.com/science/who-actually-invented-the-incandescent-light-bulb. (2019, April 3) 4 “Ford’s assembly line starts rolling.” History, A&E Television Networks, LLC, https://www.history.com/this-day-in-history/fords-assembly-line-starts-rolling. Accessed 21 October 2022. 5 Ron Adner. “Innovation Success: How the Apple iPod Broke all Sony’s Walkman Rules.” Knowledge Insead.” https://knowledge.insead.edu/strategy/innovation-success-how-apple-ipod-broke-all-sonys-walkman-rules. 7 March 2012. 6 “Explorer 1.” Wikipedia, https://en.wikipedia.org/wiki/Explorer_1. Accessed 21 October 2022. 7 “Timeline: History of the Electric Car.” ENERGY.GOV, https://www.energy.gov/timeline/timeline-history-electric-car#:~:text=Around%201832%2C%20Robert%20Anderson%20develops,an%20English%20inventor%20in%201884. Accessed 21 October 2022. 8 “SpaceX just saved NASA $500 million with one rocket.” Quartz, https://qz.com/2040243/elon-musks-spacex-saved-nasa-500-million. 29 July 2021. 9 Tristan Perry. “How Many Moving Parts Does a Tesla Have?.” Green Car Future, https://www.greencarfuture.com/electric/tesla-number-moving-parts. 12 April 2021 10 Fred Lambert. “Tesla Model Y teardown: shows some great improvements over Model 3 despite sharing 75% of parts.” electrek, 11 Everyday Astronaut. (2021, August 3). [SUMMER 2021] Starbase Tour with Elon Musk [PART 1] [Video]. YouTube. https://www.youtube.com/watch?v=t705r8ICkRw 12 Ibid
- Veterans Day for Marines
Every Marine knows the date, the 10th of November, which makes the following day, Veterans Day, a bit different. Veterans have Veterans Day to commemorate their military service on the 11th of November. And the Marines have the Marine Corps Birthday to commemorate their roots, one day earlier. All active duty and former Marines will wish each other a happy birthday on the Marine Corps Birthday. Marines will also tell you that the timing of these two back-to-back American holidays is ideal since it gives Marines a day off after their Birthday Ball celebrations and festivities. America’s military is a unique breed of people who are called to serve, not only to protect their country but, more importantly, they’re called to serve through their oath: to support and defend the Constitution of the United States. The distinction between country and Constitution is vital because it prioritizes the principles spelled out in the Constitution ahead of the desires of our citizens or the values we codify in-laws. A Unique Breed U.S. Marines are a unique breed of America’s military. While each of the military branches have different missions and specialties, one key fact that makes Marines different from the rest of the U.S. Armed Forces is that all Marines are combatants. They are all basic riflemen trained to locate, close with, and destroy the enemy by fire and maneuver, or repel the enemy's assault by fire and close combat. More specifically, the Marine Corps does not have doctors, dentists, chaplains, etc. However, since the Marines work so closely with the U.S. Navy (a separate military branch) they receive health and spiritual services from Navy doctors, medics (called corpsmen), chaplains, etc. Additionally, the Marines are a small, tightly integrated military corps with both tactical fixed-wing (fighter jets) and rotary-wing (helicopters) to support their ground troops. The U.S. Army only has tactical helicopters to support their ground troops. If the Army needs fixed-wing combat support, they’d call on the U.S. Air Force. Celebrations and Observances Veterans Day is officially observed with two minutes of silence at 11:11 AM PST to commemorate the ending of WW I on the 11th hour of the 11th day of the 11th month of 1918. (It’s celebrated at 11:11 AM PST instead of EST so that all time zones in the United States can celebrate it simultaneously.) Additionally, dozens of parades and ceremonies are held, throughout the country, along with deals, discounts, and freebies, to honor our Veterans. While Veterans Day is marked with two minutes of silence, the Marine Corps Birthday is observed with two hours of pageantry, throughout the world, at Marine Corps Birthday Balls. The highlight of the Marine Corps Ball is the cake-cutting ceremony which follows a basic script where the first piece of cake is presented to the guest of honor. The second piece of cake is given to the oldest Marine present who then presents the youngest Marine with the third piece of cake to symbolize the passing of experience, knowledge, and tradition from the old to the young. Even though active duty Marines aren’t yet veterans, they greatly appreciate having the next day, Veterans Day, off from work to rest up from the previous night’s celebrations. Semper Fi and thank you for your service.
- Fresh Perspectives from a New Developer
When I first joined CANA, right out of college, it was a bit overwhelming. Transitioning from attending classes and completing homework assignments to attending meetings and completing Jira tasks was a deceptively big change. Although college taught me in theory about programming and software development, I didn’t have much firsthand experience and wasn’t familiar with the technologies being used at CANA. Luckily, CANA had a training schedule ready for me to get me acquainted with the development process and the technology I would have to use. Photo by Kevin Canlas During this training process, I learned JavaScript and TypeScript. In addition, I completed the official Appian training course from their website. Appian is a Marine Corps approved platform-as-a-service (PaaS) that provides the capability for enterprise application development in a cloud environment. I have found this training to be especially helpful, since Appian is mainly what I work with every day, and I haven’t used TypeScript or JavaScript yet. However, I didn’t feel like I had a real grasp on the concepts until I put them into practice. I gained this experience working on real bugs and features for the Integrated Materiel Analysis Toolset (IMAT) system which is designed to replace the Marine Corps’ legacy war reserve. I started with pair programming. Two senior programmers helped work me through some small bug fixes and taught me how they usually approach these issues. There were some differences between how they approached development and what was taught in the official Appian training. In particular, they taught me how to use the hidden Appian lambda functions, which weren’t mentioned in the official training. This training and the experience of working on actual software systems, with paying clients, has been effective in making me much more confident and knowledgeable in the development of software. Besides the training, another challenge was working from home. However, this wasn’t actually a big change for me. In college, I had to work from home during my last semester due to COVID restrictions. In addition, I had experience working from home from my internship with the startup, Northland Creative Wonders. However, with the startup, I occasionally met with my boss in person. At CANA I never meet anyone in person, as a result I must rely more on Zoom meetings and chats to keep in contact with coworkers. I think the biggest challenge of working from home is keeping a schedule. If I was working in an office, the manager would tell everyone when it was time to attend a meeting or do other activities, but when you work remotely, you need to keep track of these things yourself, and it can be easy to get engrossed in a task and not notice what time it is. I have dealt with this challenge by setting up alarms that notify me when it is time to start a new task or join a meeting. I’ve enjoyed working at CANA so far and think this is a great start to my professional career. My favorite things so far have been the friendly company culture, the kind people, and the ability to work from home. My fellow programmers have been very nice and helpful to me during my time working at CANA. They have given me helpful tips and feedback on how to do the best work I can and have assisted me when I was struggling with hard tasks. Although I didn’t get to go last year, I look forward to meeting everyone in person at the next offsite. My advice to a new developer joining the company is this: make sure to manage your time well, try your best to become very familiar with the new technologies we use, and don’t be afraid to ask for help if you are stuck.
- The Benefits and Disadvantages of RPA
What is RPA? Robotic process automation, or RPA, is a form of automation that will soon become commonplace in the business world. This form of automation records a series of actions taken by a user, and then uses software robots to repeat these actions quickly and accurately. This differs from traditional business automation, which would require a programmer to write a script and manually create a list of tasks to perform. RPA bots also emulate the actions of real users through the use of a virtual mouse and keyboard, allowing them to easily navigate different UIs. More advanced RPA tools can include intelligent automation, or IA. These tools complement RPAs with things like artificial intelligence, machine learning, and neural networks. These technologies allow for the software to act dynamically, handle more complex tasks, and complete tasks quicker and more efficiently. What are its benefits? Robotic process automation has been shown to be effective in reducing costs and improving efficiency by allowing the completion of high-volume repetitive tasks quickly and efficiently with no mistakes. In one IBM survey, 62% of people surveyed reported that RPA moderately or significantly reduced their company’s HR costs, and 72% of people surveyed reported that RPA moderately or significantly increased work accuracy. Employers have also found that RPA improves employee morale and job satisfaction by removing boring, mundane tasks from their workloads. RPA services often offer a variety of security options. Using RPA bots prevents the risk of a human employee intentionally or unintentionally mishandling sensitive data, and the bots can be encrypted, lowering the chance of a malware breach. In addition, RPA apps usually offer detailed information about users who accessed the app, and every completed task, allowing businesses to easily root out anomalies. Compared to traditional workflow automation, RPA has the benefits of not requiring a skilled programmer and being able to easily automate tasks that would be tricky to handle with scripting, such as filling out forms and dealing with UIs (user interfaces). An additional benefit of this is that RPAs don’t require you to change any existing systems, because RPAs are very flexible and can work on top of any number of existing applications. What are its disadvantages? As is the case with any automation technology, one of the biggest criticisms of RPA is the potential for job loss. Although many companies have promised not to lay off employees due to the adoption of RPA technologies, RPA has removed the need for low-level unskilled jobs as well as repetitive skilled jobs in large companies, especially in the fields of finance and customer care. However, this subject is surrounded by much debate. Proponents of RPA argue that most jobs replaced will be unskilled outsourced positions, and very few domestic jobs will be lost. Instead, they argue, companies will opt to redeploy their in-house workforce to achieve greater efficiency with the same number of employees. There are also a variety of security risks associated with RPA technologies. The worst of these risks is the potential for RPA bots to be hijacked by malware. As mentioned above, RPA bots can be encrypted to lower this risk, but not all RPA providers offer this feature. This becomes even more problematic if the bots are given access to sensitive data. Hijacked bots could easily create a security breach. Even if the bots themselves are encrypted, vulnerabilities within the backend of the RPA system could allow access to company data and networks. Large costs are associated with many RPA services. Cheaper services do exist, such as Microsoft Power Automate, which is free for individuals or can be licensed for $8-$20 per month, but these cheaper services are very limited in their abilities. Microsoft’s RPA software can only be used for simple tasks and only with Microsoft products. More powerful services often require hefty investments, sometimes costing several thousand dollars per user per year. One customer of a high-end RPA vender reported spending at least $250,000 just to buy the software and get it implemented. Speaking of getting the software implemented, RPA software is often complicated, and requires trained employees to use it correctly, which could add additional cost. Conclusion It seems clear that automation is the way of the future, but will RPA win out over traditional automation? It is hard to say. Although RPA is much more flexible and doesn’t require programming knowledge to use, the high costs associated with it limits its usability, especially for smaller companies. In the end, it is up to the companies to weigh the pros and cons of RPA, and determine the future of business automation. Works Cited “Advantages and Disadvantages of RPA - Javatpoint.” JavaTpoint.com, JavaTpoint, https://www.javatpoint.com/advantages-and-disadvantages-of-rpa. Hodson, Hal. “AI Interns: Software Already Taking Jobs from Humans.” NewScientist.com, New Scientist, 10 Dec. 2015, https://www.newscientist.com/article/mg22630151-700-ai-interns-software-already-taking-jobs-from-humans/?ignored=irrelevant#.VY2CxPlViko. Shoffner, Matthew. “Cost of RPA and Implementation.” PeerSpot.com, PeerSpot, https://www.peerspot.com/articles/cost-of-rpa-and-implementation. “What Is Robotic Process Automation (RPA)?” IBM.com, IBM, https://www.ibm.com/cloud/learn/rpa. “What Is Robotic Process Automation - RPA Software.” UiPath.com, UiPath, https://www.uipath.com/rpa/robotic-process-automation. Willcocks, Leslie P, et al. “Nine Likely Scenarios Arising from the Growing Use of Robots.” LSE Business Review, LSE, 29 Sept. 2015, https://blogs.lse.ac.uk/businessreview/2015/09/29/nine-likely-scenarios-arising-from-the-growing-use-of-robots/. Accessed 28 Feb. 2022. ElectroNeek. “RPA Security: Deploy a Bullet-Proof Automation System.” ElectroNeek, ElectroNeek, 16 Sept. 2021, https://electroneek.com/blog/business-insights/security-concerns-in-rpa-4-step-guide-to-address-them/.
- A CANAer’s Retrospective on Women’s History Month
There are almost four billion women with stories to tell here on planet Earth. That’s roughly half the world’s population. Yet, according to historical estimates, women are included in about 0.5% of recorded history. There’s a lot of catching up to do! Women always did make history and continue to do so. CANA is a part of that trajectory. Our thirteen women CANAers are intelligent, tenacious leaders. Each is, without a doubt, very much unique and brings a fresh perspective to our organization. One member of our team - Stephanie Allison, Senior Project Manager - is a CANAer of many talents and passions. We benefit from her project management skills as well as her singular personality: optimistic, energetic, and passionate. We wanted to close out March with her observations on Women’s History Month and how to carry that focus forward. “During Women's History Month, I reflect on those who came before us, paving the path for those of us who follow. As this month of recognition comes to an end, I encourage that in addition to reflecting on history, we also aim to make history. 2022’s Women's History Month carries the theme, "Providing Healing, Promoting Hope. Healing and hope have never been needed more than in our world today. Step up, lead the way, spread light in the lives of those around you to make a difference. Seek out those who are broken and allow your care and compassion to make them whole. Each of us have unique and amazing God-given gifts. Find them, use them, share them. Extend hope in a world that is hurting. Exude peace where there is pain. Mend division amidst dispute. You cannot pour from an empty cup. So, follow your dreams, look after yourself, take charge of your life, fill your soul! Then let all the joy you've created overflow throughout your families, workplaces, and neighborhoods. Rise to the challenge. "Make history!” " CANA LLC is a Veteran-Owned and Woman-Owned Company.
- CANA's Very Own, Connor McLemore, speaks At UTA's annual Business Analytics Symposium!
I was pleased to participate as a panelist in a lively discussion on AI Bias at the 6th annual Business Analytics Symposium on Thursday, March 3, 2022, hosted by The University of Texas at Arlington Center for Innovation and Digital Transformation. The theme of the conference was “Explainable and Unbiased AI – Going Beyond the Hype.” The in-person symposium provided a forum for industry professionals and academics to exchange information and knowledge in the area of analytics and AI. The event featured tech talks and engaging panels with prominent industry experts and an exciting tech workshop. The symposium had participants from over 50 companies from various industries represented, including CANA, American Airlines, Raytheon, Southwest Airlines, Lone Star, GM Financial, State Farm, Verizon, Ericsson, Infosys, and many others. The keynote speaker was Dr. Raj Iyer, Chief Information Officer, United States Army, who gave an update on the status of the Army’s recent AI and analytics efforts. I very much enjoyed the panel discussion and the various thought-provoking conversations I had on AI with many of the symposium’s attendees. I hope to keep this timely and important discussion going at next year’s symposium!












