Welcome to Artificial Intelligence

Introduction to Artificial Intelligence Natural Intelligence Artificial Intelligence the task is done by human using Intelligence if we add this human natural intelligence to a machine Artificial Intelligence is The Science and Engineering of making Intelligent Machines ~ John McCarthy Road Map to Artificial Intelligence 1. Programming Language Python R Lisp Prolog Java 2. Mathematical Knowledge Linear Algebra Probability and Distribution Statistics Vector Calculus Matrix Decomposition 3. Machine Learning Algorithm An algorithm is a step by step method of solving a problem ...

30 April 2025 · 4 min · 732 words · Ahmad Adillaumam

Software Architecture Patterns

Introduction It is common for programmers to create software without careful preparation. This sometimes makes the software difficult to maintain and develop when it has already been made. Therefore, before making a large software, one of the things that must be done is to choose the architecture that will be used. In choosing a software architecture, we must understand its advantages and disadvantages, so that it helps in the creation of the software to be carried out. Software Architecture Patterns Architecture Patterns are a collection of architectural styles in software development. There are many Architecture Patterns, and each pattern has its own advantages and disadvantages. In Architecture Patterns there is no right and wrong, but whether it fits or not. Programmers need to know about this material so that they can determine what pattern to use when creating software. Purpose of Architecture Patterns Each Architecture Pattern has characteristics such as easy to develop, scalable and easy to maintain. The hope is that by using the right Architecture Pattern when making software, the results of the software we make will be easy to develop in the future. Architecture Classification Software Architecture Patterns are broadly divided into two classifications, Monolithic and Distribute. Monolithic is a single deployment unit or runs in one application. Distributed is multiple deployment units, usually consisting of several applications. Monolithic Architectures Monolithic Architecture is generally very simple compared to Distributed Architecture. Monolithic application design is simpler and easier to implement. Applications that use Monolithic Architecture will be very fast to build and distribute. Distributed Architecture Distributed Architecture usually consists of several applications working simultaneously, in contrast to Monolithic applications which are only one application. Usually in Distributed Architecture, each application unit is called a Service. Distributed Architecture development is more complex than Monolithic Architecture, but offers advantages such as fault tolerance, for example when one service fails, other services can still run normally. ...

29 April 2025 · 23 min · 4709 words · Ahmad Adillaumam

Learn From Free College Cs Courses

