Steven

When The Storm Ends (a 3B term recap)

Ok.. Now wot

Wednesday, April 22 2020

#life_update #tech

Beginning of the year seems like yesterday. Looking forward to the unknown, I decided to make 3B term a humongous step outside my comfort zone. It was a shipwreck. Yet I managed to stay afloat and now it’s time to ask the why. Why did I went through all that?

As a student, it’s so easy to forget what I learned in school. School felt like an endless stream of concepts we all have to master to ace the test. We wake up early for class, absorb new materials, grind through assignments and lab reports - it was thrilling yet suffocating at times. So now another term ends and I came back to the question. Why? and now wot?

Now that the storm ends, I want to recapture the things I went through and learned so I can look back to it later. Now that the storm ends, it’s time to sit back and see the bigger picture, what’s my location and where am I heading to next. Now that the storm ends, it’s time to celebrate the mistakes so I can create a set brand new ones.

Crash!

Crash!

Table of Contents

  1. Blueprint - SVP
  2. Public Speaking - SPCOM 223
  3. Analog/Digital Communication - ECE 318
  4. Database SQL - ECE 356
  5. Network - ECE 358
  6. Engineering Economics, Design - ECE 390
  7. What’s next?

1. Blueprint - SVP

My Blueprint journey began five months back when I first submitted my application. Then I got in the interview round, and was officially in few weeks before the school term started. I was invited to their slack channel and Notion workspace, and immediately felt the vibe. The organization was 100% student-run, but everything was so organized, they had people responsible for recruitments, reaching out to non-profits, social events and there were multiple subteams each working for their own partnered non-profit organizations. First meeting in, I talked to a few subteams, and decided to join the SVP (Social Venture Partnership) team.

Our product is Arbitrium, a group decision making web platform to streamline application processes for SVP (a local charity that engages with 90+ partners). More of our product and the impact here.

As a developer it honestly felt so rewarding to see a product I contributed, being used for social good. Especially during this unfortunate time, Arbitrium was used to collect and review applications for the launch of an emergency relief fund for charities on the front lines of COVID-19. Which is freakin’ awesome! It created an impact, and so the ‘why’ is not really a question here. I felt like this has been the most purposeful experience I had this term.

As far as working with the team, we had ~8 hour work sessions per week. As a developer, I worked using Node.js and React, and collaborated with great designers, developers, project manager, and project lead - who were all passionate about understanding the user and improving the product. The work sessions were also a time for me to chat with these amazing individuals. If you know me well in person, you know that I’m not a very confortable speaker; and I know that the only way to be good at it is practice. I felt like this experience kinda boost my inner confidence in socializing ๐Ÿ˜—

What’s next? Unfortunately I decided not to continue for next term since it’ll be my last year of uni and I anticipated that FYDP (fourth year design project) will keep me busy next term.

2. Public Speaking - SPCOM 223

First class in, I was given 1 topic, 5 minutes to prepare, and a 1 minute recorded impromptu in front of 20+ people. Sounds easy? For someone as socially awkward as me, this is a social nightmare ๐ŸŒŒ. Yet I chose this course because of the fact that it is.

No kidding, my first speech was about an old classic topic - my mononymous name. Fairly easy personal topic but I was struggling to find words, I repeat myself a lot, and could feel my leg shaking like a vibrator ๐Ÿ˜ฑ. That’s not even the worst part. The hardest part for me was to watch myself in the recording after. I can tell you, not a fan of horror.

Seriously though, the recordings opened my eyes to the reality. There’s a huge difference between how you ‘think’ you did, and how you actually performed. For me it was identifying bad habits like slouching, keeping eye contact in only one part of the room, and smiling a LOT as a manifest of my discomfort. In class we had to give each other honest feedback, on delivery and design of the speech. I begin to see how my facial expressions and tone affect the delivery of the message.

In terms of speech design, we have bunch of non-graded practice impromptus that encourages me to be more audacious in trying out things like cracking jokes, walk around the room, testing all kinds of opening hooks and conclusions. Some works, others not.

At the end of the day, I think I came out more comfortable talking in front of people. I’m better at maintaining eye contact with everyone and delivering my content pace-fully.

We also have graded speeches (5 min informative, 20 min interactive, 5 min persuasive). This course gave me the worst grades out of all the courses I took this term, but at the same time it was the most rewarding. So it’s a win ๐Ÿ†.

Something to work on - I need to practice controlling my expression and tone up on stage. In future presentations, I will really think of what I want the audience to feel and try to adjust my expression, pace and tone for their purpose.

