<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Clara van Staden</title>
    <link>https://claravanstaden.com</link>
    <atom:link href="https://claravanstaden.com/rss.xml" rel="self" type="application/rss+xml" />
    <description>Writing on software, building products and making things.</description>
    <language>en</language>
    <item>
      <title>Why Women Should Consider a Career In Software</title>
      <link>https://claravanstaden.com/women-consider-career-software</link>
      <guid>https://claravanstaden.com/women-consider-career-software</guid>
      <pubDate>Mon, 01 Jan 2018 00:00:00 GMT</pubDate>
      <description>Why Software is a Great Career Choice for Women Software engineering has exploded with the rise of the digital age, and with it, software engineering jobs. Somehow, it seems like very few women are making it to studying computer science and even less to software development jobs. There may be severa</description>
      <content:encoded><![CDATA[<h2>Why Software is a Great Career Choice for Women</h2>
<p>Software engineering has exploded with the rise of the digital age, and with it, software engineering jobs. Somehow, it seems like very few women are making it to studying computer science and even less to software development jobs. There may be several reasons for that. These reasons have been discussed, debated and it still a hot topic, but I would rather approach it from a different angle. Rather, I would like to highlight what I&#8217;ve experienced in my few years in the industry. I would like to speak to women about this amazing field and the joy that I have had working in IT. I hope that this article would encourage women to consider it as a career as well.</p>
<h2>Creativity</h2>
<p>Pop culture often represents software as a geeky, nerdy, left-brain dominant field.</p>
<blockquote>
<p>Contrary to this, software engineering is a highly creative field and rewards creative thinking and problem solving.</p>
</blockquote>
<p>Writing code can be seen as a craft. Beautiful code is easy to spot, but hard to write, much like an artists painting. Women who consider fields like architecture and engineering should definitely consider software. It demands the same methodical, structured approach but also requires creative problem solving. I enjoy drawing and painting in my free time, yet adore my work as a programmer.</p>
<h2>Fulfilment &amp; Satisfaction</h2>
<p>Completing a usable piece of software, or solving a complex problem in a simple manner is extremely satisfying. Programming is a very tangible, rewarding career for those who are willing to push through problems and see a project&nbsp;through to the final output. There is something uniquely satisfying to creating something that someone can use immediately, in a relatively short time.</p>
<h2>Flexibility, Autonomy &amp; Starting Your Own Business</h2>
<p>Software can be written from any location, provided that you have internet and a computer. This opens up a world of possibilities for women who have families, but still have time (or need to) work. Many companies offer complete remote working arrangements and flexible work hours so that women can work when it works for them. Starting a new online business or freelancing is also much easier if you know how to code. You can create almost everything you need with your time and knowledge only.</p>
<h2>Work Environment &amp; Learning Opportunities</h2>
<p>Working in such a broad field, work environments usually differ quite a bit across domains. For example, writing software for a financial institution differs considerably from working in telecoms (like I do). However, most companies that employ software engineers focuses on team collaboration, personal growth and learning opportunities. Software companies often encourage employees to attend conferences and training courses.</p>
<h2>Education Requirements</h2>
<p>To get a good software engineering job, a three to four year bachelors degree will do the trick. Many other sought-after professions like doctors, lawyers, chartered accounts and architects require either further studies (masters degree, board exams) or trainee years (internships, articles, mandatory government work). There is no doubt in my mind that these long years of training adds to the professional&#8217;s knowledge and ability, but the fact that software is still young field and not as regulated (yet) can be advantageous.&nbsp;Young professionals who wants to get some hands-on experience while still making decent money can start work right away.</p>
<p>To learn to code, you don&#8217;t even need to wait for university. There are a <a href="https://www.codeschool.com/">wealth of valuable tutorials (some even free)</a> for you to start educating yourself about what coding is.</p>
<h2>Increased Diversity</h2>
<p>At the moment, the software engineering field is predominantly filled with men. In my opinion, diverse teams provide many different insights into problem solving and should be encouraged. I may be treading on the danger of generalizing, but I feel that many highly intelligent, motivated women in, for example, in the accounting field, would be an extraordinary boost in ICT. We need more painstakingly precise effort in coding. This is not to say that men do not have these characteristics, but that I know many women who possess these qualities who are not in software. More women in ICT will be fantastic for the field.</p>
<h2>Good Salaries</h2>
<p>That brings my to my last point. A big paycheck should never be the main motivation behind a career choice, because doing something you loathe 8+ hours per day is sure to make for a miserable life. That being said, an advantage of software engineering at the moment is that the demand seems to outweigh the supply. This may very well be temporary, but <a href="https://www2.deloitte.com/au/en/pages/media-releases/articles/ict-skills-shortage-points-to-enormous-career-opportunities-160615.html">job shortage lists predict</a> that this will only get worse in the future. For now, it is a good perk for young women that would like to get a financial head-start in life.</p>
<p>I hope that if you have read this that has made you think about software engineering as a promising career path for women. Please share this article with your daughters, nieces, cousins, wives and girlfriends who are considering different career paths. Perhaps they are unsure of what career path to follow and haven&#8217;t even considered working in software. I hope that if they do choose software that they&#8217;ll have as much joy from it as I have.</p>
<p>If you are a woman considering software engineering as a career and would like to talk to me about anything related to software as a career? Feel free to contact me at <a href="mailto:info@claravanstaden.com">info@claravanstaden.com</a>. I would love to answer your questions and give you some insight into what you can expect and prepare for.</p>
<p>Already a software engineer? Check out <a href="http://claravanstaden.com/blog/become-successful-software-engineer/">my article on upping your software engineering game</a>.</p>
</p>


<p class="wp-block-paragraph"></p>]]></content:encoded>
    </item>
    <item>
      <title>How to Become a Successful Software Engineer</title>
      <link>https://claravanstaden.com/become-successful-software-engineer</link>
      <guid>https://claravanstaden.com/become-successful-software-engineer</guid>
      <pubDate>Sun, 15 Jan 2017 00:00:00 GMT</pubDate>
      <description>How to fast-track your career and become a successful software engineer. Disclaimer: Success means different things to different people, but for me it meant becoming valuable enough for my company to be promoted to a senior software engineer as quickly as I could. It took me about three years and fo</description>
      <content:encoded><![CDATA[<h2>How to fast-track your career and become a successful software engineer.</h2>
<p><strong>Disclaimer:</strong> Success means different things to different people, but for me it meant becoming valuable enough for my company to be promoted to&nbsp;a senior software engineer as quickly as I could. It took me&nbsp;about three years and fourth months to be promoted from junior, to mid-level, to senior. Regardless of what you think a successful software engineer means, I&#8217;ve learnt the following valuable lessons that will improve your career as a software engineer.</p>
<h1>Take Action</h1>
<p>First and most importantly, value action above pretty much anything else. From my experience, there are many people with great potential but it seems like they cannot bring themselves to action. This is hard and takes practice, but often yields great rewards. It is always easier to do nothing. Train yourself to do things that you know can be done to improve your product/services/processes. Doing so will make you stand out beyond the crowd.</p>
<p>An example of this in my career was pushing for our company to use Continuous Integration (CI). I wanted to do this for a long time, but avoided it because I knew I had to do some server setup and installation myself and I knew it would take some time because it is an area that I work in often. A helpful trick to make this easier is to objectively weigh up the cost of potential failure against potential success. When I thought about that, it was a no-brainer. A few wasted days against less bugs and less nasty comebacks after deployments and greater freedom with changes. As it turned out, the attempt was a great success and the company adopted the CI strategy. We delivered a complex project with no obvious bugs and minimal changes necessary.</p>
<p>If I could give other software engineers only one piece of advice, this would be it. Don&#8217;t delay. Teach yourself a language that you&#8217;ve always wanted to learn. Improve the things that irritate you. Get comfortable with being uncomfortable. The key principle here is self-discipline. It is often the hard, less enjoyable tasks that yield the most fruit.</p>
<p>I read a little book called &#8216;<a href="https://www.amazon.com/Rhinoceros-Success-Secret-Charging-Opportunity/dp/1937077152/ref=sr_1_1?ie=UTF8&amp;qid=1480950447&amp;sr=8-1&amp;keywords=rhinosaurus+success">Rhinoceros Success</a>&#8216; (provided by my mentor), largely on taking action that would get you in the right mindset. I can also recommend <a href="https://www.amazon.com/No-Excuses-Self-Discipline-Brian-Tracy/dp/1593156324">No Excuses by Brian Tracy</a> on the topic of self-discipline.</p>
<blockquote><p>The secret of success is the overcoming of inertia. &#8211;&nbsp;<a href="https://www.amazon.com/Rhinoceros-Success-Secret-Charging-Opportunity/dp/1937077152/ref=sr_1_1?ie=UTF8&amp;qid=1480950447&amp;sr=8-1&amp;keywords=rhinosaurus+success">Rhinoceros Success</a>, by Scott Alexander</p></blockquote>
<h1>Learn to Work With People</h1>
<p>There have been many studies that confirm that people with high EQ fare better than people with high IQ. For most engineers (myself included), getting along with people&nbsp;are much more difficult than solving technical problems. Bringing up contentious and unpopular (but necessary) topics require good timing, the proper setting and the appropriate body language.</p>
<p>A book that has stood the test of time is &#8216;<a href="https://www.amazon.com/How-Win-Friends-Influence-People/dp/0671027034/ref=sr_1_1?ie=UTF8&amp;qid=1480951200&amp;sr=8-1&amp;keywords=how+to+influence+people+and+win+friends">How to Win Friends and Influence People</a>&#8216;. If you have not read this before, buy it now. It has helped me tremendously in communicating with both colleagues and friends in a social setting. The book covers various topics covering many social interaction vices. For example, it was only reading this book that I realized people don&#8217;t actually like being criticized and doing so often accomplishes nothing. Actually it is pretty obvious, but I never thought about how my gripes may affect the people who I am working with.</p>
<p>The book will able aid you to become a more likable person, enabling you to have more meaningful relationships which in turn makes you a happier person.</p>
<h1>Read</h1>
<p>Read, a lot.</p>
<p>The deathtrap in a technological career is to stagnate and become irrelevant. People that get stuck in this trap all have one thing in common &#8211; they don&#8217;t read. Reading is a magic tool that you should use to your advantage as much as possible. &nbsp;Read up on successful tech stacks used in successful companies. Read about future trends. And not just tech blogs and opinion pieces. Invest into well-received self-improvement books. &nbsp;Reading can change how you think and renew your mind.</p>
<p>A&nbsp;footnote in this section: Reading news does NOT count for reading. Many self-improved books (<a href="https://www.amazon.com/Rhinoceros-Success-Secret-Charging-Opportunity/dp/1937077152/ref=sr_1_1?ie=UTF8&amp;qid=1480950447&amp;sr=8-1&amp;keywords=rhinosaurus+success">Rhinoceros Success</a>, <a href="https://www.amazon.com/4-Hour-Workweek-Escape-Live-Anywhere/dp/0307465357/ref=sr_1_1?ie=UTF8&amp;qid=1480951578&amp;sr=8-1&amp;keywords=4+hour+work+week">4 Hour Work Week</a>) discourage reading news. I&#8217;ve been doing so for the last few months, and I&#8217;m not turning back. Why? News is overwhelmingly negative and usually provides free worrying instead of stimulation. Fill your brain with things that interest and motivate you, not sap your energy and make your anxious.</p>
<h1>Small Productivity Hacks</h1>
<p>There are small changes that you can make in your work date that could give you a tremendous efficiency advantage. Here&#8217;s some of the best that I&#8217;ve used:</p>
<h3><strong>Read Emails at a Set Time</strong></h3>
<p>Unless your tasks specifically dependent on frequently reading emails (like performing tech support or replying to clients), avoid reading emails throughout the entire day as they come in. This is hard, especially if you are extremely curious, like me, but really is a worthwhile discipline. I used to get to the office, read my emails and starting hammering away at some issue that was raised in the emails. Now, I get to work and put in a solid 3-4 hours before reading my emails. And surprise, no one died. Starting your day off with some focused effort sets a good pace for the rest of the day and I promise you, you&#8217;ll get a lot more done. Batching routine tasks like these saves time and can be used in other areas of your life as well.</p>
<h3><strong>Fake Deadlines</strong></h3>
<p>Ever wrote a brilliant paper in a few hours? When we have limited time, we focus on the things that matter. Set fake deadlines for yourself and you will suddenly have a lot more time to do the important things.</p>
<h3><strong>Work Blocks</strong></h3>
<p>This one goes hand-in-hand with creating fake deadlines for yourself. Work in an hour to two hour blocks without interruption, and then take a break.</p>
<h3><strong>Avoid Interruptions</strong></h3>
<p>Avoid interruptions (and interrupting) at all costs. Again, this takes great discipline, but comes with great rewards. Especially in technical work, interruptions are deadly and often cause unnecessary mistakes. Wear headphones, even if you don&#8217;t listen to anything (<a href="https://www.amazon.com/4-Hour-Workweek-Escape-Live-Anywhere/dp/0307465357/ref=sr_1_1?ie=UTF8&amp;qid=1480951578&amp;sr=8-1&amp;keywords=4+hour+work+week">4 Hour Work Week</a>). If someone pitches up to your desk without warning, politely ask them to send an email. If it is a crisis, tell them you really only have 5 minutes. Practicing this will prevent your day from running away from context-switch to context-switch. The opposite also holds true &#8211; don&#8217;t interrupt people unless it is absolutely unavoidable. Ban work IM and respect people&#8217;s time.</p>
<h1>Be a Mentor</h1>
<p>Teaching and sharing your knowledge and watching other people progress is one of the most fulfilling things you can do. Guiding someone less experienced than you takes energy, patience and persistence. Not all software engineers are inherently experienced in this, and learning to mentor is a great way to increase your value to the company.</p>
<p>Mentoring someone also teaches you to lead. One of the greatest tips I&#8217;ve learnt of one mentoring is to be wary of yourself of becoming the bottleneck. Empower your mentees to make decisions themselves, and perform frequent reviews until it is not necessary to do so. This also teaches your mentees to take responsibility for their own work and make the best decisions with the information they have.</p>
<h1>Be a Mentee</h1>
<p>Find someone who you admire and look up to in software engineering. Ask them if they would be willing to help you grow in your field, and not just in software engineering, but also personal development. If you are luckily enough, like me, someone at your office will start engaging with you on this level without you even needing to ask.</p>
<h1>Take Responsibility</h1>
<p>A great way to show that you are ready for a position with more responsibility, is to actually take more responsibility for your work. Made a mistake? Own up, and don&#8217;t make excuses. Correct your mistake as quickly and thoroughly as possible. Another way to advance in this area is to volunteer for difficult&nbsp;or challenging work. See a colleague struggling to cope with work? Offer to take something off their hands, and do it really well. Just be careful not to overburden yourself.</p>
<p>Looking at these guidelines, it is clear that becoming a better software engineer does not necessarily mean knowing every tech stack. Growing and improving in your career also largely depends on skills that are useful in any career. I hope these principles will be as valuable to you as they have been for me.</p>
<p>What has proved to been crucial in your path to success? Feel free to leave comments below.</p>]]></content:encoded>
    </item>
    <item>
      <title>Personal Goals and Gamer Mentality</title>
      <link>https://claravanstaden.com/personal-goals-and-gamer-mentality</link>
      <guid>https://claravanstaden.com/personal-goals-and-gamer-mentality</guid>
      <pubDate>Wed, 24 Feb 2016 00:00:00 GMT</pubDate>
      <description>When I was in high school, my art teacher used to tell me that once you hit 25, it’s all downhill, fat and wrinkles from there. Funnily enough, throughout my teens and early twenties I made a point of remembering this. Keeping this in mind, I have decided to prepare myself for the big milestone […]</description>
      <content:encoded><![CDATA[<p>When I was in high school, my art teacher used to tell me that once you hit 25, it&#8217;s all downhill, fat and wrinkles from there. Funnily enough, throughout my teens and early twenties I made a point of remembering this. Keeping this in mind, I have decided to prepare myself for the big milestone by setting numerous personal goals. It&#8217;s going really well so far, so I&#8217;d thought it may be good to capture what I did differently this time.</p>
<h2>Gamification</h2>
<p>A friend of mine told me about <a href="https://habitica.com/">Habitica</a>, a RPG app that helps you set and attain personal goals. Finishing tasks or improving your habits lets your level up, choose rewards and buy cool gear. Being a gamer, I&#8217;m completely hooked on this. By the by, Habitica is an open source project running on NodeJs and <a href="http://habitica.wikia.com/wiki/Guidance_for_Blacksmiths">welcomes contributors</a>. Habitica also makes your goals social by allowing you to join a party. Missing dailies or bad habits will hurt your whole party. Some positive peer pressure, gamified.</p>
<h2>Speak Up and Share</h2>
<p>In the past, I&#8217;ve made many a grandiose plans and goals (including becoming catwoman, but that one didn&#8217;t pan out so well) in my mind, without sharing them. I think it depends a lot on your personality, but for me it has really worked be open about my goals. I think it adds some pressure and accountability, as most people are bound to enquire about your progress now and then.</p>
<h2>Plan Ahead</h2>
<p>Planning is everything. Plot your week out so you can realistically see where you&#8217;ll have gaps to complete your tasks. Be realistic.</p>
<h2>Stick to Routine</h2>
<p>Again, it depends on your personality. But sticking to a routine has aided me in getting all the emotion out of it (I&#8217;m too tired, I&#8217;m not feeling like it, yada yada) and pushed me to just do it. It&#8217;s only once a week, after all.</p>
<h2>Small Rewards</h2>
<p>On Fridays, apart from work, I do nothing. Small rewards recharges and refreshes you so you can keep going. Persisted effort without any breaks spell burnout and give-up like an overnight success open source developer.</p>
<h2>Measure</h2>
<p>Keep track of your wins. And your loses. But focus on the wins.</p>
<h2>Keep Jabbing At It</h2>
<p>One of my favourites blogs is the Coding Horror. If you are a coder and haven&#8217;t roamed that side of the web, <a href="http://blog.codinghorror.com/about-me/">do yourself a favour and head over there now.</a> <a href="http://blog.codinghorror.com/new-programming-jargon/">This one particularly cheers me up on a buggy day.</a> I digress! Jet Atwood is open about how his blog changed his life. <a href="http://blog.codinghorror.com/how-to-achieve-ultimate-blog-success-in-one-easy-step/">He stresses getting stuff done, and keeping at it consistently, as the key to his success.</a> By consciously setting personal goals, it keeps pushing you forward, even if is one jiggly step at a time. Going somewhere slowly is miles better than staying put.</p>
<p>I know, most of these sounds pretty cliche. Yet, we keep so busy being busy and then being tired that we neglect thinking about these things. Nothing beats looking back at a period of hard work with satisfaction. If you haven&#8217;t already, set goals for yourself.</p>
<p>And really check out Habitica, man. ;)</p>]]></content:encoded>
    </item>
    <item>
      <title>On the JetBrains Subscription Reaction</title>
      <link>https://claravanstaden.com/jetbrains-subscription-fallout</link>
      <guid>https://claravanstaden.com/jetbrains-subscription-fallout</guid>
      <pubDate>Sun, 06 Sep 2015 00:00:00 GMT</pubDate>
      <description>A few days ago, JetBrains announced that they will be moving from perpetual licenses to a subscription based model. An overwhelmingly negative public response followed.  People are going as far to say they are going back to Eclipse, no matter if JetBrains heed the angry masses. Even Eclipse chirped </description>
      <content:encoded><![CDATA[<p>A few days ago, JetBrains announced that they will be moving from perpetual licenses to a subscription based model. An <a href="https://twitter.com/jetbrains/status/639453529560719360" target="_blank" rel="noopener">overwhelmingly negative</a> public response followed.  People are going as far to say they are going back to Eclipse, no matter if JetBrains heed the angry masses. Even Eclipse chirped in with a <a href="https://twitter.com/mmilinkov/status/639815734470668288" target="_blank" rel="noopener">rather unsavory blog post</a>.</p>
<p>Let me say from the start that I love JetBrains products. I also think it is safe to say their products are far more superior than most other IDE&#8217;s. I&#8217;ve used PHPStorm for about two years now and shudder to think about going back to the Netbeans/Eclipse days. I&#8217;ve also started using TeamCity recently (the free tier) and it has already proven very useful.</p>
<p>From the lists of features that get released, it seems as though they really go the extra mile in providing new features for customers. One of the main complaints is that users who do not renew their licenses won&#8217;t be able to use the products, as in the past. So instead of paying for updates, you&#8217;ll be paying for continued use of the product. The question is, is it really that terrible for them to ask the users of their products to pay for their products? Now, before you blow up in the comments section, I do think they made some key mistakes. But overall, to me it seems fair that continued use of a service equals continued pay for the service. We as developers should be most sympathetic to the effort, time and money that goes into excellent software.</p>
<p>A subscription plan that seems to be largely ignored in all the ranting, is the JetBrains Toolbox. It&#8217;s a subscription with access to <a href="https://www.jetbrains.com/toolbox/" target="_blank" rel="noopener">all the greats, for $149 USD a year</a>, for existing customers. Even at $199 for new users doesn&#8217;t sound excessive, especially if you compare the current ReSharper Ultimate price of $249, which will be included in the ToolBox plan. I realize this plan won&#8217;t be appealing for all kinds of users, but to me that seems like a great deal. I&#8217;ve always wanted to dabble into Ruby, Python and C#, but doing so without a proper IDE has discouraged me. I also don&#8217;t have the cash to buy licenses for all of the IDE&#8217;s that tickle my fancy this month, even more so if I may not used it for very long. For $199 a year, I&#8217;d easily subscribe to this plan. If you weigh it up against other costs, it&#8217;s about the same cost of two months of internet here in South Africa. Seems reasonable.</p>
<p>That all being said, the part that worries me is the apparent notion that if you stop renewing your subscription for a while and you want to resubscribe, you pay a higher price. To me, that does not seem like an act in good faith. It smells a bit like ransom. Also, it nullifies the stated flexibility advantage, because in the end you&#8217;ll cough up more if you change your subscriptions throughout the year.</p>
<p>I also sympathize with indie developers who are willing to work on older software. Perhaps JetBrains can make a concession on perpetual licenses for personal licenses. My feeling is that it would appease many customers and would show that they care about the individual.</p>
<p>I trust that JetBrains will listen to their customers. From their replies and comments on Twitter and their blog, they seem like be taking the raging seriously. I myself have gotten used to their high quality products and probably will stick with it even if they raise their prices significantly. In the end, you need to measure the value they are providing against what you are willing to pay. Personally, I&#8217;d like to be a fly on the wall when the complaining guy goes back to Eclipse &#8211; my bet is it won&#8217;t last long.</p>
<h3>UPDATE</h3>
<p>Two weeks later, JetBrains replied with <a href="http://blog.jetbrains.com/blog/2015/09/18/final-update-on-the-jetbrains-toolbox-announcement/">this</a>. Judging by the response on Twitter, <a href="https://twitter.com/jetbrains/status/644863477111214081">customers seem appeased</a>. <strong>The summary:</strong> If you subscribe for 12 consecutive months, your IDE version you started the subscription with will still be available even though you have stopped subscribing. And some other discounts. Pretty clever, because it means if JetBrains releases a cool new feature during your subscription, you won&#8217;t still have that feature in your fallback perpetual license. Still, seems like both JetBrains and their customers are satisfied.</p>]]></content:encoded>
    </item>
    <item>
      <title>Debug CLI Scripts with XDebug and PHPStorm</title>
      <link>https://claravanstaden.com/debugging-command-line-scripts-in-phpstorm</link>
      <guid>https://claravanstaden.com/debugging-command-line-scripts-in-phpstorm</guid>
      <pubDate>Fri, 24 Jul 2015 00:00:00 GMT</pubDate>
      <description>This is a quick how-to guide on setting up XDebug debugging for command line scripts. I felt it took me way too long to set it up, so I’m documenting it here. This guide assumes that you already have XDebug set up, and just need to enable CLI debugging. XDebug Config Run this command to […]</description>
      <content:encoded><![CDATA[<p>This is a quick how-to guide on setting up XDebug debugging for command line scripts. I felt it took me way too long to set it up, so I&#8217;m documenting it here. This guide assumes that you already have XDebug set up, and just need to enable CLI debugging.</p>
<h2>XDebug Config</h2>
<p>Run this command to add XDebug config to your environment variables. Note that this is for Windows.</p>
<pre class="theme:feeldesign toolbar-overlay:false toolbar-hide:false toolbar-delay:false lang:sh decode:true ">set XDEBUG_CONFIG="idekey=PHPStorm remote_host=127.0.0.1 remote_port=9000"</pre>
<h2>PHP.ini Config</h2>
<p>Add these options under the XDebug section in your php.ini file.</p>
<pre class="theme:feeldesign toolbar-overlay:false toolbar-hide:false lang:sh decode:true">[xdebug]
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "127.0.0.1"</pre>
<h2>Restart Apache</h2>
<p>Restart your Apache service.</p>
<h2>Debugging Configuration</h2>
<p>Now add a new debugging configuration in PHPStorm. IMPORTANT: The debug config type must be <strong>PHP Remote Debug</strong>. Choose your local server as the from the servers drop down.</p>
<p>Click <strong>OK</strong>.</p>
<h2>Debug</h2>
<p>Your command line debugging should now work. Select your new debug config from the drop down and enable listening for debugging connections. Add a break point in your CLI script, and voila!</p>]]></content:encoded>
    </item>
    <item>
      <title>On Learning New Things</title>
      <link>https://claravanstaden.com/learning-new-things</link>
      <guid>https://claravanstaden.com/learning-new-things</guid>
      <pubDate>Mon, 15 Jun 2015 00:00:00 GMT</pubDate>
      <description>About a month ago, I attended a UX Conference in Johannesburg.  Garth Braithwaite (@GarthDB) from Adobe, one of the speakers, encouraged the audience to work on side projects to learn new skills and contribute to the open source community. The conference was quite inspiring. Consequently, over the l</description>
      <content:encoded><![CDATA[<p>About a month ago, I attended a <a href="http://www.uxsouthafrica.com/conference/johannesburg-2015" target="_blank" rel="noopener">UX Conference in Johannesburg</a>. <strong> </strong>Garth Braithwaite (<a class="ProfileCardMini-screennameLink u-linkComplex js-nav u-dir" dir="ltr" href="https://twitter.com/GarthDB">@<span class="u-linkComplex-target">GarthDB</span></a>) from Adobe<strong>, </strong>one of the speakers, encouraged the audience to work on side projects to learn new skills and contribute to the open source community. The conference was quite inspiring. Consequently, over the last month or so I&#8217;ve been teaching myself a new PHP framework. My mail goal is to become a more experienced and knowledgeable developer. Before that, I spent most of my time playing PC games. A week or so into my side project adventure, I&#8217;ve noticed that I feel happier than usual. I feel much more driven and stimulated.</p>
<p>I did a quick search, and found that learning indeed also <a href="https://blog.bufferapp.com/novelty-and-the-brain-how-to-learn-more-and-improve-your-memory" target="_blank" rel="noopener">releases dopamine</a> in the brain. It also <a href="http://www.npr.org/sections/health-shots/2014/05/05/309006780/learning-a-new-skill-works-best-to-keep-your-brain-sharp" target="_blank" rel="noopener">improves connectivity</a> in the brain, <a href="http://lifehacker.com/the-science-of-practice-what-happens-when-you-learn-a-510255025" target="_blank" rel="noopener">caused by stimulated growth of myelin</a>. Pretty crazy!</p>
<p>My husband, also a software engineer, enjoys coding side projects. I always thought him crazy, to be &#8220;working&#8221; after work. There is an old, cliché proverb that says, &#8220;Find a job you love and you&#8217;ll never work a day in your life&#8221;. We all know its not always that simple and that every job has its good and less good parts. However, web development is a very creative field. I&#8217;m learning that making a hobby out of my job is not only beneficial to my career, but probably also to my health and overall happiness. Luckily, the state of web development technologies won&#8217;t have anyone bored soon &#8211; there is LOTS to learn. In future posts, I&#8217;ll write more about the state of web development and the web development community.</p>]]></content:encoded>
    </item>
    <item>
      <title>Tips on Building a RESTful Laravel API Backend</title>
      <link>https://claravanstaden.com/building-a-laravel-5-backend</link>
      <guid>https://claravanstaden.com/building-a-laravel-5-backend</guid>
      <pubDate>Tue, 02 Jun 2015 00:00:00 GMT</pubDate>
      <description>After some two weeks of casual development, I have nearly completed a Laravel 5 backend for a time tracker app (save for some authentication and role based privileges). Laravel is the first open source PHP framework that I have been exposed to, and so far, it rocks! It’s super clean, super minimal, </description>
      <content:encoded><![CDATA[<p>After some two weeks of casual development, I have nearly completed a Laravel 5 backend for a time tracker app (save for some authentication and role based privileges). Laravel is the first open source PHP framework that I have been exposed to, and so far, it rocks! It&#8217;s super clean, super minimal, and still quite flexible.</p>
<p>I opted to implement my Laravel controllers as resource elements. This means that you stick to a certain pattern of routes and controller functions that enable RESTful API implementations. This works great, and there&#8217;s been enough resources online to get things done relatively quickly. After some last polishing tomorrow, I hope to start my AngularJS frontend soon.</p>
<p>Often when I want to learn new things, I am at a loss of where to start. In case you are thinking about starting your own Laravel app, here&#8217;s a rough breakdown of how to start.</p>
<ol>
<li><a href="http://laravel.com/docs/5.0#install-composer">Install Laravel using Composer.</a></li>
<li><a href="https://dev.mysql.com/doc/refman/5.0/en/creating-database.html">Create a MySQL database to create your tables in.</a></li>
<li><a href="http://laravel.com/docs/5.0/configuration">Name your app.</a></li>
<li>Update your Laravel environment to point to the created DB. (located in Project/.env)</li>
<li><a href="http://laravel.com/docs/5.0/migrations#creating-migrations">Create Laravel migrations to create tables.</a></li>
<li><a href="http://laravel.com/docs/5.0/eloquent#basic-usage">Create Laravel models to represent your relational data.</a></li>
<li><a href="http://laravel.com/docs/5.0/migrations#database-seeding">Add seed data to populate your database with some dummy data.</a></li>
<li><a href="http://laravel.com/docs/5.0/controllers#restful-resource-controllers">Create controllers.</a></li>
<li><a href="http://laravel.com/docs/5.0/routing#basic-routing">Add routes mapping to controllers</a>.</li>
<li>Refactor.</li>
<li>Unit Test.</li>
</ol>
<p>There you go!</p>
<p>Some great resources to teach/aid:</p>
<ul>
<li><a href="https://scotch.io/tutorials/a-guide-to-using-eloquent-orm-in-laravel">Eloquent ORM &amp; Models</a> &#8211; A very good starting point to get your migrations, seed data and models up and running.</li>
<li><a href="https://chrome.google.com/webstore/detail/postman-rest-client/fdmmgilgnpjigdojojpjoooidkmcomcm?hl=en">Postman</a> &#8211; As mentioned in a previous post, to test your end points, especially when you start posting data and working with HTTP verbs like PUT and DELETE.</li>
<li><a href="https://laracasts.com/series/incremental-api-development">Laracasts series: Incremental API Development</a> &#8211; Extremely helpful, not just on good API practices but also on refactoring and keeping code clean. This series also answered some questions I had in previous posts, like error handling.</li>
<li><a href="https://leanpub.com/build-apis-you-wont-hate/read">Build API&#8217;s You Won&#8217;t Hate</a> &#8211; A great book on API development. I&#8217;d really recommend it if you want to build the API the right way from the start.</li>
</ul>]]></content:encoded>
    </item>
    <item>
      <title>Simplicity</title>
      <link>https://claravanstaden.com/14-2</link>
      <guid>https://claravanstaden.com/14-2</guid>
      <pubDate>Sun, 17 May 2015 00:00:00 GMT</pubDate>
      <description>Simplicity is the essence of happiness. – Cedric Bledsoe</description>
      <content:encoded><![CDATA[<p>Simplicity is the essence of happiness. &#8211; Cedric Bledsoe</p>]]></content:encoded>
    </item>
    <item>
      <title>Starting out with Laravel</title>
      <link>https://claravanstaden.com/starting-out-with-laravel</link>
      <guid>https://claravanstaden.com/starting-out-with-laravel</guid>
      <pubDate>Sun, 17 May 2015 00:00:00 GMT</pubDate>
      <description>I have decided to start out my learning journey with Laravel 5. Laravel has been getting some serious buzz in the PHP community. Being well versed in PHP, I was curious to see how quickly I’ll be able to get something up and running. So far it’s going alright. I’m feeling somewhat lost at times. Per</description>
      <content:encoded><![CDATA[<p>I have decided to start out my learning journey with Laravel 5. Laravel has been getting some serious buzz in the PHP community. Being well versed in PHP, I was curious to see how quickly I&#8217;ll be able to get something up and running.</p>
<p>So far it&#8217;s going alright. I&#8217;m feeling somewhat lost at times. Perhaps it is because I&#8217;m just jumping in without much prior knowledge (apart from a few Laracasts videos a few months ago). Luckily I have my Laravel expert husband to give me some pointers.</p>
<p>To get started on my database, models and seed data, I have been referencing:</p>
<ul>
<li><a href="http://laravel.com/docs/5.0/eloquent#relationships">http://laravel.com/docs/5.0/eloquent#relationships</a></li>
<li><a href="https://scotch.io/tutorials/a-guide-to-using-eloquent-orm-in-laravel">https://scotch.io/tutorials/a-guide-to-using-eloquent-orm-in-laravel</a> (very helpful)</li>
<li><a href="http://codeplanet.io/laravel-model-relationships-pt-1/">http://codeplanet.io/laravel-model-relationships-pt-1/</a></li>
</ul>
<p><strong>Some issues that I&#8217;ve ran into so far</strong></p>
<ul>
<li>The web root for a Laravel project is in the public folder. Pointing to the project directory will give a big fat error.</li>
<li>I needed to add this option to my virtual host setup:</li>
<li>I couldn&#8217;t get my rename column migration to run. It gave this error: [Symfony\Component\Debug\Exception\FatalErrorException] Class &#8216;Doctrine\DBAL\Driver\PDOMySql\Driver&#8217; not found. A quick search produced this on <a href="http://stackoverflow.com/questions/22413408/install-dependency-doctrine-dbal-on-composer-laravel">Stackoverflow</a>. I added it, and the migration now works fine.</li>
<li>In one of my models, I referenced another model to set up relationships:
<pre class="theme:feeldesign line-height:20 inline-margin:20 toolbar:2 lang:php decode:true">public function objectives()
{
   return $this-&gt;belongsToMany('Objective', 'users_objectives', 'user_id', 'objective_id')
      -&gt;withPivot('week', 'time_estimate');
}</pre>
<p>When I ran the seed database command, class &#8216;Objective&#8217; could not be found. To fix this, add the namespace to the class name, like this:</p>
<pre class="theme:feeldesign toolbar:2 lang:php decode:true ">return $this-&gt;belongsToMany('\TimeTracker\Models\Objective',...)</pre>
</li>
<li>Renaming migration files gives issues, as the migration class name is derived from the migration file name. To rename the migration, rollback, delete the migration and create a new one with the correct name. Or, just rename the class to match the file name (remember: camel case for the class name, snake case for the file name).</li>
</ul>]]></content:encoded>
    </item>
    <item>
      <title>Hello!</title>
      <link>https://claravanstaden.com/7-2</link>
      <guid>https://claravanstaden.com/7-2</guid>
      <pubDate>Sat, 16 May 2015 00:00:00 GMT</pubDate>
      <description>Hi there! My name is Clara. I am a software engineer, avid gamer, occasional artist and everyday wife and mother (to an overweight cat). I love web development, and a large part of this blog will document some of my adventures with new technologies. My main aim is to learn, and to estimate how long </description>
      <content:encoded><![CDATA[<blockquote><p>Hi there!</p></blockquote>
<p>My name is Clara. I am a software engineer, avid gamer, occasional artist and everyday wife and mother (to an overweight cat).</p>
<p>I love web development, and a large part of this blog will document some of my adventures with new technologies. My main aim is to learn, and to estimate how long my learning takes. You are welcome to make comments, laugh at my noob-ness, or to give me a shout on out Twitter.</p>]]></content:encoded>
    </item>
  </channel>
</rss>
