Blog
Here, most of my blog posts are casual in nature, being personal reflections of past accomplishments and thoughts. But included are also some opinion pieces as well as an entire guide and question set developed for learning RegEx!
Atlassian Intership Reflection
Published on 17/02/24
Three months fly by in a flash, and my Atlassian internship? Unrivalled.
What was my first impression??
In case you don’t already know, Atlassian is a software company that specialises in the development of
collaboration products widely used by teams and organisations globally.
Notably, it has shipped...:
• Jira: project management tool allowing teams to productively
plan and track their work.
• Confluence: documentation tool enabling teams to collaborate
on content in a centralised platform.
• Bitbucket: version control repository hosting service that
provides a platform for teams to manage source code.
I will try not to make this sound like a marketing campaign but for real this isn’t your typical 9 – 5
‘confinement’ that’s filled with boredom or people dressed in suits. The five company values are not only there on paper, but
illuminated through everyone’s vibe and the passion with which people go about their work. The office
buzzes with the rhythm of keyboards clicks and cooperative chatter, walls decorated with drawings of
ducks, coupled with breathtaking views from the high-rise building. The perks? Think game rooms, karaoke
sessions, massage chairs, pool & ping pong tables and a gym/music area for the occasional coding stress
relief. Free food isn’t just a checkbox in the benefits list; it’s a daily culinary exploration.
What was my role??
Over my twelve-week placement, I worked as an intern in the Observability Platforms team. Observability
is a measure of how well the inner workings of a system can be understood by observing it from an
external state based on various signals. These include logs (time-stamped records of events), metrics
(numerical values that represent certain aspects of the system) and traces (provide a detailed view of
the operational flows). Initially, I worked on a series of tickets to gain exposure into the
responsibilities of the infrastructure engineers who maintain various software components and services.
Then, my main project was to create a backend application to inform support engineers about their
searched identifiers, facilitating their debugging and tracing process. Not only did I need to
diligently learn the basic syntax of the Go programming language, but I also interacted with aspects
such as interfaces, concurrency, and testing, and I deeply thank my mentor for guiding me through the
most effective coding practices. Upon adding documentation for this service and building the Splunk
dashboards for monitoring its usage, it was incredible seeing that the stakeholders had a positive
sentiment towards my work and will begin incorporating it into their workflows.
What were the highlights??
I think the obvious highlight for each intern must be all the social gathering events that we
participated in. Essentially, we were able to organise meals or activities as bonding opportunities, and
Atlassian would sponsor a significant amount.
Let me quickly go over my top events:
• JET BOATING 🚤 I organised this event so it’s
particularly special to me, but genuinely the thrill of this activity is absolutely unmatched (hiring
out a private charter is just insane)!
• WICKED 🧙 I was so excited about this that I did my
homework and watched The Wizard of Oz beforehand – and omg my first musical certainly did not
disappoint!
• BOAT PARTY 🌊 Honestly I was close to flaking this
event but I’m glad I didn’t... it’s not everyday that you rent out a boat and get to jump into the
waters of Sydney Harbour!
• LUNA PARK 🎢 While this may not seem unique, it was
surprisingly my first time here and seeing the Harbour Bridge upside down from the 360-degree
Sledgehammer was wild!
While these social gatherings were a huge perk during our placement, I cannot forget all the
connections that I developed along the way. Friendships blossomed not only through these cool
adventures, but also from within the workspaces and at the lunch tables. We met both co-CEOs when they
came into the office for executive town hall presentations, and I was fortunate enough to be in a group
photo with Scott! Best wishes to everyone that I’ve met, and I hope we cross paths again soon!!
What did I learn??
During my internship, one of the most profound lessons I came to appreciate was the invaluable
importance of continuous learning. Being thrown into a professional environment (ok maybe this isn’t the
right word due to the constant banter around), I quickly realised how every day offered a new
opportunity to grow, learn, and improve. The agile mindset is not limited to team sprints – with the
rapidly evolving nature of the technology industry, it is critical for us to constantly enhance our
skills and knowledge to remain relevant and effective in our roles. No one can be that comfortable when
they first start out in a new company so it’s completely normal to be asking questions and understanding
how things operate within the team. Learning is a lifelong journey and I have come to understand that
with a growth mindset, genuine motivation, and taking an appropriate amount of initiative, I will become
more equipped to tackle the challenges that arise and ultimately... be happy!
Final Thoughts
This was probably my last internship (after placements at Optus and Macquarie Group) since I am no
longer a university student. Upon reflecting, I’d say that this experience was literally the dream for
every intern. It was such a privilege for me to be able to make an impact and contribute to the
corporate giant that is Atlassian. Yet unlike stereotypical connotations of the word “corporate”, it was
like being in a tech haven where coding really came to life! Until next time... 🤞
Fourth Year of Uni Reflection
Published on 25/12/23
The time has come – my university journey is completed. It won’t be until May next year until it’s
official when I have the prestigious ceremony and receive my double degree Bachelor’s certificate. I must
admit that having to persist through all the classes, assignments and exams was not easy and at times I
just wanted university to be over, to escape the endless grind, to be yearning for the light at the end of
the tunnel. But as I completed my final exam (for MATH3171, Linear and Discrete Optimisation Modelling),
the same day that I coincidentally turned 22 years old, there was a lingering feeling of nostalgia. While
it’s indeed a significant milestone, I won’t be a student anymore and I deeply cherish all the moments
over these years!
One final dance as a student
As I realised that my time in university was limited, I made an effort to go into campus two, or
ideally, three times a week. While my initial mindset was to attend classes in person wherever possible,
I eventually only went to uni for tutoring where I was in charge, or for compulsory tutorial classes. I
guess having many things on my plate caused me to fall weeks behind schedule, and I figured that
watching recordings at a faster speed was more efficient than dozing off in a lecture. Seems like some
bad habits just carried on – oops 😅!
There was one aspect that had a prominent influence: artificial intelligence. As ChatGPT exponentially
improved over the year, so too did the university’s crackdown on its usage. It was unimaginably powerful
– providing ideas for a mathematical proof, performing exploratory data analysis for a Kaggle
competition, to being capable of completing an entire Haskell assignment. Of course, this meant that I
had to use it judiciously for my own learning rather than blindly accepting its output, which would also
breach academic integrity. Undoubtedly, the rise of this wizardry has been a blessing by being the very
definition of convenience, whilst fuelling a huge wake-up call for humans as it’s still unknown what AI
could do in the future.
For me, university tutoring and societies remained similar to those in previous years. While I continued
to tutor the two first-year courses as before, I also picked up COMP3311, databases systems. It was
awesome preparing some fresh material and changing up my teaching style given that this was a third-year
course where students would be older and have a better understanding of programming fundamentals. I also
decided to be more involved, offering to provide assistance at help sessions for more face-to-face
interactions with students, as well as marking a fair portion of assignments and exams to discover
potential patterns with their weaknesses. Furthermore, for a bit of fun in my final year of uni, I
joined CSE DevSoc as a subcommittee member within the culture portfolio. There, I helped organise a
series of internal events and met some self-driven individuals (I overheard some Leetcode conversations
at a drinking party), being a terrific opportunity for me to foster a welcoming community.
Amongst this, I remained a diligent software engineer at Macquarie Group, working two days a week until
the end of August (I wanted to properly enjoy my last term of uni). After several months of development
and testing, I successfully managed to deploy a trading interface into the production environment, which
involved retrieving a filtered set of trades from AWS SQS, undergoing relevant extraction and
processing, and finally saving the metadata into RDS. I also continued to refactor code and push
fullstack changes to the Voting application that I had worked on over my internship, and over time, I
felt that I was able to contribute more to the team stand-ups and system design discussions. Outside the
social events, I squeezed in time to study for the AWS Cloud Practitioner exam and passed it with flying
colours. I am for sure grateful for all the technical learning, professional development and culture
within the Equities team at this company.
Some cool projects
Did you know that I’ve never pulled one all-nighter in my life? This comes off as a surprise to most,
given that students are infamous for their last-minute pumping of assignments back during high school,
and especially given the high chance of meeting a night-owl studying computer science. Funnily enough,
that changed half-way through this year, when I literally stayed up all night doing the CSESoc Annual
Flagship Hackathon. Yes, I’ve done Hackathons before and I’ve had close calls with various submission
deadlines in the past but I always had a few hours of sleep – but not a single minute this time! Now
enough with my boasting 💀. Essentially, we were asked to devise a travel solution in the post-Covid
era, and my group decided to build a travel recommendation system. Using the power of machine learning,
our web application could suggest places to visit based on a user’s selection of photos, and travel
buddies could also be started this way. Unfortunately, our idea was not unique enough as many other
teams had a similar idea, yet we did win a prize and I’m so glad that we participated!
The COMP3900 capstone project was a game-changer for me this year, where I led a team of five in the
creation of an ESG platform for a real client. Having this feedback loop with sprint iterations, it felt
like a mini 9-to-5 job, and given my industry experience, I volunteered to be the scrum master, steering
us through user stories in Jira, development approaches and retrospectives. What started with backend
work on Python Flask and Docker transitioned smoothly to me taking charge of the React frontend,
churning out components, refining the UI and code refactoring. The end result? A slick, bug-free web app
empowering general investors to analyse specific companies and make detailed portfolio comparisons. We
even added a personal touch, allowing users to save custom frameworks, tweak ratings and visualise
results. Despite the level of effort vastly exceeding that of other courses, the immense satisfaction of
witnessing the client’s impressed reaction during the final presentation and demo served as a powerful
testament to our cohesive teamwork, transparent communication and robust project management. Wrapping up
my university journey on this note as the leader of such an amazing project has me thrilled and proud!
Feel free to take a closer look at the codebase, demo and report from the projects page.
Melbourne, GZ, HK & Melbourne again!
Amidst the whirlwind of a bustling and eventful year, I managed to escape the daily grind and take to
the skies, breaking a multi-year hiatus from air-travel. My first Melbourne venture unfolded as an
enjoyable family trip as we scrambled to visit all the tourist attractions during each packed day. Yet
the year’s end saw a return to the city with friends to pose a more laid-back vibe – characterised by
sips of matcha, chill picnics and profound late-night conversations. Guangzhou was a close yet distant
city in China, as I always maintained a sense of connection to my relatives and cultural heritage, yet
the rapid globalisation and bustling energy underscored the essence of “people mountain, people sea”. In
Hong Kong, the iconic skyline and mesmerising Big Buddha were complemented by the lively activity at
the Kowloon markets, where the locals’ energetic presence added a distinct flavour to the atmosphere.
Unsurprisingly, the FOOD stole the spotlight everywhere (too many to recount here), imprinting an
indelible mark on my taste buds and enticing me to not only revisit these destinations but also venture
into new corners of the globe, eager to weave a rich tapestry of delectable experiences around the
world.
What’s Next?
After some time in preschool, one year of kindergarten, six years of primary school, another six years
of high school and four years of university, it has all come to an end. Arguably, my uni experience
stands out as the most memorable and fulfilling. Delving into the intricacies of computer science and
maths, to establishing meaningful friendships, to giving back through tutoring – the list goes on and
the journey has been filled with unexpected achievements and personal growth ❤️. I’m excited to continue
embracing new opportunities and the limitless possibilities that lie ahead, without regrets! Looking
forward to what awaits in the next chapter of my life...
Navigating the Maze of AI Ethics
Published on 03/11/2023
Introducting the Entrance
In the rapidly evolving landscape of artificial intelligence (AI), the conversation around ethics has
become an intricate labyrinth replete with convoluted paths and hidden turns. At the heart of this
discourse lies the concept of AI ethics, a multidimensional construct aimed at guiding the responsible
development and application of AI technologies in a manner that aligns with moral, societal, and legal
standards1....
As we embark on an exploration through this complicated maze, two voices echo distinctively, each
illuminating paths through the dense thicket of theories and methodologies. Luke Munn’s critical
examination "The Uselessness of AI Ethics" (2022), boldly asserts the ineffectiveness of the
prevailing ethical practices within AI, scrutinising their relevance in the interplay between commercial
interests and technological progress2. In parallel, Elettra Bietti’s "From Ethics Washing
to Ethics Bashing: A View on Tech Ethics from within Moral Philosophy" (2020) offers a nuanced
sentiment regarding the need for more substantive action, discussing the phenomena of 'ethics washing'
and 'ethics bashing' as symptomatic of fundamental discrepancies within the tech ethics
dialogue3. By traversing these intertwined pathways, we discover that while Munn’s criticisms
are largely justified with his solutions offering a promising direction, they merely sketch the outlines
of the path ahead. Through a synthesis of these perspectives, the true journey lies in uncovering a more
multifaceted approach, one that integrates iterative reflections, welcomes a tapestry of perspectives
and commits to a persistent process of ethical deliberation and action. Only through a sustained and
holistic engagement can we navigate the ethical twists of AI to find a path that leads beyond the
theoretical into a realm of meaningful action.
The First Turn: Exploring Munn's Critique
Munn posits that the current practices in AI are akin to wandering aimlessly in a maze blindfolded,
where ethical frameworks serve more as decorative hedges rather than guiding paths. He articulates that
much of what passes for ethics in AI is superficial, serving more as a public relations exercise than a
genuine engagement with the moral dimensions of technology, and in some cases exacerbate the issues they
intended to address (Munn, 2022). This echoes Bostrom and Yudkowsky's concerns about the "ethics of
artificial agents" being sidelined in favour of advancing technical frontiers, underscoring the need to
integrate ethics into AI development from the beginning4. Therefore, Munn highlights that the
obsession with principled frameworks – transparency, fairness and accountability – is tantamount to
endless walking along the superfluous peripheries of the maze, never reaching its core. While
establishing principles is a significant first step, this reflects Mittelstadt’s argument that there are
evident challenges in translating abstract ethical principles into concrete practices, and that the
principles need to be supplemented with robust governance mechanisms to truly ensure ethical
outcomes5. Thus, navigating this maze requires not only a recalibration of our ethical
compass but also a commitment to bridging the divide between high-level ethical aspirations and the
tangible realities of AI implementation.
Furthermore, Munn’s dissection of AI ethics touches upon the concept of power dynamics, a theme resonant
in the works of scholars like Greene, who argues that ethics in AI often overlooks the unequal power
relationships that technology can perpetuate6. This concern is echoed in Munn’s cautionary
note that AI ethics, as it stands, could become a tool for those in power, serving to maintain the
status quo rather than to challenge it. As we turn through this segment of the maze, it becomes evident
that Munn’s essay is not merely a dismissal of AI ethics, but a call to reassess and reorient its
direction, beckoning us to explore new pathways.
The Twisting Pathways: Examining Bietti's Perspective
Bietti’s insights provide a crucial turn in the AI ethics maze, offering a nuanced view that scrutinises
the superficial commitments of technological companies to ethics, which often neglect the deeper
philosophical implications. She introduces the notion of ‘ethics washing’, where organisations
ostensibly adopt ethical guidelines and principles as a façade to obscure their underlying profit-driven
motives7 (Bietti, 2020). This aligns with Munn’s provocative critique of AI ethics as largely
performative, wherein the essence of ethical deliberation is lost amidst corporate rhetoric and
surface-level compliance. Bietti’s argument reveals the traps laid within the maze of AI ethics – traps
that allow companies to evade public scrutiny without genuinely enacting substantial change. This
phenomenon resonates with the broader discourse on corporate social responsibility, where symbolic
actions often substitute for substantive change8. Munn’s criticism points towards a
fundamental disconnect between lofty ethical theory and practical implementation, and Bietti mirrors
this by conveying that without enforceability, ethical principles risk becoming empty gestures. To
bridge this gap, Green implicitly suggests the development of more actionable guidelines, coupled with
mechanisms for accountability to guarantee ethical principles are translated into AI design and
deployment practices9.
However, Bietti also warns against ‘ethics bashing’, which is the outright dismissal of ethical
considerations as futile or counterproductive (Bietti, 2020). While Munn raises valid concerns about the
inadequacy of current AI ethics in terms of implementation and impact, Bietti’s analysis suggests that
excessive criticism may lead to a despairing dead-end and how discarding these ethical frameworks
altogether could be equally detrimental. As supported by Mittelstadt, ethics is important in providing a
true moral compass in this burgeoning field despite the perceived limitations, emphasising the need to
mitigate the societal impacts of AI. In this segment of the maze, we see the paths of ethics and power
intertwining, creating a complex network of considerations demanding careful navigation and critical
insight.
Fork in the Road: Weighing Criticisms
Approaching a major junction in our journey through the maze of AI ethics, we are tasked with
confronting the criticisms presented by Munn and Bietti, juxtaposing their perspectives to gauge the
merit of existing ethical frameworks. Munn’s blunt judgement, while incisive, might be seen as overly
dismissive of the potential for ethical frameworks to contribute positively to the development and
deployment of AI technologies. His call for a complete overhaul of AI ethics, focusing more on
socio-political aspects, may overlook the intrinsic value and considerable progress that ethical
guidelines have already achieved thus far10. The challenge is not to wholly discard these
efforts but to understand their limitations and build upon them for more robust frameworks and
comprehensive solutions11.
Conversely, Bietti’s balanced perspective acknowledges the shortcomings of current ethical practices
while also recognising their potential. She champions for a more inclusive and critically engaged
approach to tech ethics, one that goes beyond mere compliance and actively challenges power structures
and social injustices (Bietti, 2020). This approach resonates with the holistic views of scholars like
Keyes, who advocates the need for a multi-faceted and intersectional approach to ethics in
technology12. In addition, Bietti’s stance accepts the changing societal contours that AI is
shaping, pushing for ethical practices that are adaptable and anticipatory in nature.
Within the quest to search for the most viable route out of the AI ethics maze, it becomes apparent that
neither an outright rejection nor a blind acceptance of existing ethical frameworks suffices. Instead,
combining Munn’s call for socio-political awareness with Bietti’s emphasis on critical engagement and
ethical vigilance forms a coherent path out of this metaphorical maze. This integrated approach could
lead to more effective ethical guidelines that are not only sensitive to the intricacies of AI but also
responsive to the societal impacts and inherent power dynamics. This path, though complex, holds the key
to navigating the maze with a vision that is both grounded and progressive.
Navigating Dark Corners: Unravelling Challenges in Proposed Solutions
As we venture deeper into the AI ethics maze, Munn’s proposal of a radical shift towards ‘AI justice’
establishes a transformative pathway. This concept Bietti’s call for a more socially embedded ethical
framework, acknowledging the societal implications of AI technologies (Munn 2022, Bietti 2020). One of
Munn’s key solutions is the democratisation of AI governance, arguing for the inclusion of a broader
range of stakeholders, particularly those from marginalised communities. However, while the advocacy for
democratisation is commendable, this route is not without its dark corners. As Kitchin illustrates, the
complexities of AI and the specialised knowledge it demands can be formidable barriers to effective
public engagement13. Moreover, the power dynamics and vested interests within the
technological industry could shadow these participatory mechanisms, challenging their representativeness
and efficacy14.
Munn's call for robust regulation and legislation as part of 'AI justice' seems like a clear trail
forward, yet it is fraught with hidden challenges, beset by obstacles. Wagner’s caution about the
difficulty in creating globally coherent regulations due to varying cultural and political landscapes is
a significant hurdle. The fast pace of AI developments, as Cath notes, often eclipses the slower
processes of lawmaking and policy formation15. There is also the danger that an overemphasis
on regulation could inadvertently stifle innovation and hinder the beneficial aspects of AI, thus
creating a new ethical quandary and thereby exemplifying the need to strike that refined equilibrium
between these concepts.
Additionally, Bietti’s emphasis on the role of moral philosophy in shaping tech ethics stimulates
another ambiguous passageway in the maze. Her approach, rooted in deep philosophical engagement whereby
tech ethics risks succumbing to superficiality and tokenism otherwise, is undeniably valuable but risks
creating a gap between the philosophical discourse and the traditional exigencies of technological
practice. As Mittelstadt states, AI ethics must embrace an interdisciplinary approach that weaves
together insights from various fields. It can be argued that Bietti’s focus on moral philosophy
potentially overlooks the practical, regulatory aspects necessary for operationalising ethics with AI
frameworks, since a balance between philosophical inquiry and pragmatic policy-making is crucial for
effective ethical governance in AI16. While insightful, Bietti’s perspective might benefit
from a more grounded approach that fosters an environment where ethical AI governance is both reflective
and responsive to the ever-shifting technological paradigm.
Charting a Balanced Path: Synthesising Perspectives
In attempting to journey through the labyrinthine challenges of AI ethics, Munn’s advocacy for concrete
actions and tangible outcomes emerges as a pivotal beacon, guiding us away from the obstacle of purely
theoretical ethical musings that fail to find their footing in the real world. However, his complete
rejection of ethical discourse appears too extreme and resembles discarding the map mid-journey. Ethics,
even if imperfect, provides a necessary guide in navigating the AI landscape. A practical approach must
be anchored by strong ethical principles, acting as a compass to steer decision-making and policy
formulation (Munn, 2022). In doing so, we must also recognise the mutable nature of technology and
society, which requires ethical guidelines that are not only solid but also sufficiently flexible to
accommodate future advancements and societal shifts. Munn's insistence on action should therefore be
tempered with the understanding that ethics in AI is an evolutionary process, not just a set of static
solutions.
On the other hand, Bietti's focus on the philosophical underpinnings of ethics unveils deeper layers of
the maze, providing the appropriate insight to navigate its most intricate turns. Nevertheless, her
critique risks casting a shadow of doubt over the feasibility of ethical engagement in this space,
potentially leading us into a passage of pessimism. To counter this, it is quintessential to adopt a
fusion of Bietti’s philosophical rigour with a pragmatic approach that underscores the prospect of
positive transformation. This is where Mittelstadt’s notion of an interdisciplinary AI ethics can offer
a robust platform, in which philosophical theories are harmoniously integrated with practical,
industry-centric solutions to create a versatile ethical toolset.
In summary, the expedition to emerge from the ethical maze of AI demands a balanced approach, merging
Munn’s pragmatism with Bietti’s philosophical depth. This path, navigated within a framework of
effective regulation and inclusive stakeholder involvement, promises not just an escape from the current
ethical conundrums, but a forward movement that is both morally sound and practically viable.
Towards The Light: Building an Optimal Solution
As we have just discovered in our navigation through the complex pathways laid out by Luke Munn and
Elettra Bietti, evidently neither singular path offers a complete solution to the puzzles of AI ethics.
An optimal route demands an amalgamation of their insights, acknowledging the strengths of these
perspectives along with wisdom from other scholars, tailored to overcome observed limitations. The
integrated path should cultivate a synergistic relationship between ethical principles, practical
implementation and regulatory oversight.
One way to achieve the balance between ethical discourse and tangible action is through a
multi-stakeholder approach, as suggested by Jobin, Ienca and Vayena. This approach would encompass not
only tech companies and ethicists but also governments, policymakers, civil society, and end-users in
the creation and implementation of AI ethics guidelines. It’s also crucial to promote education and
public engagement, as highlighted by Elish and Boyd, to demystify the “magic” attributed to big data and
AI17. The conscientious application of AI should consider its ecological footprint, pushing
us to design algorithms that contribute to the stewardship of our planet for future generations.
Factoring in perspectives from diverse cultural and socio-economic backgrounds in ethical
decision-making is also vital, ensuring that the AI systems we develop are truly global in their
relevance, resonance and impact. Such inclusivity by keeping “society-in-the-loop” can align
technological advancements with societal values and norms, ensuring that ethical considerations are not
just theoretical but reflect the richness of diverse viewpoints and real-world
consequences18.
As portrayed by Mittelstadt, translating high-level ethical principles into actionable policies and
industry standards is paramount. This transcends Munn’s beliefs, demonstrating how AI ethics must extend
beyond mere compliance with regulations and would require foresight and proactive engagement with
potential risks and benefits. This forward-looking governance is characterised not only by an adherence
to current standards but also by the capacity for rapid adaption to unforeseen challenges and future
opportunities as they arise.
The Exit: Beyond the Maze
Ultimately, traversing the maze of AI ethics is not about reaching a final destination with a definitive
end; rather it’s an ongoing expedition of discovery, discernment and adaptation. Like navigating a maze,
the field of AI ethics requires careful deliberation, continual reassessment and openness to uncharted
paths. It necessitates a willingness to question traditional stereotypes, embrace diverse perspectives
and integrate ethical considerations into the broader, dynamic societal matrix. The critiques raised by
Munn and Bietti point us towards a temporary exit of this maze, yet in truth, the journey is far from
over. The real endeavour lies in envisioning and shaping a new landscape where ethical considerations
are fundamentally woven into the fabric of AI development. This future vision demands a collective
effort from policymakers, developers, ethicists, and the public. Together, we can create AI technologies
that transcend mere technical prowess, embodying equitable and just principles. In this way, we move
beyond simply escaping the maze of AI ethics; we transform it into a realm where ethical AI is not an
enigma but an foundational element of our technological and societal progression.
Bibliography
1. Hagendorff, T. (2020). The Ethics of AI Ethics: An Evaluation
of Guidelines. Minds and Machines.
2. Munn, L. (2022). The Uselessness of AI Ethics.
3. Bietti, E. (2020). From Ethics Washing to Ethics Bashing: A
View on Tech Ethics from within Moral Philosophy.
4. Bostrom, N., & Yudkowsky, E. (2014). The Ethics of Artificial
Intelligence.
5. Mittelstadt, B. (2019). Principles alone cannot guarantee
ethical AI.
6. Greene, D., Hoffmann, A. L., & Stark, L. (2019). Better,
Nicer, Clearer, Fairer: A Critical Assessment of the Movement for Ethical Artificial Intelligence and
Machine Learning.
7. Wagner, B. (2018). Ethics as an Escape from Regulation: From
ethics-washing to ethics-shopping?
8. Crane, A., Matten, D., & Spence, L. J. (2019). Corporate
Social Responsibility: Readings and Cases in a Global Context. Routledge.
9. Green, B. (2019). Data Science as Political Action: Grounding
Data Science in a Politics of Justice.
10. Jobin, A., Ienca, M., & Vayena, E. (2019). The global
landscape of AI ethics guidelines.
11. Resseguier, A., & Rodrigues R. (2020). AI ethics should not
remain toothless! A call to bring back the teeth of ethics.
12. Keyes, O., Hoy, J., & Drouhard, M. (2019). Human-Computer
Insurrection: Notes on an Anarchist HCI.
13. Kitchin, R. (2017). Thinking Critically About and
Researching Algorithms.
14. Benkler, Y. (2016). The Wealth of Networks: How Social
Production Transforms Markets and Freedom.
15. Cath, C. (2018). Governing artificial intelligence: ethical,
legal and technical opportunities and challenges.
16. Floridi, L., & Cowls, J. (2019). A Unified Framework of Five
Principles for AI in Society.
17. Elish, M.C., & Boyd, D. (2018). Situating Methods in the
Magic of Big Data and AI.
18. Rahwan, I. (2018). Society-in-the-loop: programming the
algorithmic social contract.
Ethical Cadences – Syncopating Professionalism in Computer Science
Published on 05/10/2023
Prelude
As technological breakthroughs continuously shape our world, computer science is on the cusp of gaining
formal recognition as a licensed profession. A quintessential question arises: How can we blend the rhythm
of ethics into the shifting tempo of this dynamic field? While the dichotomy of act and rule
utilitarianism offers their respective merits and insights, they do not necessarily capture the symphony
of complexities inherent to this matter. Amidst the digital crescendos and diminuendos, perhaps two-level
utilitarianism strikes the desired ethical chord we have been discovering....
Act Utilitarianism’s Aria
Originating from Jeremy Bentham’s book ‘An Introduction to the Principles of Morals and
Legislation’ (1789), act utilitarianism posits that actions should be judged by their immediate
consequences to ascertain their ethical value. Since “nature has placed mankind under the governance of
two sovereign masters, pain and pleasure”, this philosophy parallels improvisational jazz, celebrating
decisions that prioritise the instant harmony of net happiness or utility.
Within the digital realm of computer science, consider a common situation where an established company
is set to release a new software update. Act utilitarianism would motivate the development of this
feature to be expedited and public announcements to be made as soon as possible. Customers would likely
experience heightened satisfaction due to an enhanced user experience. Concurrently, the company would
enjoy increased revenue and intangible benefits like an improved media reputation.
However, prioritising immediate collective satisfaction might impulsively overlook underlying
vulnerabilities with the update. What if, due to inadequate testing, certain circumstances cause the new
feature to fail, leading end-users to lose interest in the existing technology? From an ethical
perspective, have all checks been made to ensure that there are no compromises to security and privacy?
Adopting act utilitarianism risks introducing inconsistencies into guidelines, which could negatively
impact the profession’s integrity and cause extensive societal repercussions. For instance, what
constitutes the ‘greater good’ in a data breach scenario might be manipulated based on vested interests
rather than genuine utility, whereby this approach becomes abused and unethical behaviours
are rationalised.
Rule Utilitarianism’s Rondo
Emerging from John Stuart Mill’s reflections in his classical text ‘Utilitarianism’ (1863),
rule utilitarianism underscores how actions should be guided by rules that, if universally adopted,
would lead to the most happiness. Evoking the sentiment that “it is better to be a human being
dissatisfied than a pig satisfied”, the approach emphasises understanding the holistic symphony
for global resonance instead of focussing on the individual musical notes.
Revisiting the software update example, rule utilitarianism would advocate clear protocols such as
meticulous pre-launch testing phases and stringent data protection checks, even if this delays market
entry. As a result, the immediate collective joy and market benefits may be sacrificed, especially if
the product does not meet the required guidelines and is deemed unsatisfactory, signifying a loss of
valuable time, effort and resources. The rationale? Rule utilitarianism seeks a vision of a predictable
and stable technological ecosystem, even if it involves short-term trade-offs. The broader tapestry of
user trust and software reliability is preserved due to the definitive practices across the profession,
ultimately leading to broader societal happiness.
Nevertheless, critics such as Brandt argue that rule utilitarianism is overly rigid, and while rules are
essential, there might be specific instances where breaking the rule would lead to greater utility. Some
start-up companies might be reluctant to revolutionise the field due to these bureaucratic constraints.
Having to consult every niche action against outdated standards could hinder decision-making processes.
In a burgeoning technological landscape, the inflexibility of such a theory can often be anachronistic,
potentially stifling innovation or rapid responses to new challenges.
Two-Level Utilitarianism’s Toccata
Richard Mervyn Hare developed another theory of ethics, two-level utilitarianism, wherein “a person’s
moral decisions should be based on a set of moral rules, except in certain rare situations where it is
more appropriate to make a ‘critical’ level of moral reasoning”. At its core, this arises as a harmonic
fusion, like a fugue that marries the structured bars of rule utilitarianism with the improvisational
solos of act utilitarianism, especially during ethically ambiguous interludes.
Two-level utilitarianism illustrates how morality operates on two levels: intuitive and critical. At the
intuitive level, professionals would adhere to predefined rules that cater to standard scenarios in
computer science. For example, a rule dictating that user data should be encrypted could be universally
followed, ensuring foundational security and trust. At the critical level, professionals are allowed to
switch to act utilitarian reasoning when faced with novel ethical dilemmas. For instance, if the
decryption of user data would help in urgent crime prevention, the immediate consequences would be
evaluated to determine the correct course of action.
Evidently, two-level utilitarianism combines the strengths of both approaches, proving invaluable in the
ever-evolving domain of computer science. Its nuanced, bifocal approach ensures consistent adherence to
professional standards, despite still permitting flexibility in uncharted territories. Of course, there
is not necessarily a one-size-fits-all solution, as a major critique could be the contentiousness around
when to switch between the intuitive and critical levels. As alluded to by Hooker in his book ‘Ideal
Code, Real World: A Rule-Consequentialist Theory of Morality’, the duality might lead to
ambiguity, making ethical decisions more cumbersome. Risks of subjective bias could always influence
decisions, echoing the pitfalls of act utilitarianism. Nevertheless, with rigorous training,
understanding various case studies and fostering an organisational culture where ethical deliberations
are encouraged, professionals can be equipped to navigate these nuances skilfully, thus manifesting as
an adaptable, pragmatic guide in multifaceted dilemmas.
Ethical Encore
In the grand concerto of technological progression, two-level utilitarianism crafts a well-tuned melody
that bridges the wisdom of the past with future innovation. As we embark on this new movement of
licensed computer science, we realise that while it may not be the authoritative score, it certainly
offers a richer symphony than act or rule utilitarianism playing solo. Like any musical masterpiece, it
requires ongoing refinement, rehearsal and resonance with both the notes of action and pauses of
reflection. This masterful conductor of two-level utilitarianism promises a performance that is both
morally sound and profoundly impactful for human welfare, yet it is imperative we remain receptive to
new rhythms in our ethical paradigms.
Bibliography
• Academic Accelerator (2023). Two Level
Utilitarianism.
Available at: https://academic-accelerator.com/encyclopedia/two-level-utilitarianism/
(Accessed: 3 October 2023).
• Baron, J. (2023). Richard M. Hare |
Utilitarianism.net.
Available at: https://utilitarianism.net/utilitarian-thinker/richard-hare/
(Accessed: 2 October 2023).
• Bentham, J. (1789). An Introduction to the Principles of
Morals and Legislation.
• Brandt, R. (1979). A Theory of the Good and the
Right.
• Driver, J. (2014). The History of Utilitarianism
(Stanford Encyclopedia of Philosophy).
Available at: https://plato.stanford.edu/entries/utilitarianism-history/
(Accessed: 1 October 2023).
• Hare, R.M. (1972). Applications of Moral Philosophy.
• Hooker, B. (2000). Ideal Code, Real World: A
Rule-Consequentialist Theory of Morality.
• McNaughton, D. (1988). Moral Vision: An Introduction to
Ethics.
• Mill, J.S. (1863). Utilitarianism.
• Nathanson, S. (2014). Utilitarianism, Act and Rule |
Internet Encyclopedia of Philosophy.
Available at: https://iep.utm.edu/util-a-r/
(Accessed: 1 October 2023).
• Roberts, E. (2014). Can Hare's two-level utilitarianism
overcome the problems facing act-utilitarianism?
• Singer, P. (1993). Practical Ethics.
Third Year of Uni Reflection
Published on 24/02/23
Each passing year seems to fly by quicker than the last, and before I know it, I’ve completed three
quarters of my university degree already. With the easing of Covid (to an extent, who knows when and if
it’ll be gone), classes and exams begin to shift back to in-person and there are more fun events to attend
in general. The year 2022 has been a testament to my personal and professional growth – and while certain
aspects seemed like a continuation from previous years, there were some experiences that are worthy of
mentioning....
Macquarie Marvel
I hadn’t written about this previously, but at the end of 2021 after the conclusion of my Optus
internship, I joined Macquarie Group as a software engineering intern. Being in a more corporate
financial industry meant that the overall environment, people and work was a change (also due to the
fact that my role shifted from being a SRE). Despite the onboarding and large parts of my three-month
summer internship being remote work as before, I felt that I was developing myself heaps and therefore,
I decided to continue working there on a part-time basis.
Even right now, I'm gaining a wealth of knowledge at Macquarie, especially in terms of understanding the
intricacies of system design – something that isn’t taught in uni courses. As a bank, we need to ensure
that we are not just completing tasks for the sake of ticking off a checklist, but more importantly,
doing so in a robust, elegant manner such that the need for future bug patches is reduced. One of the
other main learning points is understanding the agile way of working. It's a shift from theoretical
knowledge to practical implementation – having sprint planning, addressing Jira tickets in an efficient
manner, engaging in daily standups and utilising retrospectives to improve. This collaborative and
dynamic method truly stands out, illustrating how successful software development (from quick features
to larger-scale Python projects) is a team sport - and thus, this saying is clichéd for a good reason.
As the office began to fill up again throughout the year, it was also great having team lunches, a lawn
bowl night, table tennis sessions, networking drinks and a Christmas party. Personally, I also enjoyed
some running sessions at the Royal Botanic Gardens nearby, where the scenic routes overlooking the
splendid harbour offered a refreshing break from our monitor screens.
Balancing Brilliance
Choosing to take a full course load each term certainly led to some intense weeks, especially when I had
a bunch of assignments due. For sure, I branched out into numerous interesting facets of computer
science and mathematics, but staying on top of everything was time-consuming and even draining at times.
Alongside my work two days a week, I also had society commitments in a leadership position, as well as
CSE Tutoring.
Remember how I mentioned about being nervous when stepping up as a director in DataSoc in blog post from
a year ago? Well, running the weekly meetings and organising catchups essentially became second nature
to me in 2022, as I was familiar with the general house-keeping procedures. Getting to know my
subcommittee members who were all from different year groups and studied a variety of degrees was also a
cool change, and we were able to develop Tableau dashboards, refine our website and introduce new
automation processes once everyone got up to speed on a technical level. Honestly speaking, the vibes
were lacking a little bit this year though (probably because everyone wanted to spend time with their
closer friends as everything opened up post-Covid) but there were still many fun events that we
participated in – picnics and escape rooms and karaoke sessions and road trips and formal balls.
Then came university tutoring again – I had previously been a lab assistant, then tutored at UNSW
Global, where there were predominantly international students. This year, I was the main tutor for
domestic students in CSE, for both introductory programming and low-level systems fundamentals. More
importantly, there were in-person classes, which were just so much more engaging, as I could see
people’s faces (we initially had to wear masks but this rule later disappeared) and adjust my style
accordingly. I offered to provide additional assistance in help sessions, and uploaded my live code
demos in a GitHub repository where students could review it after class. I also posted anonymous forms
where they could provide feedback based on my lessons, and it was just soooo satisfying seeing all my
positive reviews at the end of the term. Perhaps I shall try tutoring some new courses next year...
Skiing, Snow, Serene Smiles and Shared Stories
Amidst the grind, the highlight of the year must be the ski trip, which I organised together within a
group of eight friends from DataSoc. My only other experience with snow was a distant memory from a high
school camp that was characterised by a predicament, and this one surely tops all my trips in the past.
Getting permission from my parents to go was a challenge in itself, given the unpredictable nature of
Covid at the time, but I wouldn’t regret the decision. What made the trip special wasn’t just the
exhilarating skiing, but the fact that we encouraged and supported each other when someone fell over.
The long drive (special thanks to Ivan) was filled with laughter and playlists, the cooking was
wholesome, and the deep conversations hit hard. It was an incredible trip that strengthened our
connection and created lasting memories, with plenty of photos & videos to capture those special
moments.
Anticipating Another Adventure - Aiming Ahead
As I turned 21, I looked back at the past year with a sense of accomplishment and a heart full of
gratitude. It surely wasn't easy getting through it given all the commitments that I had, yet I'm glad
that pretty much everything went smoothly, with ample time for me to really relax and forge new
friendships. Nevertheless, I am wary that this is not over yet, and I need to concentrate on getting a
graduate role, as there is simply one year left in my university journey. May my upcoming fourth and
final year be an unforgettable one!
The Gambler's Fallacy / Hot Hand Fallacy
Published on 02/03/2022
An Example to Consider
Say for example you need to catch a bus to work. So far, the bus has been late on 9 consecutive weekdays.
Is the bus going to continue being late on the Friday, the 10th day too? Here are the three possible
answers...:
• Yes: Since the bus has consistently been
late, why would it randomly come on time (or even early)? Maybe this is the defining characteristic of
Sydney Transport, that buses always arrive late during the peak hour morning rush.
• No: What are the chances that it will
continue to be late? Surely passengers have complained by now, and the driver will be cautious of the
traffic, possibly even driving a little quicker to make up for any lost time
• No: The chance that the bus will arrive on
time is equally likely, just like a coin flip. These are all purely random and independent events, so
there are equal odds whether it arrives on time (or early) or late.
Which answer is correct?
Independence
Well first of all, you would need to consider whether these are independent events – which means that
the outcome of one event does NOT affect the probability of another. For example, we are attempting to
draw marbles at random from an urn consisting of 10 red and 10 blue marbles, and the first one we draw
is red. If we replace that red marble and draw again, this is ‘sampling with replacement’, meaning that
the probability of drawing a red marble again is ½, since there are equal numbers in the urn. But if we
do not put that red marble back into the urn after that first draw, then statistically speaking, we are
more likely to draw a blue marble, since there are 10 to randomly draw from, as opposed to 9 red
marbles.
Fairness
We also have to determine whether the events occur fairly, which is a combination of being both unbiased
and independent. If we have a loaded coin and it comes up as heads ¾ of the time, then that is not fair.
Similarly, as in the case with magicians, if we are selected to choose a ‘random’ card from a pack of 52
cards and it turns out to be the Queen of Hearts – this is fair if all the cards are different, but
certainly not fair if this was forced (i.e. all 52 cards were Queen of Hearts).
Gambler's Fallacy
This is essentially clustering illusion, the tendency to erroneously perceive ‘streaks’ or ‘clusters’
arising in small samples from random distributions. It’s also related to choice-supportive bias, where
someone is more inclined to choose something that they feel more positive about, even if that choice has
flaws.
If a coin toss lands heads just 4 times in a row, would you put your money on heads or tails? We’re
probably more inclined to choose tails, since we would instinctively think that it’s extremely unlikely
to have 5 consecutive heads (a 1/32 chance). But remember that the first four coin tosses already
happened, so it’s an equal ½ chance that the final toss lands heads, and ½ chance that it lands tails.
We must not forget to account for the independence of these events, and how what’s happened in the past,
does not influence what will happen in the future.
Hot Hand Fallacy
The hot hand fallacy is also a cognitive social bias, but this time, a person believes an event has a
higher chance of success based on past performance. A popular example is where basketball fans would
think that their favourite player would get “hot” if they score 3 shots in a row, and would intuitively
assume that they will score the next shot too (that the chance of a miss has decreased). While this may
be true in some minor cases, studies have found that there’s no clear evidence of such a correlation
(especially if the opposing team ups their defense against this player). What this means is that we just
have to be more careful about our personal bias playing a factor in swaying our final decisions, where
it’s driven by emotion rather than logic.
Back to the Question
Now answering the original question is a little more complicated in this scenario. A gambler would most
likely say that the bus would not be late, since they would assume the final outcome to be different
from the streak. A person after reading this blog post might think that the chance is equally likely.
The answer? Unfortunately, it’s too hard to tell from this little context, since we don’t know if there
are any other factors affecting this. What was the weather like? Is there always such heavy traffic in
the morning? It’s almost like trying to predict the movement of stock markets – the performance each day
is not really independent. But the point is, that we have to really understand the bigger picture,
rather than being influenced by our personal judgements and biases at times.
Conclusion
From a security perspective, we need to be aware of such cognitive biases. Just because a certain system
has been successful in the past does not imply anything about its security in the future. Even if it
did, we need to be ready for events that are low probability anyways. We cannot just blindly trust that
something works – to prevent being exploited by any malicious intruders, we must always prepare for the
worst... and not think in the mindset of a gambler.
The example and content from this blog post is taken from this source.
Cookies: To Accept Or Not To Accept, That Is The Question
Published on 19/02/22
You’re swiping through TikTok on your phone, and you wonder why you’ve spent the past two hours watching
videos of bad dancing. You’re doing some Christmas shopping on eBay wondering why all the recommended
products are literally the things on your wish-list. You land on a website during your Internet surfing,
receive a popup that says “We use cookies to improve user experience...” and without a second thought, you
press ‘Accept’. What’s wrong? Nothing....
Well, *almost* nothing... As you’ve probably guessed by now, the culprit is the cookie. No, not the
chocolate chip biscuit that you have other day (though it could be the culprit to why you’re gaining so
much unnecessary weight). Essentially, these Internet cookies are text files that are created during
your session when you visit a website, and it stores data that can be used to identify your device,
preferences and behaviours.
Doesn’t sound too bad? As they described earlier, cookies actually do improve your web browsing
experience – from as simple as remembering your login details so you don’t have to input your
credentials every time you visit a certain webpage. If you visit a weather website and you enter your
postcode, the cookies will remember this information and so the next time you check the weather, you
will instantly get results for your area. These cookies are generally not harmful, and for the majority
of us, having alternate recommendations on a product when shopping is super useful (unless you start
going on an impulse buying spree of course).
Unfortunately, it’s not all rainbows and fairy tales, as there are no free lunches in today’s age. If
these cookies can track people, then that means they post a security threat. Yes, maybe they are
harmless 99% of the time, but since they are collecting all this personal data about your browsing
habits, it would all accumulate to create a clearer picture about you as an individual – and that’s
where all those targeted ads come in. It can be much more malicious too – all this information is
vulnerable to data breaches and theft; and worse, all this website traffic data can be sold to external
parties for a serious invasion of privacy.
From this, there’s also another caveat to cookies. The primary objective of businesses is to maximise
revenue and you may be surprised that cookies can contribute to their ultimate motive. For example, if
you constantly search for flights to New York departing at a particular date and time, then the cookies
will remember this information, and in turn, the airline can deduce that your plans are likely
inflexible. As a result, there’s a chance that the price offered to you for flights at that specific
time will be higher than the price of the same ticket for a new user.
So what’s the final verdict? In our 21st century digital era, convenience outweighs privacy for the
general public, and so you can feel free to accept the cookies when there is a popup alerting you – some
websites won’t even work if you reject them. Keep in mind that most websites and applications (like
TikTok) have them running in the background regardless. But as we become more informed about the dangers
of technology around us, we should always stay alert – whether that be rejecting third-party cookies on
questionable pages, or even just reading the Terms and Conditions in more detail. We’re living in
dangerous times, and while we all want that seamless user experience, we must also accept that data
collection is that price that we pay.
Sources
• https://medium.com/decoding-the-jargon/cookies-68a1cbae5904
• https://www.vox.com/recode/2019/12/10/18656519/what-are-cookies-website-tracking-gdpr-privacy
Optus Internship Reflection
Published on 23/01/2022
First Impressions
Where do I even start? Back in May 2021, I noticed that Optus was a Co-op sponsor for UNSW and there were
a few opportunities available for computer science students. Although I hadn’t even heard of ‘Site
Reliability Engineer (SRE)’ beforehand, after doing some research, the role just stood out to me due to
their seemingly significant impact in a business. Sheepishly, I filled out the application questions and
completed the interview; I was genuinely so surprised when I opened an email and found out that I was
successful. One month later, I began my six-month internship at Optus....
As part of the internship welcome on the first day of work, they gave us a tour of Optus. No, this isn't
a typo – a tour. In fact, the main aspect that still amazes me about this company is that it’s an entire
campus, rather than the single building. What does this mean? There are six interconnected buildings
(which of course suggests there’s a range of food options available 😋) situated around the
beautiful natural serenity of ponds and greenery. Despite the lengthy commute to Macquarie Park (though
their shuttle buses from the city were convenient and reduced my travel time to just over an hour), the
overall environment both inside and outside the office convinced me to work in-person as much as
possible.
Responsibilities
As an SRE, I was in the Rapid Response Team within the IT Operations division at Optus. My team was
responsible for maintaining the overall health of the systems, which consisted of applying machine
learning methods to accurate detect issues in production and meet the rising customer demands. The main
software that I used was the ELK stack:
Logstash to manipulate and ingest raw data into the system;
Elasticsearch to perform complex aggregations and define key observability metrics;
Kibana to create the dashboards and present insights using concise visualisations.
During the first four months, I was largely involved with using the entire ELK stack to ultimately
create and refine a series of different dashboards for various applications
within Optus. A mini project I accomplished was building a Java Garbage
Collection Analyser dashboard from scratch, saving up to 30 minutes for each log that we examine
compared to uploading it manually onto an external website. In addition, I efficiently developed scripts
for over 40 alerts during the remainder of my internship, which helped us detect for certain anomalies
in the system without the need for human intervention. For me this entailed querying the data, defining
the thresholds for SLO/SLI,
scheduling the trigger interval, formatting the email and integrating it with our ServiceNow workflow
automation platform. Compared to manual monitoring, I reduced the mean anomaly detection time by 96%,
greatly improving the resiliency of the systems!
Working From Home
Unfortunately, it had not even been two weeks into my internship before the Government imposed much
tougher lockdown restrictions due to the COVID-19 outbreak in late June last year. Something I realised
that is that working from home is only preferred (by me, but I’m assuming also for many of us) if it is
a privilege rather than a requirement. For sure, a big bonus is that my desk is right next to my bed,
which means that I can simply wake up a few minutes before 9am daily 😁😁.
However, working from home diminishes the face-to-face interactions critical for rookie interns like
myself. Having to video call and screenshare when trying to solve a problem with my supervisor was just
not the same (especially if there were Internet issues) compared to directly talking to them in person.
Despite this, I took the initiative to ideate some virtual events for the teams under IT Operations. To
the left, you can see a screenshot of me hosting a Kahoot quiz, where everyone was engaged racing
against the clock answering my trivia questions (and having virtual drinks 🍺!). Fun fact: I was
wearing the Oodie that Optus nicely sent to me to keep warm during the Winter. Moreover, I decided to
hold optional virtual exercises every Friday afternoon, so that we could all stay connected, network and
keep fit. I also volunteered to be the host of remotely introducing the interns to all the Optus
employees. Overall, while it was totally unexpected that I remained home for much of this internship, I
would consider that I made the most out of this situation and tried to bolster the team morale as best I
could.
Greatest Challenge
The greatest challenge would be time management, especially from late October once restrictions eased as
I had so many additional commitments including:
• Studying two university courses in that term (with huge
assignments for Object-Oriented Programming)
• DataSoc directorship work, meetings and catchups
• CSE tutoring (including help sessions)
• Private tutoring (this was also the period in the lead-up to
HSC, so I had more lessons with some of my students)
It was certainly not easy balancing my time for all these activities, as well as having time for
exercise, piano and other volunteering/competitions participated in. I also frequently went into office
for work to make the most out of in-person office vibes (and attending events like the long-awaited
BBQ!), so I really didn’t have too much free time back then. Thankfully, everything turned out
exceptional in the end, and there is now a strong sense of satisfaction as I’m delighted that I managed
such an overwhelming workload so well! 😊
Learnings
The primary insight from my first professional internship was understanding the benefits of a DevOps,
agile workflow mindset and the importance of IT Operations to maximise customer satisfaction despite
being regarded as a cost centre. From my achievements, I have now recognised the integral value of
automations to improve productivity, accuracy and in turn, generate revenue for the business.
Personally, I have understood that staying highly motivated is fundamental to success, which I
maintained by adapting to the lockdown and even lifting my team’s spirits too! In this SRE role, fellow
employees have also been regarded as my clients since I needed to regularly create visualisations and
alerts for them – and over time, I have gained confidence and clarity when explaining certain concepts
to others.
My time at Optus was truly an eye-opening experience for me, being the stepping stone in my career
progression. I appreciate the opportunity to work in this team at such a prominent telecommunications
company, and I am naturally excited for what awaits me in future! 🙏🤩
Second Year of Uni Reflection - Part Two
Published on 16/01/22
I must say that the most enjoyable experience I’ve had in university so far would be joining UNSW Data
Science Society. In fact, I would’ve never imagined myself to have become a veteran of DataSoc, now for a
third consecutive year in the row – when I don’t even study a data science degree!
Imposter Syndrome
Having been successful in my application as an IT/Publications director, I was immediately hit with a
strong sense of imposter syndrome at the beginning of 2021. I never had any prior leadership experience
(apart from being a peer support leader back in Year 10 of high school, but that’s beside the point) and
wasn’t exactly certain about the plans of the upcoming year. What would I do if someone asked me a
question I didn’t know how to answer? How was I going to structure the meetings? Was I qualified?
Initial Stages
Apart from the fortnightly meetings with other directors and executives, the first main event kicked off
during Orientation Week (O-Week). Basically, I made some awkward conversations with mostly first-year
students, trying to convince them to join our society and mailing list before the term started the
following week. Then came the subcommittee recruitment event, where I interviewed all the applicants
interested to contribute to IT/Pubs.
Although I was quite introverted initially, I think it was these two events that allowed me to come out
of my comfort zone and ignore those fears of self-doubt. It was especially heart-warming later in the
year hearing that a successful member only applied because I “had really nice vibes” when I was giving a
pitch of DataSoc back in O-week; and listening to all the interviewees was an insightful experience too!
Subcommittee Member vs Director
I was lucky to have been the co-director of a team of six enthusiastic, hard-working students in the
IT/Pubs portfolio! When the subcommittee members first joined, I thoroughly explained the way our
website operates and wrote instructions that they could follow for the installation, as well as guiding
them through more specific tasks like uploading a blog post. This also involved taking a proactive
approach in screen sharing and demonstrations, with private calls to provide personalised help. After
reviewing their code as they submitted pull requests to merge their Git branches, I provided meaningful
comments that allowed them to understand possible improvements, then explained my ideologies in more
detail during our meetings.
I would say that the biggest difference between me being a subcommittee member back in 2020 compared to
a director was all about responsibility, accountability and taking initiative. It wasn’t just simply
doing assigned tasks anymore, but also to coordinate meetings, stimulate group discussions and suggest
ideas for development or even group outings. While both roles are equally as important, I think my time
as a director was more rewarding, since I had more freedom to manage multiple aspects at once and
oversee the progress holistically, which enabled me to really expand the outreach of the society and
build the DataSoc brand.
IT/Pubs Accomplishments
What did we accomplish? In terms of the website, we further revamped
multiple pages to resolve any inconsistency issues, and developed a new jobs board for aspiring students
to find internships and graduate roles all in one location.
We also managed to maintain a weekly blog routine, alternating between everyone in the IT/Pubs portfolio
and moved towards creating video blogs and interviews towards the end. Finally, we conducted analytics
into our event registration forms and website activity to determine trends and statistics in student
engagement, summarising our findings in a dashboard. Thus, we were definitely a productive team, having
managed to spearhead and successfully achieve our goals of bridging the gap between the society and the
student body.
Enjoyment
Not only did I have an amazing time with my portfolio, but I believe everyone developed strong
connections with each other across the society and we all just became a family, as cheesy as that may
sound. There were a series of inter-portfolio activities planned throughout the year which allowed
students to mix between teams for both work (so they can get a taste of different tasks) and catchups
(for improved social bonding when meeting others). We even organised internal workshops for resume
writing, event hosting and Google Sheets skills (where I also gave a demo of how to create email
automations from scripts), which was informative for everyone. The DataSoc roadtrip stood out the most
for me, which occurred two weeks before lockdown (thankfully), where almost 50 of us had an awesome time
staying on a farm over the weekend. Despite the lingering presence of COVID-19 which was depressing due
to our limited our face-to-face interactions for four months, our society did a good job accommodating.
An example would be HR holding ‘Datalympics’ early in September (after the Tokyo Summer Olympics) where
everyone recorded a series of physical challenges for points in a COVID-safe manner during the lockdown.
Overall, I’m super grateful that such a tight-knit, wholesome, motivated society exists, and that I took
the bravery back in first year to actually apply to become a subcommittee member to begin this journey.
Taking a similar responsibility of IT director again in 2022, I hope that everything will be even more
fun COVID-permitting, and that this will be another year of personal growth.
Stay tuned for my post next week as I reflect upon my first internship at Optus!
Second Year of Uni Reflection - Part One
Published on 09/01/2022
It’s been a whole year since I created this website and started these blog posts. So many things have
changed in 2021... and so many things have remained the same. Similar to my three-part series last year,
I’ll be writing three posts summarising some of the key moments of my second year at UNSW.
If you ask me what I consider to be the most significant part of 2021 personally, I’d encapsulate it into
three main aspects: CSE Tutoring, DataSoc Directorship and Optus internship (spoiler alert: this
series will revolve around these topics)....
Then what has “remained the same”? I’m sure everyone around would have to agree that it’s the ongoing
outbreak of COVID-19. We are now going into the third year of this pandemic, and every time we keep
hoping for the best, and yet, unfortunately situations have almost been deteriorating
😢😢.
I guess we just have to keep pushing through and let’s look forward to a brighter tomorrow!
Peer Mentoring
When term one began, I was a peer mentor at two different societies, and was able to share my
experiences with first-year students studying computer science, mathematics and data science. Looking
back, my own first-year journey was largely classified with remote learning, online exams, and
lockdowns, so initially I wasn’t even sure if I had “really lived the uni life” to be qualified as a
peer mentor. But I’m glad to have been a part of inspiring and transitioning these first-years from high
school to university – especially since everything was actually still in person during term one last
year. From lunch gatherings to Discord study sessions to pizza trivia nights, it was a fun-filled way to
get to know all these fledglings.
CSE Tutoring
Now, onto a completely different topic, I would consider myself to be someone who has a genuine passion
for teaching. I’ve been tutoring numerous students after I received my HSC exam results – from tailored
individual lessons to overseeing classes of 15 students at coaching centres. I’ve also taught a variety
of subjects to students of different year groups, and created resources for companies too. But computer
science is something that I’ve never taught prior to 2021 term two. In fact, it’s a field that I’ve had
almost no experience coming into university altogether. Despite applying to becoming a CSE tutor every
term after completing the first introductory COMP course, I’ve had no luck – partly due to the serious
competition from all the students (and the fact that tutors usually seem to continue their current job).
It was an elated surprised when I received the email that I received tutoring offers – for not one, but
multiple classes! 😁😁😁
My screenshare as I do a live code demo explaining linked lists for DPST1091 (Introduction to
Programming).
Therefore, term two last year was when I began my role as a Casual Academic at UNSW. I was a lab
assistant for two classes of COMP1521 (Computer Systems Fundamentals) under the faculty of Computer
Science and Engineering (CSE), as well as being the primary tutor for DPST1091 (Introduction to
Programming) under UNSW Global. As an assistant tutor, I mainly help students complete their lab
problems, explaining how to debug their code and providing hints for their assignments in help sessions.
As for being the main tutor in a class with international students, it’s a matter of patiently walking
through the theoretical concepts, having live code demos of problem solving and constantly asking them
if they have any questions. I admit that it was extremely nerve-wracking initially – driven by my
feelings of imposter syndrome – and spent a decent amount of time preparing for each lesson beforehand.
But it was also certainly an extraordinary experience, the fact that I could spread my knowledge for
something that’s directly related to my degree. Not get me wrong – teaching a subject like Extension 1
Mathematics is cool since I’m doing a maths degree, and likewise English stimulates my brain in both a
creative and analytical sense, and that’s the very reason why I enjoy teaching while studying. But I’m
just glad that I never gave up and kept applying to become a COMP tutor at university.
Squid Game
To finish this post off in a light manner, how could I forget about ‘Squid Game’? It was the
most-watched show on Netflix and the most trending topic all over social media during the months of
September and October. It was term three when I watched it, a period that was super difficult for me to
manage my time, so I felt somewhat guilty back then just simply procrastinating. Good thing I waited
until I submitted one of my comp assignments, and could (sort of) binge it on the weekend. Honestly, I
found that it was exceptionally made, with a dramatic plot line, amazing cast with some emotional scenes
and thrilling cliff hangers that made me want to immediately watch all the episodes at once! When I
replayed it on TV with my family at dinner, they simply commented how it was all so unrealistic...
🤦 But here’s a photo of the giant Red Light Green Light doll which arrived in Sydney just before
Halloween – spooky.
Hey Apple, Take My Money
Published on 28/10/2021
It was 19th October 2021 and I woke up at 4am. FOUR IN THE MORNING. Was it because I had a plane flight?
Imagine having the opportunity to travel during these times. Maybe I had an assignment due the next day?
In that case, I probably wouldn’t have been sleeping beforehand (jokes aside, please don’t leave it to the
last minute). The reason was ridiculous: there was an Apple event.
Exactly why do so many people love Apple products?
Let me provide some context first. According to StatCounter, over 72% of
smartphones worldwide have the Android operating system whilst iOS sits at a ‘mere’ 26% in the last 12
months. Taking a closer look at the statistics for Australian users: 55% iOS and 42%
Android. What’s the reason behind this? But let’s also consider the influence of Apple in
particular. Once we realise that there are “nearly 1300 brands producing over 24,000 distinct Android
devices” (Official Android website) whereas iOS
was exclusively created and developed by this company, we finally understand its domination
within this competitive market.
Disclaimer: everything mentioned in this article is just from my limited perspective and I will try
to minimise any bias.
Apple Ecosystem
Now, I’ve been using Android phones up until this year, and although they were great, I felt that there
was no real integration with anything around me. For example, something as simple as transferring files
to a computer. Would I use Bluetooth? Google Drive? Email? A physical cable connection? These methods
technically work, but they are all extremely tedious. In addition to these old-school methods, the
AirDrop ability on iOS and macOS devices makes this process much quicker. Apple has developed a wide
range of products, including tablets, headphones, watches and TVs. But it’s also the software such as
iCloud, AirDrop and AirPlay that really integrates them together to create the optimal user
experience. Auto-pairing and finding lost AirPods? Sounds good to me!
Individually, these are all solid products, but together, the user experience is a whole new level.
Source: Tech Journeyman
Apple not only lures us into their ecosystem, but they effectively prevent us from leaving
too. Think about their choices of opting for the Thunderbolt ports, or even making the
decision to completely remove the headphone jack from the iPhone. Despite the possible absurdity or
their risk of facing backlash from people’s irritation, they are not solely creating a unique brand.
Apple is building products that complement only each other seamlessly while being actively
hostile to other products. If you already have the iPhone or the MacBook, you would be much
more likely to buy the Apple Watch for tracking health, as well as the iPad (and then the Apple Pencil)
for creating sketches. Because which other brand would also allow us to receive calls and store
reminders into the same app via voice recognition too? We all eventually succumb to exactly what Apple
wanted – for us to spend more money buying their products. I guess it’s actually not
easy to escape the invisible walls of this utopia and to experience some of those inconsistent realities
outside...
Fear of Missing Out
We all know that Apple products are expensive. That’s the very reason why the percentage of Apple users
worldwide is much less than that of Australia, as shown in the statistics above. Fittingly, India only comprises 3% of Apple’s
market share even though it’s the second largest smartphone market since people have low per
capita income. If you only need a basic phone, then why waste money on an overpriced
iPhone? There are Android phones that cost less than $100, whereas the cheapest iPhone SE
starts at $679. But countless people in developed nations are also more likely to be using products from
this internationally recognised brand if everyone around them are doing so – just so that they don’t
feel they are missing out on anything. Apple’s marketing message conveys lifestyle, class and
universality, and who wouldn’t want to be part of this exclusive club? This can also be
attributed to their constant release of events and upgrades throughout the year so that we are reminded
about their impact and strong reputation, in turn, inclining us to spend. The ‘price’? A vicious cycle
of credit card debts since so many of us weren’t able to afford them in the first place.
Let’s take another look at the iPhone 13 that was released last month. They finally introduced
120Hz refresh rate, a feature that certain phones had since 2017.
A 20% smaller notch, yet many smartphones don’t even have a notch and just have a
hole-punch selfie camera instead (which can be
invisible!). The continual lack of under screen fingerprint sensors is still
inconvenient as Face ID is pointless during this mask-filled epoch of COVID-19 – whereas Apple’s largest
rival, Samsung, had implemented this since the Galaxy S10 series. However, this doesn’t necessarily make
iPhone 13 inferior; I’d argue that it’s an absolute beast of a phone with cutting-edge technology that
excels in other aspects. What I’m trying to say is that even though some of its specifications
and features lag or simply do not match other smartphones in the market, people still buy it due to
its brand name. Although it’s just a small improvement to the camera or battery life with
some minor tweaks here and there, we are still willing to fork out thousands to upgrade to the latest
phone. FOMO.
The price of a fully maxed-out Macbook Pro is $9149. The new M1 Max chip sounds cool, but do most of
us even realise the extent of its specifications? For sure, this laptop is powerful, but also highly
unnecessary for 99% of people, and still a lot of us blindly purchase such Apple products.
Making a Difference
Of course, the underlying reason why Apple has maintained their brand name must be how their products
has exceeded customer expectations. No one needs to be a professional to use those products since Apple
has provided a user-friendly experience that gets the job done. Easy to say, difficult to achieve. It’s
a culmination of having unparalleled ecosystems, constant innovation and resonating with the
customer that has fostered Apple to become a global leader. Steve Jobs’ announcement of the
iPhone in 2007 was undoubtedly a technological revolution, transforming the landscape of the entire
mobile market. Building upon the fact that smartphones aren’t limited to call and text functionalities,
Apple has never failed to disappoint since. By evolving to provide the best customer experience through
the seamless integration of their various products, Apple has truly made a significant
difference in our lives.
Conclusion
So, I was watching the live release of the new MacBook Pro in the October Apple event. How much does it
cost? Well, the fully maxed-out 16-inch MacBook Pro with the M1 Max chip, 64GB unified memory and 8TB of
SSD storage costs an astronomical $9149. Do I even need the base model? No. Can I afford it? No. But
moments later for all I know, my wallet is crying. 😭😭
GitHub Copilot: Could This Be The End of Developer Jobs?
Published on 29/07/2021
We all thought that pursuing a degree within computer science would be safe. As we enter a digital era
driven by the technology advancements worldwide, an alarming number of occupations are becoming outdated,
automated or just rendered redundant. Surely a career in the STEM-related field would be immune to
unemployment? But now we’ve gone to the extent of developing something that will write code for us....
Could this be the beginning of how “artificial intelligence could spell the end of the human
race”?
What is Copilot?
Described as “Your AI pair programmer”, GitHub Copilot is a service that helps developers write better
code by providing suggestions. Powered by Codex – a deep neural network language model created by OpenAI
– Copilot was trained on billions of lines of open-source code from GitHub.
The official website explains how GitHub Copilot
works.
All you must do is to provide some meaningful comments (sometimes a clear function name is sufficient)
about what you want to achieve in your code, and it will produce a series of different suggestions that
you can choose from. Currently conveniently available as an extension in Visual Studio Code, Copilot is
also compatible with many different programming languages.
Benefits
GitHub Copilot generates code recommendations by drawing context from the file that you’re working on,
increasing your overall efficiency. With its smart autocomplete feature, it will streamline the process
of writing boilerplate code and tests, reducing the need to search for answers or examples on the
Internet. In addition, the fact that it can show alternatives rather than just a single suggestion means
that you can evaluate the provided solutions and make adjustments accordingly. This breakthrough can
lower the barrier for beginners entering the industry, and really highlights how machine learning can
help developers build software.
An example of GitHub Copilot’s autocomplete functionality from its official
website.
Issues
Unfortunately, major issues also arise with the development of such services. For starters:
copyright. As mentioned in this
article, “the user has no way of knowing if the algorithm made a particular piece of code up by
itself or stole it from a code repository protected by a license”. There have been many reported cases
where the code generated by Copilot was identical to an original open-source repository. Just check out
this link where the user wanted
an “About me” page and Copilot has literally reproduced an actual person’s webpage. A phenomenal
tool? Or a copycat exploiting other programmers’ hard work?
On the official website, GitHub Copilot tries to address this issue by describing the software as “a
code synthesizer, not a search engine”. By stating that it was trained on data from publicly available
sources, it also mentions how it is unnecessary for us to credit this service, and how all of its
suggested code belong to us. Too good to be true? Well, it means that the final program that you
write for a company could be sued if the autocompleted code breached copyright laws. Just
imagine the severe consequences that could cause...
Armin Ronacher, creator of the Flask framework for Python, unimpressed with the
potential copyright violation as he demonstrates an example of plagiarism here.
Now, was Microsoft really acting with philanthropic interests when it invested $1 billion in OpenAI two
years ago, with the aim of making the lives of programmers easier? Their underlying objective was still
to assert dominance in the industry, potentially even to create a monopoly.
Is it legal for them to monetise this tool if it reproduces code snippets from
licensed repositories?
While it mentions that no private code is shared with other users, Microsoft also states how it “is used
to improve future versions of the AI system”. Who knows what they are doing with your work? In contrast,
if you are interested in exploring how such data mining is not copyright infringement, take a look to
read these two articles here
and here.
On another note: inaccuracy. Why do you think Copilot offers alternate suggestions?
Because it’s nowhere close to being accurate and you need to still check and modify the code to ensure
that it fits within the context. According to OpenAI’s research, Copilot only gives the correct
solution 43% of the time on its first try. Reading code can be harder than writing code, and
it is essential that programmers understand every line of code that has been autocompleted rather than
blinding using it. Note that Copilot doesn’t compile the code or check that it actually satisfies what
it’s supposed to do, and so there may still be a lot of effort required to debug and refactor those
suggestions. Otherwise, any insecure coding patterns, neglect to account for edge cases or references to
deprecated libraries can all be the root cause of a corporation’s downfall.
Final Verdict
If you’re worried about your career being at risk: you shouldn’t be. Even if we ignore
the aforementioned issues of copyright and inaccuracy, GitHub Copilot is only supposed to improve the
speed and convenience of writing code – but not replace your worth as a programmer. Just because
it helps us solve problems does not mean that it has the capability of making our jobs
obsolete. After all, that’s like saying “What’s the point of learning to code if I can just
copy and paste from Stack Overflow?” As you may have realised after all those painful hours of
debugging, it’s not as simple as that.
Remember that software engineers aren’t only responsible for programming either – defining the problem
and setting up the initial structure aren’t achievable by Copilot. It can only enhance our
productivity at best, as it’s just unable to complete complex tasks like meeting customer
requirements or trying to magically build a whole website.
Such a tool lacks the human factor of innovation in software development too. This is
particularly the case with this AI, since it provides suggestions based on existing code from previously
trained data. Of course, Copilot needs to be strictly prohibited for university students, as it
obviously eliminates the integrity of assignments and exams. If you try to take the easy way out during
the early stage of your fledgling career, then you might really have a hard time remaining competitive
in the future.
Regardless, it’s incredible how far Artificial Intelligence has come and the extent of how GitHub
Copilot could realistically become integral to the daily workflow of programmers in the future. Who
knows what we can achieve in, say, the next 20 years? Maybe there will eventually come a point where
there is an AI takeover... Luckily for us, that won’t be happening anytime soon.
A Comprehensive Guide into Regex for Beginners
Published on 27/05/2021
We all know about how Command F (or Ctrl+F) allows you to instantly search for a particular word within
thousands of lines in a file or webpage. But what if we wanted to search with more parameters on the
results? Is there a more powerful alternative to find matches straight from our terminal? The answer is
YES – and it’s Regex!
What is Regex?
A regular expression (or regex for short) is a string that specify
search patterns, and is incredibly useful for extracting information from any text. It is commonly used
for ‘find and replace’ operations, web scraping and checking strings (such as validating emails or testing
if there are any spelling errors in a word). This blog post is a general guide into the basics of regex,
with a question set provided at the end for you to test your understanding. I suggest that you follow
along and check out Regex101 or RegExr to
write your own regex patterns and then testing them against some strings which you supply.
Regex Syntax
Anchors
Anchors do not match any character, but instead specify the position in a string that the regex should
match.
• ^
denotes the start of a string
• $
denotes the end of a string
Let’s say you wanted to match the word ‘he’. If you just have he
as the regex, you’ll have
a series of other words returned, since the command will literally return any string that contains ‘he’
anywhere. Now, if we tried ^he
, then we’ll match words like ‘hear’ and ‘hexagon’, since
this means we want ‘he’ to appear at the start of the string. Similarly, if we tried he$
,
then we’ll match words like ‘loathe’ and ‘backache’ since it now means we want ‘he’ to appear at the end
of the string. Meanwhile, if we have both anchors inside the regex like ^he$
, then this
means that we want to match all words which are strictly ‘he’.
Character Sets
A character set is used to match a single character out of several specified characters wrapped around
square brackets.
• []
to match any character inside the set
• -
to denote a range inside a set
• ^
to exclude the characters inside a set
(not to be confused with its anchor meaning from above)
For example, [jmy]et
will match any of the words: jet, met and yet (again, remember that
there are many other words that this regex could match, as there are no anchors). We can also
conveniently use ranges such as [a-z]
, [D-K]
and [0-9]
to specify
the corresponding letters or digits without having to list them out in an inefficient manner. Now, what
if we wanted all the characters except for a particular few? Say I wanted to match any character instead
of the letters 'p', 'q', 'r', 's' and 't'. In this case, we can write [^p-t]
, where the
caret symbol ^
negates the character set. You may be wondering: doesn’t the ^
anchor specify the start of a string? Well, the caret symbol has two meanings depending on the context
(whether ^
is the first character of a regex or if it’s inside a pair of square brackets).
Special Characters
So far, we have only been restricted to literal characters, but regex also has a few characters with
special meanings that enable this tool to be so effective in its pattern matching.
• .
matches any one character (except a new
line \n)
• *
matches zero or more repetitions of the
previous character
• ?
matches zero or one occurrences of the
previous character
• +
matches one or more occurrences of the
previous character
• {n}
matches n occurrences of the previous
character
The period acts as a wildcard that matches any character (could be a letter, digit or symbol). So
b.e
can match ‘bee’ and ‘bye’, as well as ‘b5e’ and ‘b!e’ if we are not restricted to a
dictionary input. Now, let’s consider the regex .*
: it denotes having zero or more of any
character, and this is the most common pattern you’ll encounter when writing regex. Therefore,
^b.*e$
means that we want to find complete words starting with the letter ‘b’ and ending
with the letter ‘e’. This will return words including ‘be’, ‘beware’ and ‘brilliance’. A demonstration
of this with different test strings using Regex101 can be found in Figure 1 below. I won’t go into too
much depth into some of the other quantifier symbols above, since their usage is very similar to the
asterisk above.
Figure 1: Using Regex101 to highlight the different words that could be matched from a regex
pattern
However, what if we wanted to check whether a user created a valid 6-digit pin? Something like
[0-9]+
will not work, since it would match even if the user entered in 4 digits. One way is
to have [0-9][0-9][0-9][0-9][0-9][0-9]
but as you can see, this is very tedious and clunky.
Instead, we can specify the quantity by wrapping the number of repetitions around curly braces
{}
afterwards. Thus, a simple solution to the given question would be to write
[0-9]{6}
.
Alternation
Alternation allows for matching a single regex out of several alternatives and can be treated as the
union of strings.
• abc|xyz
matches either ‘abc’ or ‘xyz’
We use the pipe or vertical bar |
symbol to match a group of characters on either side.
This is not to be confused with the character set above, since the characters inside the square brackets
are only to denote a single character in the matching string. Therefore, cat|dog
will match
either ‘cat’ or ‘dog’ whereas [cat][dog]
will match strings including ‘cd’, ‘ad’ and ‘to’.
Note that you will need to use parentheses ()
if the alternation appears in the middle of a
string. As an example, s(ol|am)e
will match ‘sole’ and ‘same’. If you wrote
s[ol][am]e
, then ‘some’ would be matched instead.
Escaping
Since some characters have special meanings, we need a way to differentiate between their roles in regex
syntax and their literal presence in a string. This is where escaping comes in.
• \
escapes the meaning of a special character
Let’s say you wanted to return all the phone numbers on a website that exist in the format XXXX-XXXX.
One common mistake is to write the regex as [0-9]{4}-[0-9]{4}
since the hyphen actually has
a special meaning of indicating a range, and so the hyphen between two brackets makes no sense. Instead,
we need to escape its special meaning by writing [0-9]{4}\-[0-9]{4}
. As a fun fact, you
would have to write \\
if you wanted to match a literal backslash, since the first one
escapes the special meaning of the second backslash.
Flags
Regular expressions are sometimes delimited with forward slashes /
in certain programming
languages and contexts. They may have flags that affect the search, and here, I’ll be briefly describing
the uses of the g
and i
flags.
• /regex/g
denotes global matching
• /regex/i
denotes insensitive case
By default, a regex will only return the first match, and so if you wanted to return multiple matches,
you would need to enable the g
flag. Additionally, if you don't want to specify any
difference between uppercase and lowercase in your regex matching, you can enable the i
flag. In Figure 2 below, the first two lines are not matched since the regex pattern is not
case-sensitive, and only matches the third line since only the first match is returned.
Figure 2: Using Regex101 to highlight the matching when there are no flags enabled
Questions
At this point, hopefully you’ve acquired a basic understanding of how to write regular expressions. Now
it’s time to put your skills into practice. Don’t worry if nothing really clicks just yet, as I’m sure
you’ll get the hang of it once you attempt some of these questions.
First of all, click here
to download a text file of the English dictionary.
Note that there are many variations to a dictionary file, so please make sure that you download this
version to correctly answer the following questions.
Open up a new terminal and move to the directory containing the dictionary text file that you’ve just
downloaded. Directly from the command line, we use a command called grep
in order to find
matches using the regex. As a general tip, we should also include the -E
flag (or
egrep
for short) so that we can handle extended regular expressions with special
characters. Then, the regex should be enclosed in single quotation marks (we don’t need to delimit with
slashes in this case), followed by the filename. Therefore, the basic format for you to answer the
following questions for a certain regex should be: egrep ‘regex’ dictionary.txt
We can find the number of occurrences from the match by piping (adding a vertical bar to) the output
with wc -l
, which prints the number of lines. To display only the first or last ‘k’
results, pipe it with head -n k
or tail -n k
respectively, where ‘k’ is 10 by
default.
For example, if we wanted to find out the number of words containing the letters ‘st’ consecutively, it
would be written as: egrep 'st' dictionary.txt | wc -l
Now, it’s your turn! Have a go at answering the following questions. To make it slightly easier for you,
I have provided the expected output beneath each of these questions. If you are unsure how to do at a
particular question, scroll down to find the sample solutions (hide them before attempting a question).
1. How many words begin with the letter ‘z’?
1043
2. How many 3-letter words end with ‘at’?
16
3. How many words have exactly 20 letters?
204
4. How many words have the letter ‘q’ followed by a letter that is not
‘u’?
67
5. How many words do not have any vowels?
219
6. How many words have the double letters ‘ll’ or ‘mm’ or ‘nn’?
16954
7. How many words begin with a letter from the first half of the
alphabet (‘a’ – ‘m’), followed by a letter from the second half of the alphabet (‘n’ – ‘z’), and then
continues to alternate between letters from the first and second half of the alphabet?
927
8. List the first 10 words that begin with the letter ‘t’, with the
letter ‘w’ as the 3rd last character.
takeaway
takedowns
tallowed
tallower
talweg
taniwha
tarrowed
tattowed
tawas
tawed
9. List the last 6 words with 5 vowels that appear in the order ‘a’,
‘e’, ‘i’, ‘o’, ‘u’.
sacrilegiousnesses
sarraceniaceous
supercalifragilisticexpialidocious
ultrareligious
ultraserious
valerianaceous
10. List all words with strictly 5 vowels that appear in the order ‘a’,
‘e’, ‘i’, ‘o’, ‘u’.
abstemious
abstemiously
abstentious
arsenious
caesious
facetious
facetiously
Sample Solutions
Note that we should technically use [a-z]
instead of the .
wildcard to specify that we want to begin with a letter, but it’s fine in this case
since we are in the context of a dictionary (i.e. there would be no numbers or other
symbols anyways).
Another comment is that we do not need any flags for this purpose, since all the
words are on a separate line and in lower case.
Conclusion
If you could make it all the way, especially as a beginner – congratulations! Well done for having an
attempt at the questions, and don’t be let down if you weren’t able to complete some of them (after all,
they’re supposed to be challenging). Regex is such a powerful tool, so of course, the content covered in
this guide has only been the tip of the iceberg. If you have found it interesting, please take the
effort to dive deeper into aspects such as bracket capturing, greedy matching, and lookaheads. Be sure
to check out some of the provided links below for further references, examples, and more advanced
topics.
• https://www.sitepoint.com/learn-regex/
• https://medium.com/factory-mind/regex-tutorial-a-simple-cheatsheet-by-examples-649dc1c3f285
• https://www.keycdn.com/support/regex-cheatsheet
• https://www.regular-expressions.info/tutorial.html
• https://www.rexegg.com/regex-python.html
How You Can Get Involved In 'The Sexiest Job of The 21st Century'
Published on 25/03/2021
Half the term has passed, and you’re scrambling to watch the week two lectures at 2x speed, contemplating
your life choices because you’re struggling to keep up with the boring burden of your uni degree. Or maybe
you’re that top HD student who goes exploring beyond the scope of the course outline, with plenty of time
for work, socialising, and making yourself competitive careers-wise....
Regardless, data science is a field that everyone should consider in this day and age.
Why you should be interested in Data Science
Don’t get me wrong – by no means am I telling you to switch degrees (totally unbiased, as I don’t study
data science myself). But learning some related skills would be incredibly useful for your future
aspirations. You might argue: “why would I bother doing that if it’s not even relevant to my
degree?”. Well, data science has penetrated into all industries as everything is data-driven in
this digital world. With ever-increasing amounts of data around us, there’s a high demand for people who
can interpret this raw data and generate meaningful insights.
If you don't believe me, just Google “why study data science”, and you’ll discover numerous
reasons why it’s definitively labelled ‘the sexiest job of the 21st century’. Sounds too good to be
true? Overhyped? It may be challenging, but certainly not mundane, as this relatively new field is 2nd
in Glassdoor’s 2021
rankings of the top jobs in the US. Consequently, many jobs out there require some extent
of data literacy, and the reality is that employers won’t really care about your
degree much. Instead, you will stand out amongst other candidates if you’ve upskilled for
your desired role, and of course, demonstrate your passion.
“Without big data analytics, companies are blind and deaf, wandering out onto
the web like deer on a freeway.” (Geoffrey Moore)
What are some skills that you should know
I’m no expert, so I’d highly recommend reading this article here,
which is a complete beginner’s guide to data science. Although this field is an amalgamation of
computing, mathematics and business, the career pathways do not require the same level of expertise.
Having said that, it would be worthwhile to have some fundamental knowledge in:
• Programming
(Python and R, with their included libraries, are most commonly used for data wrangling and analysis)
• Statistics
(maths forms the foundation of building various models and performing quantitative analysis)
• Data Visualisation (representing
data in a graphical format is necessary to easily identify and understand trends)
All this might sound overwhelming at first, especially if you’re trying to learn it independently – but
it’s all part of the learning process. There are several free online courses (such as Coursera, Udemy,
Udacity) where you can go at your own pace. Once you’ve gained proficiency in an area, try to
build a few personal projects. The cool thing is that you can apply your skills and
draw conclusions from a dataset of your own liking.
At the same time, it’s redundant getting carried away with the whole technical skills aspect. Many
students undermine the significance of effective communication, yet it is important to
be able to clearly articulate your findings in a concise manner to both technical and non-technical
audiences. Also, while processing databases and visualising dashboards is ultimately the purview of a
data scientist, it’s not something that we should drill into initially. For the layman, the focus would
be more on intellectual curiosity, since the quality of one’s insights to discover
those underlying truths is often motivated by their mindset of constantly asking the question “why”.
Final Thoughts
Feeling scared at the workload? Again, don’t be let down, particularly if you’re not studying a data
science related degree – it’s an extraordinary step you’re taking just to obtain a glimpse into the
fascinations of this broad profession. You’d be surprised at the number of people who are data
illiterate and fail to interpret the most basic graph. However, the next time you procrastinate (which
is probably multiple times a day for the majority of us...) just remember one thing: it’s never
too late to start getting involved with a job of the future!
First Year of Uni Reflection - Part Three
Published on 31/01/2021
I hope you enjoyed this series of reflections regarding my first year of university. Now how can I finish
off without discussing what I’ve been doing during my spare time amidst an unimaginable year...?
First of all: work. After completing my final HSC exam and had the time of my life aboard a two-week
cruise on the Majestic Princess, I didn’t want to spend three whole months with absolutely zero
productivity. I was successful with my teaching demonstration at Dr. Du Education and was given the job.
I started with marking students’ quizzes and homework, and when the school term began, I had the
responsibility of teaching mathematics to a small class of Year 9 students. Meanwhile, I was also
fortunate to have landed a permanent job at The Brain Education. There, I taught English to classes of
15 Year 12 students, as well as having a casual role of marking and teaching private students.
How did I feel? For sure, it was pretty nerve-wracking when it first started, especially when I had to
control a whole room of inquisitive yet stressed students about to undertake the HSC. But that changed
quickly when I empathised and established stronger connections with all of them. The friendly atmosphere
made everyone feel comfortable, and it was satisfying whenever I could think of analogies or relatable
examples to help them better understand complex concepts, knowing that I made a difference with their
studies. Teaching certainly improved my self-confidence and communication with others.
Then there’s exercise. Never would I have imagined that I would proactively walk 30 minutes to the beach
and then go for a 5-10km run. But when I tried doing so, the whole sensation of having the breeze
blowing against my face, or witnessing the different colours of the sky as the sun set was just
wonderful. It wasn’t always easy to stay committed with a beach run on a consistent basis, but I
eventually grew more disciplined. It was a relaxing (though I’d say sometimes it was more
tiring) way to keep healthy, admire the beauties in nature and allow my eyes to take a break from
staring at a computer screen all day.
Anything else that I did whilst keeping COVID-safe? Well, I didn’t really touch the piano ever since I
stopped my weekly volunteering at two aged care centres at the end of 2019. But then I watched this
Korean drama called ‘Crash Landing on You’ and become completely engrossed by one of its theme songs
‘Song For Brother’. I’ve uploaded a video of myself playing on the media page,
and now practising piano is something that I do daily. Furthermore, I learnt to cook some basic meals
for my family, and personally now, I feel that dishes prepared by myself taste the best!
COVID-19 has affected every one of us in some way or another. But I am incredibly lucky to have escaped
its devastating ramifications unlike many other families worldwide. I’ve kept myself busy in a year that
likely stagnated most people’s lives. From balancing uni studies with society volunteering, work,
exercise and hobbies during quarantine. I appreciate everything that I’ve experienced to date, yet I
guess it could’ve been much better in the absence of the pandemic.
2020 was indeed a unique way to spend the freshman year at university, and I won’t ever forget it! Let’s
now cross our fingers that life will be back to normal for everyone soon!
🤞🙏😄
First Year of Uni Reflection - Part Two
Published on 28/01/2021
Continuing on from my previous blog, I’ll now be focusing on my society involvements at UNSW. All the
events back in high school were organised by teachers; now everything is done by students. Little did I
know that there was so much work necessary in organising an industry Q&A session, just as an example...
– from emailing potential sponsors, to negotiating availabilities, to registering student interest, to
having rehearsals and finally to hosting the live event. It was one thing to attend such events and
another thing to be in charge of running them. I’d say that being a significant part of three societies
over the past year was one of the best decisions I’ve ever made!
For a first year like me back in 2020, I didn’t know much about the field of computer/data science in
the real world. That all changed when I attended these society events, with invaluable opportunities
such as personalised mentoring sessions from employees at marketing-leading companies,
resume tips and mock interview sessions I also undertook a three-month leadership program ran by the
UNSW Management Society,
with entrepreneurs sharing their wisdom, leadership training workshops and even a volunteering component
where I maintained an ongoing conversation with aged care residents via the form of a letter. Of course,
societies aren’t just about professional development – there were also chill games nights, speed
friending and Python programming tutorials. They definitely made the first year uni life enjoyable and
were something to consistently look forward to during each term.
Now at the end of the first week at uni, subcommittee applications opened and the thought of making a
contribution to a recognised societies excited me. Without much knowledge, experience or expectation, I
had written an application for the role as an IT/Publications subcommittee member at UNSW Data Science
Society. Thankfully, I got through, then passed the interview round and was successful – and from there,
it was just an amazing ride. Until August, my team collaborated in undertaking a major revamp for the
website, with weekly online catchups to review each other’s progress and provide suggestions for
improvement. It was so interesting learning effective Git practices as well as the Bulma and Jekyll
frameworks. We would also have the responsibility of publishing newsletters (and later blogs after it
was introduced in the new website) on behalf of DataSoc, where we’d advertise upcoming events and
captivate readers with worldwide data discoveries. Towards the end of the year, I was involved in
conducting analytics and creating charts to analyse the trends in user engagement and activity to try
improving the overall outreach of the society. It was a truly enlightening experience, and that’s why
I’ve continued my involvements this year as a director to lead a group of enthusiastic students!
I realise that this post will get quite long-winded, so I’ll try being more concise from here on
in.
Since I had a lot of free time with no physical classes for a large portion of the year, I decided to do
more volunteering and give back to the lively student community. Therefore, I joined UNSW Cloud Society
as a member under the business development portfolio, where I had the task of securing partnerships.
This time, I acquired skills such as drafting professional emails, talking to guest speakers and hosting
events that would be live streamed to students. Additionally, as an events coordinator at Real Skills
Education (a non-for-profit organisation), my role was to initiate workshop ideas, creating the
presentation, writing a script and finally presenting it to students across multiple universities. This
really nourished my confidence and public speaking, as I refined the flair of my delivery and became
familiar with facilitating live Q&A sessions.
While these societies allowed me to develop myself personally and nurture soft skills that are adaptable
in the workplace, the whole process of meeting new people was just as pleasant. Due to the pandemic,
most gatherings were held online, but we did also have a few in person dinners with each society.
DataSoc planned a carpool to travel to Seacliff Bridge and even a road trip during the holidays. Despite
the fact that there was an enormous time commitment on my end attending all meetings and taking
initiatives whenever possible, looking back, I believe it was (and will continue to be) all worth it!
First Year of Uni Reflection - Part One
Published on 26/01/2021
It’s only been a day since I posted yesterday, but I mean I’m going to be busy with uni starting again
soon. On that note, this will be the first of a three-part post where I reflect upon the learning during
my first-year university experience.
“For many, young and old, 2020 will be the toughest year of our lives.”
Who could’ve imagined that ...
this global pandemic would occur at the beginning of the decade and impact so many
lives? The year when I step into adulthood and should be experiencing the thrilling uni life with no
worries in mind. However, I’ve got to admit that I am grateful about my situation in light of this
unprecedented event and honestly, I felt positive throughout the year.
Nervousness was the word I’d use to describe my initial emotions as I sheepishly entered the hall for my
9am lecture for Discrete Maths on 17 February 2019. But that subsided immediately as I started
conversations to students around me and already, I felt more relaxed in that supposedly daunting
environment. The lecturer was also very engaging, and I was relieved that the content being covered
wasn’t excessively difficult during my first two hours studying at UNSW. During that first week I was
amazed by how much I had learnt, especially in computer science, where I had almost no prior experience.
The social atmosphere was also great, as I met a many new people and had group peer mentoring sessions
providing useful tips and tricks. It was exhausting too, having 20 contact hours on campus, social
gatherings and working for 17 hours as a tutor at a company.
I won’t go into too much detail into every single event that happened over the past year as that’ll
obviously make these blog posts overly long. But after a remarkable computer science camp, the extent of
the pandemic forced all lessons to be shifted online. Three weeks (with a few optional in person classes
in term three) was all the time I had on campus. Remote learning was another completely new experience,
with lectures being live streamed and recorded, and tutorials/laboratories being held on platforms like
Blackboard Collaborate and Zoom. This was great as it allowed us to have our questions answered by
professors real-time, and the breakout rooms for problem-solving sessions to be conducted in a
personalised team format.
You might be wondering whether I preferred in-person or online classes? Well, both options have their
advantages. For practical sessions like computer science problems, in-person classes are definitely
better as everything was explained with greater clarity. On the other hand, online classes are much more
convenient as I could learn straight from home, and there’s also the possibility of pausing, repeating
and watching recordings at any time. However, remote lessons are sometimes affected by Internet
disruptions, and more drastically, I found it harder to keep motivated studying. The poor mindset that
“Oh, I’ll just watch the recordings later”, which lead to constant procrastination, took a while for me
to neglect and instead stay on top of my work. The social aspect was also eliminated, as it was more
awkward trying to stimulate conversations with students whom you’re less familiar with via text as
opposed to via speech. So while I’m totally fine with both options and would like to adopt a mixed
approach, I would slightly lean towards the more traditional face-to-face method of learning if that’s
appropriate given the current circumstances.
University is truly different from high school. There’s a lot more freedom, which means it’s up to us
students to stay responsible with our completion of homework, reminders about deadlines and revision for
upcoming exams. I genuinely believe that it’s a more vibrant environment as I can meet students from
diverse educational backgrounds and there are just so many events planned throughout the year.
Stay tuned to my next two posts where I continue this reflection of 2020, but delve more into uni
societies, work and quarantine life.
How this website came about
Published on 25/01/2021
Welcome to my first blog post!
“So tell me about yourself...” This is one of the most generic interview questions and I guess that’s fair
enough, because the interviewer hasn't even met you before. But how should I answer that? What’s a way
that really makes me stand out? Would being an average student studying computer science ...
just like every other candidate really be ideal?
Now I haven’t had many interviews (or at least formal ones) and in relation to everything that I say
overall, please note that these are only the opinions of an individual who still has much to learn and
experience in life.
After a year of university, I realised that in order to make myself career-ready and to distinguish
myself in all those invaluable opportunities, I had to do someone different – something that others
might not have the motivation to do. I had a bit of experience in web development back in Year 9 when my
team of three created a website regarding a music artist (Charlie Puth) for an assignment. It was really
interesting self-learning back then, so I thought ‘how about I create a personal website’. Like the fact
that I can hit two birds with one stone – to start some sort of personal investment and more
importantly, to have fun exploring deeper into my inner passions.
Basically, as soon as the new year rolled over, I decided to start on this major project and watched a
few YouTube tutorials on how to get a website running. I cannot stress the significance of making a
plan, because that definitely made the development a lot easier – otherwise I wouldn’t even know where
to start. I started off with a template with some basic HTML and CSS and just worked on this website bit
by bit. This was in conjunction with my other commitments such as tutoring students, volunteering across
three different societies, exercising and catching up with friends. Did I enjoy it? Of course I did! For
sure, it was time consuming and even intermittently frustrating when I just couldn’t get an element
looking the way I wanted. But it was a truly rewarding process as I’ve always had an inner spark
whenever I faced a challenge. I’ve refined my abilities in HTML, CSS and even learnt a new language,
JavaScript, in the process, so yeah, I’m especially thankful that such an idea came to my mind just less
than a month ago!
Hopefully, this website will allow everyone – not only the current network of people I know, but also to
my future employers – to know more about me. Here’s to more blog posts being published 😅!