CollegeCompendium.org A nonprofit aiming to improve access to high-quality educational computer science resources for intellectually curious people across the world. How To Audit Courses What is Learning? “The activity or process of gaining new knowledge or skills by studying, practicing, being taught, or experiencing something” ~Merriam Webster Learning Through Institutions Structured Sequential Compulsory Experiential Other forms of education, such as home-schooling, also share several of these qualities. Autodidactic Learning You determine the topic you study, the source you learn from, and when you learn it. Flexible Non-Sequential Other Incentives Independent Self-proclaimed “unlettered man.” Less than 3 years of formal schooling. Partly taught himself how to code. Learning on the Internet. Ask Yourself… What do I want to learn? Why do I want to learn it? When do I want to learn it? Are there prerequisites? Are these resources accurate and trustworthy? Learning on the Web Once you “learn” how to learn on the web, you can achieve anything! The ability to learn on the web is among the most valuable skills you can have. What Does It Mean to ‘Audit’? What is Auditing a Course? Access to lectures/notes. No grade/credit. No assignment feedback. Often remote. Usually inexpensive or free. History of Auditing Structured Customizable - MIT Open Course Ware. - Coursera. - College Compendium. - YouTube. - Khan Academy. - Sololearn. Why Should You Audit Courses? Bridging Formal Education with Self-Guided Learning Formal + Self-Guided = Auditing Structured curriculum. Often produced by accredited institutions. Flexible and customizable content selection. Public and free! Use Case #1 : You’re Considering Applying to a Program Explore a department and their faculty. See the types of instruction. Discover if areas covered match your interests. Use Case #2: You’re Already an Enrolled Student Supplement your current courses with relevant material. Explore academic interests at low cost without risking grades. Potentially take courses not offered at your school. Use Case #3: You’re Looking to Upskill/Change Careers Explore new subjects and career areas. Build context for necessary competence for career change. Stay competitive within your job or industry. Use Case #4: You’re Looking to Freshen Up On a Topic Pick up former skills. Build experience with new frameworks/models. Develop a more advanced understanding of previously familiar topics. Use Case #5: You’re Just Intellectually Curious! Pick up a language/framework for an upcoming interview. Gain practical experience through project-based courses. Prepare for an upcoming class on a certain topic. How to Choose the Right Topic Assess Your Interests What fascinates you? Is there anything you want to create that requires knowledge on a topic? How excited are you to spend your free time learning about this topic? Assess Your Skill Level How much do you know about your chosen topic? Have you had formal exposure to or instruction on this topic in the past? Assess Your Goals Why did you choose this topic? Are you aiming to build a project or pass an interview? What specifically about your chosen topic do you want to use or better understand? Insight Ensure your topic aligns with your goals. Popular topics: python, algorithms, data structures. Experiment before committing! How to Choose the Right Course What’s your learning style? How do you prefer to learn? Visual: Do you prefer to learn with graphical depictions such as charts/images? Auditory: Do you prefer to learn when listening to others present, such as in lectures? Kinesthetic: Do you prefer to learn through creating hands-on projects? Reading/Writing: Do you prefer to learn by completing worksheets, notes, or flashcards? What’s Your Time Commitment? How depth the course? How much content & assignment they offer? Experiment before committing! Adjust with your schedule and goals. Where Do You Want To Learn From? Which institution and how the content being deliver? Trustworthy institution. Tutor style. Examining Courses Course description. Syllabus (outline of course). Prerequisites. Explore course pages. Sample courses. How Do You Define Success? Know what the course offers before you dive in! Is it match with your goals? Track your progress! Making the Most of Your Audit Set realistic schedules. Evaluate how you can work a course audit into your schedule. Be organized! Make an actionable plan and stick to it as best you can. Set a reasonable schedule for yourself. Be consistent! Ensure you are studying at the pace you set for yourself. Re-evaluate if issues arise. Be studious! Review material frequently! Stay disciplined and try to avoid multitasking while learning. Be motivated! Set short-term goals and reward yourself when you achieve them! Be persistent! It’s impossible to “fail” when you’re in charge! If you’re struggling with something, take your time. Be accountable! Find someone to ask you about the course, or put yourself into a position to be asked about your progress. Don’t code alone! Obtaining help. Ask for help at Stack Overflow, GitHub Forums, or a programming community Discord server. Speeding through courses. Move at a pace where you’re confident in your understanding of the material. Textbooks. Sites like FreeCodeCamp and College Compendium provide ways to find free textbooks. Complementary Learning. Additional Enrichment. Dive into the details with academic papers from sites like PapersWithCode. Common Pitfalls Time mismanagement. Setting enough time aside for your audit can be difficult. Consistently re-adjust your schedule as needed. Getting distracted. Many students lose energy or interest. TV, social media, and more can also take up valuable time. Not engaging with other learners. Take advantage of other means of social learning online! Ways To Confirm Your Knowledge Quiz yourself; Flashcards - Quizlet, Brainscape, Anki. Have others quiz you; Join an online community. Try and apply the knowledge in some way; Build a project. Next Steps Consider auditing courses sequentially to build on previous concepts. Consider mixing and matching courses from various sources. Prioritize foundational math. Calculus, Statistics, Linear Algebra, Discrete Math. There’s always more to learn! Source: ...

28 April 2025 · 5 min · 965 words · Ahmad Adillaumam

Career Change to Code

Course Goals Save a lot of time, money and effort. Achieve your coding goals, your plan or path to achieve those goals, the steps, routines, habits and timelines required to achieve your goals. Recognize myths or mismatched expectations that stand in the way of learning to program. Use effective tools and strategies + discouragement-tree. Recognize pitfalls & diversions that cause delays and derailment. Be a highly effective lifelong-learner. Preparation + Mindset First thing to achieve your goals. All success start with get good at this. Getting most out of this course: Inertia. Frustration. Growth Mindset. Time + Effort = Goal. Time lots of it. A Framework for your journey 5 W + 1 H. Help you get total clarity & expectation from yourself, process of learning, and your definition of success. Keep referring to your plan! Are you on track with it? Does it need adjustment? The Sequence Matters: Better decisions. Demythify. Build the plan. Why do you want to learn to code? You must define your why before you can begin with the what and the how. At some point, if you ask why enough time, you will get something you strongly believe. Ask why deeply to your previous why answer. What do you want to learn based on your reason? What the skills you must have to achieve your goals? What the relevant subjects to learn? When learning a new skill focus is the absolute key. The less topics you do the more progress you make. Separate your task into “must have skills” and “nice to “have skills” to help you focus. Who? (Models & Mentors) How else do we know were going the right way? There so many ways to get someplace, we want the shortest right? Find someone who has achieved the same goals you’re aiming for. You almost certainly know at least one person and then there is always social media. Reach out. Make it useful, not aspirational. When do I need to turn to them? When you’re confused or stuck. A good model will help you choose a step that is right for you and takes you closer to your what, efficiently and productively. Internet is full of opinions, mentor can help when you’re confused. The Mentor/Model will help guide you to the best next step for you. The right WHO includes enough to help you make better decisions (even if they cannot make the decision for you). If they’ve done what you want to do, listen closely. But don’t blindly follow. If they’ve not done it, maybe you should find someone who has, or at least tried. Don’t confine yourself to physical mentorship. When by? “Work expands to fill the time available to complete it” ~Parkinson’s law. S.M.A.R.T goals (Specific, Measurable, Achievable, Realistic, Time-Bound). Break it down into chunks. Each chunk must have a clear beginning and finish point. Choose metrics that can be aimed for daily/weekly. Don’t set goals too far into the future. Set the game up so you win quickly and constantly. Missing the timeline is 0K, if it’s the exception. Where (Learning Formats) Books. Multimedia experience (online course). Let’s find yours: Pick your first small learning goal. Then do it several times from different sources. Should take no more than 10 hours across all your learning formats. Fundamentals feel strong? Now work out which formats were most effective for you. Eliminate formats until you’re left with top 2-3. Repeat with top 2-3 formats on your next small learning goal. The Sequence Matters Build the plan ➡️ Demythify ➡️ Better decisions ...

26 April 2025 · 10 min · 1967 words · Ahmad Adillaumam

Productivity as Developer

