Coding with AI: A Comparative Series

Hello fellow coders, AI nerdists (ok, IYKYK, “machine learning LLMs nerdists), and language enthusiasts! Adron here, ready to dive into an exciting new series that’s all about pushing the boundaries of our programming prowess. If you’ve followed my work, you know I’m often delving into exploring the depths of code (or systems in general), optimizing it, and sharing those insights with all of you. This time, we’re taking things up a notch by blending the art of manual code slinging and then shifting over and giving the power of artificial intelligence (AI) a try. Ok, my nitpick has already struck. This isn’t really AI but is really just the power of LLMs and machine learning, the ole’ Chat GPT and CoPilot and Claude and whatever else, that I’ll be diving into. Let’s go and put em’ to the test.

The Journey

Our journey starts with tackling programming problems the old-fashioned way: rolling up our sleeves and solving them manually. This is where we lay the groundwork, understand the problem’s intricacies, and come up with a solution that, while not perfect, gets the job done. Then, we refactor our code, streamlining and optimizing it to make it more efficient and elegant.

Enter the AI

Once we’ve got a solid foundation, it’s time to bring in the big guns – artificial intelligence. We’ll explore various AI tools, from ChatGPT-4 to Claude and beyond, to see how they tackle the same problems. Each AI brings its unique approach and strengths to the table, and we’ll break down their solutions, comparing them to our manual efforts.

Why This Matters

In today’s fast-paced tech world, understanding how to leverage AI in our coding practices is crucial. This series isn’t just about showcasing cool AI tools; it’s about understanding their capabilities, limitations, and how they can augment our problem-solving skills. By the end of this journey, you’ll have a deeper appreciation for both human ingenuity and AI’s potential.

What to Expect

In each post, you’ll find:

  • The Hand Crafted Solution: A detailed walkthrough of solving the problem by hand.
  • Refactoring: Steps to optimize and clean up the manual solution.
  • AI Solution: A deep dive into how different AI tools approach the problem.
  • Comparative Analysis: A side-by-side comparison of manual and AI-generated solutions, highlighting strengths, weaknesses, and key takeaways.
  • The links to the code repository and respective before and after of each code base commits.
  • A video walk through of the code and process I went through to get to the solution presented in each video & blog post.
  • A ordered list of the posts as I complete them at the bottom of this post. For starters, as this post has gone live the first post of the series is also live now.

So, get those keyboards and processors ready, grab your favorite code editor, overclock your proc, and join me on this ride through the world of coding with AI. Let’s push the boundaries of what’s possible, one problem at a time.

Stay tuned and happy thrashing coding!

The Ordered List of Coding with AI: A Comparative Series Posts

  1. Finding the Maximum Sum Path in a Binary Tree in C#
  2. C# Array to Phone Number String Conversion & Testing with NUnit
  3. Converting Numbers into Roman Numerals with C#: A Classical Coding Exercise
  4. Simplifying Time: Humanizing Duration in Programming in C#
  5. Conquering the Top Words Challenge in C#: A Tale of Regular Expression and LINQ Magic
  6. How to Convert an IPv4 Address to a 32-bit Integer in C#: A Step-by-Step Guide
  7. Converting 2D Arrays to CSV in Go: Problem-Solving and Testing
  8. Calculating IP Address Ranges in Go: Learn IPv4 Range Between Addresses

Interviewing AI. AI has thus answered the questions on AI in Software Development!

Me: Describe to me how AI is changing software development and the work developers do daily.

The AI: AI is transforming software development in various ways, ranging from automating repetitive tasks to enhancing software performance and user experience. Here are some specific ways that AI is changing software development and the work developers do daily:

  1. Automating mundane tasks: AI has enabled developers to automate various repetitive tasks that were previously done manually. For instance, using machine learning algorithms, AI can automate code review and testing, freeing up developers’ time to focus on more complex tasks.
  2. Enhancing software performance: With AI, developers can create more robust and efficient software. AI algorithms can analyze code and identify performance issues, potential bugs, and other areas that can be improved. This makes it easier for developers to optimize code and improve overall software performance.
  3. Improving user experience: AI can be used to enhance user experience in various ways. For instance, AI can be used to analyze user behavior and preferences, allowing developers to create more personalized and intuitive interfaces. AI can also be used to provide real-time feedback and recommendations to users, making software more engaging and interactive.
  4. Increasing productivity: AI-powered tools and frameworks can help developers be more productive by automating repetitive tasks, suggesting solutions to problems, and speeding up the development process.
  5. Facilitating collaboration: AI-powered tools can facilitate collaboration among developers by identifying areas where different developers can work together, highlighting common issues, and recommending solutions.

