I am a computer scientist. I work in industry, but the first few years of my career I spent as a research and development engineer at an industrial research lab in Gothenburg, Sweden. This blog primarily serves as a portfolio and as partial commentary to my code repository on Github.

I can be reached via email at ‘first_name (dot) last_name (at) yandex.com’; my professional background is detailed on my LinkedIn profile.

I can also be found on other sites:


Social Media (all inactive):

I no longer use social media, not even passively. Should you come across an active social media account with my name, it is a different person. I have come across the occasional G., Greg, Gregor, or Gregory with my surname.

Public profile pages / repositories (all inactive):

18 thoughts on “About

  1. Joseph Gabriella

    Thank you for your solutions. Very helpful to me as I endeavor to learn Java.

    Are you a professor? If so, where? I am a professor at Toyo University in Tokyo. Would be delighted to have you join my LinkedIn Network if you feel so inclined. I am particulary interested in knowing more about how you use Java / what you use it for.

    Thank you again for sharing your knowlege. Much appreciated.


    1. Gregor Ulm Post author

      Hi Joseph,

      I’m glad that you’ve found those Java solutions helpful.

      I’m not a professor, but a student. I’ve mainly used Java for university projects. In total I’ve probably written over 10,000 lines of Java code, so I’d say I’m moderately competent in it. However, when I do have the choice, I prefer using other languages, preferably one with a strong static typing system, like Haskell or ML. Depending on your goals you might want to explore some other languages, too, since Java is very verbose, which will limit your productivity.

      You’re welcome to add me to your LinkedIn network. To do so you might need my email address, which is gregor (dot) ulm (at) gmail (dot) com.

  2. Zachary Sims

    I really enjoy your site, very informative and helpful. It has aided me a lot in my path to becoming a software/computer engineer myself. Keep up the incredible work Greg.


    1. Gregor Ulm Post author

      Apparently you like my site so much that you copy and paste my solutions to yours. Please note that mere replication does not qualify as “fair use”, which is why I would very much like you to remove my content from your site. Thank you very much.

  3. Brandon

    I’m hoping you’ll have the time and patience to help a stranger. This is unrelated ,but I’m looking for an answer. I’m finishing my AA after the summer of 2015 ,and i want to pursue a major in computer science. My issue is that i’ll be taking classes unrelated to computer science until my AA is completed. If you were in my situation(taking yourself back to the beginning). Where would you start? what languages should i pursue to learn on my own time? I understand I’m far away from my goal of writing android apps ,but I’m not interested in a fast track ,but instead the right track. I apologize if this is’nt the correct way to contact you ,but it seemed the easiest for you to see. Looking to hear back from you. -Brandon

    1. Gregor Ulm Post author

      For my view on which languages to learn, see this post:
      Since your goal is to write Android apps, you’re probably best served by first learning imperative programming in Python, and then immediately moving on to Java. Of course you should eventually explore lower and higher levels of abstractions as well, and eventually spend some time and effort to learn C and Haskell.
      The most relevant courses in the CS curriculum are arguably Datastructures/Algorithms, and Discrete Mathematics. You’ll find excellent course materials online for free, so all it takes is spare time and determination. I recommend several relevant courses in this post:

  4. Marwan

    Hi Gregor,

    Do you have an email by chance for someone to get in touch with you? or I guess you can email me to my hidden email that I used for this post. I would love to talk to you about your experience and the whole switching career decision. I am going through the same process, and looking to get into computer security. I actually just took Coursera’s intro to programming with Python, and I am doing the second level class now.

    Looking forward to hearing from you,



    1. Gregor Ulm Post author

      Hi Marwan,

      my email address follows the pattern “firstname (dot) lastname (at) gmail.com”.

  5. Lunnij I.

    Hi Gregor,

    Thank you so much for saving me hours of time for my Computer Science class. I appreciate all the work you did, and analyzing your solutions makes me feel more prepared for the AP Computer Science’s free response questions.

  6. Henry

    Hey Gregor,

    I appreciate the time you’ve put into your website. Particularly helpful for me was the bit about your Bachelor Degree at GU.

    I am about to apply for it myself, but I am still in doubt about whether I should or not. I have decided I want to become a programmer and be able to develop my own projects in the future. While those do not take shape, however, I would like to develop Java apps or enter the game industry as a C++ (or similar) programmer. Do you think the GU Bachelor would prepare me for such? Also, how much math did you actually need to use throughout the program? I never had that many problems with it, but I haven’t studied it in more than 10 years, so I have forgotten a lot, if not most of it due to lack of practice.

    As you mentioned, first level English-taught options are scarce, so I would like to be sure of my choice seeing I feel somewhat old already. There is also this https://lnu.se/en/program/ngdpv/20162/61003/ at Linnaeus University. Have you ever heard of it?

    Thank you in advance for any tips.

    1. Gregor Ulm Post author

      To briefly answer your questions:
      1) The Software Engineering Bachelor’s degree at GU certainly prepares you for a career as a mainstream Java programmer. If you want to work as a graphics engine developer in the games industry, you are probably better off with a degree in (applied) mathematics, supplemented with relevant computer science courses.
      2) In the Software Engineering program you’ll be able to get by with basic mathematics. Sadly, the more theoretical aspects of CS are often only glossed over or completely ignored, which is a reason why the more motivated students either read additional CS courses, or switch to CS, which is only an option if you speak Swedish, unfortunately.
      3) I took two mathematics courses at Linnaeus University via distance learning. Both were taught well. That particular degree program seems similar to the one at GU, so what I wrote in 1) presumably applies here as well.

      1. Henry

        Thank you for your input, Gregor.

        I feel I should go for either of those two, instead of perhaps applying for the Uppsala bachelor in game design/programming. To be perfectly candid, I do not feel like I should study CS. I actually look forward to specializing in programming itself, focusing on a few languages. It’s a good thing there is not that much math involved, I have forgotten so much about it, even though I am now in the khan academy to brush up on it. I am also learning the basics of Java at Codecademy and I already know HTML/CSS. Right now, I think about focusing on Java, Python, C++ and C# to be able to work as a web developer front or back end, app developer, or game programmer (not heavily focused on 3D engines). What do you think about those languages? Are they appropriate from your experience?

        1. Gregor Ulm Post author

          Based on what you wrote, I’d recommend picking Python and one of the other three languages. Java and C# are very similar. C++ is likewise object-oriented, but gives you direct memory access and more ways of shooting yourself in the foot. Why don’t you just keep an eye on your goal, and figure out what you need to know to get there? You mention four rather different areas of software development. Web front-end development has very little in common with backend development. Mobile app development contains front and backend development, of course using different technologies. I know very little about professional games development, but, if I’m not mistaken, C++ is still the language of choice whenever high performance is required. Otherwise, scripting languages are often used. Both Python and Lua are popular for that purpose.

          1. Henry

            Yea, I am still somewhat lost about what I should pursue within programming. Truthfully, I find it quite hard to find clear information about programming/development that isn’t directed at people already in the area. For those laymen trying to gather information and understanding of the specifics about the education and the market is a bit tricky. If I could freely choose an area to work with, I’d prefer game development (not necessarily AAA). But since I can’t count on working with that, I’d like to have all (or most) bases covered and be able to work in most mainstream programming functions, i.e. web developing (it seems). Front or back end isn’t necessarily important, I’d pick the one with which I am most comfortable. I believe you when you say front and back-end are very different. Honestly I don’t know those two in sufficient detail to be able to make any proper assessment right now. I actually don’t really know how to home in on a more defined programming career. I feel like I need more information, but not only I don’t know where to get it, but I also don’t know what it is exactly I need. I am hoping that within GU’s program I am able to somehow gravitate towards this or that, based on what I manage to understand about it.

            On another note, I have also just received a disturbing e-mail from Linnaeus University, where the program coordinator told me they mostly teach Java, pretty much leaving all other languages out. How can that even be?! I was pretty shocked and less inclined to attend their program because of this.

  7. Gregor Ulm Post author

    it makes sense that Linnaeus University primarily uses Java. Other universities in Sweden are still teaching C++. You will find many more job offers for people competent in those languages than, for instance, Python. Computer science departments normally tell you that they teach you “programming” instead of a programming language, but employers, even though some proclaim the opposite, tend to look for people who are proficient in particular languages. In fact, based on my experience, I am tempted to say that being a demonstrable polyglot programmer can severely harm you when looking for a job. For instance, I once bombed a job interview by telling the guy that what he is asking for is a one-liner in Haskell, so I wrote it down, and then gave him the translation in Java. He was visibly uncomfortable with the Haskell syntax on the white board. Well, you live and learn.

    1. Henry

      Yea, I guess you are right. Either way, I think I should figure out what to specialize in once I am in the program itself. It seems to provide all the bases required for me to pursue whatever I chose within programming in general.

      On a side note, do you remember what the minimum entry grades were when you applied? Or perhaps do you have a clue of where I could check that? I don’t want to make a whole set of plans then get rejected by the university.


Leave a Reply

Your email address will not be published. Required fields are marked *

Spammer prevention; the answer is an integer: * Time limit is exhausted. Please reload CAPTCHA.

This site uses Akismet to reduce spam. Learn how your comment data is processed.