What is Productivity? Productivity is all about getting things done and making the most of your time. Productivity = Time x Energy x Focus All three of them are important. Take responsibility for everything in your life You are the common denominator of all your problems. Take ownership of your actions! Are you not understanding a particular design pattern? It is your responsibility to understand it. You are more than just a coder You are a value-adding member of the team. You should aim to have a seat at the table where decisions are made. You should have a sense of ownership. Understanding the business and the value you can bring is crucial. You should partner with business and product partners. You can have unique insights into the product and its performance. Add as much value as possible Prioritize adding value over other tasks. Don’t waste time on things that don’t matter. Consider adding value in any way possible. Clarity breeds productivity Ambiguity can lead to misunderstandings and wasted time/resources. Clarify details and make sure everyone is on the same page. Ask many questions upfront and record meetings if possible. The importance of values Values guide our behavior and decision-making. Knowing your values helps align decisions with beliefs and goals. Values can help you when making difficult decisions. Values-based decisions lead to purpose, fulfillment. Set Goals Goals can make you more committed and productive. Set short-term goals that excite you, as well as long-term goals that pull you towards your dreams. Prioritize your goals based on importance and urgency. Set Deadlines Deadlines are like a compass, guiding us towards the completion of our projects. Without deadlines, it is easy for us to fall into the trap of procrastination. Setting deadlines helps us prioritize our tasks and allocate our time accordingly. The further the deadline, the more work can be prolonged unnecessarily. Setting unrealistic deadlines can be counter-productive and cause stress. It is important to find a balance and set deadlines that are challenging but achievable. 3 Pillars of Motivation Motivation is essential for staying focused and achieving goals. Dan Pink’s theory of motivation: There are 3 pillars: autonomy, mastery, and purpose. Mastery: Desire for improvement and proficiency. Constantly learning and improving skills. Autonomy: Desire for control over own lives and work. Freedom to choose projects, set schedules, make decisions about work. Purpose: Desire to contribute to something larger than ourselves. Using skills and knowledge to make positive Impact on world. Solve important problems. Motivation Equation Motivation equation by Jim Kwik: Motivation = Energy x Purpose x Small Simple Steps Maintain high energy levels through sleep, diet, exercise, and breaks. A strong sense of purpose in work is essential. Break down goals into manageable steps for motivation and progress. The Importance of Emotions Emotions impact work and relationships as a software engineer. Emotions can lead to poor decisions, poor quality work, and negative interactions. Emotions are normal and necessary, but should be managed. The Imposter Syndrome Imposter syndrome is very common among software engineers. It is the feeling of doubting your skills and success. It can reduce productivity by causing self-doubt. Everyone feels it at some degree. When it comes, do not ignore it. Identify its sources. Is it happening because you are working on a new project or technology that is challenging you? Great. You have this awesome opportunity to learn. Seek feedback from others. Do not try to be perfect. Everyone has flaws. Do not compare yourself to others. Do not feel embarrassed to ask for help when you need it. 2 Forces that Shape Us Tony Robbins states that everyone has a desire to avoid pain and a desire to gain pleasure. The desire to avoid pain is often fueled by the need to protect oneself from physical or emotional harm. The desire to gain pleasure is often fueled by the need to feel good and seek out experiences that bring joy. Example: learning a framework like React JS. Associate pain with not learning React JS (e.g. job loss, missed opportunities). Associate pleasure with benefits of learning React JS (e.g. raise, interesting projects). Use reminders (paper, phone, Slack bot) to keep consequences and benefits in mind. Become grateful We have really good salaries in comparison to others We have the opportunity to work on interesting projects, from home, with people all around the world We get paid to learn. The Impact of Stress Causes: work, personal, financial, uncertainty. Negative effects: anxiety, depression, heart disease, decreased productivity. Positive effects: eustress enhances performance, motivation. Effective management: relaxation, time management, support, self-care. Time Management Time management is essential for productivity. Productive people prioritize tasks and manage time effectively. All individuals have 24 hours in a day. Time is a finite resource and should be used wisely. Tips to Manage Your Time Set goals. Create a schedule. Learn to say no. Take breaks. Stay organized. Keep track of current time usage. Batch activities to stay focused. Choose the best location for productivity. Time management is about finding what works best for you and maximizing productivity. Use a Calendar Your calendar is one of the most important productivity tools. It gives you a clear sense of time duration. Todo lists can get too long. Your calendar gives you a reality check. Create a calendar that outlines your daily schedule. Write down new commitments or appointments immediately. Use color or symbols to indicate important tasks/events. Check the calendar the day before and prioritize tasks. Procrastination Everyone procrastinates. There are many reasons why we procrastinate: Feeling overwhelmed. Unrealistic expectations. Fear of failure. Lack of motivation. Perfectionism. Lack of discipline. Lack of energy. Poor time management. RPM RPM stands for Result Focused Purpose Driven Massive Action Plan. A really Useful technique by Tony Robbins that can motivate you to work hard. The RPM technique can help you turning your goals into reality. The RPM process consists of 4 steps: Get clear on your desired result. Identify your purpose behind the goal. Create a massive action plan by breaking the goal into manageable tasks and setting deadlines for each task. Take consistent, focused action towards your goal every day. RPM Example Purpose Result Massive Action Plan (1) Become a more valuable engineer. (2) Get a salary raise. (3) Get promoted. (4) Make my family proud. Become a Certified AWS Solutions Architect. (1) Research about potential resources I can use to learn. (2) Prepare a roadmap of steps I need to follow to prepare. (3) Learn everything necessary (4) Pass the exam. The 2 Minute Rule It is a simple and effective technique to manage workload and increase productivity. If you can get something done in 2 minutes or less, do it immediately. It helps you get small things done quickly and not overthink them. It can be applied to tasks like: Writing Jira comments. Replying to Slack messages. Improving a typo in the documentation. The 15 Minute Rule Rule of 15 minutes is a technique to overcome procrastination. Set a timer for 15 minutes and focus solely on the task at hand for that time. 15 minutes is short enough to be easy to commit to and long enough to make progress. Progress is better than perfect, the goal is to get started and build momentum. Progress compounds, the more work done the easier it becomes and momentum builds. Try setting a timer for 15 minutes next time you are feeling stuck and make progress, no matter how small. Perfectionism Trying to do something perfectly. This is not usually not about being more. This is usually just one manifestation of procrastination. Striving for perfection can prevent us from releasing our work. Consequences of Perfectionism Endless revisions and refinements leading to delays and missed deadlines. Procrastination and a backlog of unfinished tasks. Unrealistic expectations leading to frustration and demoralization. Overwhelm and burnout. Missed deadlines and falling behind schedule. Missed opportunities for growth and innovation. Start before you feel motivated It is hard to always be motivated. The “perfect” moment never comes. Motivation comes after you start. Break large tasks into small ones Large projects can be overwhelming and a source of procrastination . Break them into small simple tasks. Remember that the best way to start is to just start and take it one step at a time. “You eat an elephant one bite at a time”. Exercise Regular exercise is important for a healthy lifestyle. It reduces stress, improves sleep, increases energy levels, and improves overall physical fitness. It lowers the risk of chronic illnesses. It also enhances cognitive function, including memory and focus. Incorporate activities like walking, biking, and swimming into daily routine . Join in an exercise class or participating in team sports. Go to the gym to relieve stress and boost mental wellbeing. Socialize with people in the local community. Quick tips for exercises Try walking or biking from time to time. Download an exercise app and do a few exercises throughout the day. Utilize a jump rope for quick cardio workouts. Do a few pushups or sit-ups throughout the day. Take the stairs instead of the elevator. Do not underestimate sleep Sleep is essential for physical and mental restoration. Not sleeping well can affect: Our ability to concentrate. Our emotions and relations with others. Our health. The Importance of Focus Focus is extremely important for our productivity. Our focus is limited so we need to prioritize things. We are constantly being distracted. Focus is like a muscle Focus helps us: Get things done faster. Stay present in the moment. Reduce stress and anxiety. Have greater enjoyment and fulfillment. How to improve your focus Set clear goals and priorities. Identify distractions. Turn off non important notifications. Put your phone 6 feet away from you. Take breaks and manage energy. Multitasking is killing your Productivity Multitasking is the process of switching from one task into another. It can: Be inefficient. Slow us down. Lead to mistakes. Be a source of stress and anxiety. How to avoid multitasking Prioritize your tasks. Focus on one task at a time. Turn off distractions. Take breaks. The Pomodoro Technique It is a time management technique that helps you focus by using time-boxed intervals. The intervals are usually 25 minutes long followed by a 5 minute break. After 4 pomodoros, take a longer break (15-30 minutes) to have some proper rest. Delete Social Media Apps from Your Phone Delete social media apps from your phone. Sign out from social medias in the web browser. Now you need to take a few more steps to use them. Every minute is valuable. You are a lifelong learner Learning doesn’t end after school or training program. Software engineers must constantly learn to stay up-to-date. Embrace the mentality of being a lifelong learner. Do not Memorize the Syntax Switching programming languages is common in a career. Moving to a new language can be overwhelming, especially for beginners. Memorizing everything is not necessary. Experienced developers still need to look up information and documentation. You don’t have to be remember the syntax. You can use GitHub Copilot, ChatGPT to help you with the syntax. You are supposed to solve problems. Avoid the Tutorial Hell Watching many tutorials can give you a false impression that you are learning. You cannot learn new things by just passively watching. You get better at coding by actually coding. Be more active with project-based learning. Keep a ’ ‘TO Learn" List Everyone keeps “To Do” lists. There is nothing wrong with that. As a lifelong learner, you should also keep another very important list. You should keep a “To Learn” list. Benefits Of Keeping “To Learn” Lists It can help you stay: Curious. Motivated. Humble. Productive. Learn by Building Things From Scratch Building from scratch enhances understanding. Active learning through building. Learn principles and underlying concepts. Develop problem-solving skills. See the Bigger Picture Drive the business forward by adding value. Avoid getting lost in trivial tasks and focus on critical problems. Increase value and productivity by investing time wisely in high-impact areas. The Feynman Technique There is a difference between just knowing the name of something and actually understanding something. The Feynman Technique can help you understand complex topics. The technique is a four-step process: Choose a topic that you want to learn. Teach it to yourself or someone else. Whenever you get stuck, go back to the book, or course. Use simple examples and analogies. Learn to build something that already exists Avoid overwhelming yourself with complex business decisions. Clone open-source projects. Replicate projects you already use. Keep learning simple. Learn Concepts not Specific Problems Understand concepts, not just memorize solutions. Learn underlying principles, design patterns, and best practices. Increase problem-solving efficiency and effectiveness. Work on side projects You need to improve your skills. Side projects can serve as a sandbox to try out new technologies, frameworks. No need to finish complete apps. Even prototypes can help you learn a lot. Be Kind to Yourself There is so much to learn and get done. We may feel overwhelmed, anxious, and stressed. It is very important to prioritize our own well-being. Practice self-compassion. Develop Positive Relationships with Your Family Quality family time boosts motivation and drive. Open communication sets healthy boundaries. Active listening and respect foster positivity. Appreciation and gratitude fuel success. Build Positive Relationships at Work Build relationships with colleagues. Listen and respect. Show appreciation for colleagues work. Offer assistance and be a team player. Meet new people Meeting new people helps you: Expand your professional circle. Get involved in new opportunities. Develop new skills and experiences. Be open to meeting people whenever there is an opportunity. You can grow both personally and professionally. Log Your Achievements We accomplish a lot of things in our work: Fix critical bugs. Finish urgent tasks. Your work can have a really profound impact on the project. As times goes by, we forget about them. As such, it is extremely important to log our achievements. When we log our achievements, we can: Track our progress. Identify areas of improvement. Feel a higher sense of meaning and satisfaction. Feel more confident. Have higher levels of happiness. How to Log Your Achievements Use a document to list accomplishments, trainings, and relevant details. Capture positive feedback (emails, Jira comments, personal messages) as reminders. Track achievements for improvement and impact. Learn to write Effective writing is crucial for software developers. Writing saves time and prevents misunderstandings. It boosts productivity, credibility, and career growth. “What many people underestimate is that being a good writer, whether that is through emails or through documents. allows you to be more impactful. I see many engineers ignore that skill. You might be proud of your code. You should also be equally proud of the craft of writing… Writing is a highly underestimated skill for engineers.” Urs Hölzle, Google’s first VP of Engineering. Power Up Your Career with Presentations Presentations enhance careers and skills. Sharing knowledge through presentations builds confidence and expertise. Overcoming the fear of public speaking fuels personal and professional growth. Learn keyboard shortcuts Keyboard shortcuts save time and reduce hand movements. Learn shortcuts for common tasks. Mastering shortcuts boosts productivity and makes work more enjoyable. Master debugging Software Engineers spend more time debugging than coding. Invest time getting better at it. Use logs and read error messages carefully. Use debugging tools: breakpoints. watch windows. call stacks. Improve Your Typing Speed Typing is a big part of our daily lives: emails, messages, documents. Faster typing means more productivity and efficiency. Practice can improve your typing speed. Just 5-10 minutes a day for a few weeks can make a significant difference. Conclusion Knowledge is not power. Knowledge is potential power. Applied knowledge is actual power. It is very important to practice what you learn. Source: ...

25 April 2025 · 13 min · 2622 words · Ahmad Adillaumam