Overall, AI is transforming software development by making it more efficient, effective, and collaborative. As AI continues to evolve, developers will likely see even more changes in the way they work and the software they produce.

Me: What are ways that software developers can prepare for the changes AI is bringing to software development?

The AI: As AI continues to disrupt the software development industry, software developers need to prepare for the changes that are coming. Here are some ways that software developers can prepare for the changes AI is bringing to software development:

  1. Stay informed: Developers need to keep up with the latest trends and developments in AI and machine learning. This includes reading industry publications, attending conferences, and participating in online forums.
  2. Learn new skills: Developers should invest in learning new skills that will be valuable in an AI-driven future. This includes understanding machine learning algorithms, natural language processing, and data analysis techniques.
  3. Collaborate with AI experts: Developers can collaborate with AI experts to learn more about AI technologies and how they can be applied to software development. This can involve working on joint projects, attending meetups, and networking with AI experts.
  4. Embrace automation: Developers need to be open to automation and embrace tools that can automate repetitive tasks. This includes using AI-powered code review and testing tools, as well as automated build and deployment systems.
  5. Focus on the user: Developers should focus on creating software that delivers value to users. AI can be used to create more personalized and intuitive interfaces that enhance the user experience. By focusing on the user, developers can stay ahead of the curve and ensure that their software remains relevant.
  6. Develop a growth mindset: Lastly, developers should develop a growth mindset that enables them to embrace change and learn new skills. This includes being open to feedback, seeking out new challenges, and continuously improving their skills.

In summary, by staying informed, learning new skills, collaborating with AI experts, embracing automation, focusing on the user, and developing a growth mindset, software developers can prepare themselves for the changes AI is bringing to software development.

Me: What effects might AI cause in the developer job market with the reduction and automation of work that many software developers do today?

The AI: The increasing adoption of AI in software development is likely to have a significant impact on the job market for software developers. While AI will create new job opportunities in areas such as data science and machine learning, it may also lead to the reduction and automation of work that many software developers do today. Here are some potential effects:

  1. Automation of repetitive tasks: As AI-powered tools become more prevalent, developers may find that many of the tasks they previously performed manually are automated. This could include tasks such as testing, debugging, and code review. While this will free up developers’ time to focus on more complex tasks, it may also lead to a reduction in the number of jobs available.
  2. Shift in skill requirements: As AI becomes more prevalent, the skills required to be a successful software developer may change. Developers may need to have a greater understanding of machine learning algorithms, data analysis, and natural language processing. This may lead to a shift in the education and training required for software development.
  3. Emergence of new job roles: While some jobs may be automated, AI is also likely to create new job opportunities in areas such as data science, machine learning engineering, and AI architecture. These jobs may require a different set of skills and expertise than traditional software development roles.
  4. Increased competition: As the number of jobs available in software development potentially decreases, competition for the remaining jobs may increase. This may put pressure on developers to constantly update their skills and stay relevant in the job market.

Overall, the impact of AI on the job market for software developers is likely to be complex and multifaceted. While some jobs may be automated or reduced, new job opportunities may emerge. Developers who stay up-to-date with the latest trends and developments in AI and machine learning will be better positioned to take advantage of these new opportunities.

Me: Is there any evidence that there will be a net loss of jobs when AI becomes a larger part of software development?

The AI: There is some debate among experts about the impact of AI on jobs in the software development industry. While AI will certainly lead to the automation of some tasks, it may also create new job opportunities in areas such as data science, machine learning engineering, and AI architecture.

There have been several studies on the impact of AI on jobs in the broader economy, and the results have been mixed. Some studies suggest that AI will lead to significant job losses, while others suggest that it will create new job opportunities and lead to a net gain in jobs.

In the software development industry specifically, there is evidence that the impact of AI on jobs will depend on the specific tasks and skills involved. For example, a study by Deloitte found that while AI may automate some routine programming tasks, it is unlikely to replace developers altogether. Instead, AI is likely to shift the focus of developers towards more complex tasks that require human creativity and problem-solving skills.

Another study by the World Economic Forum found that AI is likely to create new job roles in software development, such as data analysts, machine learning engineers, and AI architects. However, the study also found that there may be some displacement of jobs, particularly for those with lower skill levels.

