Wednesday, March 25, 2020

Remote work challenges

The global coronavirus pandemic has forced many institutions to think seriously about remote work. The first idea that comes to mind is make people work on laptops. If the work place had to use a local network isolated from the internet due to security concerns, the following challenges have to be faced:
  • A lot of laptops have to be reconfigured by the IT department so that they cannot be connected to the internet. Software needed for daily work have to be installed. That's a lot, depending on the number of laptops and the number of software to be installed on each laptop.
  • Many software products needed for development rely on local license servers. How are you going to make them work on laptops that are neither connected to your LAN nor the internet? You may have to obtain standalone licenses (extra cost) and install them on each laptop. In my case, I need licenses for two different products. May be existing license servers can be made to work on a virtual machine on the laptop.
  • Complex projects require multiple people to work on the same software components. How will you prevent merge conflicts when the oubreak has calmed down and everybody wants to push their work to the local repository?
  • Embedded software projects require multiple people and hardware working together. You might take your hardware home but you won't be able to get your colleagues and their hardware/software due to social isolation requirements to prevent the virus spread.
  • If you have kids at home, how will you prevent them from constantly interrupting you? By having a schedule and clear visual indicators that you are working (like a sign on the door).
If your software/hardware were highly modular, if you had abstractions/simulators, you could take only the parts that are suitable to work at home. But true modularity is almost never the case. In my opinion, during the remote period it is not realistic to expect work to be done as usual. The main areas to focus are:
  • Limited development with only your hardware and software (if standalone licenses can be purchased).
  • Improving documentation of existing software/design. Documenting the system will show you clearly where the design is too complex and needs improvement.
  • Self education. Example subjects for me: Blockchain, real time operating systems, embedded software development.
  • Daily physical exercise.

Thursday, March 19, 2020

Getting rid of background noise in an image

I have an image whose background I want to get rid of and only leave text. I open it in paint.nethttps://www.getpaint.net/and select Adjustments - Brightness/Contrast:

I increase contrast until the background disappears:

Tuesday, March 17, 2020

The inefficiency of university entrance exams

For the last few days, I have been watching how top students in Turkey were preparing for the university entrance exam. What struck me the most was the extraordinary amount of effort they put into it (2 years ~3000 hours of concentrated work) and how little of that effort is transferrable to real life. The most important skill gained is how to hack the test. I am not against hard work, I am against this horrible waste of energy...

Last autumn I started to teach kids robotics and have been thinking intensively about what an ideal/useful education should be like. My main criteria is exposing students to practical knowledge. It might not be applicable immediately but they should be able to see its merit clearly. This would solve the motivation problem due to lack of context. The challenge is to keep them interested while improving at a steady pace.

I hope I can imbue my students and my son with such useful knowledge that they won't need to suffer through years of mostly useless torture and bypass the university route altogether. How nice would it be if they could become productive members of society by the time they start high school, which was the norm not so long ago.

Applied Mathematics

Recently I helped my cousin with her integral questions. They were about areas between curves. This made me think if there were any applications of this that I personally know of and came to the conclusion that I don't know any. I decided to make a list of mathematical subjects that I apply in my work so that I can motivate students who are exposed to them for the first time:
  1. Trigonometry (sine, cosine)
  2. Quadratic equations
  3. Vectors in 3D, derivative of vectors in rotating reference frames
  4. Linear algebra. Cross product, dot product. Matrix multiplication: Used in rotating objects in 3D
  5. Basic integral
  6. Basic derivative
  7. Differential equations (2nd order ODE)
  8. Taylor Series (for linearization and as a starting point of numerical integration)
  9. Interpolation
  10. Gaussian distribution. Regression. Bayes' Theorem. Markov Chain. Kalman Filter
  11. Fourier Transform