Sidenote: There’s a really interesting commentary by Patsy Rodenburg that we briefly discussed in class, about “The Second Circle” - First Circle - It’s the mode you are in when you’re with yourself and your past. You can be in a room with somebody, and be alone. (E.g. in public bus, or when you’re on your phone) - Third Circle - Is when you put your energy out, almost controlling, loud, and taking other people’s space. Tends to be a superficial energy. You could be presenting with/without the audience and it won’t make a difference (E.g. speech, or taking control of the conversation) - Second Circle - Exchange of energy. The focus is on something other than yourself (E.g. human, toy, music, reading book). There is a give and take, and we are fully present.

I found this really interesting. Second circle is the midpoint between the first and third, and this is ideally where we want to be. We need to be present, but not too much that you’re controlling. In the second circle you let yourself react to your surroundings. And if we loose ourselves in the first/third circle, know how to come back. It also implies that public speaking is not always a speech (ie. third circle); it’s an exchange with the audience.

3. Analog/Digital Communication - ECE 318

This is a completely unrelated type of communication course (not public speaking). I learned about the different modulation/demodulation techniques to deliver message across a channel. Although lots of theory was involved, I found it to be really focused on application which was especially tied together during our labs.

Major topics covered:

  1. Math

    • Fourier Transform to convert signals to its frequency representation.
    • How to calculate energy, power, power spectral density (power at a given frequency)
    • probability, auto-correlation function between two random variables
    • WSS Process (wide sense stationary) -> when the value of a signal is a random variable and independent of time
    • White Gaussian Noise -> gaussian process with constant power spectral density which is physically impossible. But used to model noise in channels
  2. Analog Communication

    • Analog signals (ie. radio, tv), are transmitted at a certain frequency. To bring a baseband message with some bandwidth to a higher frequency, we can use Amplitude or Frequency modulation techniques.
    • in amplitude modulation
      • DSB-SC: message is multiplied by a carrier and you end up with a signal of two identical sidebands. It’s simple to modulate, power efficient, but require a complex demodulator (which is undesired because we want cheap reciever E.g.radio. We don’t mind an expensive transmitter).
      • DSB-LC: like DSB-SC but we carry an extra signal required to make demodulating much easier/cheaper (enabling a demodulating technique called envelop detection). The disadvantage is that it’s not efficient. This extra signal (which don’t carry any useful information) carry around 2/3 of total power.
      • SSB-SC/SSB-LC: In DSB we have two copies of the message since each sideband holds the entire message. Instead in SSB only half of the message is carried in each sideband (using some filters. Which can also be implemented with Hilbert Transform/delaying signal by 90deg). Compared with DSB, SSB Modulation is more complex, but you end up saving transmission bandwidth.
      • VSB-SC/VSB-LC: Similar with SSB, but we use non-ideal filters. This increase bandwidth a bit, but modulation becomes easy. So it’s a good compromise between SSB and DSB (bandwidth efficiency vs hardware cost of modulator).
    • in angle modulation
      • FM: the frequency holds the message
      • PM: the phase holds the message
      • It’s harder to do frequency analysis since it’s non-linear modulation. But you can approximate its effective bandwidth using Carson’s rule.
  3. Analog to Digital conversion

    1. sampling (make discrete-time signal)
      • Different types: Ideal sampling (with impulse train), natural sampling (periodic gate function), flat-top sampling (implemented with sample & hold circuits)
      • Nyquist Rate: (how frequently do we sample) As long as sampling frequency is at least double the frequency of the message’s bandwidth, then we can reconstruct the signal.
      • Aliasing will occur if sampling frequency isn’t large enough, or our signal is band-unlimited. This is caused by an overlap of signals in the frequency-domain. We normally leave some guardband to space out the signal make sure overlap don’t happen.
    2. Quantization (make discrete-amplitude signal)
      • Partition the amplitude into regions. And assign each region some quantization level (normally the middle)
      • This will cause information-loss (noise which is a random variable). We can reduce this noise at the cost of more regions (which will require more bits).
    3. Encoder (encode the quantization level to a binary word)
      • We can calculate the bitrate (number of bits * sampling frequency), and the transmission bandwidth required (bitrate/2)
  4. Digital Communication

    • Using Binary Pulse Amplitude Modulation (PAM), to represent a 1/0 with a waveform
    • This waveform is made out of basis function which have unit energy
    • Shape of the waveform affect Power (what shape is most efficient? - this is a complex discussion outside of this course)
    • There is AWGN noise in the channel
    • To filter out this noise, we found out that signal to noise ratio is maximized when we used a match filter in the reciever, where impulse response h(t) = s(T-t)
    • Bits are sent on a N-dimension where N is the number of basis function you use. With more basis function, you can send more data in parallel.
    • There is a tradeoff between noise immunity and number bits sent in one symbol. E.g. With fitting 3 bits in a symbol, you can increase the data rate but the SNR will decrease (more noise)