Overall, while it is difficult to predict the exact impact of AI on jobs in software development, it is likely that there will be both job losses and job gains. Developers who are able to adapt and acquire new skills in areas such as machine learning and data analysis are likely to be better positioned to take advantage of the new job opportunities created by AI.

Summary

Funny thing, and maybe it’s all a simulation right, but AI has given you basically the same exact answers I’d give you if asked these same questions. However, I’m writing an article to add more detail that AI (at least chatGPT) has not been able to provide. If you’ve used it, you’ve probably noticed, but there are distinctive limitations to the AI’s learning so far that just isn’t equitable to a well researched and well read human writing up a piece on a topic they understand well. It appears, so far, we’re not entirely replaceable yet!

Zhi Yang Presenting “Hierarchical Topic Modeling in Cancer Patients’ Mutational Profiles”

UPDATED: Video Added from the Conference!

zhi-yang.png

Introducing Zhi Yang > @zhiiiyang < presenting “Hierarchical Topic Modeling in Cancer Research”.

Topic models have been widely applied to extract topics from various range of documents or collections of texts, i.e., online customers reviews, medical records, scientific
journals, legal documents, books and etc. Its application facilitates the process for us to quickly understand the most featured and commonly shared information embedded texts without actually reading through the entire collection. In addition, topic models also allow us to access the contribution of each topic and its representations across different documents. Human genomes have been exposed to an assortment of mutational processes by contributing to unique patterns of somatic mutations. What would happen if we apply the same concept to the somatic mutations obtained from the cancer patients and look for “topics” of mutations? What would these “topics” tell us about the most important information for our health, genetic, risk factors for cancer and
something more that slip under the radar?

Shiraishi et al’s have proposed a topic model targeted for somatic mutations to capture the characteristics and burdens contributed by mutational processes. By closely examining the burdens, we’d like to compare them across different categories, say, for example, time, cancer subtype, ethnicity, smoking history, etc. Then, we’d like to develop the statistical machinery to infer the difference between the mutational profiles across different categories and associate the variations with the know exposures. This tool is potentially useful for identifying novel and existing mutational processes and correlating them with risk factors in which later can be used to monitor any treatment effects in personalized medicine and targeted therapy.

Read the publication here at biorxiv and come check out Zhi Yang’s talk at ML4ALL happening April 28th-30th in amazing Portland, Oregon! Get your tickets to attend here. For the schedule, our excellent sponsors docs for the conference, check out the ML4ALL Conference Site!

Sachi Parikh Presenting “My Journey Learning ML and AI through Self Study as a High School Student”

UPDATED: Video Added from the Conference!

sachi-parikhIntroducing Sachi Parikh > @parikhsachi < presenting “My Journey Learning ML and AI through Self Study as a High School Student”.

Sachi is a high school student in the Bay Area who is interested in AI and Machine Learning and loves to code, read and learn. In the talk she’s put together for us she’s delved into the path she’s taken to get into this topic. I’ve seen an outline of this path and I’ll admit, I’m impressed, but you’ll have to come and attend to talk to see the outline!

Come check out Sachi Parikh’s talk and learn about this learning path at ML4ALL happening April 28th-30th in amazing Portland, Oregon! Get your tickets to attend here. For the schedule, our excellent sponsors docs for the conference, check out the ML4ALL Conference Site!

Karl Weinmeister Presenting “Build, train, and serve your ML models on Kubernetes with Kubeflow”

UPDATED: Video Added from the Conference!

karl-weinmeisterIntroducing Karl Weinmeister > @kweinmeister < presenting “Build, train, and serve your ML models on Kubernetes with Kubeflow”.

Karl is a Developer Advocacy Manager from Google’s Developer Relations Artificial Intelligence and Machine Learning team.  Karl has worked extensively in cloud and mobile, and was a contributor to one of the first AI-based crossword puzzle solvers that is still referenced today.

Distributing ML workloads across multiple nodes has become common. To achieve higher and higher levels of accuracy, data scientists are using more data and more complex models than ever before.

Kubeflow is an open-source platform for model building, serving, and training. It is built on industry standard Kubernetes infrastructure and runs in multiple clouds and on-premises.

In this session, we’ll discuss the problems that Kubeflow solves, and how you can use it to create reproducible ML workflows.

Come check out Karl Weinmeister’s talk at ML4ALL happening April 28th-30th in amazing Portland, Oregon! Get your tickets to attend here. For the schedule, our excellent sponsors docs for the conference, check out the ML4ALL Conference Site!