• 1 Post
  • 41 Comments
Joined 1 year ago
cake
Cake day: June 15th, 2023

help-circle









  • My career path has been pretty straightforward. I went to a state science and engineering university with a starting major in physics but switched to electrical engineering after two years. While there I had a few student jobs at the various campus labs, helping with research projects and doing some simple programming.

    After I graduated I got a job at a small nearby observatory where several friends worked. I started by operating and maintaining the telescopes then did some software work to expand our capabilities.

    Once my partner graduated, I found a job in the nearby city at a small engineering firm that mostly did subcontracted work for the big defense companies. I split my time there between electrical engineering and embedded software development.

    After several years there, I realized that there was no real path forward due to living in one of the big square states so I started looking and found a job with an established Bay Area company through a friend. Since then I’ve worked at a few different companies, from tiny startups to the FAANGS. I’ve generally moved up every couple years and now manage a large team at a mid sized startup. Like most engineers, I’ll probably never be really rich, but always comfortably employed.

    There are three things that really helped my career.

    1. College - I know, it’s expensive and such. But even so, it is so worth it. Sure if you get a degree in underwater basket weaving at an expensive private university or it’s probably a financial waste, but STEM degrees are an excellent investment. It’s not just the paper, but the experience, contacts and friends that come from a traditional on-campus in-person university.

    2. Friends - The majority of my jobs, and in particular the ones I’ve needed and enjoyed the most came from friends and colleagues. Make those connections, be a good friend, and good things will happen.

    3. Hobby programming - I started writing code in elementary school in BASIC. Later in college I would experiment with small programs to scratch an itch, learning C++ and Python from books on my own. Those experiences were vital in my ability to learn how to tackle new problems and learn how to execute when I had to.

    Bonus point 4) Reading “Getting Things Done” by David Allen. Seriously, learn to plan and execute. Don’t be a flakey “ideas person”, get shit done.


  • BartyDeCanter@lemmy.sdf.orgtoProgrammer Humor@programming.devTrue?
    link
    fedilink
    arrow-up
    125
    arrow-down
    1
    ·
    3 months ago

    And… they’re basically all correct. Linux does run on all sort of machines, even really ancient ones. It has a solid command line environment, or rather lots of them. And it’s astounding powerful. Windows does still blue screen, is currently the best place for gaming, and wow is MS fucking you with Win11. Macs can have a cool setup, are really simplified for most users and expensive.



  • By almost every measure, the world is better than it has ever been. Violence, poverty, starvation are all at or near record lows worldwide. Average lifespans are way up. We are just way, way more aware of what is going on in the world, and bad news drives more clicks than good news.

    There are some cracks, no doubt. For example climate change is showing its ugly head, inequality is rising in the US and some other developed countries, and lifespans are taking a slight dip in parts of the US. But, compared to almost anywhere at any time during history, this is a golden age.




  • Take a look at what even the proposer is saying wouldn’t be allowed in:

     (1) new and delete.  There's no way to pass GFP_* flags in.
    
     (2) Constructors and destructors.  Nests of implicit code makes the code less
         obvious, and the replacement of static initialisation with constructor
         calls would make the code size larger.
    
     (3) Exceptions and RTTI.  RTTI would bulk the kernel up too much and
         exception handling is limited without it, and since destructors are not
         allowed, you still have to manually clean up after an error.
    
     (4) Operator overloading (except in special cases).
    
     (5) Function overloading (except in special inline cases).
    
     (6) STL (though some type trait bits are needed to replace __builtins that
         don't exist in g++).
    
     (7) 'class', 'private', 'namespace'.
    
     (8) 'virtual'.  Don't want virtual base classes, though virtual function
         tables might make operations tables more efficient.
    

    C++ without class, constructors, destructors, most overloading and the STL? Wow.