Things I found interesting: - In the past I’m used to seeing time-domain signals. Understanding the frequency-domain in depth was very eye-opening. For example in communication, frequency-domain helps for us to see how the message modulates the carrier frequency (bringing the message to higher frequency) and how demodulator can reconstruct the original message back - A real life application: To adjust the noise, routers employ different modulation schemes so SNR remains constant. As you move away from the router, the router would automatically employ a scheme that provide less noise at the cost of a smaller data rate. That’s why internet speed starts to deteriorate. It’s a design decision ๐Ÿ˜ฎ - We build demodulator in the lab, and was able to hear the radio at a particular channel ๐Ÿ“ป. It was pretty awesome

In the future:

I don’t think I’ll be getting into communication because at this point I feel like this direction would lead to grad studies. It may be relevant someday when I’m doing super low-level communication.

4. Database SQL - ECE 356

This course is great. Just not the prof’s teaching style๐Ÿ™„.. I wished I had went and read the textbook instead of depending solely on the slides and lectures.

The lessons are mySQL heavy and centered on understanding relational databases. Which is great because I hadn’t have any programming knowledge of SQL before. The labs(more like assignments) were incredibly long but was designed to make you look things up (lots of the methods aren’t really covered in class), which definitly helped me become more proficient in SQL after lots of trial and error.

Aside from understanding SQL and relational algebra, we got in the more hardcore stuff like understanding how it’s physically stored in the disk, indexing, the different RAID systems, making transactions conflict serializable, understand what cascadeless and recoverable schedules are, shared and exclusive locks for concurrency control, the different isolation levels available in mySQL, etc. I think I won’t need to know all these stuff if all I’m doing is simple mySQL queries. But if I have to design the database storage, consider parallelism or optimizing my SQL statements then I’ll have to look back into these stuff.

We covered normalization quite in detail (1NF, 2NF, 3NF, BCNF). I get the impression that we always want all our relation to be in BCNF, so functional dependency are kept clean and to prevent other issues like redundancy and wierd anomalies.

There are also coverage of ER diagrams, which I was sceptical at first but proves to be really useful for designing a relational database schema. Like if you’re deciding how tables interact with each other and there are cardinality constraints involved (like one to one, one to many, etc), everything only becomes clear once you draw it out. Furthermore, there are rules to reduce an ER model to a relational schema - which rather helps when you’re deciding things like whether you should add property as an attribute to the relation, or a separate table.

The funnest part of this course was the Project. In teams of two, me and my partner created a dummy social media platform. We designed the schema, create the database, connect the database to a client app, and import datasets. To make things more complicated we decided to make a React App with Node.js API which calls the MySQL db we hosted on AWS RDS. We also had to import real data into the app. We used the Yelp API which was a huge dataset (> 1GB). First problem was that the csv file was too large for Excel or even Notepad to open. So we had to split it with a handy command I learned “`bash

split -l 30000 yelp_tip.csv comment -d –additional-suffix=.csv ”` It also took lots of time to write up the python script to sanitize the data and organize it to the dataset we want imported. But I learned lots of Python tools in the process, and it was overall very pleasing to see once we got it working. While importing the data to our local computer took an eternityโณ, we noticed loading the csv to the RDS database on AWS was super fast โŒ› (~10 min in total). We have both our app and SQL code available here or Github. And these are some glimpses of the app:

ER Model ERModel


Login

Login


Create Post with Hashtag

Create Post


Inside a post, view/add comments, add thumbs reaction, set status to ‘read’

Comment


Search filter

Search


Search and Follow Hashtags

Search Hashtags


Search and Follow Users

Search Users


Followed shown in home page. You can see your posts and posts from users and hashtags followed

Followed


Inside a group (as a member)

Group Page


Create a Group, and set group size limit

Create Group


Inside a group (as an admin). Can add/remove members

Group Page Admin


5. Network - ECE 358

One of the best course this term. Focussed on a wide-range of things that pretty much answers the question: What is the internet made out of? (I’m talking about the architecture. Not the contents ๐Ÿฑโ€๐Ÿ‰)

