Hey this is a very well written blog, good job! I tend to do my markdown in vscode now. However, before that I was using VIM with goyo and ftplugin/ftdetect for *md files. I guess I'm just lazy now.
Much of learning is repetition. I don't have the best long term memory so I solve this by regularly keeping an engineering journal. I designed a Django app to help me with this at work. Should it be of any help to you feel free to use it, hack it or build off it. Cheers~S
I haven't needed my notes that often but on occasion I do and that's usually when I'm glad I took the time to keep a engineering journal.
I accomplish this with a jupyter-notebook inside a git version controlled repository. I'll usually write my notes down in markdown format. Markdown is nice for me because it forces me to write clean/formatted/organized notes versus just writing random stuff down in a word doc. Jupyter-notebooks work great for me because much of my scripting is done with python. So I can include snippets of python code if I want as well as share it with my friends/colleagues.
Our company has an internal server that hosts the atlassian tools such as confluence/bitbucket/jira/cruciable. Each of us in the software department have our own company bitbucket account. Therefore, I keep my jupyter-notebook hosted on my bitbucket account.
For personal use I have moved away from paper/pencil journals. I usually collect my notes in the same way or sometimes just in a text file that I organized in their own dedicated git repositories on my GitLab account. Usually it's a project per project basis. For example, I version control many things in my home directory on my Linux computer like my bashrc/bash_profile/vimrc/zshrc and files alike. This gets consolidated in a "My_Linux_Setup" with other notes of mine of what packages and libraries I need to install should I need to reimage my computer.
I "was" in the same boat as you so don't feel bad. For the past few months I've been writing unit tests.
My application has the ability to receive commands and send telemetry back over a socket to a user interface. This exposes several features in how I can test it's functionality which makes writing unit tests much easier. Good code is code that can be tested well!
Something that isn't taught but is more so learned (I've personally noticed) is architecting your software to be testable. This has really made me think about how I should write code to not just "do it's intended purpose" but also "in how it will get tested".
My preferred setup is something small but manageable. By this I mean something that I can scale if needed but also reliable across different domains (such as gaming, coding, web surfing, etc)
How many?
2
Size?
~27inch
Resolution
2560x1440
Why not 4k? The 4k'ish feel of having multiple windows opened on your monitor will plenty of space left over is a good vibe. However, I've experienced several IDE's that do not scale well with 4k monitors. Several embedded design suites look awful because of this and you sometimes need a magnifying glass just to find the right button you need. Yea you can find work arounds for this but why deal with it at all.
Ultra Wide
They look appealing I admit but haven't invested in one yet. There's just something about multiple monitors that's appealing to me over one gigantic one. Plus if I ever have two systems I want to hook up and see at the same time then I have this option with two monitors. If I had one gigantic one i would need to invest in a switch i guess.
I don't like the glossy style screens. I like that dull rough look (I can't think of the technically term for it but the less shiny screen whatever that is). I use a few color schemes that just look awful on the glossy "shiny" style screen. My eyes start to hurt on those screens as well which is another reason I favor the "dull" screen look.
I get a high frame rate monitor. I find it less stressful on my eyes along with the dull screen I mentioned above. Comfortable distance is about 2 to 3 feet.
Was this part of the datasheet of the chip? Perhaps I've missed this section but I've never recalled the datasheet including this information. Is this usually covered in a separate application note or whitepaper?
I'm very new to this concept of bootloaders for embedded processors so bare with me. The answer that best aligns to your question is "trying to initialize the processor prior to running to application code".
Some of the critical tasks I would like my bootloader to cover are...
1) Initialize critical parts of the processor (oscillators, clock branches, peripheral enables, etc..)
2) Initialize a few peripherals like UART to provide some useful "readable" output during this process
Some additional "would be nice" features I would like to do are...
1) Load an application from a SD card
2) Parse over the application executable for validity purposes
You should strive to find out what area of computer science you enjoy versus making it about your GPA or trying to be the smartest in the class. If the latter is your goal you're going to be disappointed.
It's hard, or was for me, to do projects on your own time when you're full time student. Therefore, apply yourself in learning as much as you can from your classes and build off the assigned work as much as possible if you have free time.
Lastly, learn how to develop a good work ethic. Try to revert from googling answers. Struggle and try to find your own solutions. Pay closer attention to your compiler warnings without googling them. Utilize tools to debug your code versus googling if someone else had the same issue and what their solution was. In all, learn how to struggle effectively to improve your overall understanding of concepts and problem solving.
I came across an article published by a MIT professor on solving complex problems. I'm going crazy right now because I can't seem to find it anywhere. However, I did come across this site which looked interesting. Perhaps you'll get something out of it.
I was diagnosed with that when I was younger. I am 31 and still find myself suffering from it. One has to eventually discipline their daily habbits to overcome it and that takes time, patience and effort.
I have a learning disability that I overcome by being methodical towards approaching and solving complex problems. As a result, I require more time over the average person for the simple requirement of being organized before I can move on through a process. This has been a challenge that I'm still learning to overcome. Lastly, I have a difficult time accepting and allowing room for failure which is a necessary outcome or experience in engineering disciplines.
I enjoy the articles about tech related news and subjects related to...
Embedded Software Engineering
Aerospace Engineering
Technical topics concerning Software in general
Advice on Interviewing and Career development
Systems Engineering
When I was in the military I received experiences that don't often happen which made me respect and appreciate various technology and the people who engineered it. This was the origin of what gave rise to my passion in engineering that otherwise would of never unfolded. My opinion, if you want to uncover your true passions in life go experience the world for it is. Although I would suggest something different other than joining the military ;) Cheers ~ S
Cheers ~ S