tag:blogger.com,1999:blog-36497625464269548932024-03-13T18:31:35.184+08:00UptimeWhen the system is not downJoseph Anthony C. Hermocillahttp://www.blogger.com/profile/06540390289881167599noreply@blogger.comBlogger126125tag:blogger.com,1999:blog-3649762546426954893.post-66192917433051028912023-11-18T10:05:00.003+08:002023-12-24T09:59:13.218+08:00Dec{}de 2023: Resilience Rising Experience<p>Trend Micro's annual cybersecurity conference <a href="https://decodeph.com/">DEC{}DE</a> is in person again this year with the theme "Resilience Rising". ICS have participated in this free conference in the <a href="https://blog.jachermocilla.org/search/?q=dec%7B%7Dde">past</a>. This year, there were 8 participants from ICS. In addition to the main security tracks, we also attended the Cybersecurity ConnectED event where Trend Micro presented how academic institutions can partner with them to bootstrap or enhance cybersecurity courses. We sure learned a lot from the conference and we are excited for the conference next year. This year is memorable for me because I was able to ask a question during the plenary session. </p><p><br /></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaQ-Rw0os3cizd6TtdMUw7YGt67Qb-iEJSolRo3DfHth2MtqeKQ4tiblu393Hfr9nTKBcMS92YjuZlIM56fK6GLBrZHXjn9hH-fagM3bpwJQPsMvCSa91xOXn-p1tsr5Awo0OKsrWhjgZBelPuzoRRnChf8pLaNt424RTjG6TcdRzJQe_op__yqxqzhEM/s1301/decode2023.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="732" data-original-width="1301" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaQ-Rw0os3cizd6TtdMUw7YGt67Qb-iEJSolRo3DfHth2MtqeKQ4tiblu393Hfr9nTKBcMS92YjuZlIM56fK6GLBrZHXjn9hH-fagM3bpwJQPsMvCSa91xOXn-p1tsr5Awo0OKsrWhjgZBelPuzoRRnChf8pLaNt424RTjG6TcdRzJQe_op__yqxqzhEM/w400-h225/decode2023.jpg" width="400" /></a></div><br /><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1FJk3uz0EpGFnZlHFkizMJ-WyjRGNf0waHwg98SY9uHW-Sa6KcB_wmllaghBy9l0UyvP9MOrToCSjZkI8D6qyYFhjgLoVzif4U5o6aLkoFN1wm7jkyugOWmhd05yl7wY8MQ0_-65MBu_8-N4qYLdZ0phPt8VPt7j3mzt06uedIM-N9C8s0LTu7g4kQSE/s1600/resilience.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1200" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1FJk3uz0EpGFnZlHFkizMJ-WyjRGNf0waHwg98SY9uHW-Sa6KcB_wmllaghBy9l0UyvP9MOrToCSjZkI8D6qyYFhjgLoVzif4U5o6aLkoFN1wm7jkyugOWmhd05yl7wY8MQ0_-65MBu_8-N4qYLdZ0phPt8VPt7j3mzt06uedIM-N9C8s0LTu7g4kQSE/s320/resilience.jpg" width="240" /></a></div><br /><p><br /></p>Joseph Anthony C. Hermocillahttp://www.blogger.com/profile/06540390289881167599noreply@blogger.comtag:blogger.com,1999:blog-3649762546426954893.post-31981982857959882072023-05-14T23:48:00.156+08:002024-01-23T08:49:59.233+08:00MS Computer Science (MSCS) program at UPLB (Part 1)<div style="text-align: left;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpUzBDBkEd_RnbybdK0wm_IwaRl7lvEeYxF4tH3iHyKVWuZVhZ9VGMsz5o7zS_WJqvyam1HC3T5GyNkPRAd7Neq4hOLJ1vGCIUuXzq6hlIsWYCUdCTPg9ZfGG-S39EjTYHdVBGNIoZnrQdDc9jW_-Ni2Si6RrFU3tvKPaPdCPoYbCYB2W0qafq9dsd/s5184/gs.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3456" data-original-width="5184" height="266" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpUzBDBkEd_RnbybdK0wm_IwaRl7lvEeYxF4tH3iHyKVWuZVhZ9VGMsz5o7zS_WJqvyam1HC3T5GyNkPRAd7Neq4hOLJ1vGCIUuXzq6hlIsWYCUdCTPg9ZfGG-S39EjTYHdVBGNIoZnrQdDc9jW_-Ni2Si6RrFU3tvKPaPdCPoYbCYB2W0qafq9dsd/w400-h266/gs.jpg" width="400" /></a></div><br /><div><span style="font-size: x-small;"><i>(Last update: 19 January 2024)</i></span></div><div><br /></div><div>If you are considering applying to the <a href="https://ics.uplb.edu.ph/degree-programs/ms-computer-science/">Master's Degree in Computer Science</a> program at UPLB, here are some things you might want to know <i>based on my experience and observations</i>.</div><div><br /></div><div><b>Who should take this degree program?</b></div></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><div><i>"The Master of Science in Computer Science (MSCS) degree program addresses the need for advanced formal training of professional leaders in Computer Science. <u>Candidates are expected to acquire a broad knowledge of the discipline and be able to undertake critical inquiry and independent research.</u>"</i></div><div><span style="font-size: x-small;"><i><br /></i></span></div><div>This program is ideal for those who want to become professors or researchers. The MSCS program can also be treated as a 'bridge' program if you want to get into a PhD program. If you are an industry practitioner, you might want to take the <a href="https://ics.uplb.edu.ph/degree-programs/master-of-information-technology/">Master of Information Technology(MIT)</a> program (non-thesis) instead. As much as possible, you should have <a href="https://blog.jachermocilla.org/2019/12/how-to-determine-research-potential.html">good grades</a> during undergrad to increase your chances of getting accepted and completing the regular program. </div></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><b>What prerequisite knowledge is required? </b></div><div style="text-align: left;"><br /></div><div style="text-align: left;">This program requires that you've completed a <a href="https://blog.jachermocilla.org/2016/11/bs-computer-science-vs-bs-information.html">BSCS/BSIT/BSIS</a> program from a 'recognized' HEI. Here are some of the courses you should have good grades in (2.0 or better).</div><div style="text-align: left;"><br /></div><div style="text-align: left;">* Discrete Mathematics</div><div style="text-align: left;">* Statistics</div><div style="text-align: left;">* Data Structures and Algorithms</div><div style="text-align: left;">* Programming Languages</div><div style="text-align: left;">* Databases</div><div style="text-align: left;">* Operating Systems</div><div style="text-align: left;">* Computer Networks</div><div style="text-align: left;">* Automata and Language Theory</div><div style="text-align: left;"><br /></div><div style="text-align: left;">You should also be proficient in <i>programming</i>. <u>Web programming is a must if you plan to minor in IT. </u></div><div style="text-align: left;">Being proficient in Linux and Python is a plus. </div><div style="text-align: left;"><b><br /></b></div><div style="text-align: left;">If you are interested to join our group, I prefer students who have good background in machine organization/architecture and low-level programming (assembly and C), operating systems admin/internals, and computer networks.</div><div style="text-align: left;"><b><br /></b></div><div style="text-align: left;"><b>Program requirements</b></div><div style="text-align: left;"><b><br /></b></div><div style="text-align: left;">The program requires <i>at least 34 units</i> to complete, divided into the following.</div><div style="text-align: left;"><br /></div><div style="text-align: left;"><i>* Core Courses (12 units) - required</i></div><div style="text-align: left;">- Programming Languages, Advanced Computer Systems, Advanced Data Structures and Algorithms, Computational Complexity Theory</div><div style="text-align: left;"><i><br /></i></div><div style="text-align: left;"><i>* Major Courses (6 units) - select two(2) from the following courses</i></div><div style="text-align: left;">- Databases, Automata and Language Theory, Scientific Computing, Digital Image Processing, Management Information Systems, Parallel Processing, Special Topics</div><div style="text-align: left;"><br /></div><div style="text-align: left;"><i>* Minor Courses (9 units) - select three(3) courses from one of the following graduate programs</i></div><div style="text-align: left;"><i>- </i>Mathematics, Statistics, Economics, Agriculture, Forestry, Information Technology, Environmental Science</div><div style="text-align: left;"><i><br /></i></div><div style="text-align: left;"><i>* Seminar (1 unit)</i></div><div style="text-align: left;"><i><br /></i></div><div style="text-align: left;"><i>* MS Thesis (6 units) </i></div><div style="text-align: left;"><br /></div><div style="text-align: left;">In addition to passing the courses above (with a grade of 2.0 or higher), you also need to pass the Comprehensive Exam. </div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><b>Who are the professors currently teaching the graduate CS/IT courses?</b></div><div style="text-align: left;"><span style="font-size: x-small;"><i>(as of Academic Year 2023-2024)</i></span></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><b>* </b>Patrick Albacea (Programming Languages, Operating Systems)</div><div style="text-align: left;"><b>* </b>Fermin Roberto G. Lapitan (Web App Dev)</div><div style="text-align: left;">* Marie Art Antonette Clarino (Modeling and Simulation, Data Structures, Algorithms)</div><div style="text-align: left;"><b>* </b>Joseph Anthony Hermocilla (Cybersecurity, Modern Distributed Systems)</div><div style="text-align: left;">* Concepcion Khan (Information Systems, Knowledge Management)</div><div style="text-align: left;"><b>* </b>Val Randolf Madrid (AI/ML, Machine Vision)</div><div style="text-align: left;">* Danilo Mercado (Enterprise Systems, Cybersecurity)</div><div style="text-align: left;">* Jaderick Pabico (AI/ML, Parallel Programming)</div><div style="text-align: left;"><b>* </b>Reginald Recario (Databases)</div><div style="text-align: left;"><b>* </b>Jaime Samaniego (Data Structures, Algorithms, Computational Complexity Theory, Automata)</div><div style="text-align: left;"><br /></div><div style="text-align: left;"><b><br /></b></div><div style="text-align: left;"><b>Part-time or full-time mode?</b></div><div style="text-align: left;"><br /></div><div style="text-align: left;">If your home institution, funding institution, or employer will allow it, choose full-time. The advantage of full-time mode is that you can focus on the coursework and still have plenty of time to research.</div><div style="text-align: left;"><br /></div><div style="text-align: left;"><b><br /></b></div><div style="text-align: left;"><b>Choosing your adviser/supervisor</b></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><u>Use your first semester, or even before applying to the program, to scout for a suitable adviser.</u> Ask other students. Visit research group websites of professors. Check the publications of professors. Attend talks. Talk directly to a possible adviser via email or in person. </div><div style="text-align: left;"><br /></div><div style="text-align: left;">Note that you will be assigned a <u>temporary registration adviser</u> upon admission to handle enrolment/registration matters. If a professor has accepted you as advisee even before admission, then he/she will automatically be your registration adviser.</div><div style="text-align: left;"><br /></div><div style="text-align: left;"><div>Choosing your adviser is a tricky task. The following are some guidelines on how to select an adviser (<u>based on my opinion</u>).</div><div><br /></div><div>* <i>Choose an adviser who 'specializes' in the area that you are interested in.</i></div><div>You want an adviser who can guide you in your research. Some advisers are generalists, but choosing a specialist is best.</div><div><br /></div><div>* <i>Choose an adviser who is 'easy to work with.' </i></div><div>Some advisers can be challenging to work with. Some are too intimidating and too demanding with unreasonable expectations. Some are not even available for regular consultations. </div><div><br /></div><div>* <i>Choose an adviser who has connections outside of ICS or UPLB.</i></div><div>If your adviser is active and visible in the research/scientific community, it will enlarge your network and open up opportunities for collaboration. Some advisers are also involved in externally-funded projects, which can be a good source of a thesis topic.</div><div><br /></div><div><div>* <i>Choose an adviser who is ethical.</i></div><div>Your reputation will also be affected if your adviser is involved in unethical research/publication practices.</div><div><i><br /></i></div></div><div>You also need to select 2-3 professors who will be part your Guidance Committee, with one member from your chosen minor field.</div><div><br /></div></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><b>Choosing your minor</b></div><div style="text-align: left;"><br /></div><div style="text-align: left;">Most students choose Information Technology(IT) as their minor. However, it is actually up to you, based on the research area that you want to pursue. For example, a Forestry, Environmental Science, or Economics minor is best if you are interested in Modeling and Simulation or Machine Vision. A Statistics or Mathematics minor will be excellent for a Data Science or AI/ML track. </div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><b>How are the classes conducted?</b></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><div>Lectures and assignments make up most of the classes. Some IT courses have a separate laboratory class. Unlike in undergrad, reading research papers and writing reviews are incorporated into the class activities. I often hear current students complain about too much readings in their classes. <u>Do not apply to this program if you do not like reading and reviewing research papers</u>. Individual/group programming projects and reporting are required in some courses. A midterm exam and a final exam are also used for assessment. Remember that you need to get a grade of 2.0 or higher. Unlike in undergrad, you must be motivated to study independently and not depend on the professor. Some professors don't give lectures at all and only assign readings and programming assignments.</div></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><b>What are other skills you need to develop?</b></div><div style="text-align: left;"><br /></div><div style="text-align: left;">You will need to develop the following:</div><div style="text-align: left;">* Oral and written communication skills, especially scientific/technical writing</div><div style="text-align: left;">* Critical reading of research papers and writing reviews - one way to do this is by maintaining a blog </div><div style="text-align: left;">* Reporting and presentation skills</div><div style="text-align: left;">* Learning new tech stacks and programming languages</div><div style="text-align: left;">* LaTeX </div><div style="text-align: left;"><br /></div><div style="text-align: left;">Another important skill that you need to develop is networking or in general socialization. In addition to your adviser, you need a kind of support group where you can bounce off your ideas and not feel alone.</div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><b>Comprehensive Exam</b></div><div style="text-align: left;"><br /></div><div style="text-align: left;">Once you've completed the coursework, you will take the Comprehensive Exam. The exam will cover the following areas: Theory, Systems(my specialization), and Applications. Questions will come from professors who taught or specialize in the particular area. </div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><b>Your first semester</b></div><div style="text-align: left;"><br /></div><div style="text-align: left;">You should spend your first semester to familiarize yourself to the graduate school environment. You will take at least two core courses during your first semester of first year: Advanced Computer Systems (CMSC 215) and Advanced Data Structures and Algorithms (CMSC 244). If you are a full time student, you can take additional courses (up to 12 units). As mentioned above, scout for a possible adviser during your first semester. Also choose your minor and look for Guidance Committee members. I recommend that you attend a research methods class even if it is not required to develop your research skills. </div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><b>How long will it take to finish?</b></div><div style="text-align: left;"><br /></div><div style="text-align: left;">It <i>usually takes 3-4 years</i> to complete the program, especially for part-time students. Sometimes it will take longer because of the thesis (I will have a separate post to discuss it). That is why I recommend the full-time mode. The UPLB Graduate School has a proposed 'optimistic' timeline below. This timeline may be possible in other disciplines. However, this is <i>quite difficult</i> to achieve in MSCS.</div><div style="text-align: left;"><br /></div><div style="text-align: left;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgkFN45gh-Usy67TID7-AU8lJTufdd_m0npRfUMnXM3TnYOUzS1u87iBvriTKKKmPTcK6BIq6RxnrY7a4n_XY6bGy9K2L-mRsyBk2_rB0vIICzCaDV-sFM2eEVgnbNwonbFPm6PbUSJHAaEUXczTYxI6GKGHiEkv8Wn89cwVQjRn1pQd2JZ9nZ-sM8W" style="margin-left: 1em; margin-right: 1em;"><img data-original-height="486" data-original-width="885" height="220" src="https://blogger.googleusercontent.com/img/a/AVvXsEgkFN45gh-Usy67TID7-AU8lJTufdd_m0npRfUMnXM3TnYOUzS1u87iBvriTKKKmPTcK6BIq6RxnrY7a4n_XY6bGy9K2L-mRsyBk2_rB0vIICzCaDV-sFM2eEVgnbNwonbFPm6PbUSJHAaEUXczTYxI6GKGHiEkv8Wn89cwVQjRn1pQd2JZ9nZ-sM8W=w400-h220" width="400" /></a></div><div style="text-align: left;"><br /></div><br /><b>Facilities and resources for students</b></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><div>We have a shared <i>GS Room</i> where graduate students can stay and work. There are iMacs available, but bringing your own laptop/device is better. Some professors have their own lab space where you can work if they are your adviser. Our main graduate teaching laboratory is <i>PC Lab 1</i>, with 16 Ubuntu boxes. We have a few servers for running compute-intensive tasks. The <i><a href="https://library.uplb.edu.ph/">UPLB Main Library</a></i> has access to a wide collection of research resources, including those published by <a href="https://dl.acm.org/">ACM </a>and <a href="https://ieeexplore.ieee.org/Xplore/home.jsp">IEEE</a>. Technical reports from ICS are available at <a href="https://lib.ics.uplb.edu.ph/">Peak-One</a>.</div></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><b>How to fund your study?</b></div><div style="text-align: left;"><br /></div><div style="text-align: left;">The tuition fee is currently PHP 1000.00/unit. For the tuition fee alone, you will need at least PHP 34,000.00! If you have enough money, you can fund your study on your own. You can also avail of financial assistance. </div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div><div><b>Additional information </b></div><div><br /></div><div>* The GS Policies, Rules & Regulations Document: <a href="https://gs.uplb.edu.ph/gs-policies-rules-regulations/">https://gs.uplb.edu.ph/gs-policies-rules-regulations/</a></div><div><br /></div><div>* GS Faculty Guide: <a href="https://www.uplbgraduateschool.org/img/resources/Faculty%20Guide%20(07272018)%20(1).pdf">https://www.uplbgraduateschool.org/img/resources/Faculty%20Guide%20(07272018)%20(1).pdf</a></div><div><br /></div><div>* Student Handbook: <a href="https://www.uplbgraduateschool.org/img/resources/Student%20Handbook%20(07272018)%20(2).pdf">https://www.uplbgraduateschool.org/img/resources/Student%20Handbook%20(07272018)%20(2).pdf</a> </div><div><br /></div><div>* Tuition and other fees: <a href="https://gs.uplb.edu.ph/admission/fees/">https://gs.uplb.edu.ph/admission/fees/</a></div><div><br /></div><div><b>* </b>Financial Assistance: <a href="https://gs.uplb.edu.ph/current-students/financial-assistance/">https://gs.uplb.edu.ph/current-students/financial-assistance/</a> </div><div><b><br /></b></div><div><b><br /></b></div><div><b>How to apply?</b><div><br /></div><div>Now that you know something about the MSCS program, visit <a href="https://gs.uplb.edu.ph/admission/how-to-apply/">https://gs.uplb.edu.ph/admission/how-to-apply/</a></div><div><br /></div></div><div><br /></div><div><b>Closing Thoughts</b></div><div><br /></div><div>Be sure that you really need/want the MSCS degree!! If you did not finish your undergrad from UP, you might be 'shocked' by the academic environment here. You need to spend some time adjusting and focusing. Your classmates will probably be instructors from ICS, and they will be really good in your classes. Do not be intimidated by them. Just do your best and excel. <i>Most </i>of them are friendly and fun to work with in <a href="https://blog.jachermocilla.org/2023/03/how-to-succeed-in-group-programming.html">group projects</a>. Choose your major adviser and Guidance Committee wisely. In Part 2, I will talk about the thesis, research, and publications.</div><div><br /></div><div><br /></div><div><i><span style="font-size: x-small;">(Photo by Unseen Studio on Unsplash)</span></i></div><div><div><br /></div></div>Joseph Anthony C. Hermocillahttp://www.blogger.com/profile/06540390289881167599noreply@blogger.comtag:blogger.com,1999:blog-3649762546426954893.post-33938867289477037182023-03-19T11:13:00.040+08:002023-03-21T14:12:14.808+08:00How to succeed in group programming projects?<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjv2yl27A-1c3nsPakX3fymVKm9D6amJCseHjFH5DIFDm1nvCBD275R8vftXj1IfUYoc30V5L-NjRsXYqufb--z5ZF0uyu8Ab4kxWZLhoZEtWg0iZBzOa6Qjo1y9xA1-HWA5ZJBDeMbt4UiOBSGIF3_TXTxXSG4K6Rq1vRHaYRPd4dLBK__60Zo9pEd/s7952/annie-spratt-QckxruozjRg-unsplash.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="5304" data-original-width="7952" height="266" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjv2yl27A-1c3nsPakX3fymVKm9D6amJCseHjFH5DIFDm1nvCBD275R8vftXj1IfUYoc30V5L-NjRsXYqufb--z5ZF0uyu8Ab4kxWZLhoZEtWg0iZBzOa6Qjo1y9xA1-HWA5ZJBDeMbt4UiOBSGIF3_TXTxXSG4K6Rq1vRHaYRPd4dLBK__60Zo9pEd/w400-h266/annie-spratt-QckxruozjRg-unsplash.jpg" width="400" /></a></div><br /><p>Group programming projects will test a student's technical skills and ability to work in a team. This post will discuss how to succeed in group programming projects. </p><p><b><span style="font-size: medium;"><u>The Answer: Choose an excellent group leader!</u></span></b></p><p>In group projects, the role of the group leader is very important. Although technical expertise is a desired quality for a group leader, leadership skills, project management skills, and communication skills are more important to ensure the success of the group project. (<i>I am speaking from experience here because I've always been selected as the group leader when I was an undergrad :)</i> ). </p><p><b>Common issues in group projects</b></p><div style="text-align: left;">* Technical skill level gap - some members are already good in programming, others are not<br /></div><div style="text-align: left;">* Communication - team members have different expectations(one member wants a 1.0 while others want 1.25 only), work habits(night owls vs. early birds), etc.<br />* Schedule - cannot find a common time to meet and work on the project<br /><div>* Code management - did not use git (<i>When I was in college there was no git. I maintain the authoritative copy of our project source code on floppy disks :) </i>)</div></div><div style="text-align: left;">* Procrastination - can cause delays, some group members are not working on tasks assigned to them (though everyone procrastinates)<br /></div><p><b>Role of the group leader</b></p><p>In general, the role of the group leader is to handle the issues mentioned above.</p><div style="text-align: left;">* Set goals and processes - provide a sense of direction for the successful completion of the project, includes setting up the project code repository and project management tools<br />* Facilitate communication - identify channels of communication, set meetings, follow up, etc. <br />* Assign tasks - based on the abilities of the members, members should be honest about their technical skill level<br />* Monitor progress - updates from group members, can be done through tools<br />* Provide assistance - technical, etc. <br />* Manage conflicts - need to make decisions at some point</div><div style="text-align: left;">* Seek help(of prof) if needed</div><div style="text-align: left;">* Trust and respect the group members </div><div style="text-align: left;">* Maintain a work log</div><div style="text-align: left;"><b><br /></b></div><div style="text-align: left;"><b>Character of the group leader</b></div><p>A group member should not accept the nomination as group leader if he/she does not possess these qualities.</p><div style="text-align: left;">* Effective communicator <br />* Collaborative - group leader should ensure that every member of the team can contribute, no matter how small the contribution is<br />* Adaptable - be able to make adjustments based on circumstances<br />* Positive and cool attitude <br />* Accountable - and responsible</div><div style="text-align: left;">* Empathetic - "not everyone is as good(or bad) as you"</div><div style="text-align: left;">* Organized</div><div style="text-align: left;"><div>* Accept the fact that a low project grade may be given because some group members did not deliver</div><div>* Accept the fact that a group member may be more technically skilled than he/she is - ask for suggestions, set aside the "ego" associated with being the group leader</div></div><div style="text-align: left;">* Must not expect that everyone in the group will be able to contribute 'equally' with the same level of 'complexity' of output </div><div style="text-align: left;"> </div><div style="text-align: left;"><b>Role of the group member</b></div><p>Of course without the contribution of group members the project will not move forward. <i>(May not always be true because a highly technical, grade-conscious, and introvert group leader may 'make buhat' the group but secretly fail everyone else in the team in the peer eval :) </i>). </p><div style="text-align: left;">* Trust and respect the group leader - the group leader is doing a lot more stuff than group members<br /><div>* Accept tasks that he/she is willing to commit to</div><div>* Commit to work on the assigned tasks</div></div><div style="text-align: left;">* Communicate with the group leader and other group members <br />* Seek help(of prof) if needed</div><div style="text-align: left;">* Maintain a work log</div><div style="text-align: left;">* Accept the fact that a low project grade may be given because the group leader and other members did not deliver</div><div style="text-align: left;">* Accept the fact that the group leader and other members may not be technically skilled than he/she is - make suggestions, volunteer to work on more complex tasks</div><div style="text-align: left;">* Not be a freeloader</div><p><br /></p><p>Appendix: Example work log</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiDLU6u-V7tbjpJ3V19al1L1KuD3j1vn67hRTBDyotsrr7AELvGRmLIFQrkfnq-lyBtXEt4tRtqGjnlUxOQc0jCFCU0pcm3393WMG8QnpDEAxumg8nKAgODD0nT1VFPGsV1VS7-cYb7v3c7hRZKc8I1p031szf7k7g8kcmexJadu9zN66Q9SrKLaIgL" style="margin-left: 1em; margin-right: 1em;"><img data-original-height="232" data-original-width="674" height="138" src="https://blogger.googleusercontent.com/img/a/AVvXsEiDLU6u-V7tbjpJ3V19al1L1KuD3j1vn67hRTBDyotsrr7AELvGRmLIFQrkfnq-lyBtXEt4tRtqGjnlUxOQc0jCFCU0pcm3393WMG8QnpDEAxumg8nKAgODD0nT1VFPGsV1VS7-cYb7v3c7hRZKc8I1p031szf7k7g8kcmexJadu9zN66Q9SrKLaIgL=w400-h138" width="400" /></a></div><br /><br /><p></p><p><i><span style="font-size: x-small;">(Photo by <a href="https://unsplash.com/@anniespratt?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Annie Spratt</a> on <a href="https://unsplash.com/photos/QckxruozjRg?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>)</span></i></p>Joseph Anthony C. Hermocillahttp://www.blogger.com/profile/06540390289881167599noreply@blogger.comtag:blogger.com,1999:blog-3649762546426954893.post-59428462347121855762022-11-24T15:58:00.067+08:002023-05-21T10:23:52.845+08:00UPLB Student Registration Systems: 1996-2022<div><i>(Please note that this post is just based on my recollection of events. <a href="https://jachermocilla.blogspot.com/2012/07/uplb-systemone-physical-servers.html">Here's my 2012 post about UPLB student registration</a>.)</i></div><div><br /></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqn_9DC1V4aPLxXTXQ_7pp6RG9FD7CNOS8uze0fHVR0OHu_-UqPFU58aI2Dsapq7W5xOBn5vGZuGDgzORpjo2GgLRMeH_zzTa8zXMmHx6eUXytDRJ4Lo6Rh-Sez1NtiV7IhbbBdfk4W5dU5Qu5FMG9hXCM9zib_70YiVw6g_VD85SpRadD4EF30Ncqng/s829/s1_2007.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="389" data-original-width="829" height="188" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqn_9DC1V4aPLxXTXQ_7pp6RG9FD7CNOS8uze0fHVR0OHu_-UqPFU58aI2Dsapq7W5xOBn5vGZuGDgzORpjo2GgLRMeH_zzTa8zXMmHx6eUXytDRJ4Lo6Rh-Sez1NtiV7IhbbBdfk4W5dU5Qu5FMG9hXCM9zib_70YiVw6g_VD85SpRadD4EF30Ncqng/w400-h188/s1_2007.png" width="400" /></a></div><br /><div><br /></div><div><br /></div><div>I have been part of UPLB for more than 20 years already, both as a student and as a faculty member. I have witnessed two main modes of the student enrollment (aka registration), manual and automated. In this post I'll try to discuss the different systems I observed and experienced. I will not be specific about dates since I am not good with it. Let's get started.<br /></div><div><br /></div><div>Simply put, the registration process enables students to select the subjects they will take for the incoming semester. The official document that contains this is the Form 5. One interesting aspect of the registration process in UPLB is that there is no guarantee that a student will be able to get all the subjects he/she needs for the incoming semester. This is due to a lot of factors, e.g. limited number of slots per section, schedule conflict with other subjects, and seasonal subjects. <div><div><br /></div><div>When I was a student in the mid '90s, there was a hybrid enrollment process. Students submit a Write-In paper form that contains the subjects and sections they want to enroll for the upcoming semester. The Write-In form will be encoded to the computer and used as input to a FORTRAN program called REGIST, which was developed by Dr. Ricolindo L. Carino of the Institute of Computer Science (ICS). To my knowledge, this process was in place until I graduated in 2002.<br /></div><div><br /></div><div>After graduation, I became an instructor in ICS where my colleague Rodolfo N. Duldulao Jr. (Duldz) started developing an in-house system to track enlistment to Computer Science subjects. The system used the Apache-MySQL-PHP tech stack for web apps. This in-house system became popular and was extended to provide an online mechanism for the Write-In process in the entire UPLB. This online system became SystemOne (S1). More features were eventually added to S1 which was deployed during registration period. Note that the initial course assignments in S1 were still generated by REGIST. </div><div><br /></div><div>REGIST attempts to "solve" course/student assignment (or student sectioning problem as I formulated it in my MS thesis). It became an academic research topic for a few MSCS students. Approaches such as Tabu Search, Ant Colony Optimzation, Simulated Annealing, Genetic Algorithms, and Multiagent Systems (<a href="https://jachermocilla.org/publications/hermocilla-model2009-a.pdf">my study</a>) were tried but they never really replaced REGIST.</div><div><br /></div><div>S1 evolved to become the main system for online Write-In and eventually for enlistment of courses to serve the entire UPLB students. After Duldz left UPLB, another colleague, Rommel V. Bulalacao (Bulacs), took over the development and operations of S1. Bulacs was a volunteer developer of S1 while he was still a student. REGIST however remained to be the main system for automagically assigning students to classes. Several improvements were also made by Bulacs for S1v2. Dr. Carino still provided support, though limited, for REGIST through the Registrar's office. I also coauthored a <a href="https://jachermocilla.org/publications/bulalacao-sfrc2015-is.pdf">short paper</a> which identified the performance bottleneck in S1v2 prompting its rewrite to a more modern tech stack, Node.js. This rewritten version (S1v3) however was short-lived. </div><div><br /></div><div>When Alfredo E. Pascual became UP president, he initiated the e-UP program. There was a strong push to deploy a unified enterprise system to support all university operations, including registration. This led to the deployment of the Student Academic Information System (<a href="https://video.up.edu.ph/search?search=SAIS&searchTarget=local">SAIS</a>) in UPLB. Key persons in SAIS deployment in UPLB were Dr. Jaime L. Caro(ITDC) and Dr. Myrna Carandang(UPLB Registrar). SAIS is still the current system being managed and operated by ITDC with a local team in UPLB housed in the Registrar's Office. SAIS is more of a "shopping cart" application where students "add to cart" the subjects they want to enlist. There is no global course demand prediction as with the case of REGIST. This resulted to a lot of problems. One of which is that regular students were unable to enlist in subjects because there is no "hard constraint" to prioritize them. Another is that departments were not able to properly predict course demand to adjust their course offerings. </div><div><br /></div><div>I also recall a system being deployed in Graduate School by a team led by Mr. Li Bolanos. I don't have the details about the system though but I think it was written using PHP and MySQL. </div><div><br /></div><div>More recently, under UPLB Chancellor Dr. Jose Camacho Jr., an ad hoc committee was formed to oversee the development and implementation of the UPLB DX Academic Management Information System to replace SAIS. The committee is chaired by my colleague who is also the University Registrar, Prof. Margarita Carmen S. Paterno (Marge). Other colleagues involved are Prof. Danilo J. Mercado (ITC Director), Prof. Reginald Neil Recario, and Prof. Monina Carandang. Mr. Li Bolanos is also a part of this team. A version of DX AMIS for Teacher's Prerogative (using PHP-Postgres on VPS) was deployed during the First Semester AY 2022-2023. However, SAIS is still the main app for registration.</div><div><br /></div><div>All deployed systems, from S1 to DX AMIS, encountered availability problems during peak hours of the registration period due to large amount of network requests.</div><div><br /></div></div></div>jachermocillahttp://www.blogger.com/profile/03545707410598345661noreply@blogger.comtag:blogger.com,1999:blog-3649762546426954893.post-30847951932007053972022-11-15T12:32:00.083+08:002024-01-21T11:56:34.878+08:00Thoughts on Learning and My Teaching Philosophy<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiA1lBQN9q5eyY5VfUcD9T33GB_O-FT4tbPRhB7mRL17K1V-c3wsSeLtHpsc0DrVxyewIARjhLlKgBQs0Qn22tcajvDgkiYmkflzE_HXaNoDahNrc7qrO3sIk8Zikh9DmKFK7_sA1vSFWf1ksj5QnQqbwnuOvNlhc3aL9cPyYQhi-cwIsxTU5TRQ1mrDUc/s1010/student_quadrant.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="790" data-original-width="1010" height="250" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiA1lBQN9q5eyY5VfUcD9T33GB_O-FT4tbPRhB7mRL17K1V-c3wsSeLtHpsc0DrVxyewIARjhLlKgBQs0Qn22tcajvDgkiYmkflzE_HXaNoDahNrc7qrO3sIk8Zikh9DmKFK7_sA1vSFWf1ksj5QnQqbwnuOvNlhc3aL9cPyYQhi-cwIsxTU5TRQ1mrDUc/s320/student_quadrant.png" width="320" /></a></div><br /><p>I've been teaching in UPLB since 2002 (that's >20 years already!). I haven't really put into writing my thoughts about learning and my teaching philosophy. Here are some items (which will be updated from time to time because things happen and change): </p><p></p><ul style="text-align: left;"><li>Since this is UPLB, I assume that my students are really smart (but some will be "slow"). Of course, some students will be smarter than me. This is one reason I like teaching here.</li><li>Since I teach Systems subjects, I want my students to work on hands-on activities and experiment (build, break, and rebuild stuff).</li><li>I don't believe in "learning styles". I believe that students can learn any topic (no matter what their learning styles are) if they really give time and effort to learn the topic. They can always ask for help on difficult topics. Even if I am a boring lecturer, for sure they will learn something.</li><li>My role is just a facilitator of learning (and possibly a source of inspiration), not the source of knowledge. Students are free to explore other knowledge sources outside the syllabus and the classroom. Using AI Tools is welcome in my classes.</li><li>I don't tolerate academic dishonesty. It is better for students to fail (then retake the subject) than to cheat in graded activities such as exams. However, I don't police students on this matter. For me policing is a waste of my time. I have high respect for students who fail because they did not resort to academic dishonesty. Also, a student can just drop the course if he/she is failing rather than resort to academic dishonesty. </li><li>High grades matter only if students will apply to grad school or apply for a teaching position after they graduate. Students should aim for the "learning" and "mastery" as well as skills development. High grades will just be an end result in the pursuit of "learning" and "mastery". </li><li>Some students are "grade conscious" (or GC) which means they want/beg for a grade of 1.0! If they want high grades, sure I can give it to them as long as they turn in excellent work. This is the reason I give bonus points, though some students don't avail of these bonus points. </li><li>Feedback is not just the score students get from graded activities (wrongly termed as "learning assessment"). If students code worked on the given test cases, that is already feedback. If a student wants feedback, he/she needs to talk to me directly during class and consultation hours. The only way I can help "slow" students is if they intentionally ask for my help. Otherwise they are on their own. </li><li>Not all students currently taking BSCS are really interested in computing(or a Nerd) . I am biased towards students who are passionate about computing. Thus course materials, difficulty, and delivery are more geared towards challenging these passionate students to the best of my abilities.</li><li>I want my classes to be "world class", thus I try to adhere to the <a href="https://www.acm.org/education/curricula-recommendations">ACM curriculum recommendations</a> when creating and delivering course content. I also consult course websites of other top universities and incorporate topics and approaches in my syllabus.</li><li>I try to focus on teaching the fundamentals. However, computing is a rapidly evolving field so I try to teach the state of the art given the resource constraints and <span data-dobid="hdw">bureaucracy.</span></li><li>Textbooks are important in my classes. I prefer to use free or open source textbooks. I give paper readings from time to time to encourage students to do research.</li><li>I encourage students to ask questions, even the simplest or 'stupidest' questions. </li><li>I prefer to create videos that are more than 15 minutes. TL;DR/TL;DW is not for me and should not be for my students. I don't want my students to take 'shortcuts'.</li><li>I want my students to <a href="http://www.paulgraham.com/greatwork.html">do great work</a> without desiring for my validation. </li></ul><p></p>Joseph Anthony C. Hermocillahttp://www.blogger.com/profile/06540390289881167599noreply@blogger.comtag:blogger.com,1999:blog-3649762546426954893.post-68469786639998812342022-08-27T10:55:00.019+08:002023-09-01T13:42:55.548+08:00DevStack on Ubuntu 20.04<p>I need a small IaaS cloud infra for my CMSC291: Modern Distributed Systems class this semester so I decided to set up an OpenStack instance on one of SRG's servers running Ubuntu 20.04. I have used OpenStack in the <a href="http://srg.ics.uplb.edu.ph/projects/peak-two-cloud">past</a> so I'm quite comfortable using it.</p><p>What is DevStack?</p><p><i>"DevStack is a series of extensible scripts used to quickly bring up a
complete OpenStack environment based on the latest versions of
everything from git master. It is used interactively as a development
environment and as the basis for much of the OpenStack project’s
functional testing."</i></p><p><span> </span><span> </span><span> </span><span> </span><span> </span><span> </span><span> </span><span> </span><span> </span><span> </span><span> </span><span> </span><span> </span><span> </span><span> </span><span> </span><span> </span><span> </span><span> </span><span> </span><span> </span>- <a href="https://docs.openstack.org/devstack/latest/">https://docs.openstack.org/devstack/latest/</a></p><p>[1] I thought the process will be straightforward but unfortunately minor tweaks were needed. Below is the configuration of the host. </p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEj9jLP7fb1NyCfcCVsMXZ-kk3NP8TJHMtIZDxRmuUutg7LATe2xA_k26oa1C0ftHUl4OKqVs0-iiVofRCWZmjkzGYW7CZjm9H4tapkJxPSkzVj78aYou3BVlYE3bcfZ35baWo8RFmcjhUMxQI6FGjPKV5z1NWd1eZKeh9mGR5TDwjVumcKWddl_O2_Q" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="290" data-original-width="1287" height="134" src="https://blogger.googleusercontent.com/img/a/AVvXsEj9jLP7fb1NyCfcCVsMXZ-kk3NP8TJHMtIZDxRmuUutg7LATe2xA_k26oa1C0ftHUl4OKqVs0-iiVofRCWZmjkzGYW7CZjm9H4tapkJxPSkzVj78aYou3BVlYE3bcfZ35baWo8RFmcjhUMxQI6FGjPKV5z1NWd1eZKeh9mGR5TDwjVumcKWddl_O2_Q=w598-h134" width="598" /></a></div><p></p><p>[2] This is the commit hash that worked for me, make sure to checkout this particular commit : <b>d9e2d10d28ebc70129ed90ac9afe11591e7bb7d3</b></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjw2DjD7ZxEG7s8_SwQol3PirL60A6aVvK3FssCUxMVjMKCHFs4JFqI4rkkDFXaRly6tK9co1c8XxZn4T0DRpKt3XDaK_lc5Pi6kI1QppVs1m5MR6g1gD8HXP-1O1AfYt4p3SLf8NlCDw7OstuMRi7WJuw0OTGo2LrhKUPejxrcR2awt1vh4DHAbDS0" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="655" data-original-width="989" height="300" src="https://blogger.googleusercontent.com/img/a/AVvXsEjw2DjD7ZxEG7s8_SwQol3PirL60A6aVvK3FssCUxMVjMKCHFs4JFqI4rkkDFXaRly6tK9co1c8XxZn4T0DRpKt3XDaK_lc5Pi6kI1QppVs1m5MR6g1gD8HXP-1O1AfYt4p3SLf8NlCDw7OstuMRi7WJuw0OTGo2LrhKUPejxrcR2awt1vh4DHAbDS0=w453-h300" width="453" /></a></div><br /><div><p>[3] Get the IP address of the host (using ifconfig) and export it as HOST_IP environment variable. Let's say the IP address is 192.168.3.100.</p><div> <span style="font-family: courier;">$export HOST_IP=192.168.3.100</span><br /></div><div><br /></div><div>[4] Prepare the <span style="font-family: courier;">local.conf</span> file as described in the doc.</div><div><div><br /></div><div><p>[5] Edit <span style="font-family: courier;">lib/neutron_plugins/ovn_agent</span>. </p><div>Change <span style="font-family: courier;">OVS_RUNDIR=$OVS_PREFIX/var/run/openvswitch</span> </div><div>to <span style="font-family: courier;">OVS_RUNDIR=$OVS_PREFIX/var/run/ovn</span></div><p>[6] Unstack and Clean.</p></div></div><div> <span style="font-family: courier;"> </span><span style="font-family: courier;">$</span><span style="font-family: courier;">sudo apt install neutron-metadata-agent</span></div><div><span style="font-family: courier;"><span> $</span>sudo apt install neutron-openvswitch-agent</span></div><div><span style="font-family: courier;"><span> </span>$sudo pip install uwsgi</span></div><div><span style="font-family: courier;"><span> </span>$./unstack.sh</span></div><div><span style="font-family: courier;"><span> </span><span>$./clean.sh</span></span></div></div><div><span style="font-family: courier;"><span> </span></span></div><div>[7] A few directories need to be removed as well as do some other stuff:</div><div><p></p><div style="text-align: left;"><span id="docs-internal-guid-c343f153-7fff-ee53-130e-88f469c268f3" style="font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Arial;"> </span><span style="font-family: courier;"> $sudo rm /var/run/ovn/openvswitch<br /></span></span><span id="docs-internal-guid-d1e388a4-7fff-4173-dac1-c412ce16dce5" style="font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: courier;"> </span></span><span style="font-family: courier;">$</span><span style="font-family: courier;">sudo /usr/share/openvswitch/scripts/ovs-ctl restart</span></div><div style="text-align: left;"><span style="font-family: courier;"> </span></div><div style="text-align: left;"><span style="font-family: courier;"><span> edit tools/dbcounter/dbcounter.py</span><br /></span></div><div style="text-align: left;"><span style="font-family: courier;"><br /></span></div><div style="text-align: left;"><span style="font-family: courier;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhwbLjFxaEX_Gj0nO0NPDHXyO7l4gyhbllq-kfb2DcIzbDnP2JVt8Tt5pBCf4TyuQI77zuZfkC5BcKZ6Dxeof7Vlb-pAR53geSjOJMsPR1FuJaH-4iTbWOGMIdUDb_XZxJq6ESfHtyf83MLPmLhUxcsW-tSQTu_iW0CkFcdBjLzPHX6Aul4q8yomJ-CxSU" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="280" data-original-width="586" height="153" src="https://blogger.googleusercontent.com/img/a/AVvXsEhwbLjFxaEX_Gj0nO0NPDHXyO7l4gyhbllq-kfb2DcIzbDnP2JVt8Tt5pBCf4TyuQI77zuZfkC5BcKZ6Dxeof7Vlb-pAR53geSjOJMsPR1FuJaH-4iTbWOGMIdUDb_XZxJq6ESfHtyf83MLPmLhUxcsW-tSQTu_iW0CkFcdBjLzPHX6Aul4q8yomJ-CxSU" width="320" /></a></div><br /><br /></span></div><p>[8] Stack. This may take a while so grab a cup of coffee.</p><div style="text-align: left;"><span><span><br /></span></span></div><div style="text-align: left;"><div> <span style="font-family: courier;">$./unstack.sh</span></div><div><span style="font-family: courier; font-size: 14.6667px; white-space-collapse: preserve;"><span> </span>$sudo rm -fr /var/run/ovn</span></div><div><span style="font-family: courier;"><span> </span>$./stack.sh</span><br /> </div><div>A successful installation after ~12 minutes!</div><div><br /></div></div><div style="text-align: left;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEigN70qPbxyPVmeNzTqg8vcRCWTNq7jrESJS8MIs_zQDN6Kt_Fc4uSHW6HCQmwkpzkjQhJxSeAY7gXclPEQ4mSZaj8_LHigWVrmSOwOVzXHhnWyxSOLMUi2GNMZNO4jAsFOiRttqJd8kfyYxl5zrg46-NkzzlcHZrrDuxm76PwyahMno1e9-u3HMr7J" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="258" data-original-width="816" height="126" src="https://blogger.googleusercontent.com/img/a/AVvXsEigN70qPbxyPVmeNzTqg8vcRCWTNq7jrESJS8MIs_zQDN6Kt_Fc4uSHW6HCQmwkpzkjQhJxSeAY7gXclPEQ4mSZaj8_LHigWVrmSOwOVzXHhnWyxSOLMUi2GNMZNO4jAsFOiRttqJd8kfyYxl5zrg46-NkzzlcHZrrDuxm76PwyahMno1e9-u3HMr7J=w398-h126" width="398" /></a></div><br />[9] Launch an instance.</div><div style="text-align: left;"><br /></div><div style="text-align: left;"><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjehUtSpjlfKmWd3g39tMlBBQbZVYDaC1a0UxZ6Yc9bJJxRXo8O4JnepMigdPnvFfhkRedRecB21UCohcAba36PSG0Z6-mnBZcheprtfJgQNfRECWyNL7pgmNB44iFvVc6q8da5Q-qJgzYONDwFlCEfnsv5oFP3451cZ0Wx4-xyyoby7IvAimLrSKmG" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="571" data-original-width="1353" height="223" src="https://blogger.googleusercontent.com/img/a/AVvXsEjehUtSpjlfKmWd3g39tMlBBQbZVYDaC1a0UxZ6Yc9bJJxRXo8O4JnepMigdPnvFfhkRedRecB21UCohcAba36PSG0Z6-mnBZcheprtfJgQNfRECWyNL7pgmNB44iFvVc6q8da5Q-qJgzYONDwFlCEfnsv5oFP3451cZ0Wx4-xyyoby7IvAimLrSKmG=w529-h223" width="529" /></a></div><br /><br />[10] TODO: Configure Floating IP addresses and add glance images.</div></div>Joseph Anthony C. Hermocillahttp://www.blogger.com/profile/06540390289881167599noreply@blogger.com0tag:blogger.com,1999:blog-3649762546426954893.post-47368240187599972092022-02-18T16:45:00.019+08:002022-04-22T16:05:06.510+08:00YouTube channels/playlists for systems and cybersecurity topics <p style="text-align: left;"></p><div>Here are some good materials available on YouTube for free.</div><div><i><span style="font-size: x-small;">(Last update: 2022-04-20)</span></i></div><div><br /></div><div><b>Computer Systems and Operating Systems</b></div><div><ul style="text-align: left;"><li><a href="https://www.youtube.com/playlist?list=PLDW872573QAb4bj0URobvQTD41IV6gRkx">Operating Systems by Mythili Vutukuru</a></li><li><a href="https://www.youtube.com/channel/UC6jgDZsRWpE9uJKe202F0iw/featured">ACM SIGOPS</a></li><li><a href="https://www.youtube.com/c/UsenixOrg">USENIX</a></li><li><a href="https://www.youtube.com/playlist?list=PLbY-cFJNzq7z_tQGq-rxtq_n2QQDf5vnM">Introduction to Computer Systems at CMU</a></li><li><a href="https://www.youtube.com/c/OnurMutluLectures/playlists?view=50&sort=dd&shelf_id=6">Digital Design and Computer Architecture by Onur Mutlu</a></li></ul></div><div><b>Computer Networks, Distributed Systems, and Cloud Computing</b></div><ul style="text-align: left;"><li><a href="https://youtube.com/playlist?list=PLNPUF5QyWU8O0Wd8QDh9KaM1ggsxspJ31">Distributed Systems by Lindsey Kuper</a></li><li><a href="https://www.youtube.com/channel/UC_7WrbZTCODu1o_kfUMq88g">Distributed Systems at MIT </a></li><li><a href="https://www.youtube.com/playlist?list=PLDW872573QAbcpQ7VSUdcm4o3tgnQYBE8">Virtualization and Cloud Computing by Mythili Vutukuru</a></li><li><a href="https://www.youtube.com/channel/UCMKIroHVXvMQRIBhENE6RhQ">Distributed Systems Reading Group</a></li><li><a href="https://www.youtube.com/channel/UCE44BnFXI_rthQPeGgJjO7A">Distribute My System</a></li><li><a href="https://www.youtube.com/user/JimKurose/videos">Jim Kurose's Networking Videos</a></li><li><a href="https://www.youtube.com/channel/UCAtFAG5JdQrHac6ArIWJ-hw/videos">The Networking Channel</a></li></ul><div><b>Database</b><b>s</b></div><div><ul style="text-align: left;"><li><a href="https://www.youtube.com/channel/UCHnBsf2rH-K7pn09rb3qvkA">CMU Database Group</a> </li></ul></div><div><b>Cybersecurity</b></div><div><ul style="text-align: left;"><li><a href="https://www.youtube.com/c/pwncollege/playlists">PWN College</a></li><li><a href="https://www.youtube.com/c/HackerSploit/playlists">HackerSploit</a></li><li><a href="https://www.youtube.com/user/sambowne/videos">Sam Bowne</a></li><li><a href="https://www.youtube.com/channel/UC0ArlFuFYMpEewyRBzdLHiw">The Cyber Mentor</a></li><li><a href="https://www.youtube.com/channel/UCVeW9qkBjo3zosnqUbG7CFw">John Hammond</a></li><li><a href="https://www.youtube.com/c/LiveOverflow">LiveOverflow</a></li><li><a href="https://www.youtube.com/channel/UC1usFRN4LCMcfIV7UjHNuQg/featured">Introduction to Cryptography by Christof Paar</a></li><li><a href="https://www.youtube.com/user/Michael10Sommer/featured">Solutions to Web Security Academy Labs by Machael Sommer</a></li><li><a href="https://www.youtube.com/c/OALabs/featured">Open Analysis Live</a> </li><li><a href="https://www.youtube.com/channel/UCa6eh7gCkpPo5XXUDfygQQA">IppSec</a></li><li><a href="https://www.youtube.com/watch?v=vEEwWcNZCx0">GynvaelEN</a></li></ul><div> </div></div><p></p>Joseph Anthony C. Hermocillahttp://www.blogger.com/profile/06540390289881167599noreply@blogger.comtag:blogger.com,1999:blog-3649762546426954893.post-58083717968538821882022-01-12T16:41:00.006+08:002022-01-12T17:23:20.927+08:00Git Commit Messages<p>I've been using GitHub to host my <a href="https://github.com/jachermocilla">codes</a> for a long time already. However, I often get lazy and just put "edits" in my commit messages. This is obviously a bad practice!</p><p>I decided to look around to learn more about how to write good commit messages. I came across these resources [1] [2] [3]. </p><p>The following format looks good:</p><p><span style="font-family: courier;">Commit Type(Scope): Subject Line</span></p><p><span style="font-family: courier;">Body</span></p><p><i><b>Commit Types</b></i></p><p></p><ol style="text-align: left;"><li>Feature</li><li>Fix</li><li>Style</li><li>Refactor</li><li>Test</li><li>Docs</li><li>Chores</li></ol><p></p><p><i><b>Subject Line</b></i></p><p>Short text (less than 50 characters) that summarizes the commit. </p><p><i><b>Body</b></i></p><p>This is an optional detailed description of the commit. Wrap at 72 characters.</p><p><br /></p><p><b>References</b></p><p>[1] https://cbea.ms/git-commit/ </p><p>[2] https://dev.to/wordssaysalot/art-of-writing-a-good-commit-message-56o7 </p><p>[3] https://dev.to/thelogeshwaran/how-to-write-good-commit-messages-714</p><p><br /></p>Joseph Anthony C. Hermocillahttp://www.blogger.com/profile/06540390289881167599noreply@blogger.comtag:blogger.com,1999:blog-3649762546426954893.post-33204390790430655582021-07-09T19:35:00.013+08:002021-07-10T18:31:20.054+08:00Humans of Computer Systems<p>Professor <a href="https://cse.buffalo.edu/~demirbas/">Murat </a> has an interesting section in his blog called the <a href="http://muratbuffalo.blogspot.com/search/label/humans">Humans of Computer Systems</a>. I've been thinking about documenting my own "history in computing/systems" so I decided to answer some of the questions in HCS.</p><p><b>Programming</b></p><p><i>How did you learn to program?</i></p><p>I first learned to program using programmable calculators which I borrowed from my rich high school classmates. I was amazed how using variables saves time when computing some formula. Some of my classmates even have graphing calculators. I usually borrow their calculator and the manual overnight to try it out. I then learned BASIC on my own when my father brought home an IBM PS/2 laptop. I learned other programming languages in school. </p><p><i>Tell us about the most interesting/significant piece of code you wrote.</i></p><p>When I was in college and taking an assembly language programming course, I wrote a text editor in C, which I called ASMEdit. It allows me to assemble and link inside the editor. For me, this was an interesting project since I learned how to use pointers to functions to implement the menu system. I also learned to call external programs, TASM.EXE and TLINK.EXE, inside another program. I also implemented syntax coloring for the assembly instructions. This project was developed for the MS-DOS operating system.</p><p><i>Who did you learn most from about computer systems?</i></p><p>I learned about computer systems in my undergraduate OS class, mostly by reading the dinosaur book by Silberschatz et. al. It was in this class that was able to use a Unix OS called Solaris running on Sun hardware. My undergraduate SP/Thesis adviser was a systems and networks guy so I also learned a lot from him. I even learned a lot more about systems when I switched to linux desktop starting with Red Hat 7.3. </p><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-OZp8NzND8T0/YOlbknnG1oI/AAAAAAAAVRI/jV8aHj8hLSkRR8_A6DtGIbfm0Hh7M2l9ACNcBGAsYHQ/s2015/sun_workstations.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2015" data-original-width="1511" height="320" src="https://1.bp.blogspot.com/-OZp8NzND8T0/YOlbknnG1oI/AAAAAAAAVRI/jV8aHj8hLSkRR8_A6DtGIbfm0Hh7M2l9ACNcBGAsYHQ/s320/sun_workstations.jpg" /></a></div><br /><p><i>Who is the greatest programmer you met, and what is impressive about them?</i></p><p>Some of my college classmates were really good programmers. They can easily implement advanced data structures and algorithms, especially graph and network algorithms. There was no Stack Overflow then.</p><p><i>What is the best code you have seen?</i></p><p>Over time, I realized that there is actually no best code. I do admire readable and maintainable code. OS kernel source code is quite messy.</p><p><i>What do you believe are the most important skills to be successful in your field?</i></p><p>Desire to learn new things. Oral and written communication. Working in a team. Navigating the academic politics.</p><p><i>What quality or ability do you value most in a computer systems person?</i></p><p>The desire to learn and experiment or tinker with various things. The ability to "see" the big picture at the same time can work on the specifics. Courage to break things.</p><p><b><br /></b></p><p><b>Personal</b></p><p><i>Which of your work/code/accomplishments are you most proud of?</i></p><p>I am proud that I was able to get tenure at the university. This gave me the freedom to work on various areas in computer systems that interest me without worrying too much about job security despite the low pay. The <a href="https://github.com/srg-ics-uplb/ics-os">ICS-OS</a> paper actually gave me tenure. I enjoyed working on it and using it in my classes.</p><p><i>What comes to you easy that others find hard? What are your superpowers?</i></p><p>Understanding systems. Connecting/integrating things together.</p><p><i>What was a blessing in disguise for you? What seemed like a failure at the time but led to something better later for you?</i></p><p>I was not accepted in the private company that I applied to after graduation. My rejection in that company led me to apply as an Instructor in the university since I also want to pursue graduate studies. </p><p><i>What do you feel most grateful for?</i></p><p>I feel grateful for everything I have right now. </p><p><i>What does your perfect day look like?</i></p><p>Learning something new. Helping some people. Exercising and playing sports.</p><p><i>What made you most happy in the last year?</i></p><p>I was able to survive despite the pandemic. Though anxiety kicks in from time to time.</p><p><b><br /></b></p><p><b>Work</b></p><p><i>What was your biggest mess up? What was the aftermath?</i></p><p>Some colleagues were pissed when they lost internet access because my private cloud setup has an exposed DHCP server which assigned IP addresses to their machines. We were able to isolate and resolve the problem but it was already late in the afternoon.</p><p><i>What was your most interesting/surprising or disappointing interaction at work?</i></p><p>I need to babysit the son of my colleague on a weekend because he needs to argue/discuss with another colleague about the "draconian" network access filtering.</p><p><i>What do you like most about your job/profession?</i></p><p>The freedom to tinker. The opportunity to share what I know. The chance to mentor and help others. Working with smart people. Playing the publications game. Navigating academic politics.</p><p><i>What would be the single change that would improve your work environment most?</i></p><p>Improving the research culture. Most of my colleagues are great teachers but they disregard the research aspect of the profession. CS is a fast-changing field. We need to keep up with the advances.</p><p><i><br /></i></p><p><b>Technical</b></p><p><i>What do you think are the hardest questions in your field?</i></p><p>System reliability and performance. Ethics. Should we build this system because we can? Is there one operating system to rule them all?</p><p><i>What are you most disappointed about the state-of-the-art in your field?</i></p><p>Sometimes the state of the art is just an incremental step or just scaling up. </p><p><i>What are the topics that you wish received more attention? What do you think is a promising future direction in your field?</i></p><p>System reliability and performance. Ethics. </p><p><i>What is your favorite computer systems paper? Why?</i></p><p>*XEN and the Art of Virtualization *A view of cloud computing *MapReduce: Simplified Data Processing on Large Clusters</p><p>I reread these papers from time to time.</p><p><b><br /></b></p><p><b>Story</b></p><p><i>Is there an interesting story you like to tell us?</i></p><p>Yes.</p><p><i>Tell us your story.</i></p><p>I wrote an EXE non-overwriting computer virus bundled with ASMEdit I described above. My classmates and instructor who copied the program had no idea of the presence of the virus. The virus just replicates though, there is no destructive payload. AV then were signature-based so they never detected the virus I wrote.</p><p><i>Rant your heart out.</i></p><p>We are in a research university. Why are we not reading at least one research paper per week? :)</p><p><br /></p>Joseph Anthony C. Hermocillahttp://www.blogger.com/profile/06540390289881167599noreply@blogger.comtag:blogger.com,1999:blog-3649762546426954893.post-27063865536391969322021-04-28T19:12:00.051+08:002021-04-30T19:56:57.437+08:00InfoSec vs CyberSec vs ITSec vs CompSec vs NetSec vs AppSec<div>Since I am relatively new to the area of "security", I decided to look up the definitions of the terms that I often read or hear in the community. I took the definitions from CSRC-NIST, SANS, and ACM.</div><div><br /></div><div><b>Information Security (INFOSEC)</b></div>
<ul>
<li>"The protection of information and information systems from unauthorized access, use, disclosure, disruption, modification, or destruction in order to provide confidentiality, integrity, and availability."[1]</li><li>"Information Security refers to the processes and
methodologies which are designed and implemented to protect print,
electronic, or any other form of confidential, private and sensitive
information or data from unauthorized access, use, misuse, disclosure,
destruction, modification, or disruption."[2]</li></ul><div><b>Cybersecurity (CYBERSEC)</b></div>
<ul style="text-align: left;">
<li>"Prevention of damage to, protection of, and restoration of computers, electronic communications systems, electronic communications services, wire communication, and electronic communication, including information contained therein, to ensure its availability, integrity, authentication, confidentiality, and non-repudiation."[1]</li><ul><li>(<i>Aside: Cyber/Cyberspace</i> - "The interdependent network of information technology infrastructures, and includes the Internet, telecommunications networks, computer systems, and embedded processors and controllers in critical industries."[1]. Cyberspace can be considered a "realm" or "domain" like land, sea, air, and space where war can happen.)</li></ul><li>"Computer and network security, or cybersecurity.."[8]</li><li><i>In Education</i> - “computing-based discipline involving technology, people, information, and processes to enable assured operations. It involves the creation, operation, analysis, and testing of secure computer systems. It is an interdisciplinary course of study, including aspects of law, policy, human factors, ethics, and risk management in the context of adversaries.”[7]</li></ul><b>Information Technology Security (ITSEC)</b><br /><ul style="text-align: left;"><div><li>"technological discipline concerned with ensuring that IT systems perform as expected and do nothing more; that information is provided adequate protection for confidentiality; that system, data and software integrity is maintained; and that information and system resources are protected against unplanned disruptions of processing that could seriously impact mission accomplishment. Synonymous with Automated Information System Security, Computer Security and Information Systems Security."[1]</li><ul style="text-align: left;"><li>(<i>Aside</i>: <i>Information Technology</i> - computing and/or communications hardware and/or software components and related resources that can collect, store, process, maintain, share, transmit, or dispose of data. IT components include computers and associated peripheral devices, computer operating systems, utility/support software, and communications hardware and software."[1])</li></ul><li>"Information Technology Security also known as, IT Security is the process of implementing measures and systems designed to securely protect and safeguard information (business and personal data, voice conversations, still images, motion pictures, multimedia presentations, including those not yet conceived) utilizing various forms of technology developed to create, store, use and exchange such information against any unauthorized access, misuse, malfunction, modification, destruction, or improper disclosure, thereby preserving the value, confidentiality, integrity, availability, intended use and its ability to perform their permitted critical functions."[5]</li></div></ul><b>Computer Security (COMPSEC)</b><br /><ul style="text-align: left;"><div><b><div style="font-weight: 400;"><li>"Computer Security is concerned with the risks related to computer use, and ensures the availability, integrity and confidentiality of information managed by the computer system, permitting authorized users to carry out legitimate and useful tasks within a secure computing environment."[3]</li><li>"Measures and controls that ensure confidentiality, integrity, and availability of the information processed and stored by a computer. Rationale: Term has been replaced by the term “cybersecurity”". [1]</li><li>(<i>Aside</i>: probably used in the days when computer networks were not yet ubiquitous)</li></div></b></div></ul><b>Network Security (NETSEC)</b><br /><ul style="text-align: left;"><div><li>"Network Security is the process of taking physical and software
preventative measures to protect the underlying networking
infrastructure from unauthorized access, misuse, malfunction,
modification, destruction, or improper disclosure, thereby creating a
secure platform for computers, users and programs to perform their
permitted critical functions within a secure environment."[4]</li></div></ul><b>Application Security (APPSEC)</b><br /><ul style="text-align: left;"><div><li>"Application security describes security measures at the application level that aim to prevent data or code within the app from being stolen or hijacked. It encompasses the security considerations that happen during application development and design, but it also involves systems and approaches to protect apps after they get deployed. "[6]</li><li>(<i>Aside:</i> any activity designed to protect the usability and integrity of your applications [<i>desktop</i>, <i>web</i>, <i>mobile</i>, <i>cloud, software in general?]</i> and data)</li></div></ul>There is obviously an overlap in the definitions above. I came up with a layering, which is shown in the figure below, in an attempt to put things in perspective. I equate "security" to "protection" and the layering is based on
what is being protected, with "information" the outermost layer having
the broadest scope. Most people nowadays use "<i>infosec</i>" and "<i>cybersecurity</i>" interchangeably in general conversations and communications which are popular in hashtags. <br /><ul style="text-align: left;"><div><div class="separator" style="clear: both; text-align: center;"><br /></div></div><div><div style="text-align: left;"><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-MU6KOH4ijH4/YIg4Mf4OXWI/AAAAAAAAVKo/CQ0JczVIkt0VvjDjNzSsXG4ikEdvh56CgCNcBGAsYHQ/s1126/infosec-venn.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="530" data-original-width="1126" height="254" src="https://1.bp.blogspot.com/-MU6KOH4ijH4/YIg4Mf4OXWI/AAAAAAAAVKo/CQ0JczVIkt0VvjDjNzSsXG4ikEdvh56CgCNcBGAsYHQ/w539-h254/infosec-venn.png" width="539" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div></div></div></ul><div><div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;"><i><b>To conclude, what term should we use?</b> I've decided to use a different term depending on the context of the conversation or communication. I will use cybersecurity when the context is national security or education. For enterprise, business, or industry contexts, information security seems to be appropriate and accepted in the community. The other terms will be used in more specific technical contexts in education and in practice.</i></div><p></p><p><b><br /></b></p><p><b>References:</b></p>[1] <a href="https://csrc.nist.gov/glossary">https://csrc.nist.gov/glossary</a> </div><div>[2] <a href="https://www.sans.org/information-security/">https://www.sans.org/information-security/</a></div><div>[3] <a href="https://www.sans.org/computer-security/">https://www.sans.org/computer-security/</a></div><div>[4] <a href="https://www.sans.org/network-security/">https://www.sans.org/network-security/</a></div><div>[5] <a href="https://www.sans.org/it-security/">https://www.sans.org/it-security/</a></div><div>[6] <a href="https://www.vmware.com/topics/glossary/content/application-security">https://www.vmware.com/topics/glossary/content/application-security</a></div><div>[7] <a href="http://cybered.acm.org/">http://cybered.acm.org/</a></div><div>[8] <a href="http://nob.cs.ucdavis.edu/bishop/papers/2003-spcolv1n1/whatis.pdf">http://nob.cs.ucdavis.edu/bishop/papers/2003-spcolv1n1/whatis.pdf</a> <br /></div><div><br /></div></div>Joseph Anthony C. Hermocillahttp://www.blogger.com/profile/06540390289881167599noreply@blogger.comtag:blogger.com,1999:blog-3649762546426954893.post-88893737187942244182021-04-17T17:27:00.012+08:002021-04-24T17:28:58.878+08:00My takeaways from The Productivity Project book<p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://images-na.ssl-images-amazon.com/images/I/51Pi1JKgDpL._SX329_BO1,204,203,200_.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="499" data-original-width="331" height="302" src="https://images-na.ssl-images-amazon.com/images/I/51Pi1JKgDpL._SX329_BO1,204,203,200_.jpg" width="200" /></a></div><br /><div><br /></div><div>Everyone is probably interested in increasing their productivity. The book by Chris Bailey, <b>The Productivity Projec</b>t, has given me some ideas on how to do just that. Below are some of the takeaways from the book that I am currently adopting. So far, they have increased my productivity despite the pandemic.</div><div><br /></div><ul style="text-align: left;"><li>Increasing productivity involves managing <b>time</b>, <b>energy</b>, and <b>attention/focus</b></li><li>Rule of <b>Threes</b></li><ul><li>List three items to do today and within the week</li></ul><li>Identify your <b>values</b></li><ul><li>Know why you want to get something done.</li></ul><li>Determine your <b>Biological Prime Time (BPT) </b></li><ul><li>This is the time when you have the most energy and focus. Do important tasks during this time. In my case, my BPT is during 10am-11:30am, 3pm-5pm, 9pm-10pm.</li></ul><li>Limit alcohol and coffee intake</li><li>Create a procrastination checklist</li><li><b>Spend less time on important tasks</b></li><ul><li>You create an artificial deadline forcing you to focus your attention and energy</li><li>Do the important things during your BPT</li></ul><li>Disconnect from the Internet and social media</li><li>Balance structured(manager) and unstructured(maker) schedule</li><li>Define what you need to accomplish, understand how much energy and focus you have</li><li>Group maintenance tasks(doing the laundry, cleaning, self-care) and schedule them on a weekend</li><li>Create a project list/notes - next action to move the project</li><li>Develop a worry list</li><li>Identify hotspots - portfolio of life: <b>mind</b>, <b>body</b>, <b>emotions</b>, <b>career</b>, <b>finances</b>, <b>relationships</b>, <b>fun</b></li><ul><li>I achieve this by creating a mind map</li></ul><li>Can a task be done in two minutes? Do it if yes.</li><li>Being busy is not being productive if you don't complete the tasks you set to do</li><li>Be deliberate when doing your tasks</li><li>Don't check your email unless you have the energy and focus to reply or act on whatever is in the email</li></ul><p></p>Joseph Anthony C. Hermocillahttp://www.blogger.com/profile/06540390289881167599noreply@blogger.comtag:blogger.com,1999:blog-3649762546426954893.post-78024792571058517312021-02-20T17:56:00.004+08:002021-02-21T11:09:08.105+08:00Experiences in remote learning<p></p><div><div>Last semester was my first experience in remote teaching. Class preparation was quite different compared to when there was no COVID-19. I described the technical aspects of my preparation in a <a href="https://jachermocilla.blogspot.com/2020/07/teaching-in-time-of-pandemic.html">previous post</a>. </div><div><br /></div><div>The semester started well and everyone is excited and hopeful. The course staff was able to release the revised course guide, videos, and other materials early in the semester. Communication with students was done using Slack and Zoom. Exercise submission was accomplished using GitHub and Google Classroom. Video materials were uploaded to YouTube. (You can check out my <a href="https://www.youtube.com/channel/UC5-Lr_PW9ZTeHb2GPlfVh6Q/playlists">playlists</a>).</div><div><br /></div><div>Things got problematic in the middle of the semester. Typhoons started coming, internet connectivity became unstable, and personal problems arise. It was hard for us and the students to focus and hold synchronous sessions. </div><div><br /></div><div>We originally planned to give synchronous exams via Google Forms. Unfortunately, some students were badly affected by the typhoons so we decided to remove the lecture exam requirement. We gave the weight to the laboratory exercises which became the basis of the grades. We also relaxed the due dates of the submission of laboratory exercises so that students will still be able to submit at a later date. Interestingly, the administration released a "no fail" policy.</div><div><br /></div><div>I am happy that most of the students were able to submit their exercises and get high grades. However, it is quite hard to assess whether they really learned from the courses and they did their tasks with integrity.</div></div><p></p>Joseph Anthony C. Hermocillahttp://www.blogger.com/profile/06540390289881167599noreply@blogger.com0tag:blogger.com,1999:blog-3649762546426954893.post-11820056156889978472020-12-08T23:16:00.005+08:002021-02-20T18:34:32.253+08:00How I backup my files<p>Backups are important. You never know when you will lose your files! A good backup tool and a good backup procedure are essential in today's digital world. <br /><br />I've been using <a href="https://www.cis.upenn.edu/~bcpierce/unison/">Unison</a> as my 'backup' solution for a while now, though it is more of a file synchronization tool. It allows me to efficiently replicate my Documents folder (which is about 20GB) across my Linux devices. Fortunately, Linux is my main OS.<br /><br />I use a desktop in the office, a laptop at home, and a laptop I carry with me. I also have an external drive at home as extra backup storage which contains a VeryCrypt volume. My Documents folder contains essential files only. It does not contain media files like photos, mp3s, and videos. <br /><br />Recently, I purchased a storage volume from Digital Ocean to use as extra backup storage in the cloud, which I also sync using Unison. This will allow me to access my files anywhere and in Windows. I don't want Google to see my files in the meantime.<br /><br />I make sure to sync my office desktop, my cloud backup, and my laptop before I leave the office. When I arrive home, I sync my laptop with my home laptop. I only sync my external storage on weekends.<br /><br />All I can say is Unison made my life easier and you should give it a try.<br /><br /></p>Joseph Anthony C. Hermocillahttp://www.blogger.com/profile/06540390289881167599noreply@blogger.com0tag:blogger.com,1999:blog-3649762546426954893.post-7764223647307499542020-10-17T17:17:00.007+08:002021-09-28T22:05:12.668+08:00Virtual international academic conferences and workshops<p>A lot of major academic conferences in computing are being held online/virtual these days. The conferences and workshops I was able to attend so far include the following: <br /></p><ul style="text-align: left;"><li><a href="http://www.sigmetrics.org/sigmetrics2020/">ACM SIGMETRICS 2020</a></li><li><a href="http://www.hpdc.org/2020/">ACM HPDC 2020</a></li><li><a href="https://seedsecuritylabs.org/workshops/">SEED Workshop</a> <br /></li><li><a href="https://2021.eurosys.org/">EuroSys 2021</a></li><li><a href="https://cheops-workshop.github.io/">CHEOPS Workshop </a></li><li><a href="https://www.hotstorage.org/2021/">HotStorage 2021</a></li><li><a href="https://conferences.sigcomm.org/sigcomm/2021/">SIGCOMM 2021</a></li></ul><p>These conferences waived the registration fees this year. I hope to add more to this list.<br /></p><p>If you are interested, here is a list of upcoming conferences from various professional organizations:</p><ul style="text-align: left;"><li><a href="https://www.acm.org/conferences">https://www.acm.org/conferences</a></li><li><a href="https://www.usenix.org/conferences">https://www.usenix.org/conferences</a></li><li><a href="https://www.computer.org/conferences/calendar">https://www.computer.org/conferences/calendar</a></li></ul>Joseph Anthony C. Hermocillahttp://www.blogger.com/profile/06540390289881167599noreply@blogger.com0tag:blogger.com,1999:blog-3649762546426954893.post-50670081730329226452020-10-02T22:08:00.006+08:002020-10-04T11:42:32.687+08:00On remote learning/teaching<p>Remote learning poses some new challenges to students and instructors. As an instructor, the question that I always ask is "How can I effectively and efficiently deliver my courses to students?" I've been using technologies in teaching already so it is a little bit easier for me to transition to remote learning. The challenge I think is in the assessment and enforcing academic honesty. </p><p>Coming up with the course guide was the first step. It contains the "outline" for the semester with topics, learning outcomes, and laboratory activities specified per week. Materials such as video lectures will be prerecorded or delivered live and uploaded. Exams will be delivered online, multiple choice type. Additional materials such as slides and handouts will be made available for download also. Communications will be done through email and messaging tools.<br /></p><p></p><p>Thus, this semester the following tools occupy my screen most of the time: <br />
</p><ul style="text-align: left;">
<li><b>Google Classroom</b> - general class housekeeping<br /></li>
<li><b>Github/Github Classroom</b> - lab/programming activities<br /></li>
<li><b>OBS Studio</b> - recording/streaming lectures<br /></li>
<li><b>Youtube</b> - storage and streaming of lectures<br /></li>
<li><b>Zoom</b> - video conferencing<br /></li><li><b>Shotcut</b> - video editing<br /></li>
<li><b>Veikk A30 Tablet</b> - for use in whiteboard app</li><li><b>Openboard</b> - whiteboard app<br /></li><li><b>Kahoot</b> - quiz engine<br /></li><li><b>G Suite</b> - documents, presentations, spreadsheets, storage, calendar<br /></li><li><b>Slack</b> - messaging/collaboration</li><li><b>Gmail</b> - email</li></ul><p> </p><p> </p><p></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://1.bp.blogspot.com/-hHw4MdQ4PJ0/X3cz7qhATUI/AAAAAAAAUg8/m3Zra4nmMSkslV9lw7it0N3YYjIo6O9IwCNcBGAsYHQ/s2048/pic2.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1536" data-original-width="2048" src="https://1.bp.blogspot.com/-hHw4MdQ4PJ0/X3cz7qhATUI/AAAAAAAAUg8/m3Zra4nmMSkslV9lw7it0N3YYjIo6O9IwCNcBGAsYHQ/s320/pic2.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Green screen setup<br /></td></tr></tbody></table><br /> <p></p><ul style="text-align: left;">
</ul>
Joseph Anthony C. Hermocillahttp://www.blogger.com/profile/06540390289881167599noreply@blogger.comtag:blogger.com,1999:blog-3649762546426954893.post-57151007070911036542020-04-14T22:20:00.000+08:002020-04-14T22:20:20.575+08:00ROOTCON's Easter Egg Hunt Event 2020: PowerSince we are in ECQ, I tried some of the problems. I decided to focus on the Power problem which is a crypto problem.<br />
<br />
The flag is: <b>rc_easter{p0w3r_1s_n07h1n6_w17h0u7_c0ntr0L}</b><br />
<br />
You can read the full writeup <a href="https://github.com/CLKTCK/ctf-writeups/blob/master/rc14-egg/power/README.md">here</a>.Joseph Anthony C. Hermocillahttp://www.blogger.com/profile/06540390289881167599noreply@blogger.comtag:blogger.com,1999:blog-3649762546426954893.post-47146709928630102512020-03-09T10:23:00.005+08:002021-02-20T18:40:35.253+08:00Count the number of downloads of publicationsI make my <a href="https://jachermocilla.org/publications/">publications</a> public. I was curious about the download count of the papers so I wrote a bash script. My site is using Nginx as the web server software thus I can process the access logs which contain the HTTP requests. So as of writing this post and from Feb 23, 2020, the following are the download counts.<br />
<br />
21 /publications/pabico-pitj2008-perceived.pdf<br />
14 /publications/tolentino-iwcfu2012-disaster.pdf<br />
13 /publications/raquel-iwcfu2012-parallel.pdf<br />
12 /publications/hermocilla-ncite2016-osv-mpi.pdf<br />
11 /publications/escamos-acrs2015-comparison.pdf<br />
10 /publications/aluning-ncite2010-terra.pdf<br />
9 /publications/silapan-iwcfu2012-using.pdf<br />
8 /publications/lara-ncite2017-exploring.pdf<br />
8 /publications/duldulao-ncite2011-an.pdf<br />
7 /publications/lactuan-pitj2011-a.pdf<br />
7 /publications/hermocilla-pitj2009-ics-os.pdf<br />
7 /publications/cabigting-iwcfu2012-eucalyptus.pdf<br />
7 /publications/borja-iwcfu2012-squigis.pdf<br />
7 /publications/aguila-ncite2015-sustainable.pdf<br />
5 /publications/lactuan-ncite2011-a.pdf<br />
5 /publications/hermocilla-ncite2014-p2c.pdf<br />
5 /publications/carpio-pcsc2017-skylab.pdf<br />
4 /publications/hermocilla-model2009-a.pdf<br />
4 /publications/escamos-acrs2016-bertud.pdf<br />
3 /publications/manzano-sfrc2013-squidler.pdf<br />
3 /publications/macasaet-iwcfu2012-a.pdf<br />
3 /publications/eclarin-ncite2014-dgrav.pdf<br />
3 /publications/bulalacao-sfrc2015-is.pdf<br />
3 /publications/aguinaldo-iwcfu2012-automatic.pdf<br />
<br />
<br />
The one-liner below does the trick.
<br />
<div class="gistLoad" data-id="6118a7acb51fd1d6096611a1b8ab90e2" id="gist-6118a7acb51fd1d6096611a1b8ab90e2">
Loading or something, this is just text to display while the browser pulls the gist....</div>
<script src="https://rawgit.com/moski/gist-Blogger/master/public/gistLoader.js" type="text/javascript"></script>
Joseph Anthony C. Hermocillahttp://www.blogger.com/profile/06540390289881167599noreply@blogger.com0tag:blogger.com,1999:blog-3649762546426954893.post-61222092713555680972020-02-29T12:23:00.000+08:002020-02-29T13:52:47.998+08:00DOST Call Conference 2020 Experience<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-e27c6dfm-Go/Xlnhlz2hIjI/AAAAAAAASug/gv2j79IfBYYIEFGgPBDs0-gMcUnWBG6LwCNcBGAsYHQ/s1600/IMG20200228101337.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://1.bp.blogspot.com/-e27c6dfm-Go/Xlnhlz2hIjI/AAAAAAAASug/gv2j79IfBYYIEFGgPBDs0-gMcUnWBG6LwCNcBGAsYHQ/s320/IMG20200228101337.jpg" width="320" /></a></div>
<br />
<br />
I attended the call conference hosted by the Department of Science and Technology last February 28, 2020. The call conference is intended to provide a unified venue to present some updates and new requirements and procedures for research proposal processing, and submission. The event was participated by representatives from different HEIs and RDIs in NCR and Region IV. <br />
<br />
One interesting requirement needed for research proposals for this round of calls is that there should be a private company partnering with the proponents. The purpose is for the possible commercialization of the research output. Although this is an interesting development, I think this will be difficult, especially for SUCs and UP. Issues regarding <a href="http://jachermocilla.blogspot.com/2018/08/intellectual-property-protection-in-uplb.html">Intellectual Property</a> should be addressed early on in the project.<br />
<br />
The figure above shows some statistics about the DOST-funded projects sorted according to decreasing research index.Joseph Anthony C. Hermocillahttp://www.blogger.com/profile/06540390289881167599noreply@blogger.comtag:blogger.com,1999:blog-3649762546426954893.post-90012378853409848672019-12-22T10:53:00.000+08:002019-12-22T12:11:09.615+08:00A review of my CMSC 131 class offering<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-AUWhlZ2pPpE/Xf7cibIVF5I/AAAAAAAASKs/jpxwuJ8Ega0c_sMdchAC7AtxCGTNuLPiACNcBGAsYHQ/s1600/IMG20191108102902.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://1.bp.blogspot.com/-AUWhlZ2pPpE/Xf7cibIVF5I/AAAAAAAASKs/jpxwuJ8Ega0c_sMdchAC7AtxCGTNuLPiACNcBGAsYHQ/s320/IMG20191108102902.jpg" width="320" /></a></div>
<br />
<br />
Last semester I taught, for the first time, the <i><a href="https://jachermocilla.org/teaching/131/2019-1/index.html">Introduction to Computer Organization and Machine Level Programming</a> </i>course for undergrads. Traditionally this course mainly teaches students x86 (32-bit) assembly language programming in an Ubuntu environment using NASM. I decided to "upgrade" the course by directing the course towards <i>systems programming </i>and introducing x86-64 assembly language. My main reason for the upgrade is to prepare the students for their Operating Systems class which they will take later and which I also teach. In order to achieve this goal, I needed textbooks to guide me which led me to use the following:<br />
<ul>
<li>[<i>CS:APP2e</i>]: Randal E. Bryant and David R. O'Hallaron (2011). <a href="http://csapp.cs.cmu.edu/2e/home.html">Computer Systems: A Programmer's Perspective (2nd ed.)</a>.Prentice Hall.<a href="https://www.youtube.com/playlist?list=PLbY-cFJNzq7z_tQGq-rxtq_n2QQDf5vnM">(Video Lectures)</a></li>
<li>[<i>ALPU</i>]: Ed Jorgensen (2019).<a href="http://www.egr.unlv.edu/~ed/assembly64.pdf">x86-64 Assembly Language Programming with Ubuntu.</a>Creative Commons.</li>
</ul>
CS:APP was created by professors from CMU and is widely used in many top universities. I used the slides provided by the book. But in my lectures, I have several open terminals to demonstrate the actual operation of the <a href="https://github.com/jachermocilla/extra-course-materials/tree/cmsc131/cmsc131">codes</a>. ALPU is a good book also with simple exercises at the end of each chapter.<br />
<br />
The topics (based on the CS:APP2e contents) I was able to cover in the lecture are the following:<br />
<ul>
<li>A tour of computer systems</li>
<li>Representing and manipulating information</li>
<li>Machine-level representation of programs</li>
<li>Memory hierarchy</li>
<li>Linking</li>
</ul>
<br />
In the lab, I was able to cover most of the chapters in ALPU, excluding DDD, Macros, Stack Buffer Overflow, I/O Buffering, Floating Point, and Parallel Processing.<br />
<br />
I introduced <a href="https://www.gnu.org/software/gdb/">GDB</a> in the lab to help students debug their programs. I also used <a href="https://classroom.github.com/">GitHub Classroom</a> for distributing boilerplate code and code submission.<br />
<br />
In my lectures, the emphasis is on how the GCC compiler translates C source code into assembly language and how the processor executes the machine code. I always have terminals open to fire up GCC and GDB during lectures.<br />
<br />
For future improvement of the offering of this course, I recommend the following:
<br />
<ul>
<li>Use same syntax in both the lecture and lab. CS:APP2e uses AT&T syntax while ALPU uses Intel syntax.</li>
<li>CS:APP2e is still 32-bit with a little introduction to 64-bit. It may be possible to use the 3rd edition which I believe is purely 64-bit.</li>
<li>Most of the programming exercises do not accept input and produce output interactively. A GDB command/script file can be used to provide input and produce output by explicitly stating the variable names, memory addresses, or registers. Checking of programming exercises can be automated using GDB command scripts.</li>
<li>Introduce assembly language programming in Windows environments using Microsoft Native Build Tools.</li>
<li>Introduce ARM assembly language programming using an emulator or RPi.</li>
</ul>
<br />
I would like to thank Prof. Rizza DC. Mercado and Prof. Kendall Jaen for sharing their teaching materials. It was fun teaching this course and I learned some new topics in depth.<br />
<br />Joseph Anthony C. Hermocillahttp://www.blogger.com/profile/06540390289881167599noreply@blogger.comtag:blogger.com,1999:blog-3649762546426954893.post-12219908762604615002019-12-21T16:47:00.006+08:002024-01-19T13:42:58.364+08:00How to determine research potential <div><i><span style="font-size: x-small;">(Last update: 19 January 2024)</span></i></div><br />
As professors, we are often on the lookout for graduate/undergraduate students (or junior faculty) with research potential to join our research groups. We want to encourage these students to pursue graduate studies in order to further advance the field by becoming researchers or professors in the future.<br />
<br />
We base our evaluation initially on their grades from the courses they took. Our belief/claim is that the higher the General Weighted Average (GWA) of a student, the higher the research potential. <br />
<br />
<i>Research potential</i>, as described in Costromina et. al. (2014), is a multidimensional and multilayered system of individual psychological traits (<i>motivational</i>, <i>cognitive</i>, and <i>behavioral</i> characteristics) that act together to allow an individual to conduct research activity efficiently and fruitfully. These traits are described below:<br />
<br />
<b>Motivational</b><i><br /></i><br />
<ul>
<li><i>Intolerance for ambiguity</i> - capacity to experience positive feelings in new, unstructured, and varied situations</li>
<li><i>Satisfaction in solving problems</i> - capacity to feel gratification from the process of finding ways and means for coping with scientific tasks</li>
<li><i>Intellectual curiosity - </i>the conscious desire to receive information about objects and to enjoy learning<br /><i></i></li>
<li><i>Intolerance for novelty - </i>reveals thirst for experimentation, innovations, etc. </li>
</ul>
<br />
<b>Cognitive</b><i><br /></i><br />
<ul>
<li><i>Flexible thinking - </i>can overcome conventional thinking<br /><i></i></li>
<li><i>Critical thinking - </i>capacity to reveal mistakes and inconsistency, to correct errors, justify the validity of hypothesis<br /><i></i></li>
<li><i>Logical thinking - </i>ability to use facts and laws to confirm the accuracy of conclusions promptly<br /><i></i></li>
<li><i>Quick thinking - </i>ability to understand the situation and to make decisions in a timely manner<br /><i></i></li>
<li><i>Original thinking - </i>capacity to propose new, unconventional ideas<br /><i></i></li>
</ul>
<br />
<b>Behavioral</b><div><b><br /></b>
<ul>
<li><i>Self-organization</i> - structuring of a researcher's personal activity to reach objectives</li>
<li><i>Self-control</i> - following research procedures and completing work tasks</li>
<li><i>Adaptability</i> - reduces time necessary to accept the changing conditions of a research task</li>
<li><i>Assertiveness - </i>maintaining stability while working in unstable conditions </li>
</ul>
<br />
Costromina et. al. (2014) conducted a study to compare undergraduates, master's students, and professors along the above dimensions. In their conclusion, they were able to obtain data on the <u>high predictive validity of <b>theoretical abilities</b> in defining students' level of research potential</u>. <br /><br /><i><br /></i></div><div><i>"Theoretical thinking abilities are the aggregate of analytical and synthesizing</i></div><div><i>skills aimed at identifying common features and qualities of objects, as well as abili-</i></div><div><i>ties aimed at generalization and abstract thinking. These abilities function at a high</i></div><div><i>level along with a broad vocabulary range, and they reflect one’s ability to think in</i></div><div><i>the abstract."<br /></i><br /><br />
At the undergraduate level, intolerance for novelty, self-control, adaptability, assertiveness and critical thinking are the characteristics that should have been developed, according to the study.<br />
<br />
It seems, therefore, that the use of GWA as first screener of a student's research potential is valid. In addition however, a student should also be evaluated based on the traits described above.<br />
<br />
<br />
Reference<br />
<ul>
<li>Kostromina, Svetlana & Bordovskaia, N.V. & Rosum, S.I. & Moskvicheva, Natalia & Iskra, Natalia. (2014). <a href="http://www.psychologyinrussia.com/volumes/pdf/2014_4/2014_4_122-136.pdf">Research potential and cognitive features of students</a>. Psychology in Russia: State of the Art. 7. 122-136. 10.11621/pir.2014.0411. </li>
</ul>
</div>Joseph Anthony C. Hermocillahttp://www.blogger.com/profile/06540390289881167599noreply@blogger.comtag:blogger.com,1999:blog-3649762546426954893.post-34456977484420286582019-11-07T14:38:00.000+08:002019-11-07T14:38:32.371+08:00SRG Authorship Guiding PrinciplesThis post aims to address authorship in research papers produced within our research group. I think that authorship guidelines should be discussed early in the research project or graduate study in order to avoid complications later. I've witnessed colleagues and other individuals who abuse authorship by giving <i>'honorary' authorships</i>, <i>excluding names from the list of authors</i>, and <i>changing authorship order</i>. The work by Solomon, <i>Programmers, Professors, and Parasites: Credit and Co-Authorship in Computer Science, </i>provides a good discussion of this topic. It presents the following principles that I will adopt for our group. <br />
<b></b><br />
<br />
1. Authorship credit should be distributed only to those researchers directly involved with the paper or project in question. Researchers with indirect or minimal involvement may be mentioned in an additional "acknowledgements" section if necessary. All contributors should appear on paper; "ghost writing" is an invalid way even for a busy researcher to produce publications.<br />
<br />
<i>- Should you include your adviser and your committee members?</i><br />
<i>- Should you include project leader, project staff, research assistants?</i><br />
<i>- Should you include your research group leader?</i><br />
<i>- Should you include ALL members of your research group?</i><br />
<i>- Should you include your special someone? </i>
<br />
<br />
2. All authors should be paired with short descriptions of their contributions to the project. These descriptions need not be on the title page but should apparent for anybody seeking further information about the research presented. This principle extends to the acknowledgements list. In general, any individuals or organizations mentioned by the paper should be identified to avoid "honorary" authorship and make explicit the division of work leading to the final results.<br />
<br />
3. The list of authors should be divided by level of contribution. Within each division, authors should be ordered by the amount they contributed to the particular paper in question. Truly equal co-authorship relationships should be marked as such, with none of the authors identified as a "corresponding" author. The lack of a single corresponding author can be addressed by creating a simple email that alias that contacts all the principal authors simultaneously. Those researchers who would be considered "inventors" should be marked as such for the purposes of verifying future patent applications.<br />
<br />
4. Upon publication, authors should be required to sign that the work in the paper is at least partially their own and that no other authors should be given credit.<br />
<br />
5. <u>Any and all decisions involving authorship should involve the mutual consent of all authors, which should be established via individual contact.</u><br />
<br />
6. Any discovered cases of authorship fraud should be dealt with in much the same way as data fabrication. Once they are caught, authors should be required to explain their incorrect practices in a published statement and rectify any disadvantages suffered by parties not receiving appropriate credit.<br />
<br />
<br />
<b>References:</b><br />
<br />
[1] Solomon, Justin. (2009). <a href="https://people.csail.mit.edu/jsolomon/assets/programmersprofessorsparasites.pdf">Programmers, Professors, and Parasites: Credit and Co-Authorship in Computer Science</a>. Science and engineering ethics. 15. 467-89. 10.1007/s11948-009-9119-4. <br />
<br />
[2] Allison Gaffey. (2015). Determining and negotiating authorship. Retrieved October 6, 2019 from <a href="https://www.apa.org/science/about/psa/2015/06/determining-authorship">https://www.apa.org/science/about/psa/2015/06/determining-authorship</a>. <br />
<br />
<br />
<br />Joseph Anthony C. Hermocillahttp://www.blogger.com/profile/06540390289881167599noreply@blogger.comtag:blogger.com,1999:blog-3649762546426954893.post-76051637695885500542019-10-30T10:59:00.003+08:002019-10-30T10:59:55.113+08:00Using VBoxManage to run BioLinux, headless<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large;"><span style="font-family: "times" , "times new roman" , serif;">1. Import the appliance</span></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "trebuchet ms" , sans-serif;"><span style="font-family: "arial" , "helvetica" , sans-serif;">$ vboxmanage import bio-linux-8-latest.ova</span></span><br />
<br />
<span style="font-family: "times" , "times new roman" , serif; font-size: large;">2. Check if the VM was imported</span><br />
<span style="font-family: "trebuchet ms" , sans-serif;"><br /></span>
<span style="font-family: "trebuchet ms" , sans-serif;"><span style="font-family: "arial" , "helvetica" , sans-serif;">$ vboxmanage list vms</span></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-family: "trebuchet ms" , sans-serif;"><span style="font-family: "arial" , "helvetica" , sans-serif;">$ vboxmanage showvminfo "Bio-Linux-8.0.7" | less</span></span> </span><br />
<br />
<span style="font-family: "times" , "times new roman" , serif; font-size: large;">3. Modify the VM to use bridged network connection</span><br />
<br />
<span style="font-family: "trebuchet ms" , sans-serif;"><span style="font-family: "arial" , "helvetica" , sans-serif;">$ vboxmanage modifyvm "Bio-Linux-8.0.7" --nic1 bridged --bridgeadapter1 eno1</span></span><br />
<br />
<span style="font-family: "times" , "times new roman" , serif; font-size: large;">4. Start the VM in headless mode</span><br />
<br />
<span style="font-family: "trebuchet ms" , sans-serif;"><span style="font-family: "arial" , "helvetica" , sans-serif;">$ vboxmanage startvm "Bio-Linux-8.0.7" --type headless</span></span><br />
<br />
<span style="font-family: "times" , "times new roman" , serif; font-size: large;">5. Check if the VM is running</span><br />
<br />
<span style="font-family: "trebuchet ms" , sans-serif;"><span style="font-family: "arial" , "helvetica" , sans-serif;">$ vboxmanage list runningvms</span></span><br />
<span style="font-family: "times" , "times new roman" , serif;"><br /></span>
<span style="font-family: "times" , "times new roman" , serif; font-size: large;">6. Get the assigned IP address to the VM</span><br />
<span style="font-family: "trebuchet ms" , sans-serif;"><br /></span>
<span style="font-family: "trebuchet ms" , sans-serif;"><span style="font-family: "arial" , "helvetica" , sans-serif;">$ vboxmanage guestproperty enumerate {`VBoxManage list runningvms | awk -F"{" '{print $2}'` | grep IP | awk -F"," '{print $2}' | awk '{print $2}'</span></span><br />
<span style="font-size: large;"><br /></span>
<span style="font-family: "times" , "times new roman" , serif; font-size: large;">7. Hard shutdown of the VM</span><br />
<span style="font-family: "trebuchet ms" , sans-serif;"><br /></span>
<span style="font-family: "trebuchet ms" , sans-serif;"><span style="font-family: "arial" , "helvetica" , sans-serif;">$ vboxmanage controlvm "Bio-Linux-8.0.7" poweroff</span></span><br />
<br />
<span style="font-family: "trebuchet ms" , sans-serif;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-family: "times" , "times new roman" , serif; font-size: large;">8. Use SSH to connect to the VM </span></span></span><br />
<br />Joseph Anthony C. Hermocillahttp://www.blogger.com/profile/06540390289881167599noreply@blogger.comtag:blogger.com,1999:blog-3649762546426954893.post-68557731595685726812019-10-13T13:10:00.001+08:002019-10-13T20:40:11.275+08:00DEC{}DE 2019: Gear UP Experience<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
We again attended this year's DEC{}DE event sponsored by Trend Micro. This is my third year attending the event (<a href="http://jachermocilla.blogspot.com/2018/10/decde-2018-experience.html">2018</a>, <a href="http://jachermocilla.blogspot.com/2017/11/decde-2017-transforming-security.html">2017</a>). The talks were really interesting especially the Keynote by Jay Yaneza. I also liked the talk given by <a href="https://scholar.google.com/citations?user=wF0GePcAAAAJ&hl=en">Jon Oliver</a> about the role of Machine Learning in Cybersecurity where he emphasized that ML must be layered to existing security solutions. The hands-on session was on Powershell for the Blue Team.<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-9lr6AWqPdEQ/XaJyMRJJ7PI/AAAAAAAARQ0/Bh-Red6KyFEXJv11JLDNCGmYuFiNJ_GJwCNcBGAsYHQ/s1600/decode2019.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1080" height="212" src="https://1.bp.blogspot.com/-9lr6AWqPdEQ/XaJyMRJJ7PI/AAAAAAAARQ0/Bh-Red6KyFEXJv11JLDNCGmYuFiNJ_GJwCNcBGAsYHQ/s320/decode2019.jpg" width="320" /></a></div>
<br />
<div style="text-align: center;">
(Photo from Trend Micro)</div>
<div style="text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-qoIgMK78ck0/XaKuRRceNmI/AAAAAAAARRM/e1iKH1JWGT8UhnUe4r5VJG3haICO1_iaACNcBGAsYHQ/s1600/decode2019a.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1200" height="320" src="https://1.bp.blogspot.com/-qoIgMK78ck0/XaKuRRceNmI/AAAAAAAARRM/e1iKH1JWGT8UhnUe4r5VJG3haICO1_iaACNcBGAsYHQ/s320/decode2019a.jpg" width="240" /></a></div>
<div style="text-align: center;">
<br /></div>
Joseph Anthony C. Hermocillahttp://www.blogger.com/profile/06540390289881167599noreply@blogger.comtag:blogger.com,1999:blog-3649762546426954893.post-9033471632317452122019-10-06T08:53:00.000+08:002019-10-06T08:53:02.302+08:00Video: Basic Malware Analysis WorkflowThe setup is using a Whonix Gateway VM and a Windows XP VM running in VirtualBox. Our objective is to capture the network traffic generated by malware. The malware is run on the Windows XP VM configured to use Whonix as the gateway.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/LvOI0qUZKsI/0.jpg" src="https://www.youtube.com/embed/LvOI0qUZKsI?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<br />Joseph Anthony C. Hermocillahttp://www.blogger.com/profile/06540390289881167599noreply@blogger.comtag:blogger.com,1999:blog-3649762546426954893.post-73872293032516430842019-09-05T15:18:00.000+08:002019-09-06T14:59:41.410+08:00Introduction to debugging C programs using GDB<br />
Instead of just reading the code, a debugger such as GDB, can be used to find errors in C programs. GDB is available in linux distributions.<br />
<br />
Example code, <span style="font-family: "courier new" , "courier" , monospace;">prod.c</span> :<br />
<br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<table><tbody>
<tr><td><pre style="line-height: 125%; margin: 0;"> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23</pre>
</td><td><pre style="line-height: 125%; margin: 0;"><span style="color: blue;">#include <stdio.h></span>
<span style="color: blue;">#include <stdlib.h></span>
<span style="color: #2b91af;">int</span> mul(<span style="color: #2b91af;">int</span> x, <span style="color: #2b91af;">int</span> y){
<span style="color: #2b91af;">int</span> prod;
<span style="color: #2b91af;">int</span> i;
prod=0;
<span style="color: blue;">for</span> (i=0;i<y;i++){
prod=prod+x;
}
<span style="color: blue;">return</span> prod;
}
<span style="color: #2b91af;">int</span> main(){
<span style="color: #2b91af;">int</span> a=4;
<span style="color: #2b91af;">int</span> b=3;
printf(<span style="color: #a31515;">"The product of %d and %d is %d\n"</span>,a,b,mul(a,b));
<span style="color: blue;">return</span> 0;
} </pre>
</td></tr>
</tbody></table>
</div>
<br />
The following are the typical activities when debugging C programs:<br />
<br />
1. Create the executable with debug information<br />
<br />
<b><span style="font-family: "courier new" , "courier" , monospace;">$ gcc -g -o prod.exe prod.c</span></b><br />
<br />
For assembly language programs:<br />
<br />
<b><span style="font-family: "courier new" , "courier" , monospace;">$ nasm -g -F dwarf -felf64 prod.asm<br />$ ld -o prod.exe prod.o</span></b><br />
<br />
2. Load the program in GDB<br />
<br />
<b><span style="font-family: "courier new" , "courier" , monospace;">$ gdb prod.exe</span></b><br />
<br />
3. View the source code listing<br />
<br />
<b><span style="font-family: "courier new" , "courier" , monospace;">(gdb) list</span></b> <br />
<br />
4. Set a breakpoint<br />
<br />
<b><span style="font-family: "courier new" , "courier" , monospace;">(gdb) b * main</span></b><br />
<br />
5. Execute until breakpoint<br />
<br />
<b><span style="font-family: "courier new" , "courier" , monospace;">(gdb) r</span></b><br />
<br />
6. Execute next line<br />
<br />
<b><span style="font-family: "courier new" , "courier" , monospace;">(gdb) n</span></b><br />
<br />
7. View current line being executed<br />
<br />
<b><span style="font-family: "courier new" , "courier" , monospace;">(gdb) frame</span></b> <br />
<br />
8. Step into a function<br />
<br />
<b><span style="font-family: "courier new" , "courier" , monospace;">(gdb) s</span></b><br />
<br />
9. View local variables<br />
<br />
<b><span style="font-family: "courier new" , "courier" , monospace;">(gdb) info locals</span></b><br />
<br />
10. Print variables<br />
<b><br /></b>
<b><span style="font-family: "courier new" , "courier" , monospace;">(gdb) print a</span></b><br />
<br />
11. Set new values for variables<br />
<br />
<b><span style="font-family: "courier new" , "courier" , monospace;">(gdb) set variable a=5</span></b><br />
<br />
12. Continue execution until next breakpoint<br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<b><span style="font-family: "courier new" , "courier" , monospace;">(gdb) c</span></b><br />
<br />
13. Quit<br />
<br />
<b><span style="font-family: "courier new" , "courier" , monospace;">(gdb) quit</span></b><br />
<br />Joseph Anthony C. Hermocillahttp://www.blogger.com/profile/06540390289881167599noreply@blogger.com