The internet is nothing but networks, but it’s so large that it often just seems magicalโœจ. What comes out of this course for me is mostly pure respect for whoever contributed to make this wonderful invention what it is today.

We covered different network layers:

  1. Physical Layer
  2. Link/Ethernet Layer
    • handles multiple access protocols (aloha, csma/cd, polling, token passing, …)
    • ARP table - a mapping of IP to MAC. Each device with a MAC (not a switch) keep this table. We perform ARP protocol to obtain the MAC of our destination address.
    • Switch table - switch has a table to map MAC with its forwarding interface. (may lead to broadcast storm)
    • Ethernet standard protocol
    • WLAN standard protocol
      • access point AP translates between Ethernet and WIFI protocol
      • different modes of operation (PCF, DCF) changes the role of AP
  3. Network/IP Layer:
    • what’s inside a router, and how routing tables are build (RIP, OSPF, and BGP protocols)
    • How IP addresses are distributed, subnetting, supernetting
    • How this layer deals with fragmentation (link has a max transfer size MTU)
    • DHCP server, and protocol to request IP from it (normally built-in the router). DHCP also tells you the DNS server and first-hop router
  4. Transport Layer
    • TCP and UDP protocol (reliability vs speed tradeoff)
    • Process of opening connection and exchange of data in TCP (ack and seq#).
    • TCP flow control: in order not to overflow the reciever
    • TCP congestion control: in order not to overflow the network (router buffers), sender needs to probe for usable bandwidth
  5. Application Layer

There are small amount of math involved in this course such as calculating transmission speed of the link, probability of error, throughput, binary math for IP allocation, etc. There are also some deep dives into details like building the routing table with Djikstra or Bellmanford, headers at each layers, etc. But I think that’s more to the details of implementation that I can lookup when I need it.

In the lab, in groups of 2, we made a simulation for CSMA/CD, and analyze how different parameters changes things like throughput and network efficiency. It was pretty challenging to translate the logic of dropping packets and message buffers into simulation code (and frustration when the result doesn’t come out right) - but felt great once we get it working. Code Here on Github

6. Engineering Economics, Design - ECE 390

A rough introduction to product management and various tools to analyze cash flows. This course is definitely relevant for any engineering project, but to be honest I didn’t quite enjoy this course because the concepts are more towards knowing how to apply the equation, and the lecture were… uhm… pretty slow. ๐Ÿ˜ช

Cash flow analysis was especially pretty tedious - annual worth analysis, present worth analysis, future worth analysis, rate of return analysis, sensitivity analysis, benefit/cost ratio, payback period, break-even analysis etc, etc.. We went through product management topics pretty quickly as it wasn’t included in the exam- Gannt charts, critical path method.

All in all, it’s a great tool for decision making. A formal way to reason and compare different project alternatives and presenting it to maybe the client.

7. What’s next?

I just finished watching the newest season of Money Heist, and Terrace House on Netflix. So what’s next? I’m not sure. Still looking for a good show to watch next.

Two weeks of vacation ๐Ÿšตโ€ before another another storm of school term comes in. I think I’ll be chillin’ at my room till the pandemic is over. The university are officially closed for the next school term too so eveything will be online ๐Ÿ’ป. Taking courses online implies that all the courses involving lab facilities will be replaced with simulation. Yet they didn’t reduce tuition ๐Ÿ˜ก I’m still so salty about it.

There’s fourth year design project coming up next term, and I’m still undecided on what topic to take on. I’m taking psychology101, distributed computing, adaptive algorithms (some AI related course), robot dynamics and control, and reinforcement learning (another AI course). As you can see, I’m pretty much still testing waters of what areas I like to explore next, but I’m super ๐Ÿฆธโ€โ™‚๏ธ looking forward to it.

So far my activities at home have been: - Deep dive into ‘Go’ (the programming language). I’m LOVING IT. The language is super lightweight, there’s no complex package manager, widely used, and with goroutines builtin I feel like this language has so much to offer. I’m too new to have a strong opinion, but for now I’m officially an aspiring Gopher :) - Learned about Docker, GraphQL, and SQLite together with Go - Getting in touch regularly with friends and family back home in Indonesia - Learning Ukulele - Cooking meals everyday - Regularly watching Twitch - Watch Netflix and dramas - > 8h sleep - Read news enough to know what’s happening outside (Twitter, Youtube, Medium) - Patiently waiting till Luffy beats Kaido

Get my latest articles, learnings, projects

At most one email a month and no spam.