<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: George</title>
    <description>The latest articles on DEV Community by George (@rapidnerd).</description>
    <link>https://dev.to/rapidnerd</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F18607%2F1fbc9685-8f58-44a9-aec8-f986b82dbb11.jpg</url>
      <title>DEV Community: George</title>
      <link>https://dev.to/rapidnerd</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rapidnerd"/>
    <language>en</language>
    <item>
      <title>From burning myself out, to McDonalds to Backend dev</title>
      <dc:creator>George</dc:creator>
      <pubDate>Mon, 25 May 2020 20:26:41 +0000</pubDate>
      <link>https://dev.to/rapidnerd/from-burning-myself-out-to-mcdonalds-to-backend-dev-53hk</link>
      <guid>https://dev.to/rapidnerd/from-burning-myself-out-to-mcdonalds-to-backend-dev-53hk</guid>
      <description>&lt;p&gt;Been a while since I've posted here, well that's because I majorly burnt myself out. And it's one of the worst things I've experienced as a developer and after some looking into it it's very common within development.&lt;/p&gt;

&lt;h2&gt;
  
  
  What am I talking about?
&lt;/h2&gt;

&lt;p&gt;Quickly want to explain what burnout is in general. So let's say you're an artist and you've been commissioned to paint a picture, but you only have a week to do it so you spent 12 hours a day painting it until you finally get it done, send it off to the buyer, then you do this for a few more weeks until finally you start to resent painting, you start losing passion for it, your motivation is very little and majority of the time the only thing that's keeping you going is the paycheck.&lt;/p&gt;

&lt;p&gt;This is burnout, it doesn't always last forever but for some people it does. For others for a little while.&lt;/p&gt;

&lt;h2&gt;
  
  
  What did I do?
&lt;/h2&gt;

&lt;p&gt;At the time I was in university studying computer science, and working as a freelancer in C and C++. With a very bad sleep schedule, my normal day to day life would be something on the lines of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wake up with little sleep (normally 3-4 hours)&lt;/li&gt;
&lt;li&gt;Go to university for 8 hours, while there I was in programming lectures or practical sessions&lt;/li&gt;
&lt;li&gt;Go home&lt;/li&gt;
&lt;li&gt;If I remembered then eat something&lt;/li&gt;
&lt;li&gt;Work for 10 hours&lt;/li&gt;
&lt;li&gt;Sleep&lt;/li&gt;
&lt;li&gt;Repeat&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now that's not the best schedule is it? This happened for about a year and very quickly found myself resenting programming and falling into very bad habits which were not good for me mentally or physically.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resolution
&lt;/h2&gt;

&lt;p&gt;After a while I knew the burnout was taking a toll on my university and freelance work, so something had to change. And this is the real beauty of freelancing, once you finish up one project for someone you don't have to take another. So that's what I did, as well as speaking to the lecturers for their help both professionally and academically I managed to get myself into a position where I could take a break and not fall behind. So my new schedule for about a month was&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wake up&lt;/li&gt;
&lt;li&gt;Go to university&lt;/li&gt;
&lt;li&gt;Go home and eat&lt;/li&gt;
&lt;li&gt;Go to work at McDonalds&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why McDonalds?
&lt;/h2&gt;

&lt;p&gt;I know some people think that working at McDonalds is a bit of a meme, but what I really needed was a position that didn't require technical knowledge and was fast paced. In all honesty the only "technical" part of it was setting up the tills before opening, but that's because this places ones were outdated and took forever to start up.&lt;/p&gt;

&lt;p&gt;While there a lot of benefits that came to me, gave me a chance to clear my head for 8 hours a day and not have to worry about breaking my code or meeting deadlines, the environment is fast placed (especially at lunch time holy shit), the pay was decent, the people are always friendly, everyone i worked with was more than willing to help when needed and the best bit...FREE FOOD!&lt;/p&gt;

&lt;p&gt;Leaving after a month due to medical reasons it really helped me get to a better place and find a new love for development, after leaving it dawned on me that for the past 3 years I'd been writing C/C++ non-stop, the same technology and the same fields and I needed to branch out further otherwise I'd be back to burning myself out again.&lt;/p&gt;

&lt;h2&gt;
  
  
  Aftermath
&lt;/h2&gt;

&lt;p&gt;When I left and was cleared of the medical issues I started looking into what else could I learn and what else would be useful for me to know, something along the same lines as my current stack but newer, more powerful. And that's when I found and fell in love with Go.&lt;/p&gt;

&lt;p&gt;I've been having a war with a friend of mine on Rust vs Go but it's one of those languages which has everything for me, simplistic design and syntax, easy and fast compiler, very good and easy to use package manager and whatever code you write it is executable on all platforms.&lt;/p&gt;

&lt;p&gt;But the biggest lesson I learnt was mental health, the thought of not meeting a deadline was the thing that I had constant anxiety about, if I didn't meet this deadline would my pay get cut because at the time my family was very desperate for the money.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why it's important to look after your mental health and handle burnout properly?
&lt;/h2&gt;

&lt;p&gt;Your mental health is just as important as your physical health, both of them are very closely connected to each other and when your mental health takes a toll you will notice it will begin to take a toll on you physically. You get into bad habits and you start doing insane things such as a 13 hour non-stop programming session (oops).&lt;/p&gt;

&lt;p&gt;As programmers we're constantly using our brains for our jobs (well pretty much all jobs do tbh), a lot of it for us comes naturally but there's always those times where you need to really get in gear and use our brains full potential to continue on with your project and that's one of the things that I found.&lt;/p&gt;

&lt;p&gt;With the burnout happening it was causing my depression to get worse, and whenever I had an issue that I didn't know how to solve the first thing that would come to my mind would be "you can't do this" or "you really should chose another path". As I progressed these thoughts got worse and almost ruined the entire career for me.&lt;/p&gt;

&lt;p&gt;A couple of posts I've found and read on here dive deeper into the issues it can cause and would highly recommend reading&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/ronsoak/the-lies-and-lack-of-self-respect-that-lead-to-burnout-5007"&gt;"The lies and lack of self respect that lead to burnout"&lt;/a&gt; by @ronsoak&lt;br&gt;
&lt;a href="https://dev.to/bradcypert/developer-burnout-9-tips-to-help-1pop"&gt;"Developer Burnout: 9 Tips to Help"&lt;/a&gt; by &lt;a class="mentioned-user" href="https://dev.to/brad"&gt;@brad&lt;/a&gt;&lt;br&gt;
&lt;a href="https://dev.to/andogq/breaking-the-burnout-cycle-452e"&gt;"Breaking the Burnout Cycle"&lt;/a&gt; by &lt;a class="mentioned-user" href="https://dev.to/tom"&gt;@tom&lt;/a&gt; Anderson&lt;/p&gt;

</description>
      <category>career</category>
      <category>burnout</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Using Schrödinger's cat to beat imposters syndrome</title>
      <dc:creator>George</dc:creator>
      <pubDate>Thu, 30 May 2019 00:05:01 +0000</pubDate>
      <link>https://dev.to/rapidnerd/using-schrodinger-s-cat-to-beat-imposters-syndrome-3fh3</link>
      <guid>https://dev.to/rapidnerd/using-schrodinger-s-cat-to-beat-imposters-syndrome-3fh3</guid>
      <description>&lt;p&gt;For a few months now I've had imposters syndrome mainly while being at university, I felt like this had come on because of me being weak at maths which made me self doubt and I never went and got proper help for it. Which left some tolls on me and leading up to imposters syndrome. Before I start I'll explain the two things mentioned in the title&lt;/p&gt;

&lt;h2&gt;
  
  
  Schrödinger's cat
&lt;/h2&gt;

&lt;p&gt;In 1935 Erwin Schrödinger suggested an experiment relating to quantum physics and psychology. He theorised that by putting a cat in a locked steel chamber along with a deadly device (in this case it was a radioactive atom) until the box is opened it can be thought of both dead and alive. &lt;/p&gt;

&lt;p&gt;(Just for clarification I think he never did the experiment just theorised it, no need to call PETA!)&lt;/p&gt;

&lt;h2&gt;
  
  
  Imposters syndrome
&lt;/h2&gt;

&lt;p&gt;A psychological term that makes the person feel like they have a persistent fear of failing, not being good enough, harshly judging on every action and can sometimes relate to them having a fear of being exposed as a "fraud".&lt;/p&gt;

&lt;p&gt;When I first started university I knew the coding portion of it would be fine for me to deal with, then I looked at the maths and remembered that I suck at maths and I'll likely fail it. This is what really started taking a toll, I've never been able to do maths well at all. When it came to course work I would always put it off because of fear of failing, the exams I took about 2 weeks ago petrified me.&lt;/p&gt;

&lt;p&gt;Well, all this was until I watched an episode of The Big Bang Theory and &lt;a href="https://www.youtube.com/watch?v=ZgRViUJ3J4E"&gt;this&lt;/a&gt; scene made me realise that I need to take a different outlook on everything regarding the math topic. So I devised a scheme that I would be using with Schrödinger's cat and maths by taking two outlooks on every part I do.&lt;/p&gt;

&lt;p&gt;I broke it down into parts, remember in Schrödinger's cat the cat can either be dead or alive so I had two columns first one being alive:&lt;/p&gt;

&lt;h2&gt;
  
  
  Alive
&lt;/h2&gt;

&lt;p&gt;Criteria &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;If correct goto 2&lt;/li&gt;
&lt;li&gt;Check the marking standards&lt;/li&gt;
&lt;li&gt;Check with the teacher on how it can be done better/improved&lt;/li&gt;
&lt;li&gt;Confer with other students on results and methods&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In this situation, if the cat is alive it's a good outcome for me but it also means that more learning can be done as there's always room for improvement&lt;/p&gt;

&lt;h2&gt;
  
  
  Dead
&lt;/h2&gt;

&lt;p&gt;Criteria &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;If wrong goto 2&lt;/li&gt;
&lt;li&gt;Check procedure against one given in lecture&lt;/li&gt;
&lt;li&gt;If correct check answer/workings out&lt;/li&gt;
&lt;li&gt;If still correct check with the teacher&lt;/li&gt;
&lt;li&gt;If the procedure is wrong compare it against the example given in the lecture&lt;/li&gt;
&lt;li&gt;Repeat until I get this right!&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In this situation, it starts off badly but instead of dwelling on the fact they may give me a few petty marks or they'll go nice on me I knew I would have to force myself to figure out how to do this because it could be needed in the near future.&lt;/p&gt;

&lt;h1&gt;
  
  
  Causing self-judgement
&lt;/h1&gt;

&lt;p&gt;Another issue caused by imposters syndrome is the fact I was always comparing myself to my friends, a lot of my friends are some form of developer whether it's web, game, network etc they're all incredibly smart and I found while I was in this rut of imposters syndrome that I would always think that I would never be like them, I'd never be as smart as them, that the places I want to be at I will never accomplish. This was until everything became too much for me and I made a huge mistake. For privacy reasons, I won't say what it was specifically but it was a big mistake.&lt;/p&gt;

&lt;p&gt;To fix this mistake I knew I had to get away from a lot of online aspects so that's what I did. Because of imposters syndrome, I had not been looking after my mental health and things progressively became worse over time. So for around 10 days, I stopped writing code as much as I use to, only when required with work and university and I had isolated myself away from a lot of my online activities, spent a lot of time outside instead of online and cleared my mind of negative thoughts to help fix my mental health.&lt;/p&gt;

&lt;p&gt;Obviously, my friends had noticed that I had been gone for a while and it was one quote that someone said that has stuck with me since this happened:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;stop looking up to us and start looking at us through that sniper scope
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;(Not literally btw)&lt;/p&gt;

&lt;p&gt;The point I am trying to make here is that imposters syndrome can take a very bad toll on your mental health if you don't look after it carefully. Development can become a very stressful environment at times and it is essential that your mental and physical health is taken care of properly. If you feel like you're dealing with imposters syndrome or related speak to someone and get some time off, I was very very pleased to see on twitter a while back that a boss had given an employee off because of mental health (not common with me in my experience sadly).&lt;/p&gt;

&lt;p&gt;Just a few days away from things that are bringing your mood down can seriously have a greater impact.&lt;/p&gt;

&lt;p&gt;Have you got a similar story? I'd love to read it! &lt;br&gt;
Happy deving!!&lt;/p&gt;

</description>
      <category>impostersyndrome</category>
    </item>
    <item>
      <title>Reflection, why it's so useful.</title>
      <dc:creator>George</dc:creator>
      <pubDate>Wed, 17 Apr 2019 00:14:13 +0000</pubDate>
      <link>https://dev.to/rapidnerd/reflection-why-it-s-so-useful-52jf</link>
      <guid>https://dev.to/rapidnerd/reflection-why-it-s-so-useful-52jf</guid>
      <description>&lt;p&gt;So it's likely at some point you've heard the term "Reflection" used in programming, I was surprised that quite a few of my developer friends had heard of this term but never knew what it was or how to do it. And in short, it is incredibly useful to know.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is it?
&lt;/h2&gt;

&lt;p&gt;Reflection is the process of taking an API, Library or a standard library and inspecting it, looking into fields, interfaces, classes, methods (etc) at runtime. It also makes it possible to create new objects and invoke fields.&lt;/p&gt;

&lt;p&gt;For example, lets say we have a class in Java called Shopping list, and when we call the functions from this class all we can see is this&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;io.gpm.ShoppingList&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;printList&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
     &lt;span class="nc"&gt;ShoppingList&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getEverything&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now from that example, you can easily tell what it would the method &lt;code&gt;getEverything();&lt;/code&gt; would be doing, however, what if we couldn't see the actual code behind it and we wanted to include something of our own? This is where reflection comes into play.&lt;/p&gt;

&lt;h2&gt;
  
  
  How
&lt;/h2&gt;

&lt;p&gt;In all languages it is going to be different for this example I'll be demonstrating it in Java, thankfully Java comes packed with everything required to handle reflection. This may not be the same with other languages, from research it looks like the majority of widely used languages come with some form of support.&lt;/p&gt;

&lt;p&gt;Below are some very basic examples of how we can obtain information on Methods and classes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;Method&lt;/span&gt;&lt;span class="o"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;methods&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;ShoppingList&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getMethods&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Method&lt;/span&gt; &lt;span class="n"&gt;method&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;methods&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;method&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getName&lt;/span&gt;&lt;span class="o"&gt;());&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;Class&lt;/span&gt; &lt;span class="n"&gt;shoppingListClass&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;ShoppingList&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A lot more examples can be found at Oracles official documentation on &lt;a href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/package-summary.html"&gt;Reflection&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why would we need this?
&lt;/h2&gt;

&lt;p&gt;Well a perfect example of why we may need this is Minecraft, one of the most popular games in the world. The large majority of it's online servers run off a API named &lt;a href="https://spigotmc.org"&gt;SpigotMC&lt;/a&gt; however because the API and the game only gives us a limited amount of methods and abilities to do things with we need to reflect into the API and into the client to give us access to the packets it sends out and the current methods, from there it can be modified to do so much more but still limited. Example of this here&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;  &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Player&lt;/span&gt; &lt;span class="n"&gt;player&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;PacketPlayOutTitle&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;EnumTitleAction&lt;/span&gt; &lt;span class="n"&gt;action&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;fadeIn&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;stay&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;fadeOut&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;PacketPlayOutTitle&lt;/span&gt; &lt;span class="n"&gt;packetPlayOutTitle&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;PacketPlayOutTitle&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
        &lt;span class="n"&gt;titleClass&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getField&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"a"&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;set&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;packetPlayOutTitle&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;action&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;action&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="nc"&gt;PacketPlayOutTitle&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;EnumTitleAction&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;TITLE&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="n"&gt;action&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="nc"&gt;PacketPlayOutTitle&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;EnumTitleAction&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;SUBTITLE&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;titleClass&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getField&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"b"&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;set&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;packetPlayOutTitle&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;compone&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="o"&gt;));&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;
        &lt;span class="n"&gt;titleClass&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getField&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"c"&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;set&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;packetPlayOutTitle&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;fadeIn&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;titleClass&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getField&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"d"&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;set&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;packetPlayOutTitle&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;stay&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;titleClass&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getField&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"e"&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;set&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;packetPlayOutTitle&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;fadeOut&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;player&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="nc"&gt;CraftPlayer&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="n"&gt;player&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;getHandle&lt;/span&gt;&lt;span class="o"&gt;().&lt;/span&gt;&lt;span class="na"&gt;playerConnection&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;sendPacket&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;packetPlayOutTitle&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;IllegalArgumentException&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Provided player was null!"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As you can see we had to investigate the API a bit to find some hidden fields with weird names and then replicate the function ourselves to actually get this working. In the end, it just displayed some text on the screen.&lt;/p&gt;

&lt;p&gt;This is just a small example of how useful Reflection can be, below are some examples and documentation for Reflection on other languages&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/package-summary.html"&gt;Java&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.htmlgoodies.com/tutorials/web_graphics/object-reflection-in-javascript.html"&gt;JavaScript&lt;/a&gt;&lt;br&gt;
&lt;a href="http://ruby-doc.org/core-2.1.0/Module.html#method-i-const_get"&gt;Ruby&lt;/a&gt;&lt;br&gt;
&lt;a href="http://www.terminally-incoherent.com/blog/2008/05/27/metaprogramming-in-php/"&gt;PHP&lt;/a&gt; (Referred to as Metaprogramming)&lt;br&gt;
&lt;a href="https://www.geeksforgeeks.org/reflection-in-python/"&gt;Python&lt;/a&gt;&lt;/p&gt;

</description>
      <category>java</category>
      <category>reflection</category>
    </item>
    <item>
      <title>Ruby and Python, them and the differences</title>
      <dc:creator>George</dc:creator>
      <pubDate>Wed, 10 Apr 2019 17:47:39 +0000</pubDate>
      <link>https://dev.to/rapidnerd/willy-ruby-kill-off-python-3kg3</link>
      <guid>https://dev.to/rapidnerd/willy-ruby-kill-off-python-3kg3</guid>
      <description>&lt;p&gt;Ruby and Python are recognised as two of the most used and popular languages out there with continuous growth each day. Both updated regularly and if you name it then there's likely a library, API or something made for your usage. But as Ruby grows so does it's user count, will Ruby become more popular than Python? &lt;/p&gt;

&lt;p&gt;Quick disclosure: I'll look at some of the major aspects of each language, but will not be looking at APIs, libraries etc unless it's specific to that topic.&lt;/p&gt;

&lt;h1&gt;
  
  
  History
&lt;/h1&gt;

&lt;p&gt;Before comparing anything I believe it's always important to look at history. Python invented in 1991 by Guido Van Rossum and Ruby invented in 1995 by Yukihiro Matsumoto are now two of the top 10 languages in the world. Ruby is intensively used in some of your favourite websites, Twitter, Github, Airbnb and even Dev.to. Python as well used in Google, YouTube and Dropbox. There's no doubt about it that since their inceptions they have changed the development industry.&lt;/p&gt;

&lt;h1&gt;
  
  
  Syntax
&lt;/h1&gt;

&lt;p&gt;We all know that the syntax of a language is essential to a programmer, some people like Java syntax, some like Python heck some people like Brainfuck. &lt;/p&gt;

&lt;p&gt;Ruby is designed to be a flexible and empowering language however the flexibility can cause some problems. The magic that makes Ruby when you never expect it can also make it a pain to track down bugs resulting in hours and combing through code while combing through your hair.&lt;/p&gt;

&lt;p&gt;Example of Ruby's syntax&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;hello_world&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="s1"&gt;'Hello world'&lt;/span&gt;
    &lt;span class="nb"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;gets&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;chomp&lt;/span&gt;
    &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Hi &lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="nb"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Python, on the other hand, is designed to be a more simpler approach with indentation instead of curly brackets or keywords. The goal is to make everything visible to the developer and in some sense, it sacrifices some of the elegance that Ruby has to give.&lt;/p&gt;

&lt;p&gt;Example of Python's syntax&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;hello_world&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'Hello world'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'Enter your name'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s"&gt;'Hello &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Web development
&lt;/h1&gt;

&lt;p&gt;Seeing as there are a lot of web developers here at Dev.to it'd be stupid not to talk about web development. There are two main frameworks for both languages. For Ruby rails is by far the most popular, with Python there are two depending on what the end goal is which are Django and Flask. For this, I'll be using Django as the comparison. Lets look at the pros and cons...this was hard to determine in some area.&lt;/p&gt;

&lt;h4&gt;
  
  
  Rails pros
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Faster to spin up new projects&lt;/li&gt;
&lt;li&gt;Less code to make everything happen&lt;/li&gt;
&lt;li&gt;Larger rails community&lt;/li&gt;
&lt;li&gt;Easier migration&lt;/li&gt;
&lt;li&gt;Incredibly easy to deploy&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Rails cons
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Can become bloated - Rails is bundled with a bit of unnecessary code, less senior developers may not understand it&lt;/li&gt;
&lt;li&gt;If you need to bundle data analysis, big data functionality then Ruby wouldn't be the place to go&lt;/li&gt;
&lt;li&gt;Less code conventions to follow, sometimes code works and it's hard to know why&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Django pros
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Tighter syntax&lt;/li&gt;
&lt;li&gt;Ships with comprehensive portal premade on setup&lt;/li&gt;
&lt;li&gt;Strong middleware layers&lt;/li&gt;
&lt;li&gt;Djangos REST framework is one of the best out there&lt;/li&gt;
&lt;li&gt;Scalable caching system&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Django cons
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Isn't asynchronous by default&lt;/li&gt;
&lt;li&gt;Really overkill for smaller projects&lt;/li&gt;
&lt;li&gt;Everything gets deployed together&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I won't comment on which is better as I'm newer to Rails/Ruby than Django/Python however from researching both they clearly have their merits and cons. If you're looking for something to use for a website then either of these will work perfectly for your website, but always dependant on the needs of the site.&lt;/p&gt;

