1. Make sure that the GitHub repository for your SP/Thesis is compete with the following artifacts.
b) Journal Article (LaTeX and PDF)
c) Manuscript (LaTeX and PDF)
d) Poster (PDF or PNG)
e) Presentation Slides (PDF)
When the system is not down
Once again we've been lucky to be invited to this years Decode, the annual cybersecurity conference sponsored by Trend Micro. Three ICS faculty members were able to attend this year's conference. I attended the talks on AI/ML-related topics. It is very interesting to learn how AI/ML can aid in improving malware analysis, threat intelligence, and other cybersecurity related tasks. The keynote by Robert McArdle was excellent as well as the locknote by Ryan Flores.
I also attened the CyberConnectED session, hosted by Rodel Villarez, which focuses on cybersecurity education in the Philippines. It's good to know that several universities have partnered with Trend Micro in developing their cybersecurity classes.
Since my invitation to CyberConnectED was prioritized over my Dec{}de application, I was not entitled to the snacks and other freebies. At least I got a good shot. :)
Trend Micro's annual cybersecurity conference DEC{}DE is in person again this year with the theme "Resilience Rising". ICS have participated in this free conference in the past. 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.
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.
The Answer: Choose an excellent group leader!
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 am speaking from experience here because I've always been selected as the group leader when I was an undergrad :) ).
Common issues in group projects
Role of the group leader
In general, the role of the group leader is to handle the issues mentioned above.
A group member should not accept the nomination as group leader if he/she does not possess these qualities.
Of course without the contribution of group members the project will not move forward. (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 :) ).
Appendix: Example work log
(Photo by Annie Spratt on Unsplash)
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):
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 past so I'm quite comfortable using it.
What is DevStack?
"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."
- https://docs.openstack.org/devstack/latest/
[1] I thought the process will be straightforward but unfortunately minor tweaks were needed. Below is the configuration of the host.
[2] This is the commit hash that worked for me, make sure to checkout this particular commit : d9e2d10d28ebc70129ed90ac9afe11591e7bb7d3
[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.
[5] Edit lib/neutron_plugins/ovn_agent.
[6] Unstack and Clean.
[8] Stack. This may take a while so grab a cup of coffee.
I've been using GitHub to host my codes for a long time already. However, I often get lazy and just put "edits" in my commit messages. This is obviously a bad practice!
I decided to look around to learn more about how to write good commit messages. I came across these resources [1] [2] [3].
The following format looks good:
Commit Type(Scope): Subject Line
Body
Commit Types
Subject Line
Short text (less than 50 characters) that summarizes the commit.
Body
This is an optional detailed description of the commit. Wrap at 72 characters.
References
[1] https://cbea.ms/git-commit/
[2] https://dev.to/wordssaysalot/art-of-writing-a-good-commit-message-56o7
[3] https://dev.to/thelogeshwaran/how-to-write-good-commit-messages-714
Professor Murat has an interesting section in his blog called the Humans of Computer Systems. I've been thinking about documenting my own "history in computing/systems" so I decided to answer some of the questions in HCS.
Programming
How did you learn to program?
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.
Tell us about the most interesting/significant piece of code you wrote.
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.
Who did you learn most from about computer systems?
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.
Who is the greatest programmer you met, and what is impressive about them?
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.
What is the best code you have seen?
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.
What do you believe are the most important skills to be successful in your field?
Desire to learn new things. Oral and written communication. Working in a team. Navigating the academic politics.
What quality or ability do you value most in a computer systems person?
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.
Personal
Which of your work/code/accomplishments are you most proud of?
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 ICS-OS paper actually gave me tenure. I enjoyed working on it and using it in my classes.
What comes to you easy that others find hard? What are your superpowers?
Understanding systems. Connecting/integrating things together.
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 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.
What do you feel most grateful for?
I feel grateful for everything I have right now.
What does your perfect day look like?
Learning something new. Helping some people. Exercising and playing sports.
What made you most happy in the last year?
I was able to survive despite the pandemic. Though anxiety kicks in from time to time.
Work
What was your biggest mess up? What was the aftermath?
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.
What was your most interesting/surprising or disappointing interaction at work?
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.
What do you like most about your job/profession?
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.
What would be the single change that would improve your work environment most?
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.
Technical
What do you think are the hardest questions in your field?
System reliability and performance. Ethics. Should we build this system because we can? Is there one operating system to rule them all?
What are you most disappointed about the state-of-the-art in your field?
Sometimes the state of the art is just an incremental step or just scaling up.
What are the topics that you wish received more attention? What do you think is a promising future direction in your field?
System reliability and performance. Ethics.
What is your favorite computer systems paper? Why?
*XEN and the Art of Virtualization *A view of cloud computing *MapReduce: Simplified Data Processing on Large Clusters
I reread these papers from time to time.
Story
Is there an interesting story you like to tell us?
Yes.
Tell us your story.
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.
Rant your heart out.
We are in a research university. Why are we not reading at least one research paper per week? :)
References:
[1] https://csrc.nist.gov/glossary
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.
I've been using Unison 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.
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.
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.
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.
All I can say is Unison made my life easier and you should give it a try.
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:
These conferences waived the registration fees this year. I hope to add more to this list.
If you are interested, here is a list of upcoming conferences from various professional organizations:
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.
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.
Thus, this semester the following tools occupy my screen most of the time:
![]() |
| Green screen setup |