Blog

  • Week 6 Learning Journal

    Developing Capstone Ideas

    This week, we worked on helping our teammates develop their capstone project ideas. Here are some comments I left on my teammates’ blogs:

    Weekly Summary

    This week’s lecture was about job searching, writing resumes, cover letters, technical interviews, and what companies are looking for in job candidates. This information should be helpful on the job search, and I’ll be sure to make use of the career resources that are available to me as a CSUMB student.

    I also spent some time learning about LLMs for our final video presentation. There is a ton of material out there on LLMs, and things get pretty technical pretty quickly, so I’m learning a lot. I found a helpful course called How LLMs Understand & Generate Human Language by Kate Harwood, who does a great job of introducing LLMs in a practical and understandable way.

    At our team meeting, we discussed the video project and how we plan to approach it. We split up the presentation into sections, with each team member focusing on a specific step of how LLMs process data and generate text.

    I also learned more about WordPress. One of the assignments this week was to put together our portfolio page, which we’ll add to as we progress through the CS Online program. I’m using the new WordPress Block Editor, which can be a little tricky, so this has been a great opportunity to get some practice with it. I figured out that it actually works pretty well with Tailwind CSS, since the block editor allows you to easily add classes to blocks, which can make styling easier.

  • Week 5 Learning Journal

    Blog Comments

    Last week I blogged about my educational and career goals. This week, we compared our goals to our classmates’. Here are some comments I left on a couple of my team members’ blogs:

    Capstone Project Ideas

    After reviewing the capstone festival, here are a few ideas for potential capstone projects:

    1. Agentic AI is the next step in artificial intelligence. Instead of merely providing information like a chatbot, AI agents can actually complete tasks, which opens up a whole new world of possibilities. There are a few AI agent frameworks available that could be helpful with a project like this, for example, Google’s Agent Development Kit, Microsoft’s AutoGen, n8n, and the OpenAI Agents SDK. The adk-samples repo and the Open AI docs have a few examples of agentic AI projects. For a project like this to work, it would help to have a business problem that AI could help solve, perhaps from a partner organization.
    2. Cybersecurity should be a top priority for all organizations, and new tools like CodeQL can help automate the process of discovering and mitigating vulnerabilities. I’m interested in learning more about the Security Scan Summary Project with the US Naval Research Laboratory. The project mentioned that they generated PDF reports, but it may be useful to have a web dashboard for viewing these reports, which would be a great way to build on the previous capstone project.
    3. Large Language Models are becoming increasingly important in business, education, and everyday life. Pre-trained models like Llama allow anyone to run and fine-tune their own LLM, and LLMs can even run in web browsers now, for example, via WebLLM. I have an existing project called journaling.place that I could integrate an LLM into, which could be an interesting capstone project.

    Weekly Summary

    This week was mostly about planning for our capstone project and our careers after CS Online. I’m definitely interested in internship programs and perhaps graduate school. I’ll make sure to spend more time finding opportunities and researching programs as my time in CS Online progresses.

    For CST 300, we used AI to develop our stakeholder analysis for the ethics essay, which helped me to think about the issue in some ways I hadn’t already considered.

    I also spent some time learning about AI. The AI ecosystem is fairly mature at this point, so it’s a great time to dive in and learn from all of the resources available. It’s amazing that we can have AI teach us how it works, just by asking the right questions.

  • Week 4 Learning Journal

    Set Your Educational Goals

    After going through the readings in this module and reflecting on my learning plan, I’m looking forward to developing practical skills that should help me in my career. This includes hard skills like software engineering, database administration, and data science, as well as soft skills like collaboration, project management, and networking.

    I may want to pursue a master’s degree after completing CS Online, or I may end up getting a job that keeps me busy learning new things, or maybe both. I’m definitely a proponent of lifelong learning, so I’m sure I’ll keep on learning no matter what. This program should help me to reach the next step in my journey, whatever that may be.

    Set Your Career Goals

    My primary goal right now is to gain more work experience and become more established in my career. Completing CS Online and earning a Computer Science B.S. should help me in the job market, since many jobs specifically list having a computer science degree or a similar technical degree as a requirement.

    As far as where I want to work and what I want to do, I’m keeping my options open. Where I end up working isn’t entirely in my control, but I tend to gravitate towards more innovative, startup-like cultures. As long as I can keep on learning and improving things, I’ll be happy wherever I work.

    ETS Computer Science test

    After reviewing the ETS Computer Science sample test, I’m confident that I’ll be able to pass it. I’m pretty familiar with most of the material in the exam, though I could definitely benefit from preparing a bit more, and I should be more ready before I take the actual exam. As far as what percentile I’ll score, it’s difficult to say, since it’s also based on how well other students perform, but I’m hoping to do well on it.

    What I learned this week

    The two main things I worked on this week were the industry interview and the outline for my ethics paper. For my ethics paper, I’m writing about lethal autonomous weapons systems (LAWS), so I spent some time learning more about the issue and the ongoing debate surrounding it. I also learned that I live near Anduril, a startup that makes autonomous weapons systems. I hadn’t really thought too much about defense tech before, but it’s obviously crucial to global security, and there are a lot of talented engineers making frighteningly cool stuff. Looking forward to learning more about the tech and the ethical issues around it as I write my paper.

  • Industry Interview

    Introduction

    I interviewed Scott Wilson, a CSUMB alum and software engineer at Infisical. I found Scott on LinkedIn and was impressed by his resume, so I reached out to see if he would be willing to do an interview, which he was happy to do. During our conversation, he shared some details about his background and career path, as well as some valuable insights about the industry and what it takes to succeed.

    Summary

    Scott provided some helpful advice for people looking to break into the industry. Before finding his place in the tech industry, he considered a career in exercise science, but then decided tech was the right path for him. He interned and worked at a few tech startups in the area, eventually landing at his current role as a software engineer at Infisical.

    Scott described the most significant challenge he faces in his work to be encapsulating complex technical tooling into an intuitive user experience, which also happens to be very fun. As a software engineer at Infisical, he finds it extremely rewarding to develop tools that help other developers build, in a more accessible way.

    Scott mentioned that AI is clearly a significant trend in the industry, but he doesn’t think that it’s going to take away jobs. He sees AI as a tool to enhance the capabilities of software engineers, and it is also changing how people make software.

    For people looking to get into the industry, he recommends having a genuine curiosity and a passion for learning, while also being able to operate effectively in the rapidly changing software development landscape. He also stressed the importance of challenging yourself and not being afraid to make mistakes. The most impactful thing you can do, he mentioned, is to work with people you aspire to learn from and grow with, in order to create something meaningful.

    Reflection

    After reflecting on the interview, I have a better understanding of my career options and the direction that the industry is headed. I’m glad to see that CSUMB alumni are doing well in their careers, working on useful products that have a real impact. I agree with Scott that AI is changing how people make software, and it’s important to challenge yourself to keep growing.

    Having a passion for learning is essential for building a successful career in technology, since the field is constantly changing. New technologies like AI and machine learning are reshaping the industry, so it’s important to keep up with the latest developments. It’s also helpful to be comfortable with not knowing everything, since there is so much to learn.

    Future Steps

    I definitely want to learn more about AI and the new tools that are developing. There’s so much to learn with AI and I’ve barely scratched the surface of what’s possible. Agentic AI is something I’ve been experimenting with lately, so I’ll make sure to spend more time learning how to use it effectively.

    I think my biggest takeaway from the interview is to just keep on experimenting, trying things out, and not being afraid to fail. Growth is achieved by challenging yourself and by working with people who inspire you to keep on growing, so I’ll work on doing that.

  • Week 3 Learning Journal

    Taking good notes

    Last week I blogged about study strategies and mentioned that my note-taking techniques could be improved, which raises the question: how does one take good notes?

    AcademicTips.org provides some helpful Note Taking Techniques. For example, retyping your notes can be helpful. The first time you take notes on a topic, you may not totally understand it, so it helps to revisit the notes again and add more context. This is similar to the Feynman Technique, which can be applied to iterative note-taking:

    1. Teach yourself the topic as you study
    2. Identify knowledge gaps in your notes
    3. Simplify and clarify your notes as you improve them
    4. Review and repeat until you fully understand the topic and can remember it

    The Zettelkasten Method is a useful framework for note-taking, especially with digital notebooks, which can easily create an interconnected note database with tags. How to Take Smart Notes teaches Zettelkasten, and the author also offers a course on doing Zettelkasten with Obsidian.

    Ethics in tech

    We had some readings this week on ethics in tech, and we also chose a topic for an ethical argument essay we’ll write. I’m planning on writing about lethal autonomous weapons systems, which obviously brings up a lot of ethical questions. The ACM Code of Ethics and Professional Conduct is useful for grappling with these kinds of issues, especially the principles of avoiding harm, serving the public good, and respecting fairness in decision making.

    What every computer science major should know

    In his blog post, Matt Might outlines some topics that CS majors should know. A few topics that stood out to me were emphasizing the importance of technical communication, having a strong portfolio, and the becoming comfortable with the Unix philosophy.

    I’m glad that CS Online gives students the opportunity to develop their communication skills by keeping a technical journal, which can also serve as a portfolio. Technical writing is an essential skill for engineers because their work is most valuable when it is clearly communicated and understood by others. Writing each week is a great way to develop this skill.

    Code of Integrity

    After reading the Code of Integrity, I understand why it’s important for academic success. Students must only submit their own work, must not share solutions, and must indicate any assistance they received. Following these rules will make sure that students are actually learning the material, which will contribute to the long-term success of the program and students’ future careers.

  • Effective Work and Study Strategies

    Learning Strategies

    Effective study skills are critical for academic success. Dr. Kizlik provides some useful and practical strategies for making effective use of study time, for example, scheduling time to study and studying in an environment that is conducive to learning.

    There are a few areas mentioned in the article that I feel I’m pretty good at with respect to studying:

    1. Planning: I try to study at around the same time every day. I make sure to timeblock a few hours each day to study, with a few things I want to get done in that time, and then check off tasks as I go, or revise the task list if plans change.
    2. Study environment: I’ve been studying and working remotely for awhile, so my work/study area is pretty dialed in. I have a standing desk with a couple monitors, a comfortable chair, and I try to keep things organized. When I feel like getting out of the house, I’ll bike to the library to get some fresh air and inspiration.
    3. Thinking skills: I got my first bachelor’s degree in philosophy, which does a great job of teaching you how to read, write, think, and argue. I’ve also taken some design classes and have spent the last few years working on software projects, which has helped to develop my creative abilities.

    There is always room for improvement, however, so here are a few areas mentioned in the article that I could work on:

    1. Where to keep notes: I do my best to take good notes during meetings and write down important things, but I could do more to take better notes when studying. I use a lot of different note-taking apps, and things can get kinda scattered. Some apps are better for some things, and other apps are better for other things. In the past, I’ve kept a handwritten notebook, which is great, for example, when I want to draw a diagram, but digital notebooks are my preference, since it makes it a lot easier to search for information and do other useful things with data.
    2. Preparing an outline: when writing an essay, I’ll usually have an idea of what I want to write about, but sometimes I’ll skip making a detailed outline, even though I do agree that writing an outline helps with preparing and structuring an essay. As the old saying goes: plans are worthless, but planning is everything.
    3. The SQ3R method: this was mentioned in the article, and it’s the first time I’ve heard of it. I do usually try to get a quick survey of information before diving in for a better understanding, but I haven’t used a structured approach like this. The testing effect demonstrates how reciting (or recalling) information as you consume it helps with understanding and retention. I’ve always appreciated online courses that have built-in “are you paying attention?” kinds of quizzes, which helps with this.

    Time Management

    Time management is an essential skill, and what works for one person may not work for another. I’ve tried micromanaging every last minute of the day into iCal events, but this can lead to burnout. I tend to only use calendar events for meetings and appointments, since these are usually less flexible with regard to timing and require collaboration with others.

    For daily task planning, I’ve found NotePlan to be most useful. Each day can be planned as a flexible Markdown note, where I can revise and pencil in tasks as the day evolves, which is ideal for keeping a maker’s schedule.

    I have a daily note template that I use to plan each day, which allows me to structure my day around healthy habits. Here’s what today looks like:

    ## Schedule
    - [ ] 🧘🏻‍♂️ Meditate 8:00 AM - 8:30 AM
    - [ ] 📖 Bible 8:30 AM - 9:00 AM
    - [ ] 💪🏻 Gym 9:30 AM - 10:30 AM
    - [ ] 💼 Focus Time 1:00 PM - 5:00 PM
    	- [ ] Server+ study
    	- [ ] Linux+ study
    	- [ ] Work on Industry Analysis Essay
    	- [ ] Publish blog post
    - [ ] 🚶‍♂️ 10,000 Steps 8:30 PM - 9:00 PM
    

    Learning involves both focused and diffuse thinking, so everything doesn’t always fit into neat and tidy timeboxes. For example, I might study a bit more after dinner for an exam, or use that time to review something I was working on earlier in the day. If there’s a looming deadline, I might skip the gym and spend all day working. This system allows me to impose structure on the day, while still allowing for a lot of flexibility.

    I’ve found Kanban to be an effective method for tracking individual tasks, like school assignments. I use a custom integration I made with the Canvas and ClickUp APIs to keep track of all my school assignments in one place, which helps a lot with reducing overwhelm.

    Toggl also has a ClickUp integration, which can be helpful with time tracking. Sometimes I’ll use Toggl to track focused work on school assignments, since it has a built-in Pomodoro timer, which can be helpful.

    Project Management

    Project management makes it a lot easier to accomplish complex goals, especially with a team. By breaking down a project into smaller steps using a work breakdown structure, what might initially seem daunting can be turned into something much more manageable. Deliverables can be transformed into a workstream of tasks and sub-tasks, which can then be assigned to specific team members. When breaking down a deliverable into tasks, work items should be MECE (Mutually Exclusive, Collectively Exhaustive) so that tasks are distinct items, covering the entire scope of the deliverable. Tasks can be visualized, for example, across time using a Gantt chart, which presents a high-level and linear overview of the project, or by status using a Kanban board, showing the current state of individual tasks.

    Previous Capstones

    After watching the Capstone Festival recording, a few projects stood out to me:

    1. OtterSoft: Hiring is one of the most important responsibilities of any organization, but it can be an exhausting process for both employers and job candidates. With companies like OpenAI set to disrupt hiring, AI-assisted hiring processes will likely receive much more attention in the future. I admire the ambition of the team and how the technical workflow of the project was clearly presented. One thing that would help with a project like this is getting continuous feedback, so that the product is effectively addressing the pain points of users on both sides of the hiring equation.
    2. Security Scan Summary Project: Cybersecurity is critical for large organizations, especially government agencies, and new AI tools like CodeQL should help to keep their data secure. This project did a great job of working with non-technical stakeholders to make cybersecurity risks more understandable. I’m interested in learning more about the impact of this project, how it has set a new standard for cybersecurity reporting at the organization, and how any new processes have been implemented.
    3. Vault JS: Software supply chain attacks are a threat to any organization that uses third-party software, as was recently demonstrated by the recent injection of malicious code into popular npm modules. The JavaScript Obfuscation Model project did a great job of explaining what code obfuscation is and how the project utilized open-source software to integrate a new feature into an existing software product. I’m interested in learning more about how the underlying model works and how it was trained.

    Weekly Summary

    Things are now in full swing after this week. I met with my team and we created a group resume, which includes our respective skillsets and what services we plan to offer. Reviewing the previous cohort’s capstone projects helped a lot with getting a better idea of what we’ll be working on in the future.

    I also learned about some trends in the software development market. AI and ML technologies are projected to continue playing a pivotal role in software development, increasing the productivity of software engineers. Cloud computing is also expected to continue to be an indispensable skill, with some organizations opting for a hybrid-cloud approach.

    This week also included some lessons on project management and teamwork skills. Communication and collaboration are essential skills for software engineers, and cloud-based tools can make things a lot easier. David Burkus’ How to Be a Great Team Player offers some helpful advice on working with others, namely, be capable, humble, helpful, flexible, and purposeful. I’ll do my best to follow this advice.

  • First Post

    This week was mostly about getting started and learning how to learn with CS Online: meeting classmates, learning more about CSUMB and the program, and getting everything set up so that the next 100 weeks will run smoothly and effectively.

    I’ve been working on an industry analysis essay and am writing a case study on Palantir. As part of the research for that, I’ve been reading Alex Karp’s “Aggression in the Lebenswelt”. Trying to not fall too far down this rabbit hole, but it’s an interesting read for anyone who is curious about the relationship between language, power, and legitimacy.

    Here’s a neat diagram ChatGPT made:

    One of the assignments this week was to explore new ways to interact with ChatGPT as a student. I’m really excited about how CS Online embraces AI, since it is such a powerful tool.

    Another assignment this week was also to create this blog post. I’m using WordPress — pretty familiar with WordPress as a developer, but haven’t used it much as a blogger, so this is a great opportunity to learn more about it.