&lt;h1&gt;
  
  
  Community
&lt;/h1&gt;

&lt;p&gt;Both Ruby and Python have substantial communities behind them all over the place, forums, slack groups, discord servers etc wherever you look you will find an active community that is here to help and guide you. Each of the communities are influenced by the direction of the language and the software built behind it. &lt;/p&gt;

&lt;p&gt;Python has a much broader community than Ruby does. Both languages have a ton of academic use cases in both math, science, programming etc. But this doesn't mean Rubys community is at a stand still, it's a language that continues to grow each day.&lt;/p&gt;

&lt;p&gt;Ruby's popularity really kicked off when Rails came along in 2005, the community fell in love with and has been incredibly focused on web development. In addition it's diversity is still growing at a rapid pase.&lt;/p&gt;

&lt;h1&gt;
  
  
  Cybersecurity/Pen testing
&lt;/h1&gt;

&lt;p&gt;Both Python and Ruby are highly used for cybersecurity, sec ops and pen testing with humungous communities behind them. Wherever you look on this topic you'll find what you're looking for, for example Ruby has Metasploit developed by Rapid7 one of the most used tools in pen testing with Python having Nmap and Scapy. Both developed and used on a daily basis.&lt;/p&gt;

&lt;h4&gt;
  
  
  Python pros
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;High performance&lt;/li&gt;
&lt;li&gt;Extensive support&lt;/li&gt;
&lt;li&gt;Wherever you look you'll find what you need&lt;/li&gt;
&lt;li&gt;User-friendly data structuring&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Python cons
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Bundling the libraries and tools together can be a pain in the ass&lt;/li&gt;
&lt;li&gt;Some of the libraries/tools are paid&lt;/li&gt;
&lt;li&gt;Often Python version specific &lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Ruby pros
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Nicer syntax&lt;/li&gt;
&lt;li&gt;A lot of what's required is built into its standard lib and language (mutable strings, fragmentation etc)&lt;/li&gt;
&lt;li&gt;Highly scalable&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Ruby cons
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Smaller community&lt;/li&gt;
&lt;li&gt;Some of the libraries/APIs required are no longer maintained &lt;/li&gt;
&lt;li&gt;Some companies don't use it so if you're going in as the only one good luck.&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Package management
&lt;/h1&gt;

&lt;p&gt;Both Python and Ruby have incredible package managers. Neither of them can be faulted with Rubys RubyGem and Bundlr and for Python having Pip(3) and Anaconda both of them do an incredible job of installing, maintaining and finding packages that are required. Whichever language you look at you won't be disappointed with them.&lt;/p&gt;

&lt;h1&gt;
  
  
  Personal opinions
&lt;/h1&gt;

&lt;p&gt;Both are exceptional languages, which like every other language have their pros and cons. As someone who has written Python a lot more than Ruby and is now learning Ruby extensively I can say with a slight margin I'm starting to like Ruby more than Python. The syntax, flexibility and capabilities are beyond my beliefs, it has turned out to be a fantastic language and now really starting to see why people love Ruby so much.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;Will Ruby kill Python? In my opinion no. It's always going to be dependant on the end use case and the developer some people will always prefer X over Y because of personal preference but the way I see it is that Ruby will continue to grow alongside Python but Ruby will be more looked at for web development using Rails over Django/Flask, we can't predict the future but both of them are already incredible languages and will continue to grow as they go on.&lt;/p&gt;

&lt;p&gt;What do you think?&lt;/p&gt;

&lt;p&gt;EDIT: Changed the title&lt;/p&gt;

</description>
      <category>ruby</category>
      <category>python</category>
    </item>
    <item>
      <title>Lets look: Ruby</title>
      <dc:creator>George</dc:creator>
      <pubDate>Fri, 01 Mar 2019 23:04:39 +0000</pubDate>
      <link>https://dev.to/rapidnerd/lets-look-ruby-8ig</link>
      <guid>https://dev.to/rapidnerd/lets-look-ruby-8ig</guid>
      <description>&lt;h1&gt;
  
  
  Lets look: Ruby
&lt;/h1&gt;

&lt;h3&gt;
  
  
  What is this?
&lt;/h3&gt;

&lt;p&gt;Lets look is a series I've been thinking about doing for a while now. It's where I take popular technology, languages, APIs, libraries etc look at their history, what it is, how it was made and maybe some funny things regarding it. This is the first post of the series, seeing as there are many Rubyists and dev.to is mainly written in Ruby I thought this would be a good topic.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ruby and its history?
&lt;/h3&gt;

&lt;p&gt;Now I'm not that good at Ruby and only know the core basics, but I love the background behind languages and technology. Majority of this information is from research. Let's go!&lt;/p&gt;

&lt;p&gt;Ruby is a dynamically strong language that supports all forms of development, from standalone software to high-performance websites. Development started by Yukihiro Matsumoto aka "Matz" in 1994 but was not released to the public in 1995. Matz wanted to take some of his favourite languages (Perl, Lisp, Eiffel etc) and mash them together to create a language that has a strong balance between functional and imperative programming.&lt;/p&gt;

&lt;p&gt;Matz originally had two interpreters for Ruby. Both written in C which was under version 1.8 as a single-pass interpreted language. Since 1.9 and above Ruby has taken on a different approach called "Yet Another Ruby VM" aka YARV.&lt;/p&gt;

&lt;h3&gt;
  
  
  What made Ruby so popular?
&lt;/h3&gt;

&lt;p&gt;I think we can agree that every programming language can be a pain in the ass at times, including Ruby. However Ruby seems to be a language that is beginner friendly and easy to get started with, the syntax it has is very easy to follow and doesn't overload you with a ton of things to memorise from the beginning. &lt;/p&gt;

&lt;p&gt;As a dynamically typed language, Ruby is incredibly flexible and it does not have harsh rules on how you can build your features. This can easily lead to having more flexibility when solving problems using a variety of different methods.&lt;/p&gt;

&lt;p&gt;I think it's important to mention the community here. Ruby really took off in 2006 and in the 24 years since it released it has become the 8th largest community on StackOverflow, has the 5th most popular meetup community, is the 3rd most tagged language on GitHub and probably on here around the top 5 most talked about topics. &lt;/p&gt;

&lt;p&gt;(If someone could confirm that last one for me that would be great)&lt;/p&gt;

&lt;p&gt;When having issues with Ruby it seems like there are many places you can go to get help from people with lots of experience that can offer vital advice for now and the future.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rubys future
&lt;/h3&gt;

&lt;p&gt;It's impossible to predict the future for anything. But we can have a pretty good guess right? Ruby has only continued to grow since it's release, with the continuous development of the language and the Rails library more and more people are using it for their products. &lt;/p&gt;

&lt;p&gt;Seeing as Ruby has been named one of the top 10 languages in the world it's quite clear that it has a very bright future ahead. However; with new languages constantly being made could Ruby end up being replaced (well not fully), could a new language take over its popularity? It's possible but I don't see it happening any time soon.&lt;/p&gt;

&lt;h3&gt;
  
  
  What's hot
&lt;/h3&gt;

&lt;p&gt;I think many people have been waiting for me to mention one thing specific in this thread. But what is hot with Ruby and what are people loving?&lt;/p&gt;

&lt;h4&gt;
  
  
  Rails
&lt;/h4&gt;

&lt;p&gt;Rails is a web application framework that makes everything a whole ton easier. And if you didn't know by now this website is running on rails! Since it's release in 2004 by David Heinemeier Hansson it has exploded in popularity. Some people even saying that Rails has made Ruby more popular. Rails is now used some of the most popular websites in the world such as: GitHub, Twitch, Airbnb and SoundCloud. With 42,000+ stars and over 3,700+ contributors on GitHub it is truly becoming even more popular by the day.&lt;/p&gt;

&lt;h4&gt;
  
  
  Metasploit
&lt;/h4&gt;

&lt;p&gt;Metasploit is an open source security project designed to find vulnerabilities in computer systems, networks and websites. Developed by the Rapid7 team and publicy released in 2014 the project has been a hit with penetration testers. &lt;/p&gt;

&lt;h4&gt;
  
  
  Homebrew
&lt;/h4&gt;

&lt;p&gt;If you're a Mac user then the chances are you know what Homebrew is. Homebrew is a package manager that simplifies the install of software on macOS and Linux. With having 16,000+ stars and 640+ contributors on GitHub it is constantly updated and forever improving the work flow of developers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Worth the read
&lt;/h3&gt;

&lt;p&gt;Since it's release there have been several books, articles and other entities regarding Ruby. Here are some that I have found that are truly worth the read:&lt;/p&gt;

&lt;p&gt;AMA by David Heinemeier Hansson the creator of Rails &lt;a href="https://hashnode.com/post/i-am-david-heinemeier-hansson-ask-me-anything-cizf90u8w000ro353hnz8v4f5"&gt;Link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Why Ruby is Awesome - By Jay McGavren &lt;a href="https://blog.teamtreehouse.com/why-ruby-is-awesome"&gt;Link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Is Ruby a dying language? - By unkown Quora contributor &lt;a href="https://www.forbes.com/sites/quora/2018/04/03/is-ruby-a-dying-language/"&gt;Link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Why do people like Ruby? - Dev.to post by &lt;a class="mentioned-user" href="https://dev.to/casey"&gt;@casey&lt;/a&gt; Brooks &lt;a href="https://dev.to/cjbrooks12/why-do-people-like-ruby-374b"&gt;Link&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;In conclusion Ruby has a big history behind it, and has a very bright future ahead. Aka Ruby is awesome! With more and more people using the language for their products it is inovating minds to become intelligent developers.&lt;/p&gt;

&lt;h3&gt;
  
  
  How did I do?
&lt;/h3&gt;

&lt;p&gt;This is the first of a few threads I have in mind and still tweaking a few things, I'd love some feedback on how it's structured, other information that could be included. And if someone could think of a better name I'll owe you a lot of cookies!&lt;/p&gt;

&lt;p&gt;Happy deving!&lt;/p&gt;

</description>
      <category>ruby</category>
    </item>
    <item>
      <title>I'm learning typescript, what do I need to know?</title>
      <dc:creator>George</dc:creator>
      <pubDate>Thu, 20 Dec 2018 20:51:51 +0000</pubDate>
      <link>https://dev.to/rapidnerd/im-learning-typescript-what-do-i-need-to-know-5f2f</link>
      <guid>https://dev.to/rapidnerd/im-learning-typescript-what-do-i-need-to-know-5f2f</guid>
      <description>&lt;p&gt;Next semester in uni we're focussing on web dev, and very heavily on typescript. So I'm getting myself a headstart and begging to learn it now. I've been learning the core basics through lynda.com but I know for sure there is more I'm going to need to know that what this online course will provide me.&lt;/p&gt;

&lt;p&gt;So what are some good things to learn, research, test with etc &lt;/p&gt;

&lt;p&gt;(I also have a JavaScript background already)&lt;/p&gt;

&lt;p&gt;Anything posted is much appreciated.&lt;/p&gt;

&lt;p&gt;Thank you &amp;lt;3 Happy deving!&lt;/p&gt;

</description>
      <category>typescript</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Thinking like a computer, before programming a computer</title>
      <dc:creator>George</dc:creator>
      <pubDate>Mon, 05 Nov 2018 10:36:15 +0000</pubDate>
      <link>https://dev.to/rapidnerd/thinking-like-a-computer-before-programming-a-computer-52bp</link>
      <guid>https://dev.to/rapidnerd/thinking-like-a-computer-before-programming-a-computer-52bp</guid>
      <description>&lt;p&gt;Let's take a massive step back and think about one thing. In one way or another, every line of code that we write, compile and goes live somewhere at the end of its chain is then turned into machine code aka binary. So let us ask our selves why.&lt;/p&gt;

&lt;h2&gt;
  
  
  How a computer works
&lt;/h2&gt;

&lt;p&gt;First of all, computers don't (well can't) think, they execute. In short terms it all comes down to the machine executing a series of instructions, if these are in the correct order then we get the results we're looking for. If they're not then we go through debugging phases until its fixed or we go nuts. Any given task has to be translated from the step sequences in order for it to work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Computers are dumb and smart.
&lt;/h2&gt;

&lt;p&gt;They're designed in a way that forces them to generate an output for a specific input. Let's think, what really is a computer or a server? It all starts from some materials found in the ground. They're dumb because they can really do basic math and binary (aka 0 and 1). However, we can easily argue that they're smart, because we're taking hunks of metal that is found in the ground and making it into a machine that pretty much every job day to day will use in one way or another. &lt;/p&gt;

&lt;h2&gt;
  
  
  Why do we need to think like a computer?
&lt;/h2&gt;

&lt;p&gt;Programming is a very small part of computer science. It is based on the principles of computing, which is an essential part of any computer science related major, by applying these new methods of thinking it can help us become better programmers. &lt;/p&gt;

&lt;p&gt;Behind every line of code, there are layers of information that make it possible for things to work. I've found that taking the information has helped me improve aspects of complicated systems, even without an understanding of each part. &lt;/p&gt;

&lt;p&gt;I've come to realise that a lot of the time it's simply not enough to just know how to program a language in some areas. While working on embedded systems, back-end networking and more it suddenly hit me that I needed to know what was going on behind the scenes, that the reason why some of my code may be failing could be a logical error that other programmers can spot because they have this knowledge.&lt;/p&gt;

&lt;h2&gt;
  
  
  Principles of computing, what is it?
&lt;/h2&gt;

&lt;p&gt;In short its the mathematical side behind computers. For a couple of years I've been learning the principles behind computers, and originally thought I'd never end up using this knowledge. But as my course developed and became more advanced I found myself thinking to myself, if I used X equation or X strategy from that module perhaps my code could work better? Perhaps it could fix a bug? And perhaps if I knew the logic behind a computer's calculations that I can use that to my advantage.&lt;/p&gt;

&lt;p&gt;The principles do include a lot to learn though, from this semester we're taking on&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Propositional logic&lt;/li&gt;
&lt;li&gt;Predicate logic&lt;/li&gt;
&lt;li&gt;Sets, functions and relations&lt;/li&gt;
&lt;li&gt;Counting (Not pre-school level btw)&lt;/li&gt;
&lt;li&gt;Graph Theory&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How should I learn this?
&lt;/h2&gt;

&lt;p&gt;If you're in school, college, university etc and you're studying (or going to be) computer science or related course then it will more than likely be covered in your course, it's likely to be a different curriculum than the one listed above. &lt;/p&gt;

&lt;p&gt;If this is not the case here are some resources that you're able to do online:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.coursera.org/learn/principles-of-computing-1" rel="noopener noreferrer"&gt;Coursera: Principles of computing&lt;/a&gt;&lt;br&gt;
&lt;a href="https://code.org/educate/csp" rel="noopener noreferrer"&gt;Code.org Computer science principles&lt;/a&gt;&lt;br&gt;
&lt;a href="https://online.stanford.edu/courses/soe-ycsprincipofcomp-principles-computing" rel="noopener noreferrer"&gt;Stanford online Principles of computing&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Final advice
&lt;/h2&gt;

&lt;p&gt;This section can relate to every part of the development process, to be honest. However, there are five elements of development that I personally follow.&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Strap in and don't stop until the job is done to your satisfaction
&lt;/h4&gt;

&lt;p&gt;You can spend hours or even days fixing one error, and have to it turn out to be missing a semi-colon. The bad news is if its wrong the computer won't run it. After many years of development I've learnt that giving up is &lt;em&gt;NOT&lt;/em&gt; worth it. The development industry is one where you consistently learn. Code that isn't working is a great thing because you're teaching yourself what is wrong and how you can fix it.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Love the pain and don't fight it.
&lt;/h4&gt;

&lt;p&gt;I think we can all agree that life in general and writing code at a time sucks. But we all have sucky things that we deal with and work through. The best bit? We do it for ourselves, we do it because we want to learn more as we progress and because we love to programme (also the paycheck is pretty nice).&lt;/p&gt;

&lt;p&gt;The best we can do is think about how we can reframe the way we're taking on an issue and not wanting to throw it out the window. The feeling of having something work after &lt;/p&gt;

&lt;h4&gt;
  
  
  3. Remember why we write code
&lt;/h4&gt;

&lt;p&gt;For everyone here, there's a different reason to why we write code. For work, for fun, for education and much more. But there is always that personal reason behind why we decided to become developers, and often people struggle to find motivation for a certain project or to get their work done. Often reminding yourself of WHY you wanted to become a dev, and what originally got you started is what can give you the boost you need to continue on with the project.&lt;/p&gt;

&lt;h4&gt;
  
  
  4. Asking for help is good
&lt;/h4&gt;

&lt;p&gt;You will not find a single dev that hasn't asked for help in their career. There will always be someone who is better than us and knows more than us but will still ask for help because we may know something that they don't. It's more common than people think, got a bug that you can't fix? Ask another dev they may of had similar before. Everyone has different experiences within the dev culture, and those experiences can be used to everyone's advantage.&lt;/p&gt;

</description>
      <category>dev</category>
      <category>binary</category>
      <category>career</category>
    </item>
    <item>
      <title>How Dyslexia helped me become a programmer</title>
      <dc:creator>George</dc:creator>
      <pubDate>Tue, 04 Sep 2018 19:46:27 +0000</pubDate>
      <link>https://dev.to/rapidnerd/how-dyslexia-helped-me-become-a-programmer-136d</link>
      <guid>https://dev.to/rapidnerd/how-dyslexia-helped-me-become-a-programmer-136d</guid>
      <description>&lt;p&gt;Ever since I was young I knew there was an issue with my reading and spelling, but never knew what it was specifically. It wasn't until Year 8 (Junior year in America) that I got tested, and that's when they told me I had this annoying thing called Dyslexia. &lt;/p&gt;

&lt;p&gt;At a very young age I knew that the career path I'd want to go into is technology based, I liked doing hardware but was more interested in writing code. But the dyslexia kicked in, I couldn't remember things easily, I couldn't spell correctly and worst of all I got a lot of things mixed up. After learning the basics of batch I moved onto to learning Java, this is where it began taking a toll on me badly. I found that learning the syntax was fine, I could remember it easily. However when it came to remembering definitions, different uses of data types, how to write clean code, standard library usages, it went in one ear and dived out the other. &lt;/p&gt;

&lt;p&gt;Because at the time it was summer break for me I set myself goals, I wanted to become fluent enough that I could make basic pixel art games, nothing too crazy just to the point where it works and doesn't set my CPU on fire with my terrible code base. But I found that even after following tutorials and doing the same thing multiple times in an attempt to remember it that It still wouldn't stick. I had written this script at leat 12 times before&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt; &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;keyPressed&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;KeyEvent&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getKeyCode&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;handler&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;object&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;size&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="nc"&gt;GameObject&lt;/span&gt; &lt;span class="n"&gt;tempObject&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;handler&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;object&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;get&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tempObject&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getId&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="no"&gt;ID&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;Player&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
                &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="nc"&gt;KeyEvent&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;VK_W&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
                    &lt;span class="n"&gt;tempObject&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setVelY&lt;/span&gt;&lt;span class="o"&gt;(-&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
                    &lt;span class="n"&gt;keyDown&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
                &lt;span class="o"&gt;}&lt;/span&gt;
                &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="nc"&gt;KeyEvent&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;VK_S&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
                    &lt;span class="n"&gt;tempObject&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setVelY&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
                    &lt;span class="n"&gt;keyDown&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
                &lt;span class="o"&gt;}&lt;/span&gt;
                &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="nc"&gt;KeyEvent&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;VK_D&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
                    &lt;span class="n"&gt;tempObject&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setVelY&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
                    &lt;span class="n"&gt;keyDown&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
                &lt;span class="o"&gt;}&lt;/span&gt;
                &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="nc"&gt;KeyEvent&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;VK_A&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
                    &lt;span class="n"&gt;tempObject&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setVelY&lt;/span&gt;&lt;span class="o"&gt;(-&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
                    &lt;span class="n"&gt;keyDown&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
                &lt;span class="o"&gt;}&lt;/span&gt;

            &lt;span class="o"&gt;}&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="nc"&gt;KeyEvent&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;VK_ESCAPE&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;exit&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="cm"&gt;/***
* a basic event that listenes for a key event, when it is pressed it will
* move the player around to the coordinates depending on the press, also 
* assigns a boolean value for some reason that I can't remember.
***/&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Not impressive but for me it was a learning curv. I used it from a tutorial in my own game, you'd think after writing it so much that the usage and concept of it would stick in my mind. Nope. Couldn't remember a thing. That's when I went back to the help department and asked the people at my school if this was usual. They said with my form of dyslexia that having issues remembering things is common, especially if they're complex.&lt;/p&gt;

&lt;p&gt;This had a down pour on me, put me in many bad moods and almost made me give up. I had been working hard to remember and learn so much from programming but because of one condition I knew it could be a pain to make it stick. For two months I gave up, I watched my friends at the time succeed in their learning experiences, making whatever they pleased while I just sat there wishing that what was inside of my head would go away.&lt;/p&gt;

&lt;p&gt;It wasn't until my friend Jack came to me and asked what I had worked on recently, that's when I told him that I had given up because I was forgetting things and told him what conditions I had. After about an hour of talking he told me he has the same as me, and that giving up is not the way to go. Later that week I went over to his home and was shocked what I saw. He had a pile of notes all over his desk, stuck to his monitors, his tower even his chair. I think at one point his cat was chewing them. But he had a format, a format that he used to remember the important information he needed. Taking home an example I tried it, with the code above I used the format to write out it in the boxes designated.&lt;/p&gt;

&lt;p&gt;Within two days I had remembered the code through the format, the colour coding, the assignment of objects and numbers gave me a great idea of how I could remember all the important information. Although it can't be used for every piece of code written it was great that I finally had a way to remember.&lt;/p&gt;

&lt;p&gt;Thank you, Jack!!!&lt;/p&gt;

&lt;p&gt;Couple of months go by and I find that this format is working like a dream for me, I'm remembering more than I ever could and having a tremendous amount of fun making the random crap I did during the learning curves. And I had a notebook that look like a rainbow when you skipped through it.&lt;/p&gt;

&lt;p&gt;And now I face a new problem. MATHS!&lt;/p&gt;

&lt;p&gt;Ask anyone I know my maths is terrible, I can do basic maths but when it comes to algebra, trigonometry and calculus (even though we're not taught that in the UK) I can get incredibly stuck. Speaking to the department at school they taught me a similar trick to the one of remembering. By assigning a different colour to every aspect of the equation and mixing them two colours together makes the output. So for example if I had green for the first number, then + then have red for the second number it would output be yellow. I found that having simple memory tricks to remember formulas, equations and general information I needed to remember would benefit me greately and other programmers with dyslexia. It's not just colours, shapes, and other entities can help greately.&lt;/p&gt;

&lt;h3&gt;
  
  
  Advice for anyone thinking they have dyslexia or have it.
&lt;/h3&gt;

&lt;p&gt;1: If you think you have it but haven't been diagnosed go get it checked.&lt;/p&gt;

&lt;p&gt;For years I went around my normal, school and social life thinking that something was wrong with me, thinking that my mind is not normal. Having a proper diagnosis from a professional certainly took a massive load off my shoulders.&lt;/p&gt;

&lt;p&gt;2: It's okay to have weird ways of remembering things.&lt;/p&gt;

&lt;p&gt;Everyone remembers important information differently, some write it down, some keep saying/writing it until its stuck in their head forever. In one case a former colleague of mine had it tattooed on him. As long as you have a method of remembering it then that's the main thing.&lt;/p&gt;

&lt;p&gt;3: It doesn't make you a bad programmer.&lt;/p&gt;

&lt;p&gt;One of the thoughts I had rushing through my mind was that because of one condition I would never amount to anything good in my career, while I still have a long way to go before I find myself in a place I'll ultimately be happy with. Having dyslexia may of ruined my mindset for a while, and prevented me from getting further but I belive it has helped me grow stronger, and helped me greatly in the programming world.&lt;/p&gt;

&lt;p&gt;4: If you're in some form of education use any resources provided.&lt;/p&gt;

&lt;p&gt;Throughout all of the resources I've been provided in education establishements (even today at university) it has greatly helped me improve every aspect of my work and educational life, obviously every place is going to be different but the techniques given are a great help. And most the time its free or covered by someone else.&lt;/p&gt;

&lt;p&gt;While today Dyslexia, Dyscalculia and Dyspraxia are still a major part of my life I don't see them as an issue or a disablity, I see them as something that is in me that is making me stronger. &lt;/p&gt;

&lt;p&gt;Some resources to help &amp;amp; learn regarding dyslexia:&lt;br&gt;
&lt;a href="http://www.dyslexiahelp.co.uk/"&gt;Dyslexia help &amp;amp; support&lt;/a&gt;&lt;br&gt;
&lt;a href="http://www.dyslexia-help.org/"&gt;Dyslexia foundation&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.nhs.uk/conditions/dyslexia/living-with/"&gt;NHS Dyslexia management&lt;/a&gt; &lt;/p&gt;

</description>
      <category>career</category>
    </item>
    <item>
      <title>Jetbrains IDEs Material Plugin</title>
      <dc:creator>George</dc:creator>
      <pubDate>Sun, 02 Sep 2018 13:03:50 +0000</pubDate>
      <link>https://dev.to/rapidnerd/jetbrains-ides-material-plugin-3j43</link>
      <guid>https://dev.to/rapidnerd/jetbrains-ides-material-plugin-3j43</guid>
      <description>&lt;p&gt;Undoubtedly Jetbrains makes some of the most popular IDEs. IntelliJ, PyCharm, PHPStorm, Webstorm they're some of the most used enviorments in development. With this plugin we can have the Material themes imported from visual studio or sublime.&lt;/p&gt;

&lt;p&gt;It's compatible with all (to my knowledge) Jetbrains IDEs.&lt;/p&gt;

&lt;p&gt;To install we need to first:&lt;/p&gt;

&lt;p&gt;Download it (in this example I'll be using PyCharm)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.toDownload%20link"&gt;https://plugins.jetbrains.com/plugin/8006-material-theme-ui&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you have the plugin downloaded you'll need to head over to the top right corner, click file, settings, go down to plugins, select "Install plugin from disk", navigate to your download and select. Now we restart.&lt;/p&gt;

&lt;p&gt;And now we're greated with the install wizzard.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffiq1g1x8mvheu1z1s6z4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffiq1g1x8mvheu1z1s6z4.png" width="800" height="510"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Through here you'll be given several options to customize the themes to your liking&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffiq1g1x8mvheu1z1s6z4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffiq1g1x8mvheu1z1s6z4.png" width="800" height="510"&gt;&lt;/a&gt;&lt;br&gt;
Above we can see some of the premade ones that come included, or you're able to make your own.&lt;/p&gt;

&lt;p&gt;And the final outlook &lt;br&gt;
(ignore my messy invorment)&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyijvq8524hatt91b006v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyijvq8524hatt91b006v.png" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjsulpiynid2ecwuevc5s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjsulpiynid2ecwuevc5s.png" alt="Example of how the code can look, with some old code when I was learning TKinter " width="800" height="337"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ides</category>
      <category>jetbrains</category>
    </item>
    <item>
      <title>Choosing a Linux distro</title>
      <dc:creator>George</dc:creator>
      <pubDate>Fri, 17 Aug 2018 22:21:25 +0000</pubDate>
      <link>https://dev.to/rapidnerd/choosing-a-linux-distro-1nhb</link>
      <guid>https://dev.to/rapidnerd/choosing-a-linux-distro-1nhb</guid>
      <description>&lt;p&gt;Recently I decided that I wanted to switch from Windows 10 to a Linux distro as my primary operating system. Mainly because I've always found that the dev environments are a lot better on Linux (personally) and that I have a lot more freedom to mess around with the OS. &lt;/p&gt;

&lt;p&gt;But the hardest decision was which do I chose? Linux is an&lt;br&gt;
&lt;a href="https://github.com/torvalds/linx"&gt;Open source&lt;/a&gt;, meaning anyone is free to commit code and obviously create their own operating system. Personally I went with &lt;a href="https://www.linuxmint.com/"&gt;Linux Mint (Cinnamon)&lt;/a&gt; for my new OS. But I still had other options in mind.&lt;/p&gt;

&lt;p&gt;I made a table to showcase what I took into consideration, hopefully it may help you if you switch to Linux.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;OS&lt;/th&gt;
&lt;th&gt;Environment&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;th&gt;Based on&lt;/th&gt;
&lt;th&gt;Expertise required&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Mint&lt;/td&gt;
&lt;td&gt;Cinnamon, MATE, XFCE, KDE&lt;/td&gt;
&lt;td&gt;General&lt;/td&gt;
&lt;td&gt;Ubuntu, Debian&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Debian&lt;/td&gt;
&lt;td&gt;GNOME, KDE, XFCE. LXDE (many more)&lt;/td&gt;
&lt;td&gt;Community based, server, general use, other distros&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ubuntu&lt;/td&gt;
&lt;td&gt;Unity&lt;/td&gt;
&lt;td&gt;General&lt;/td&gt;
&lt;td&gt;GNOME (Recent return) (Parts in Debian)&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Manjaro&lt;/td&gt;
&lt;td&gt;Cinnamon, Enlightenment, XFCE, GNOME (+ others)&lt;/td&gt;
&lt;td&gt;General&lt;/td&gt;
&lt;td&gt;Arch&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Arch&lt;/td&gt;
&lt;td&gt;Cinnamon, GNOME, KDE&lt;/td&gt;
&lt;td&gt;General use, server&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;td&gt;High (pain to install)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fedora&lt;/td&gt;
&lt;td&gt;GNOME, KDE&lt;/td&gt;
&lt;td&gt;General, testing sandbox&lt;/td&gt;
&lt;td&gt;Red Hat&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CentOS&lt;/td&gt;
&lt;td&gt;GNOME, KDE&lt;/td&gt;
&lt;td&gt;General, server&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;I looked into quite a lot of Linux Distros before coming to my conclusion, these are the key factors I took into consideration before selecting. Before selecting I suggest you have a look at &lt;a href="https://distrochooser.de/en"&gt;This website&lt;/a&gt; it allows choosing a distro based on your preferences and usage a lot easier.&lt;/p&gt;

&lt;p&gt;In addition if you're dual booting it can be a pain in the ass to switch your OS every time in the BIOS. A friend of mine has shown me the &lt;a href="http://www.rodsbooks.com/refind/linux.html"&gt;rEFInd project&lt;/a&gt; it presents a customizable interface on boot to allow you to select your chosen OS.&lt;/p&gt;

&lt;p&gt;Happy deving!&lt;/p&gt;

</description>
      <category>linux</category>
    </item>
    <item>
      <title>Using Python and C together</title>
      <dc:creator>George</dc:creator>
      <pubDate>Wed, 08 Aug 2018 18:38:59 +0000</pubDate>
      <link>https://dev.to/rapidnerd/using-python-and-c-together-d4e</link>
      <guid>https://dev.to/rapidnerd/using-python-and-c-together-d4e</guid>
      <description>&lt;p&gt;Python and C, two of the most popular and greatest languages that have come out of programming. Many languages can communicate with each other very easily, but with Python and C it's a little tricky. But first lets start of with why we would want this?&lt;/p&gt;

&lt;p&gt;There's no doubt about it that both of these languages are powerful, and incredibly useful. And it pays off sometimes to have the raw performance of the C language being used in a Python project, it can certainly help with procedures such as reducing response and processing times.&lt;/p&gt;

&lt;h1&gt;
  
  
  What we'll need
&lt;/h1&gt;

&lt;p&gt;Python, and C. That's it.&lt;/p&gt;

&lt;h1&gt;
  
  
  The code
&lt;/h1&gt;

&lt;p&gt;In this example I'll be using a simple Fibonacci function to demonstrate it all.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;
&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;Python.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="c1"&gt;// create the function like you normally would in C&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;CFib&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;CFib&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;CFib&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="c1"&gt;// this function will be binding our python version and our C version together&lt;/span&gt;
&lt;span class="c1"&gt;// will only take one and only one non-keyword arguement&lt;/span&gt;
&lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="n"&gt;PyObject&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nf"&gt;fib&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;PyObject&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;PyObject&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;PyArg_ParseTuple&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"i"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nb"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
     &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;Py_BuildValue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"i"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;CFib&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the code we can see that we require the &lt;code&gt;Python.h&lt;/code&gt; header file, this contains all the relevant methods, functions, attributes etc we need to allow the two languages to work together. We first start off by creating the function normally in C, then using the methods from the Python header file we create it again, but with a few more arguments.&lt;/p&gt;

&lt;p&gt;As you can see we're using builders and parsers inside the function. These communicate between both languages to create the python versions of the function(s) in C.&lt;/p&gt;

&lt;p&gt;Additionally we need a small setup script written in Python&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;distutils.core&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;setup&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Extension&lt;/span&gt;

&lt;span class="n"&gt;setup&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;'ModuleName'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;version&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;'1.0'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ext_modules&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;Extension&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'ModuleName'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;'Fib.c'&lt;/span&gt;&lt;span class="p"&gt;])])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;most of it speaks for itself here. We're importing from a library that is built into Python 3+ that allows us to run setup and extension scripts, these both are compatible with C and the Python header file&lt;/p&gt;

&lt;p&gt;In order to run this and save it as our own project we need to run these two commands&lt;br&gt;
&lt;code&gt;python setup.py build&lt;/code&gt;&lt;br&gt;
&lt;code&gt;python setup.py install&lt;/code&gt; &lt;br&gt;
this will then allow you to call your module from any other python project.&lt;/p&gt;

&lt;p&gt;And now for the grand finale&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;ModuleName&lt;/span&gt; &lt;span class="c1"&gt;# really should've chosen a better name
&lt;/span&gt;&lt;span class="n"&gt;ModuleName&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CFib&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;prints out 1&lt;/p&gt;

&lt;p&gt;This is available on my GitHub if you wish to fork it&lt;br&gt;
&lt;a href="https://github.com/Eros/PyCExtensions"&gt;Click me!&lt;/a&gt;&lt;br&gt;
In addition this is a very basic version, you can follow up on how to go more indepth over at &lt;a href="https://docs.python.org/3/extending/index.html"&gt;The Python tutorial site&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Any errors or suggestions feel free to let me know &amp;lt;3&lt;/p&gt;

</description>
      <category>python</category>
      <category>c</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>The legends behind code</title>
      <dc:creator>George</dc:creator>
      <pubDate>Mon, 06 Aug 2018 16:38:11 +0000</pubDate>
      <link>https://dev.to/rapidnerd/the-legends-behind-code-pcl</link>
      <guid>https://dev.to/rapidnerd/the-legends-behind-code-pcl</guid>
      <description>&lt;p&gt;A recent &lt;a href="https://twitter.com/bendhalpern/status/1025447403896418305"&gt;Tweet&lt;/a&gt; by &lt;a class="mentioned-user" href="https://dev.to/ben"&gt;@ben&lt;/a&gt; got me thinking, there many people out there that have made massive contributions to code and computers in general. Without these people It nearly wouldn't be the same as it would be today.&lt;/p&gt;

&lt;p&gt;Such as Grace Hopper:&lt;/p&gt;

&lt;p&gt;Often referred to as the first women in software she designed and created the first compiler in her spare time. Additionally she was one of the first programmers to start working on the Harvard Mark I. She has done a lot in the computer science world, everything from being an Navy rear admiral, creating the compiler to creating COBOL one of the first high level programming languages ever made.&lt;/p&gt;

&lt;p&gt;Tim Berners-Lee:&lt;/p&gt;

&lt;p&gt;Does this man need an introduction? The reason why we're all tweeting away, facebooking and able to interact with millions of people over a computer is because this man invented the world wide web. &lt;/p&gt;

&lt;p&gt;There are many more people that have made contributions to the technology today. Who do you think has made a significant impact for development, and tech?&lt;/p&gt;

</description>
      <category>discuss</category>
    </item>
  </channel>
</rss>
