Sunday, June 26, 2022

Podcast with a sofware engineer working in Munich

I recently did a podcast (in Turkish) with my cousin who works as the software engineering department head of a company in Munich. In it, we also answered the following questions which were previously asked by my mentee, Nansy:

Question: Did he have to learn on his own or was his university knowledge sufficient?
Answer: You have to learn on your own too.

Question: How important is GPA really?
Answer: Not much if you don't plan to do graduate studies. If your GPA is not great, you have to be able to give reasons for it. Good reasons: Worked on my projects/hobbies, worked part time, traveled around the world. Bad reasons: Watched movies, played games.

Question: How can someone decide which area/language/framework to learn and focus on when there are so many?
Answer: Picking an industry/sector will narrow down the selection. Make sure that your computer engineering fundamentals like algorithms and data structures are sound.

Saturday, June 25, 2022

Summer project ideas

Software project ideas for summer 2022:

1. Web Application:
1.1. [PHP] Create a WordPress plugin to rent expensive dresses. It should have a calendar for rent start-end dates. Payment should use iyzico sandbox. It should support vendor/product review.
1.2. Create a multi-vendor Shopify app, similar to and better than Multi Vendor Marketplace. Look at its negative reviews for inspiration, e.g. "looks very trashy and confusing", "error-free bulk data upload"
1.3. Leetcode clone for embedded software development: Exercises and unit tests, board simulators (timer, interrupt, peripheral sim (RAM, SSD, NIC) for driver writing exercises). Vision: Become the TopTal of embedded software development.
1.4. Clone Twitter (simplified LeetCode problem)
1.5. Build a Google Docs clone.
1.6. Build a Codility clone. Step 1: Online code compiler
1.7. Write a Chrome extension to create gif

2. Mobile app
2.1. Develop an Android application that gets video from a PC using the mobile hotspot on the phone:
2.2. Payment sharing/bill splitting between a group of friends

3. Automotive:
2.1. Write a simple 2D self driving car demo.
2.2. Collect acceleration data from an RC car, send it to the cloud, on the cloud backend identify road quality from acceleration data and show it on a web page.
2.3. Make openpilot work on CARLA.

4. Website development: Find an existing website that has performance issues, do performance profiling and write a faster  version of it.

5. Finance, cryptocurrency, cybersecurity
5.1. Write a Lightning Network clone
5.2. Develop an air gapped Bitcoin wallet.
5.3. Write a uTorrent clone (peer to peer distributed file sharing)

6. Gaming
6.1 Write a game that involves puzzle piece placement and path finding and runs in the browser.
6.2. Write a peer-to-peer real time multiplayer game that uses the lockstep protocol (see consensus).
6.3 Clone Just Dance Now. Convert it to use webcam to detect and rate your movement accuracy.

7. Music: Write an app that normalizes sound levels of tracks in a playlist so that the user does not have to fiddle with the volume setting.

8. Aerospace
8.1. Write a web app that lets the user change kinematic parameters of a simple aircraft and observe the effects on a 2D trajectory.
8.2. Write a web app that does a simplified 2D version of the moon landing, including orbital calculations.

9. Miscellaneous:
9.1. Improve GeoTools
  • Create a fork and push your updates to this fork.
  • Draw a polygon (e.g. hexagon) on map. Zoom - unzoom with mouse wheel. Drawing should be updated while zooming, it should not wait until mouse wheel stops.
  • Pan with the right mouse click and drag. Drawing should be updated while panning, it should not wait until mouse button is released.
  • Show country borders.
  • On startup, map should center on Turkey and Turkey borders should fill the view.
  • Document your progress/challenges, preferably create a public blog and write a developer diary there.
To generate more software project ideas, you can use chatGPT, ProductHunt and KickStarter

Wednesday, June 8, 2022

Finding a job

Finding a job can be divided into two stages:

  • Stage 1, getting an interview:
    • Past experience and your contributions
      • Full time work
      • Part time work
      • Internships
      • Side projects, Hackathons
    • Education
    • Tailoring resume/CV for the job you plan to apply
    • Polishing LinkedIn profile, getting badges, contacting recruiters
    • Preparing for and passing online assessment tests
  • Stage 2, passing the interview:
    • Preparing for coding questions
    • Preparing for behavioral questions
      • How do you resolve conflict with your superior / team mate?
      • What do you do when it becomes clear that a deadline cannot be met?

Wednesday, June 1, 2022

Algorithms that you should know by heart

Algorithms that you should know by heart and be able to code without using the internet: