<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[QED]]></title><description><![CDATA[// QED: Quite Easily Distracted]]></description><link>https://blog.ndl.im/</link><image><url>https://blog.ndl.im/favicon.png</url><title>QED</title><link>https://blog.ndl.im/</link></image><generator>Ghost 4.2</generator><lastBuildDate>Tue, 24 Mar 2026 15:48:04 GMT</lastBuildDate><atom:link href="https://blog.ndl.im/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Getting That Grad/Intern Role]]></title><description><![CDATA[Getting a grad or intern role in tech is a great way to start your professional career. Unfortunately the process isn't always straightforward, that's where this step-by-step guide comes in.]]></description><link>https://blog.ndl.im/getting-that-grad-or-intern-position/</link><guid isPermaLink="false">6072cab7fb6e14526e13439b</guid><category><![CDATA[2021]]></category><category><![CDATA[CSESoc]]></category><category><![CDATA[grad job]]></category><category><![CDATA[internship]]></category><category><![CDATA[employment]]></category><dc:creator><![CDATA[Nicholas Lambourne]]></dc:creator><pubDate>Thu, 24 Jun 2021 01:30:35 GMT</pubDate><media:content url="https://blog.ndl.im/content/images/2021/07/intern.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.ndl.im/content/images/2021/07/intern.png" alt="Getting That Grad/Intern Role"><p>For many students studying computer science, software engineering, IT, or other technical fields, securing an internship or a graduate position at a large, well respected software company is one of their driving goals and their success or failure can be a key factor in setting the direction for their early career. Unfortunately, navigating the hiring process and securing one of these positions (the demand for which always outstrips supply, sometimes by orders of magnitude) isn&apos;t particularly easy or straightforward. That&apos;s where this guide comes in, it sums up the process from beginning to end, in the hope that when the time comes for you to throw your hat (or r&#xE9;sum&#xE9;) in the ring, you&apos;ll be more prepared and have the greatest possible chance of making your big tech dreams come true.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2021/06/working_for_google.png" class="kg-image" alt="Getting That Grad/Intern Role" loading="lazy" width="740" height="198" srcset="https://blog.ndl.im/content/images/size/w600/2021/06/working_for_google.png 600w, https://blog.ndl.im/content/images/2021/06/working_for_google.png 740w" sizes="(min-width: 720px) 720px"><figcaption>What happens if you don&apos;t follow this guide, probably</figcaption></figure><!--kg-card-begin: html--><h2 class="js-toc-ignore">Contents</h2>
<aside class="toc"></aside><!--kg-card-end: html--><h2 id="standing-out">Standing Out</h2><p>Remember how I mentioned these positions were oversubscribed? When I interned at Canva I was part of cohort of 32 interns. I was quite surprised to learn, talking to members of the recruitment team, that this batch had been whittled down from over 2000 applicants (a success rate of less than 1.6%). For bigger, more well known companies like Google and Microsoft that rate tends to shrink even further as the number of applications skyrockets. </p><p>I&apos;m not a stats guy but even I know those odds aren&apos;t great. So how do you make it into that tiny fraction? How do you stand out from the crowd (of potentially thousands)? The answer, thankfully for us all, is flexible.</p><h3 id="the-four-axes">The Four Axes</h3><p>There are an almost infinite number of possible things that could make you stick out, but I&apos;ve limited this advice to the four areas that are usually within the power of undergraduate students. The relative value placed on these by recruiters (your audience) will likely differ from company to company, but in roughly decreasing order of &quot;impressiveness,&quot; the four categories, or axes, are:</p><ul><li>Work Experience</li><li>Personal Projects &amp; Open Source</li><li>Club Involvement</li><li>Academic Performance</li></ul><p>The good news is that you don&apos;t have to excel on every axis, which means that you can play to your strengths (or even develop new ones). Focussing on two axes (or at most three) and particularly excelling in one is usually enough to put you in the &quot;worth paying attention to&quot; pile. For example, I was a (very) mediocre student academically and until my first internship at Canva my work experience wasn&apos;t overly technical. I compensated for this by getting quite involved in my university&apos;s computing society, <a href="https://uqcs.org/">UQCS</a>, first as a member of the general committee, then as president in the 2019 academic year. I also put some time into one of my club&apos;s <a href="https://github.com/UQComputingSociety/uqcsbot">open source projects</a> and eventually &#xA0;ended up developing <a href="https://github.com/nicklambourne/slackblocks">one of my own</a>. What follows are some tips on how you can make each of the four axes work for you, too.</p><h4 id="work-experience">Work Experience</h4><p>(Relevant) Work experience before your penultimate year is the holy grail of impressing recruiters at most companies. If you can show that you&apos;ve already been writing code in an industry environment, you can check off one whole axis. So what counts as relevant? It pretty much runs the gamut from working part time at a software company (or government department) all the way through to technical support. Unfortunately, a large swathe of big technology companies in Australia have adopted a very shortsighted view of hiring out of universities and as a result typically limit their intern hiring pool to students in their second last, or penultimate, year (that way they maximise the chance that you&apos;ll return as a graduate because they&apos;re the last place you intern).</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2021/06/145239938_407733326989204_7625865271926894868_n-680950447-1.jpg" class="kg-image" alt="Getting That Grad/Intern Role" loading="lazy" width="750" height="728" srcset="https://blog.ndl.im/content/images/size/w600/2021/06/145239938_407733326989204_7625865271926894868_n-680950447-1.jpg 600w, https://blog.ndl.im/content/images/2021/06/145239938_407733326989204_7625865271926894868_n-680950447-1.jpg 750w" sizes="(min-width: 720px) 720px"><figcaption>The age old paradox of what came first, the work experience or the work experience...</figcaption></figure><p> Outside of <a href="https://buildyourfuture.withgoogle.com/programs/step/">Google&apos;s STEP program</a> and token programs run by big consulting firms, the pickings for pre-penultimate programs are slim. That&apos;s when you have to start thinking outside the box. Casual programming jobs (usually in web development), <a href="https://www.unsw.edu.au/engineering/student-life/undergraduate-research-opportunities/taste-research">university summer/winter research programs</a>, running your own web development contracting business (you might start out building sites for friends and family with small businesses and move up from there), or even getting involved in a startup (just <a href="https://www.fairwork.gov.au/tools-and-resources/fact-sheets/unpaid-work/unpaid-work-unpaid-work#lawful">don&apos;t work for free</a> unless you own it) all fit this bill. Even if you can&apos;t get relevant work experience, your non-technical work experience is still worth putting down on your r&#xE9;sum&#xE9; until you have something more relevant to replace it with. Non-technical work, particularly as part of team, goes a long way towards demonstrating your work ethic.</p><h4 id="personal-projects-open-source">Personal Projects &amp; Open Source</h4><p>While the ability to get technical work while a student relies on many factors outside of your control, those limitations don&apos;t apply to your ability to build up a portfolio of your own projects, contributions to open source projects, or ideally, some combination of both.</p><p>These projects can take almost any form, but when it comes to using them as a way to show off your skills and prove yourself to a prospective employer nothing beats being able to show off some source code. Closed-source projects (including coursework) typically don&apos;t have as much impact unless they&apos;re undertaken in an industry or research context. Regardless, if you can&apos;t show off the code you&apos;re on the hook to provide a much better explanation of what the project involved. Before I explain how to sell the project though, I think it&apos;s worth providing some suggestions for what these projects might involve.</p><ul><li>Personal Projects: you really can build anything you want, but my advice here is to pick something small(ish) in scope that has the capacity to be extended later. For most student developers, the first port of call is developing and hosting their own web site. Something reasonably static, set up with <a href="https://gohugo.io/">Hugo</a> or <a href="https://www.gatsbyjs.com/starters/?">Gatsby</a> might be the way to go, but there is certainly value to be found in starting with raw HTML/CSS (even if you find during that process that writing HTML by hand isn&apos;t fit for humans and graduate straight to React). Another fantastic personal project with scope to grow is writing and <a href="https://youtu.be/KSRes7tgWS4">publishing</a> your own Python package. Don&apos;t let my imagination limit you though, I&apos;ve seen people <a href="https://github.com/lewisjb/tetran">implementing</a> old games (Tetris) in even older languages (FORTRAN), writing their own <a href="https://github.com/ebobby/simple-raytracer">ray-tracers</a> and even developing their own games from scratch, the world really is your oyster.</li><li>Open Source Projects: ideally (being a good internet citizen) all of your own personal projects would be open source by default, but what I mean by this category is large-scale existing open source projects. All of those technologies you rely on for other projects, from <a href="https://github.com/facebook/react">React</a>, to <a href="https://github.com/nginx/nginx">NGINX</a>, and even the <a href="https://github.com/torvalds/linux">Linux Kernel</a> would love to have you helping out. If you&apos;re looking for a very beginner friendly project to get started with, I highly recommend checking out <a href="https://github.com/csesoc">your student club&apos;s projects</a>, or the Python <a href="https://beeware.org/contributing/">BeeWare project</a>. There is also a directory of beginner-friendly open source projects maintained <a href="https://github.com/MunGell/awesome-for-beginners">here</a>, as an open source project (meta, hey). &#xA0;When you talk about these projects on your r&#xE9;sum&#xE9;, make sure you&apos;re focussed on your contribution, which doesn&apos;t have to be huge to be worth including. Concentrating your efforts on one or two projects helps with being able to concisely communicate them, but isn&apos;t hugely important.</li></ul><figure class="kg-card kg-image-card"><img src="https://blog.ndl.im/content/images/2021/06/9dakq01es5u11.jpg" class="kg-image" alt="Getting That Grad/Intern Role" loading="lazy" width="1295" height="654" srcset="https://blog.ndl.im/content/images/size/w600/2021/06/9dakq01es5u11.jpg 600w, https://blog.ndl.im/content/images/size/w1000/2021/06/9dakq01es5u11.jpg 1000w, https://blog.ndl.im/content/images/2021/06/9dakq01es5u11.jpg 1295w" sizes="(min-width: 720px) 720px"></figure><ul><li>Hackathon Projects: getting involved in hackathons is a great way to learn new technical abilities, develop your teamwork skills and, if you&apos;re lucky, walk away with some pretty sweet prizes. More importantly than any of these (at least in this context) however is that you now have a shiny project (again, ideally open source) to show off on your r&#xE9;sum&#xE9;. If you made it to the podium or won a special mention (e.g. &quot;Best Newcomers Project&quot;), this also makes for a great addition to any r&#xE9;sum&#xE9;. </li><li>Research Projects: harder to get into, and often not open source (though they all should be, when funded by public money), if you do manage to get involved in a programming-based research project, make sure you include these (particularly if you can link to the source code). My first programming job was in research and I was able to encourage the project lead to make it all open source (which took a fair bit of negotiating with the university lawyers on his part), but this meant that I had a large-scale project I could show off to potential future employers. When selling these, briefly describe what the project is/does, but spend most of the time talking about your specific contributions.</li><li>University Capstone/Team Projects: if you&apos;ve yet to put the time into developing your own projects, projects completed for university courses will do in a pinch. If it was a team effort, the same rules apply, focus on your contributions and don&apos;t forget to clean up the code (if it needs it), and include a README as detailed below. On the off chance a recruiter does look at the code you don&apos;t want to be left explaining why it&apos;s so poorly written/documented (or more likely not getting the chance to explain at all).</li></ul><p>While I hope you&apos;re whipping up projects left and right for fun and profit, when it comes to their value to your job application, it&apos;s all about the sales pitch. You might have the world&apos;s most fantastic project, but unless you can sell it effectively to a technical recruiter in a single glance, it&apos;s not worth much of anything. </p><p>There are a couple of mandatory steps to making your projects &quot;ready to sell.&quot; I&apos;m going to assume for the sake of this exercise that we&apos;re talking about a personal project of your own that&apos;s already publicly available on GitHub (or something like it). The first non-negotiable line item is a top-quality, thorough README.md file in the root of your project. This readme should cover, at minimum:</p><ol><li>What the project is, what it does, why you made it.</li><li>What dependencies it has.</li><li>How to get it running, locally or otherwise.</li><li>The licence information (can people use this code freely?).</li></ol><p>If you want to step up your README game (which I strongly suggest) you can also include:</p><ul><li>Screenshots or GIFs of the project in operation (or links to videos).</li><li><a href="https://shields.io/">Metadata Badges</a>, which communicate features like which language versions they support, or even usage statistics like number of downloads.</li><li>A logo for the project (you don&apos;t have to be artistically inclined, just use <a href="https://www.canva.com/logos/">Canva</a>. I made a logo for <a href="https://github.com/nicklambourne/housepaint">a recent demo project</a> in less than five minutes).</li></ul><p>Once you&apos;ve got your project running, well-documented, and have written some tests, there are a bunch of other things you can do make your project stand out. My first suggestion would be to implement continuous integration and or continuous deployment (CI/CD) for your project. Using tools like <a href="https://github.com/features/actions">GitHub Actions</a> and <a href="https://www.travis-ci.com/">Travis CI</a>, you can easily configure your project so that every time someone commits to the project (or opens a pull request) it runs the tests and tells you whether everything still works. Your CI/CD pipeline can also be extended to encompass things like type-checking, test coverage calculation, publishing of any artefacts (Docker images, library packages, websites etc.). CI/CD is near-universal in industry and being able to show recruiters that you understand this tooling can be a very impressive feather in your cap.</p><p>These suggestions are just the very tip of the iceberg when it comes to the possibilities for your projects, but hopefully this gives you some idea of where to start, and once you have, where to go from there. </p><h4 id="club-involvement">Club Involvement</h4><p>Getting more involved in club life is the most under-appreciated of the four axes, but in my humble opinion it&apos;s a) the most rewarding, b) the most fun, c) the best way to develop a new and valuable set of skills, d) the best way to keep abreast of opportunities in the field, and e) the greatest way to build a network of peers who you can learn from (and possibly even be referred by, more on this later). </p><p>The key with club involvement is to start early, ideally in your first year of undergraduate studies. Starting later doesn&apos;t count you out, by any means, but there&apos;s typically a hierarchy of roles to navigate if you&apos;re looking to make it the top. At UQCS this meant starting out as a general committee member for a year before moving up to the three executive roles, treasurer, secretary, and president. At CSESoc there are more roles and opportunities, you might start out in any of the many subcoms, moving your way up through a directorship and then on to the executive. It&apos;s rarely ever that simple and there are many factors that can affect the &quot;hiring&quot; or election process, depending on the role, but being truly involved is an experience like no other and can massively enhance your university experience, not to mention show employers that you&apos;re a team player.</p><h4 id="academic-performance">Academic Performance</h4><p>In my personal experience, companies whose primary product is software don&apos;t (thankfully) tend to mind if your grades are mediocre, as long as you&apos;ve excelled along some of the other axes. That said, high marks can be extremely important for three software-adjacent career paths: management consulting, high-frequency trading (IMC, Optiver, Jane Street), and academia, who all prize high academic performers when assessing applicants. If you do happen to have put the hard work in and been rewarded with amazing grades, make sure to let the recruiters know. Include your weighted average mark (WAM) or grade point average (GPA) on your r&#xE9;sum&#xE9; and list any academic awards you&apos;ve racked up. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2021/06/priorities.png" class="kg-image" alt="Getting That Grad/Intern Role" loading="lazy" width="337" height="276"><figcaption>The author&apos;s academic work ethic in action</figcaption></figure><h3 id="selling-yourself-effectively">Selling Yourself Effectively</h3><h4 id="the-r%C3%A9sum%C3%A9">The R&#xE9;sum&#xE9;</h4><p>How to put together an effective technical r&#xE9;sum&#xE9; could take up an entire blog post of its own (and it may in the future) but for now I&apos;ll limit this to the broadest of guidance. The most important point to make here is that the r&#xE9;sum&#xE9; is a document designed to be concise, and at this stage in your career there is no reason why it should exceed a single page. (Note: I deliberately and with great malice use CV and r&#xE9;sum&#xE9; interchangeably here despite knowing quite well that <a href="https://zety.com/blog/cv-vs-resume-difference#:~:text=A%20resume%20is%20a%20one,a%20CV%E2%80%94for%20academic%20purposes.">they&apos;re different things</a>).</p><h5 id="content">Content</h5><p>What goes on this document is effectively a summary of your achievements along the axes that made up the preceding section. These should appear in roughly the following order (having Education and Work Experience at the top, in that order, is the most important), with few exceptions:</p><ul><li>Contact Info: this should include your name (reasonably large), email (consider getting your own domain), phone number, personal website, GitHub and LinkedIn (optional). Every one of these should be hyperlinked, preferably as rich text, but for those that are URLs, remove the &quot;https://&quot; and &quot;www&quot; at the start, where possible.</li><li>Education: as a potential grad/intern this is the most relevant aspect of your profile to employers, particularly your graduation date and the program you&apos;re enrolled in. If you&apos;ve been on exchange, include a line item for it, but list it as exchange studies, don&apos;t make it (inadvertently or otherwise) look like another degree. Unless academics are your focus <em>and</em> you&apos;ve topped subjects, including courses you&apos;ve taken is strongly advised against - trust me, recruiters know what courses make up CS/SWE/etc. degrees. </li><li>Work experience: prioritise &quot;tech-relevant&quot; experience, but include less relevant experience if you don&apos;t yet have the relevant variety. Use dot points, and remember to describe the role and responsibilities more than the technologies you&apos;re using (that&apos;s more relevant to the projects section).</li><li>Skills: for this section I normally recommend two lists, one for languages you&apos;re comfortable working in (in decreasing order of familiarity) and one for &quot;Tools,&quot; which is a grab bag of frameworks, technologies and anything that doesn&apos;t quality as a &quot;language.&quot; <em>DO NOT</em> under any circumstances give yourself skill rankings for anything in either category, they&apos;re worse than meaningless to the recruiters evaluating your r&#xE9;sum&#xE9;. Don&apos;t claim to know more than you do. Don&apos;t list &quot;AWS&quot; as a skill, be more specific, which of the 200+ services on there have you <em>actually</em> used?</li><li>Projects: After relevant work experience this is probably the next most important item on your r&#xE9;sum&#xE9; in terms of impact factor. I&apos;ve spoken a lot already about what these projects could be and what to include, but I&apos;ll focus here on how to describe them. You should aim to have between three and five projects, any more than that and you risk not having enough space to explain them well enough. For each, include a succinct title for the project (if it doesn&apos;t have one yet, make one up), a link to the source code hosted on GitHub (or similar) if possible, or indicate that it&apos;s closed source. Include a brief description of what it does, what technologies it was built with and, if developed as a group, what your responsibilities/contributions were.</li><li>Awards, Prizes &amp; Grants: if you&apos;ve won a scholarship, grant or prize through university or anywhere else, make sure to include it. Prioritise the most important/impressive of these, unless academic performance is the primary (or only) targeted axis it&apos;s hard to justify more than six entries here. Keep in mind that this doesn&apos;t have to be purely academic, if you&apos;ve secured a patent or even a government business grant this is the place for those, too.</li></ul><p>One of the most convenient developments of the digital age (and the near total monopoly of the Adobe PDF for r&#xE9;sum&#xE9; distribution) is the ease with which you can connect your CV to more information for the interested, or make their lives easier with a shortcut. Your r&#xE9;sum&#xE9; should be a wealth of rich text and embedded links. If you&apos;re talking about a program you took part in, a scholarship you won, or an institution you attended, make sure the text with its name is a link to the web page for it. If there&apos;s a chance of the link expiring or being moved (universities tend to do this with scholarship pages etc.), take a snapshot with the <a href="https://archive.org/web/">Wayback Machine</a> and link to that.</p><h5 id="style">Style</h5><p>Unless you&apos;re a graphic design wizard, keep it simple. Amongst my cohort at the University of Queensland it was common to rely on a typesetting system like LaTeX and a template. This ensures consistency throughout the document (harder than it sounds) and outsources the &quot;design&quot; aspect to someone who knows what they&apos;re doing. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2021/06/graphic_design_is_my_passion-1.png" class="kg-image" alt="Getting That Grad/Intern Role" loading="lazy" width="599" height="304"><figcaption>The author&apos;s r&#xE9;sum&#xE9; before LaTeX</figcaption></figure><p>A great place to find both of these is <a href="https://latexresu.me/">latexresu.me</a>, though the selection of templates leaves something to be desired and you may want to customise yours a little (or a lot).</p><h5 id="a-living-document">A Living Document</h5><p>Your r&#xE9;sum&#xE9; should be undergoing constant iteration at all times. Every time you start a project, compete in a hackathon, and start or finish a job, you should be thinking: &quot;how do I reflect this in my r&#xE9;sum&#xE9;?&quot; As a result, I highly recommend treating your r&#xE9;sum&#xE9; like a software project and keeping it in version control, along with any cover letters you write (which should match the visual style of your r&#xE9;sum&#xE9;).</p><p>In addition to constant updates, you should always be actively seeking feedback on your CV. CSESoc and UQCS both encourage members to share their r&#xE9;sum&#xE9;s for &quot;roasts&quot; in the careers-focussed channel of their respective communication platforms (just make sure to remove your contact/identifying details). While it might sound scary (and you will get a lot of personal opinions along with genuine advice), this is a great forum to hear how your CV can be improved (if you&apos;re not sure about whether your local club supports this practice, ask). The most valuable advice tends to come from final year students who&apos;ve actually completed internships and/or received graduate offers as well as the ever-present, lurking alumni who also managed to wrangle themselves meaningful employment. This process proved so valuable to me personally that my r&#xE9;sum&#xE9; has gone through six or seven roasts by this point. If you&apos;re not comfortable with doing this publicly, reach out to a few individuals and get their feedback privately.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2021/06/simba.png" class="kg-image" alt="Getting That Grad/Intern Role" loading="lazy" width="660" height="530" srcset="https://blog.ndl.im/content/images/size/w600/2021/06/simba.png 600w, https://blog.ndl.im/content/images/2021/06/simba.png 660w"><figcaption>A university student, in their natural habitat, rating themselves 10/10 for Python</figcaption></figure><h3 id="the-art-of-the-referral">The Art of the Referral</h3><p>There&apos;s one aspect of the recruitment process that isn&apos;t widely advertised, and for good reason. A referral is when someone who already works at a company places an application for a role on your behalf with human resources. The actual mechanics of this differs from company to company, but the process is normally managed through the company&apos;s HR application portal (e.g. <a href="https://www.lever.co/">Lever</a>). Most big tech companies, and even some startups, also incentivise their staff to refer talented people they know with sizeable cash bonuses. These &quot;referral applications&quot; are typically treated differently to applications made directly. Again, it varies from company to company, but getting a referral might mean that you skip an automated processing step by which r&#xE9;sum&#xE9;s are evaluated and culled en masse, which effectively means that you make it to the first stage of the interview process (e.g. a phone screen). You still have to prove to the company that you&apos;re qualified by making it through the interview process, but you might just have skipped the most volatile stage of the process where you power to prove your worth is at its lowest point. Referrals are <em>extremely</em> valuable to applicants, referees ($$$), and even to HR, whose job is made easier by referees&apos; more in depth knowledge of applicants&apos; skill levels, it&apos;s effectively a kind of pre-vetting. And it works, I&apos;ve personally heard from people in recruitment of intern cohorts being made of up to 40% referred candidates.</p><p>What you have to understand about referrals though is that generally the person making the referral is putting their reputation on the line, to some extent, in referring you. What this means is that the referee will typically want to know you reasonably well, to have seen proof that you can program through your projects, or preferably, have worked with you in the past. If you&apos;re not close with the person you may have to demonstrate that you know what you&apos;re doing. </p><p>All of this is to say that there are appropriate and inappropriate ways to go about getting a referral, and if you don&apos;t know someone inside the company you may have to accept that this isn&apos;t an approach you can take. Some examples:</p><ul><li>Hitting someone from the company you don&apos;t know up on LinkedIn for a referral: inappropriate.</li><li>Asking a speaker from the company you just met at a club event for a referral: inappropriate.</li><li>Asking an alumnus who still hangs out in the CSESoc Discord and tutored you that one time when they were still at uni about the company before asking for a referral: probably OK.</li></ul><h3 id="applying-strategically">Applying Strategically</h3><p>Because of the hiring arms race that&apos;s developed due to the lack of talented applicants in Australia, some companies (looking at you high frequency trading) have pushed their hiring period earlier and earlier each year and now have applications for intern and grad positions opening in December of the year before. </p><p>Keep an eye out on the job listings maintained by the companies you&apos;re interested in and on <a href="https://trello.com/b/chf0KmBE/csesoc-opportunities-board">job boards</a> maintained by your university computing society. Applying early is generally in your best interests, though this depends a little on how the companies process their applications. </p><p>There is a tendency amongst a certain type of student to put off applying because &quot;they&apos;re not ready&quot; or they &quot;just want to finish one more project for the r&#xE9;sum&#xE9;.&quot; This is typically the result of unfounded anxiety about their level of skill and is actually a mistake that leads to them missing out on opportunities. Prepare early (i.e. pre-December), have your CV and associated projects ready, and make sure you&apos;ve already started practicing for interviews.</p><p>I&apos;ve been asked several times in the past how many applications someone should make in each hiring season and I still don&apos;t have a solid answer for this. I&apos;ve seen people apply to only their dream job, be knocked back and have no recourse, but I&apos;ve also seen people apply at over a dozen places, burn themselves out, only to fail the interview for their dream internship because they were so worn out juggling all of their applications. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2021/06/wiley.png" class="kg-image" alt="Getting That Grad/Intern Role" loading="lazy" width="639" height="371" srcset="https://blog.ndl.im/content/images/size/w600/2021/06/wiley.png 600w, https://blog.ndl.im/content/images/2021/06/wiley.png 639w"><figcaption>Students eyeing grad jobs, note the large eyes and small stomachs</figcaption></figure><p>So I&apos;ll say this: always have a backup, and preferably more than one, but make sure you&apos;re not taking a shotgun approach and applying to every job that opens up. Make a list of potential companies and rank them based on how much you envisage you would enjoy working there, and if you can, talk to some existing employees about what working there is actually like. I will say bluntly that financial compensation and &quot;company prestige&quot; are terrible reasons to choose somewhere to work and I would advise against factoring them into your decision. Whether a company develops a product your can relate to, solves challenges you find interesting, or has a mission you can get behind are far better indicators for what makes a good place to work.</p><h2 id="the-pre-interview-process">The Pre-Interview Process</h2><p>If you&apos;ve sold yourself well enough and the stars have aligned in your favour you&apos;ll get an email back from the recruitment team at your chosen company advising you of the next steps in the process. At this point there&apos;s still a long way to go, so don&apos;t get too excited, but you&apos;re in the pipeline, so congrats.</p><h3 id="code-screen">Code Screen</h3><p>Most big tech companies are overwhelmed each year with applications and a lot of these applicants aren&apos;t even capable of <a href="https://blog.codinghorror.com/why-cant-programmers-program/">putting together a solution to FizzBuzz</a>. To separate the wheat from the chaff, so to speak, one of the first things most companies will do is send out a programming assessment, usually facilitated by a platform like <a href="https://www.hackerrank.com/">HackerRank</a>. Typically these are sent out via an automated process to every applicant, so don&apos;t read too much into it at this stage. These assessments vary in content and scope, but usually involve multiple questions and are time limited. It&apos;s normal for these assessments to be too long and too difficult to fully solve in the allotted time, it&apos;s likely to be deliberate so that the recruiters can better differentiate between candidates. The good news is that when there are multiple questions you might not be expected to answer them all fully. For example, I&apos;ve interviewed at companies who asked five questions, but the threshold for progression in the interview process was completely solving two of these.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2021/06/fizz.png" class="kg-image" alt="Getting That Grad/Intern Role" loading="lazy" width="1500" height="564" srcset="https://blog.ndl.im/content/images/size/w600/2021/06/fizz.png 600w, https://blog.ndl.im/content/images/size/w1000/2021/06/fizz.png 1000w, https://blog.ndl.im/content/images/2021/06/fizz.png 1500w" sizes="(min-width: 720px) 720px"><figcaption>Please don&apos;t let this be you &#x1F64F;</figcaption></figure><p>The secret to doing well at this type of assessment is practice. The questions you&apos;ll be faced with are typically custom-written by the company, but exposure to similar styles of question and being forced to think about how to solve them make tackling the actual questions so much easier. They also expose you to tools and libraries designed for solving these types of problems. While some companies mandate a particular language, or provide a choice of several, the vast majority allow for the use of any popular language, but typically restrict the packages or libraries you have access to. It&apos;s in your best interest to choose a language that you&apos;re comfortable working in, but equally important is the power of that language&apos;s standard library. In my experience, this make Python the clear winner, but you have to balance those two requirements with your own preferences. Python&apos;s <code>itertools</code> and <code>collections</code> libraries in particular are incredibly useful for the sorts of questions commonly being asked in this type of assessment. Once you&apos;ve chosen a language it&apos;s time to practice. The three most commonly recommended platforms for this are <a href="https://leetcode.com/">Leetcode</a>, <a href="https://www.hackerrank.com/">HackerRank</a>, and <a href="https://www.topcoder.com/">TopCoder</a>. I personally did my grinding on HackerRank, which had handy <a href="https://www.hackerrank.com/domains/python">language-based problem sets</a> to get you acquainted with the features of your language whilst practicing your problem-solving skills. You&apos;ll also find sets based on common interview topics like <a href="https://www.hackerrank.com/domains/data-structures">data structures</a> and <a href="https://www.hackerrank.com/domains/algorithms">algorithms</a>. </p><h3 id="phone-screen">Phone Screen</h3><p>It&apos;s very common for companies first post-application contact to be an email congratulating you on entering the process and asking to arrange a time for a short phone call (normally no more than 20-30 minutes). These calls are usually with a technical recruiter, not an engineer, and typically involve talking about your projects or other items of interest from your r&#xE9;sum&#xE9;. They&apos;ll also typically ask a few open-ended questions to gauge your ready knowledge of technical topics. For example, you might be asked to explain the difference between threading and multiprocessing and give examples of when one might be more appropriate than the other. Or you might be asked about particular data structures and their relative advantages or limitations. When answering it&apos;s worth remembering that the person asking the question isn&apos;t an engineer themselves and they&apos;re usually just looking to tick off boxes involving your having hit on key topics in your answer. Stick to the question being asked, don&apos;t ramble or go off on tangents. Be honest when you don&apos;t know the answer, you can only &quot;wing it&quot; to a very limited extent before the gaps in your knowledge start to show. Normally the recruiter will have a number of questions to pick from in case the candidate hasn&apos;t covered that material, so don&apos;t stress if you haven&apos;t taken higher level concurrency or networking courses (that said, core CS courses like <a href="https://www.cse.cuhk.edu.hk/~taoyf/course/comp3506/www/index.html">data structures and algorithms</a> and basic object-oriented programming are typically considered assumed knowledge for applicants).</p><h2 id="the-final-interviews">The Final Interview(s)</h2><p>The mechanics of the final interview process (like practically everything else thus far) differs from company to company, often wildly. From which types of assessment are involved to the order in which they&apos;re administered, you&apos;re unlikely to find two perfectly alike. There are trends between them though, and it typically boils down to some combination of the following assessment varieties:</p><ul><li>Classical Programming Interviews</li><li>System Design Interviews</li><li>Behavioural (a.k.a Culture Fit/Values) Interviews</li><li>Take Home Programming Assessments</li></ul><p>One company might require multiple programming interviews, while others might go for more of a &quot;one of each&quot; approach. It&apos;s worth finding out what the company&apos;s process is before applying (either from their website, attending the company&apos;s events with the clubs they sponsor on campus, asking alumni/current employees on the club&apos;s Discord, or even reaching out to the recruiters - though they&apos;ll normally make this information known early in the process) so you can work out how best to spend your time preparing.</p><h3 id="programming-interview">Programming Interview</h3><p>If you&apos;ve passed the screen your friendly recruiter will be in touch to schedule a &quot;final&quot; interview. This has increasingly come to mean a final <em>series</em> of interviews, typically three or four consecutive interviews. With some companies, like Google, this means between two and four actual programming interviews, but companies like Atlassian and Canva tend to provide a mix of programming interviews and the other varieties described below.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2021/06/lie.png" class="kg-image" alt="Getting That Grad/Intern Role" loading="lazy" width="1200" height="576" srcset="https://blog.ndl.im/content/images/size/w600/2021/06/lie.png 600w, https://blog.ndl.im/content/images/size/w1000/2021/06/lie.png 1000w, https://blog.ndl.im/content/images/2021/06/lie.png 1200w" sizes="(min-width: 720px) 720px"><figcaption>Where&apos;s the lie?</figcaption></figure><p>Programming interviews however, represent the deepest, darkest fear of many a CS (or whatever) student but unfortunately are key to proving your competence. No well-run company will hire you if you can&apos;t do at least a reasonable job on them. As always, the exact mechanics will differ between employers, but the basic setup is this: you will meet (increasingly remotely/online, given COVID) with one or two of the company&apos;s engineers (one might be learning the ropes of interviewing) who will verbally describe a problem they want you to solve using some platform (I&apos;ve seen everything from a Google doc, to dedicated platforms like <a href="https://www.hackerrank.com/products/developer-skills-platform/interview/">HackerRank&apos;s CodePair</a> and even just using your own IDE and sharing your screen over Zoom. In the pre-COVID days you might also just get a whiteboard to write out your answer on). Resist the urge to start programming immediately when you get the problem, this is a mistake (and will be noted by the recruiter). Your first first five to ten minutes should consist solely clarifying the problem and developing (at least the basis of) some test cases you can use to check your solution as you go. The secret to these interviews is, somewhat ironically, not programming but talking. Your goal (the whole time) while you tackle the problem, both before and during the programming portion, is to articulate your thought patterns so the interviewer knows what&apos;s going through your head and can more quickly redirect you if you misunderstand the problem or go astray.</p><p>Once you get to a working solution, one of two things will happen, you&apos;ll either move on to another question (increasingly less common) or at companies with a more sophisticated approach, you&apos;ll move into &quot;extension&quot; territory. Most questions will be asked in stages of increasing difficulty. For example, you might be given the classic &quot;<a href="https://leetcode.com/problems/two-sum/">Two Sum</a>&quot; problem and decide to solve it the &quot;easy way,&quot; which, depending on your implementation, might perform with <em>O(n<sup>2</sup>)</em> time complexity. The obvious extension is to ask you to improve upon this performance, either with a specific target (e.g. <em>O(n)</em>) or just an ambiguous request for improvement (space complexity is also low hanging fruit - though less common - for interviewers). As an aside, Stanford has a great breakdown of the Two Sum problem including questions you should ask and the possible solutions available <a href="https://web.stanford.edu/class/cs9/sample_probs/TwoSum.pdf">here</a> - I&apos;d highly recommend checking it out. What&apos;s very common, particularly if time or space complexity wasn&apos;t a part of the question or extensions, is for interviewers to ask you to evaluate the time and space complexity of your solution in the closing phase of the interview. Your answer is an important part of the assessment, even if not quite to the same extent as the actual programming. This is a skill in and of itself that needs active attention and practice as well (particularly if you find yourself often coming up with particularly convoluted answers).</p><p>Preparing for these interviews is very similar to preparing for the code screen, as described above, with one important distinction, and that&apos;s the need to practice the &quot;talking&quot; aspect of the interview. So while you should be crunching <a href="https://leetcode.com/">Leetcode</a> and <a href="https://www.hackerrank.com/">HackerRank</a> on your own (Leetcode has a paid feature by which you can access lists of questions known to be asked by certain companies, if you&apos;re into that sort of thing), you should also find someone who&apos;s also applying for internships or grad positions and arrange meet up regularly (somewhere with a whiteboard) and take turns being the interviewer and interviewee. Joining your university&apos;s competitive programming club (or starting it if they don&apos;t have one) is also a fantastic way to get a feel for interview-style questions in a more exciting context (it&apos;s also another thing to whack on that r&#xE9;sum&#xE9; &#x1F609;).</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2021/06/9899zqt07bc61.jpg" class="kg-image" alt="Getting That Grad/Intern Role" loading="lazy" width="667" height="374" srcset="https://blog.ndl.im/content/images/size/w600/2021/06/9899zqt07bc61.jpg 600w, https://blog.ndl.im/content/images/2021/06/9899zqt07bc61.jpg 667w"><figcaption>The author, one time</figcaption></figure><h3 id="system-design-interview">System Design Interview</h3><p>Not nearly as common as straight programming or behavioural interviews, but (at least in my opinion) far more exciting, are system design interviews. I&apos;ve seen these take two formats, both of which take place using a whiteboard (virtual or otherwise), not a terminal. </p><p>In the first and by far the most common format, the interviewer will ask you to choose a project that you&apos;ve worked on (they may specify with other people) and ask you to describe it and its architecture. They&apos;ll dig into the details and ask you about architectural decisions you made during development. The objective here is threefold, first they want to assess that you have actually worked on a substantial software project, the second is to assess your ability to communicate effectively about something you&apos;ve built, which is an incredibly important and frequently used skill on the job. The third aim is to assess your ability to recognise mistakes you&apos;ve made in the project&apos;s implementation and suggest improvements, which is why they always tend to as &quot;is there anything you would improve, in retrospect?&quot; or some variant of that. Being aware of your mistakes, humble enough to admit to them, and talented enough to see where improvements could be made, is the trifecta of skills for an effective engineer. Preparing for this type of interview is reasonably straightforward: pick one of your projects and sit down in advance and think about how you&apos;d describe it to a (technically adept) stranger (you&apos;ll probably be permitted to use diagrams for this), as well as how you&apos;d justify the architectural decisions you made and what you&apos;d improve. Having a back up project prepared in the same never hurt anyone, either. </p><p>The second format, and by far my favourite, involves being asked to architect a system from scratch. In my personal experience, that involved demonstrating that I understood the infrastructure required (at least in broad strokes) to build a &quot;Reddit-like&quot; site, the scope of which expanded as I went along. To start with, I described in rough terms the components of the back end API, the technologies I might use on the front end and how that would connect to a database (as well as what type of database to use). Then I was asked what changes I would need to make to support an obscene amount of user traffic, which involved discussing things like load balancers, database sharding and failover, and the associated challenges that crop up from using these more advanced systems. While this might sound intimidating, I should mention that I&apos;ve only ever been asked this type of question when interviewing for a niche site reliability engineering (SRE) role, which specifically deals with these types of challenges. If you&apos;re looking to prepare for this type of thing, it&apos;s worth playing around inside <a href="https://aws.amazon.com/">AWS</a> (or <a href="https://cloud.google.com/">Google Cloud</a>), watching talks from conferences like <a href="https://reinvent.awsevents.com/">re:Invent</a> about architecting large-scale systems and, if you can, reading <em><a href="https://www.oreilly.com/library/view/designing-data-intensive-applications/9781491903063/">Designing Data-Intensive Applications</a></em>, <a href="https://sre.google/sre-book/table-of-contents/">the SRE book</a>, or tagging along in person to conferences like <a href="https://yowconference.com/">YOW!</a>. &#xA0;It&apos;s difficult to find a use case for these kinds of technologies as an individual, and particularly as a student, but you don&apos;t really have to have used them in order to understand what they&apos;re for or how they work at a high level.</p><h3 id="behavioural-values-culture-interview">Behavioural (Values / Culture) Interview</h3><p>It turns out that programming isn&apos;t all that&apos;s required in a software development role. Regardless of how talented you are, or how much you&apos;d prefer to work alone, part of being a member of an organisation is participating in meetings (often Scrum/Agile rituals) as well as working together with team members to solve larger problems and organise work. As such, organisations want to ensure that you&apos;re going to be able to work as part of a team. For employers, gauging this is probably the hardest step in the interview process as it&apos;s an incredibly subjective area. This makes it somewhat hard to prepare for, but there are <a href="https://www.themartec.com/insidelook/behavioral-interview-questions">a common set of questions</a> that tend to pop up, which include examples like:</p><ul><li>Tell me about a time you disagreed with a colleague, how did you resolve this?</li><li>What&apos;s your process for tackling large problems?</li><li>Tell me about a time you failed. </li><li>Tell me about a time you had to lead a team.</li></ul><p>These questions are deliberately open-ended and designed to spark a conversation that will, hopefully, give the interviewer (often a manager) some insight into your likelihood of fitting in well with the company&apos;s culture and teams. There are various strategies for how to answer these types of questions, but by far the most common is the <a href="https://www.themuse.com/advice/star-interview-method">STAR method</a>. What the various methods don&apos;t tell you though, I imagine because it&apos;s assumed to be pretty obvious, is that a lack of humility in these situations can be the difference between success and failure. I&apos;ve had several obscenely talented engineer friends from university pass all of the programming tests, only to be knocked back for &quot;culture fit.&quot; Sell yourself well, but don&apos;t overdo it, don&apos;t criticise past colleagues/employers, don&apos;t evangelise your favourite programming language and don&apos;t act like or claim to be an expert in anything (this is particularly unbecoming in university students, who know next to nothing about software development).</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2021/06/meme_4_lines_700-5d11ec625c4ac__700-1.jpg" class="kg-image" alt="Getting That Grad/Intern Role" loading="lazy" width="700" height="681" srcset="https://blog.ndl.im/content/images/size/w600/2021/06/meme_4_lines_700-5d11ec625c4ac__700-1.jpg 600w, https://blog.ndl.im/content/images/2021/06/meme_4_lines_700-5d11ec625c4ac__700-1.jpg 700w"><figcaption>I&apos;ll take &quot;Things You Wish You Could Say in an Interview&quot; for $800, thanks Alex</figcaption></figure><p>All of that aside, the most important thing though is to be prepared. If the company has publicly shared its values, like <a href="https://www.atlassian.com/company/values">Atlassian</a> or <a href="https://www.canva.com/about">Canva</a>, it&apos;s worth reviewing these and coming up with an example or two of how you&apos;ve exemplified that value in the past. You&apos;ll probably be asked about them as both a way to start a conversation and to test whether you care enough (or are prepared enough) to have researched the company.</p><h3 id="take-home-programming-tasks">Take Home Programming Tasks</h3><p>Some companies take a slightly different approach to interviewing, recognising that people probably aren&apos;t at peak performance under the pressure of a time-boxed interview. Instead they give you a &quot;take home&quot; task to complete over the course of one or more days. These tasks are normally quite straightforward and are designed to test <em>how</em> you code. They shouldn&apos;t take more than a few hours of concerted effort. Examples I&apos;ve seen include:</p><ul><li>Set up a basic web server to serve a predefined API.</li><li>Craft an interface for a music player in React.</li><li>Write a program in &lt;language&gt; to convert a numerical representation of a number to words (like you&apos;d see on a cheque).</li></ul><p>In my experience this form of interview is most common for front-end position interviews, but is by no means exclusive to them. When you&apos;re applying for front end it&apos;s a little hard to put together a UI that shows off your talents inside 45 minutes or an hour. A take home gives you the chance to use your own tools (IDE) and process to produce your best work.</p><p>You&apos;ll normally have some constraints placed on you as to what you can use in your solution (e.g. only the language&apos;s standard library), but if you do have the freedom to use libraries, do it. No employer (or at least very few) wants their engineers reinventing the wheel when there&apos;s actual business logic to implement. Also make good use your chosen (or predefined) language&apos;s standard library, this is a chance to show the company that you know your stuff. </p><p>What you hand back to the company should, at minimum, include the following components (much like a personal project):</p><ul><li>README: well thought out instructions on how to run your solution and describing your rationale for any major architectural decisions.</li><li>Solution: high quality code (that if it&apos;s Python, has types). Your code should also be reasonably well commented with docstrings and inline comments where the meaning of the code isn&apos;t immediately obvious.</li><li>Tests: mandatory, even if they weren&apos;t mentioned in the spec. These should be thorough and provide adequate coverage of any edge cases. Your README should also include instructions on how to run these.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2021/06/5bturj.jpg" class="kg-image" alt="Getting That Grad/Intern Role" loading="lazy" width="500" height="500"><figcaption>That&apos;s the gist, yeah</figcaption></figure><p>The company is forced to trust that you&apos;ll stick to the parameters of the task and not get any outside help, but to be honest it&apos;s incredibly easy to detect cheating in these tasks because you&apos;re normally asked to discuss your solution in a follow-up interview. </p><h2 id="the-wait">The Wait</h2><p>One of the least pleasant parts of the whole application process are the waiting periods between stages, first between making your application and hearing back about an interview, and finally between sitting the interview(s) and hearing back about whether you&apos;ve been successful or not. Because of the ever-extending nature of the yearly hiring window and the high number of applicants, these waiting periods can go on for months. There&apos;s very little to gain, and a lot to lose, from spending the time harassing your recruiters for updates. If you&apos;re following the advice from the Applying Strategically section above, you should be too busy for that anyway.</p><h2 id="the-offer">The Offer</h2><p>All your dreams have come true, you&apos;ve finally got an offer! Typically these will come via a phone call arranged over email but as with everything else in this process some companies may do things differently. If the offer being made is for an internship at your first choice company: congrats, your work here is done, advance directly to GO, collect (hopefully more than) $200. It&apos;s polite to let the other companies you&apos;ve applied to know that you&apos;ve accepted another offer so they don&apos;t waste time and effort progressing your application. If the offer is for a graduate position it&apos;s time to decide whether you&apos;re happy with the compensation and ready to sign on the dotted line. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2021/06/job_interview.png" class="kg-image" alt="Getting That Grad/Intern Role" loading="lazy" width="740" height="236" srcset="https://blog.ndl.im/content/images/size/w600/2021/06/job_interview.png 600w, https://blog.ndl.im/content/images/2021/06/job_interview.png 740w" sizes="(min-width: 720px) 720px"><figcaption>What getting a job offer from a startup feels like</figcaption></figure><p>If you&apos;re not just happy the ordeal is over and you want to try and maximise your offer, you still have some work to do. Don&apos;t accept the offer just yet, tell them you need to time to consider and they may give you up to a week. You can use this week to reach out to the other companies you&apos;ve applied to. Let them know that you have another offer with a tight deadline but you&apos;d prefer to work with them. This will typically expedite your interview process with the other company, and if things go well you&apos;ll end up with another offer to weigh up before you get back to the first company. This is the same process you&apos;d follow if you had received an offer from a company that wasn&apos;t your first choice, you can (normally) use the leverage of another offer to achieve a faster outcome with your first preference. </p><p>This isn&apos;t universal, depending on the attitude and professionalism of the first company there is a minute chance they&apos;re looking for immediate acceptance of the offer and asking for time to consider could lead them to revoke it. It&apos;s a chance you have to take if you&apos;re looking to thread the needle. The alternative, accepting a role and turning it down after the fact for a position at another company will typically burn bridges with the spurned potential employer. Whether you&apos;re willing to do that is a choice you have to make, but I wouldn&apos;t recommend it, personally.</p><h2 id="the-not-offer">The Not Offer</h2><p>No matter how qualified you are, no matter how good your r&#xE9;sum&#xE9; is, there&apos;s a reasonable chance you won&apos;t hear back with good news from your first choice (or even any of your other choices). Most companies will reach out to let you know that you haven&apos;t been successful, but some might not respond at all.</p><p>It&apos;s important to understand that this isn&apos;t the end of the world. If you were applying for an internship, you can take the summer to revisit your place on each of the axes and work on your offering for grad applications. If you were applying for grad programs, there&apos;s still some good news! Many grad programs accept applications for up to a two years after you graduate, so there are plenty of opportunities to take some time to up your game and apply again.</p><h2 id="thats-all-folks">&quot;That&apos;s All, Folks!&quot;</h2><p>If you&apos;re still with me at this point, congrats, you made it! Hopefully you&apos;ve leant something along the way and have some idea of what aspects of your &quot;sales pitch&quot; you need to work on in order to get that bread &#x1F956;.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2021/06/a5cb8587a70130b9dfcdb051746133f0.jpg" class="kg-image" alt="Getting That Grad/Intern Role" loading="lazy" width="1600" height="906" srcset="https://blog.ndl.im/content/images/size/w600/2021/06/a5cb8587a70130b9dfcdb051746133f0.jpg 600w, https://blog.ndl.im/content/images/size/w1000/2021/06/a5cb8587a70130b9dfcdb051746133f0.jpg 1000w, https://blog.ndl.im/content/images/2021/06/a5cb8587a70130b9dfcdb051746133f0.jpg 1600w" sizes="(min-width: 720px) 720px"><figcaption>Go forth and apply! (Genesis 1:28, sort of)</figcaption></figure><p>P.S: If you&apos;ve made it this far and you still have questions I haven&apos;t answered, you&apos;re wondering about what interning at Atlassian/Canva is like, or the possibility of a referral to Canva, please get in touch via <a href="mailto:enq@ndl.im">enq@ndl.im</a>. I&apos;m also reachable on the CSESoc Discord under the handle @noodle.</p>]]></content:encoded></item><item><title><![CDATA[My San Francisco Startup Adventure]]></title><description><![CDATA[Since my participation in the IdeaHub pre-accelerator program, Nimrod and his team have launch follow-up programs called "Startup Adventures" in a variety of tech hubs across the world (Shanghai, Tel Aviv, San Francisco and Singapore). This blog post tells the story of my very own Startup Adventure.]]></description><link>https://blog.ndl.im/sanfrancisco/</link><guid isPermaLink="false">5c651286f3a63d03f89cd578</guid><category><![CDATA[2019]]></category><dc:creator><![CDATA[Nicholas Lambourne]]></dc:creator><pubDate>Fri, 05 Apr 2019 07:11:06 GMT</pubDate><media:content url="https://blog.ndl.im/content/images/2019/04/golden_gate-3.jpg" medium="image"/><content:encoded><![CDATA[<h2 id="the-build-up">The Build Up</h2><img src="https://blog.ndl.im/content/images/2019/04/golden_gate-3.jpg" alt="My San Francisco Startup Adventure"><p>The University of Queensland (which I&apos;ve attended for an unreasonably long time) recently started focusing on student entrepreneurship in a substantial way, which has led to the creation of IdeaHub, a &quot;pre-accelerator&quot; program and workspace designed to prepare students to engage with the startup ecosystem while still studying. I participated in the six-week program in late 2017 and found it to be enormously valuable. In addition to engaging talks given by Glen Richards (founder of Greencross Vets) and Professor David Wood (then-CTO of web text-editor company Ephox, now rebranded as Tiny), we also engaged in &quot;Design Jams&quot; facilitated by fellow student-entrepreneurs. What we didn&apos;t know at the time was how successful the program would be, or the amazing opportunities it would open up in the future.</p><p>Since my participation in the pre-accelerator program, Nimrod and his team have launched a series of follow-up programs called &quot;Startup Adventures&quot; based in a variety of tech hubs across the world (Shanghai, Tel Aviv, San Francisco and Singapore). &#xA0;My first impression was that these trips would be somewhat similar to the Startup Catalyst program run by the Queensland State Government, largely consisting of &quot;tech tourism&quot; (i.e. visits to large tech companies in each destination). However, what Nimrod and IdeaHub provide is something infinitely more valuable. This blog post tells the story of my very own Startup Adventure.</p><h2 id="getting-selected">Getting Selected</h2><p>I&apos;d applied for the Tel Aviv Startup Adventure Program in early 2018, but the program was so popular and received so many applications that I didn&apos;t make the cut. When a new destination was announced in late 2018, no less than San Francisco itself, I was determined to apply again. This time, I had a research position and the newly conferred presidency of the UQ Computing Society on my r&#xE9;sum&#xE9;. This it seems, was enough to sway the odds in my favour. The short, efficient application process was followed by an equally quick interview, and before I knew it I was meeting my fellow adventurers and hearing about all the things we&apos;d be getting up to in California. First though, IdeaHub had to find a suitable start-up to place me in. This, as I would come to learn, is not as easy as it sounds. </p><p>The first company I was due to be placed with was Linqia, a company that connects established brands (think NBC, or Nestl&#xE9;) with influencers (i.e. famous instagram personalities). As part of the process, I was asked to sit a technical interview over video link with one of Linqia&apos;s engineering managers. There was some initial confusion about the interview: I had been told it would involve algorithms and data structures, and that I would be able to complete it in Python, but the problem I was presented didn&apos;t involve any of these topics and could only be completed in Java. Nevertheless, I was able to complete the assigned task (except for one test case that was, in fact, incorrect). My interviewer was satisfied with my performance, but unfortunately word hadn&apos;t been passed down to him at that stage about the short nature of the trip. He felt that it would be impossible to provide a proper internship experience in such a short period of time (four working weeks), which I understood. With only four days until we were to fly out, this left me in a spot of bother. Thankfully, a UQ alumni and the company he had founded would step in to save the day. </p><h2 id="patchd">Patchd</h2><p>I&apos;d first met Robert Quinn as a speaker during the IdeaHub pre-accelerator program and been inspired by his passion and enthusiasm. He and his co-founder Wei had just been through the muru-D incubator program in Sydney, the closest thing Australia has to Y-Combinator. At the time, their goal had been to build a device capable of detecting sepsis, a common and fatal disease, before doctors were able to diagnose it. Since I&apos;d met Robert that first time, the company had moved to Silicon Valley, made it through the intensive Y-Combinator application process, and raised seed funding. With this new capital, they&apos;d been able to move out of the Valley and into San Francisco&apos;s financial district. This is where they were when Nimrod, ever the connector of people, reached out to ask if they&apos;d consider taking myself, and my fellow traveller Tim, on as interns. Rob&apos;s quick and efficient handling of the matter, along with a short phone interview with Wei (en route to my brother&apos;s wedding) quickly settled the matter: I&apos;d be working at Patchd for the next month.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2019/04/rob.jpg" class="kg-image" alt="My San Francisco Startup Adventure" loading="lazy"><figcaption>Rob presenting to fellow entrepreneurs at muru-D in Sydney</figcaption></figure><h2 id="and-we-re-on-our-way-">And We&apos;re On Our Way...</h2><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2019/03/hello.jpg" class="kg-image" alt="My San Francisco Startup Adventure" loading="lazy"><figcaption>The Adventurers from Down Under</figcaption></figure><p>Our flights to San Francisco were largely uneventful, despite the somewhat confusing terminal system at LAX, where we met our connecting flight. We got into SFO quite late, around 11PM on a Sunday, and made our way to the hostel in Downtown SF we would call home for the next month.</p><p>Before we started work on Tuesday (Monday being Martin Luther King day), Nimrod was determined to show us as much of the city as possible, so we followed him on adventure from downtown, through the heart of the city, down to the wharves including the famous Pier 39 and Fisherman&apos;s Wharf, before heading across to the Paradiso and taking San Francisco&apos;s famous cable cars to the top of city. As if that 21km epic wasn&apos;t enough, we also managed to pick up tickets to visit Alcatraz the following Saturday. </p><p>Rather than bore you with a blow-by-blow account of my four weeks in San Francisco, I&apos;ve picked out some of my favourite moments and events to focus on.</p><h2 id="meeting-patchd">Meeting Patchd</h2><p>Patchd is located a very handy 12 minute walk from our lodgings, taking me past not only the scenic Union Square, but also one of San Francisco&apos;s shiny new two Amazon Go stores (no checkout, just walk out with what you want and get charged to your account). Tim and I were unsure how strict working hours were, so we&apos;d resolved to arrive at 9AM which we did, only to struggle to find the place when we got there. Thankfully, someone was around to let us in and show us where to go.</p><p>At that time, Patchd consisted of Rob (CEO), Wei (CTO), Max (Algorithms Engineer) and Jordan (Administrative Assistant) in a brand new office easily capable of fitting a staff of 15-20. In fact, they were so new to the office that they hadn&apos;t had a chance to put together the convertible standing desks we&apos;d be using during our stay. This became our first task, somewhat self-assigned as the Patchd staff were mortified that we were happy to do it ourselves. Once that was done, the real work began.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2019/04/tables.jpg" class="kg-image" alt="My San Francisco Startup Adventure" loading="lazy"><figcaption>Tim and I got very good at building desks during our four weeks at Patchd</figcaption></figure><h2 id="my-work-at-patchd">My Work at Patchd</h2><p>Despite the desk kerfuffle, the Patchd team had gone out of their way to ensure that both Tim and I had well-defined, achievable tasks for our time with the company. For me, that meant working with the core Patchd library. To indulge in some technical speak for a minute, I was specifically tasked with parallelising the training of the recurrent neural network responsible for training the model used to detect sepsis. Breaking this down, training machine learning models is often slow, especially when you have as much data as Patchd does. One way to overcome this is to split up the training data and run it on multiple computers simultaneously before combining the results back together.</p><p>The first problem I had to overcome was that I&apos;d never worked with (or learnt about) machine learning, or the specific library (Tensorflow, developed by Google) that Patchd uses to make its models. This is where Max came in. Max was responsible for Tim and I at Patchd, and he&apos;s an incredible teacher. In the course of a single week, he was able to get me up to speed on the theory of recurrent neural networks and productive with Tensorflow.</p><p>Unfortunately, there was another problem. In the rush to get a working model, the team had taken certain necessary shortcuts, which had resulted in a somewhat messy codebase that was almost impossible to get working across multiple machines. Max and I would spend the next two weeks cleaning up the codebase, implementing an object-oriented structure and centralising state into a few key classes. During this time, I taught Max the basics of software engineering good practice and he continued to teach me (and Tim) how machine learning works.</p><p>Our time at Patchd wasn&apos;t purely technical. Rob was determined to give Tim and I exposure to the business side of start-ups and venture capital as well. During our time there we sat in on calls with lawyers, VCs, regulatory advisors. Rob also broke down the process of acquiring funding, explaining how the various rounds work and what kind of attitude/approach is needed to seal the deal. This was the kind of knowledge you just can&apos;t get from a book or a class and really made my time at Patchd.</p><p>Before too long though, it was our last week. I hadn&apos;t achieved everything I&apos;d set out to, but I left the company with a much cleaner codebase and a roadmap for achieving parallelised training (not to mention ten freshly built standing desks they didn&apos;t have before Tim and I arrived).</p><h2 id="extracurricular-activities">Extracurricular Activities</h2><p>Not only did we get the chance to contribute at incredible companies doing groundbreaking work, we also spent a good deal of time exploring San Francisco and the wider bay area. I&apos;ve picked out a few of my favourites:</p><h3 id="google">Google</h3><p>One of the things I was most looking forward to in San Francisco (well, technically Mountain View) was visiting the global headquarters of Google a.k.a. the Googleplex. It seems like every software engineer (at least at some point) wants to work for Google and several friends and associates of mine already do. In particular, David Finster (Systems Engineering) who would give our team the tour, and Daan van Esch (Linguistics) who I&apos;d worked with on the Transcription Acceleration Project. After spending only a couple of hours on the campus, which is really more of a suburb, I could definitely see the appeal.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2019/04/googleplex.jpg" class="kg-image" alt="My San Francisco Startup Adventure" loading="lazy"><figcaption>The Android Sculpture Garden at the Googleplex</figcaption></figure><h3 id="alcatraz">Alcatraz</h3><p>Alcatraz was a must-see for most of us, and it didn&apos;t disappoint. We all took the audio tour of the island and were transported to a different time. We heard about many of its famous, or rather infamous, inmates and what their lives as prisoners were like. The island (and prison) had its fair share of momentous events during its working life including the Battle of Alcatraz (an inmate uprising necessitating intervention by the army) and an occupation by Native Americans during the 1960s. The island is well worth the exorbitant cost of entry, but make sure to take the &quot;free&quot; audio tour to get your money&apos;s worth.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2019/04/alcatraz.jpg" class="kg-image" alt="My San Francisco Startup Adventure" loading="lazy"><figcaption>Alcatraz Island</figcaption></figure><h3 id="the-university-of-california-berkeley">The University of California - Berkeley</h3><p>No trip to San Francisco would be complete without visiting the greatest of the University of California campuses at Berkley. Our primary focus was Berkeley&apos;s &quot;Skydeck&quot;, their in-house incubator and co-working space - somewhat like UQ&apos;s iLab, but on a far grander scale. We&apos;d been invited for a tour by the founders of Humm, another Aussie startup focussed on enhancing brain performance. Little did we know, this would also include a tour of the Berkley campus, which involved T-Rex bones, the world&apos;s largest eucalyptus trees and a carpark devoted entirely to recipients of Nobel prizes. Before we left, we were also lucky enough to sit in on a Q&amp;A session with Stephanie Zhan of Sequoia Capital, the valley&apos;s most prestigious venture capital firm.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2019/04/berkeley.jpg" class="kg-image" alt="My San Francisco Startup Adventure" loading="lazy"><figcaption>The team on our private tour at the University of California Berkeley</figcaption></figure><h3 id="the-aussie-founders-network">The Aussie Founders Network</h3><p>One of our first events on the ground after arriving in San Francisco was a fireside chat hosted by the Aussie Founders Network with Ash Fontana, an Aussie start-up founder who had transitioned into venture capital after a successful exit. This chat was particularly enlightening as Ash wasn&apos;t the type to mince words or oversell. The main takeaway from his talk was that we needed to &quot;network like Americans,&quot; which basically boiled down to overcoming the distinctly Australian urge to undersell ourselves and our ideas. What was even more valuable though was getting our first glimpse of how networking really worked in SF. There is nothing more valuable there than being able to connect people, and the only way to do that is to overcome any distaste or fear of meeting new people and dive right in. This was made so much easier because AFN members were so eager to help you succeed. Because of the vast array of original ideas and industries on display, the likelihood of being in competition with anyone else was almost non-existent. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2019/04/squad.jpg" class="kg-image" alt="My San Francisco Startup Adventure" loading="lazy"><figcaption>You&apos;d be surprised how hard it was to get a photo of the whole squad...</figcaption></figure><h3 id="twitter">Twitter</h3><p>Our last &quot;Big Tech&quot; stop was Twitter, where we were shown around by Timothy Marks, another UQ grad we&apos;d met at the Alumni event in our first week. Again, Nimrod&apos;s slick networking skills (and Tim&apos;s friendliness) came to our rescue and got as invite to visit the house that Jack Dorsey built in downtown SF. By far the most modern of the HQs we&apos;d visited, Twitter was <em>lush</em>. It was situated in multiple highrises towards the bay end of Market Street connected by an Atlassian-like skywalk between buildings. There were three separate dining areas/kitchens serving different types of food, thankfully we were there around lunchtime and got to partake. We also got to use the Twitter selfie machine, which took photos of all of us and uploaded them to - you guessed it - Twitter.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2019/04/twitter.jpg" class="kg-image" alt="My San Francisco Startup Adventure" loading="lazy"><figcaption>Wall murals everywhere at Twitter HQ</figcaption></figure><h3 id="muir-woods">Muir Woods</h3><p>While being surrounded by and working in a high-tech environment is the dream of every software engineer, it&apos;s nice sometimes to be able to get back to nature - so, one weekend while half of our squad headed down to LA to visit Disneyland, the rest of us made our way over to Muir Woods, on the other side of the Golden Gate bridge. It turned out to be well worth the long bumpy bus ride. California redwoods are absolutely stunning, and Muir Woods is amongst the best the state has to offer. It also helped that our bus, unlike the one back from LA, didn&apos;t break down.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2019/04/muir_woods.jpg" class="kg-image" alt="My San Francisco Startup Adventure" loading="lazy"><figcaption>The absolutely stunning Muir Woods</figcaption></figure><h2 id="takeaways">Takeaways </h2><p>That&apos;s about it. There&apos;s so much more I could have covered, but this blog post is already getting a little long. Four weeks went by incredibly fast, but given the opportunity to do it again, there&apos;s very little that I&apos;d change about my time in San Francisco. More than anything else, my startup adventure was an incredible learning experience. Thanks primarily to the wonderful people that I met, the opportunities that arose as part of the trip, not to mention Nimrod&apos;s organisational talents, my time there was amongst the busiest and most productive of my life. While I&apos;m glad to be back in Australia, surrounded by friends and family, going back to the valley - possibly even at the head of my own startup - is definitely on the cards. If you&apos;re considering applying for a Startup Adventure, just do it - the experience will change your life (for the better) in ways you can&apos;t imagine.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2019/04/golden_gate.jpg" class="kg-image" alt="My San Francisco Startup Adventure" loading="lazy"><figcaption>The (Orange) Golden Gates we nearly didn&apos;t get to see up close</figcaption></figure><p></p>]]></content:encoded></item><item><title><![CDATA[2018 - A Year of Books & Travel]]></title><description><![CDATA[<blockquote>The future came and went in the mildly discouraging way that futures do.</blockquote><p>- Neil Gaiman</p><h2 id="-murica">&apos;Murica</h2><p>Another year has gone by so quickly, but if I can say one thing about the 365 days that made up 2018, it&apos;s that I read and travelled quite a</p>]]></description><link>https://blog.ndl.im/my-2018/</link><guid isPermaLink="false">5c2a2cacf3a63d03f89cd2fa</guid><category><![CDATA[books]]></category><dc:creator><![CDATA[Nicholas Lambourne]]></dc:creator><pubDate>Sat, 05 Jan 2019 09:37:00 GMT</pubDate><media:content url="https://blog.ndl.im/content/images/2018/12/2018-books.png" medium="image"/><content:encoded><![CDATA[<blockquote>The future came and went in the mildly discouraging way that futures do.</blockquote><img src="https://blog.ndl.im/content/images/2018/12/2018-books.png" alt="2018 - A Year of Books &amp; Travel"><p>- Neil Gaiman</p><h2 id="-murica">&apos;Murica</h2><p>Another year has gone by so quickly, but if I can say one thing about the 365 days that made up 2018, it&apos;s that I read and travelled quite a bit. At the beginning of the year I set my usual reading target of fifty books knowing full well that despite having the same goal for years, I&apos;d never come close to meeting it. 2018 was different, by New Year&apos;s Eve I&apos;d left my job at ADLED and was already in New York on my way to a five month exchange program at the University of Connecticut. This lack of gainful employment (I hadn&apos;t been unemployed since the age of ten) and a non-trivial amount of time spent on planes, trains and buses meant I could really focus on reading. I read everywhere, from public streets to coffee houses to my unheated room in the heart of Brooklyn. My favourite (by far) though, was the general research division of the New York Public Library&apos;s Steven A. Schwarzman Building on 5th Avenue. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2018/12/lib.jpg" class="kg-image" alt="2018 - A Year of Books &amp; Travel" loading="lazy"><figcaption>All the pretties (books, not people)... - NYPL&apos;s Stephen A. Schwarzman Building</figcaption></figure><p>The wonder this room inspired was replicated only once during my time in the United States, at the Library of Congress in Washington D.C. There&apos;s something special about spaces devoted to books and learning that affects me on a deep level.</p><p>My travels around New York were cut short by a blizzard and before I knew it I was off to Boston, a city caught somewhere between its revolutionary past and its intellectual present. I adored this city and its inherent walkability, I must have crossed the Charles river more than a dozen times during my weeklong stay. Visiting MIT and Harvard - something I&apos;d wanted to do for years - was something of a disappointment as I quickly realised that due to it being the holidays, the campuses were largely deserted and admittedly quite boring. Clearly it&apos;s the people that make these places what they are, not the facilities. Walking the HBS campus, which I&apos;d read so much about in Duff McDonald&apos;s <a href="https://www.amazon.com/dp/B01JFYB12W/">book</a>, <em>The Golden Passport</em>, was only slightly more fulfilling. The one part of Harvard (proper) that I did fall in love with, was the bookstore. I walked away with armfuls of books, wilfully ignorant of the fact that I would end up having to drag them with me across the entire width of the continental United States.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2018/12/coop.jpg" class="kg-image" alt="2018 - A Year of Books &amp; Travel" loading="lazy"><figcaption>Turns out books are heavy... - Harvard Coop Bookstore</figcaption></figure><p>While I was in Boston I also walked the &quot;Freedom Trail&quot; taking in the incredible revolutionary history of the town, which ended in the most splendid view (pictured below). That, and the cake I eventually tracked down, made this one of my favourite birthdays to date, despite a distinct lack of friends and family to share it with. Boston also had a killer public library, but with a less endearing, post-modern architecture that couldn&apos;t quite match NYPL&apos;s.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2018/12/freedom.jpg" class="kg-image" alt="2018 - A Year of Books &amp; Travel" loading="lazy"><figcaption>If you squint and tilt your head to the side you can see a US flag flying on the Tobin Bridge - Bunker Hill, MA</figcaption></figure><p>After a week in Boston it was on to the University of Connecticut, where I would spend the next five months immersed in Computer Science, American culture, and despite it being the &quot;spring semester&quot;, snow. UConn is lovely place, for all that its primary campus is located in the middle of nowhere. While I was there I undertook studies in:</p><ul><li>Programming Languages</li><li>Operating Systems</li><li>Computer Networks</li><li>Computer Security</li><li>Theory of Computation</li><li>Introductory Quantum Computing</li></ul><p>The Quantum course was one of the original reasons I had picked UConn, in addition to its close proximity to New York and Massachusetts. At the time, I was considering Quantum Information Processing as a field for postgraduate research (largely as a result of having read Nicolas Gisin&apos;s book <em>Quantum Chance</em>), and was thrilled when Professor Walter Krawec permitted me to audit his course. As it turned out, QC is largely based around linear algebra and this formed the majority of the course. I&apos;m still deeply interesting in QIP, but I think my talents would be best suited to focussing on developing algorithms that leverage QC&apos;s unique benefits over classical computing. I&apos;m deeply thankful to Professor Krawec for his patience and for helping me understand so much (despite my frequent tardiness/truancy).</p><p>It was incredible to be able to experience that much computer science at one time, but as usually happens I bit off more than I could chew with regards to classwork and this impacted my ability to both socialise with the friends I had made in my dorm and pull off acceptable grades. It also meant that I didn&apos;t get to spend nearly enough time enjoying UConn&apos;s ridiculously picturesque scenery.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2019/01/conn1.jpg" class="kg-image" alt="2018 - A Year of Books &amp; Travel" loading="lazy"><figcaption>Mirror Lake - The University of Connecticut, Storrs</figcaption></figure><p>While I was at UConn I also made some friends from Germany and together with another (American/Chinese/Israeli) friend we headed up to Montreal for a weekend. As the only member of the party over 25, I was chosen as the driver of the rental car we took. This meant that my first experience driving on the <em>incorrect</em> side of the road was the six hour drive from Storrs to Quebec, which was only a little terrifying. It turned out to be more than worth it - Quebec is fabulous and has its very own Notre-Dame cathedral in which we saw the most incredible (and surprisingly not sacrilegious) light show.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2019/01/notre.jpg" class="kg-image" alt="2018 - A Year of Books &amp; Travel" loading="lazy"><figcaption>Basilique Notre-Dame de Montr&#xE9;al</figcaption></figure><p>Before long it was back to campus, with less French, but more computer science and lakes. The sheer variety of content (and small class sizes) I was exposed to during semester more than made up for the lack of academic rigour I was used to from my studies in Australia. The beauty of the grounds (rivalling UQ&apos;s own) and on-campus ice rink may have helped a little, too.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2019/01/uconn2.jpg" class="kg-image" alt="2018 - A Year of Books &amp; Travel" loading="lazy"><figcaption>Swan Lake and the Chemistry Building - The University of Connecticut, Storrs</figcaption></figure><p>During Spring Break (another American cultural phenomenon I didn&apos;t completely understand) my new friend Moritz and I travelled to Washington, D.C. via Philadelphia to try and take in as much &quot;freedom&quot; as possible. We saw a great deal in the week we were there, walking the National Gallery, seeing SCOTUS, the Capitol, the White House, the Smithsonian Air &amp; Space Museum, the Library of Congress, and the Newseum (my personal favourite).</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2019/01/dc.jpg" class="kg-image" alt="2018 - A Year of Books &amp; Travel" loading="lazy"><figcaption>The Orange House - Washington, D.C.</figcaption></figure><p>As exams rolled around it was time to start saying goodbye to all of the friends I had made and plan the next leg of my journey, something I hadn&apos;t put a whole lot of thought into until that point. My post-UConn American experience was largely a tour of potential graduate schools with detours for the US Python Conference, the Rock on the Range music festival in Columbus and a veritable vegan smorgasbord in Portland.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2019/01/Screen-Shot-2019-01-01-at-2.36.43-pm.png" class="kg-image" alt="2018 - A Year of Books &amp; Travel" loading="lazy"><figcaption>That&apos;s 7018km, if you wanted an actually useful unit of measurement</figcaption></figure><p>My first stop was Pittsburg, specifically to visit Carnegie Mellon University. Pittsburg (at least the areas that I stayed in and walked through) were quite lovely, though I did get my first taste of the &quot;Rust Belt&quot; neglect (i.e. crumbling infrastructure) there as well.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2019/01/cmu.jpg" class="kg-image" alt="2018 - A Year of Books &amp; Travel" loading="lazy"><figcaption>Carnegie Mellon College of Engineering - far less creepy than &quot;The Cathedral of Learning&quot; across the road</figcaption></figure><p>Next, it was on to Cleveland for PyCon, where Rust Belt Neglect stepped up to the next level. Despite staying only 10 minutes outside the city, I was advised (strongly and repeatedly) not to venture outside my lodgings after dark. A shame, given that walking the streets might have given some insight into why every second house was either foreclosed or condemned. PyCon US is everything I was used to from PyCon AU, just bigger and better. During the conference itself I met Python luminaries including <a href="https://blog.michaelckennedy.net/">Michael Kennedy</a>, <a href="http://pythontesting.net/about/">Brian Okken</a> and <a href="https://www.kennethreitz.org/">Kenneth Reitz</a>. I even got to have dinner with Michael, as well as Kevin Markham of <a href="dataschool.io">dataschool.io</a>, which led to a variety of interesting conversations about building a business around Python.</p><p>After the conference it was time for the sprints, where I angled my way straight to Russel Kieth-Magee&apos;s <a href="https://pybee.org/">Beeware project</a>, the end-goal of which is a truly cross-platform GUI library for Python. Over the course of the 5-day sprints I contributed to one of the Beeware sub-projects known as <a href="https://github.com/pybee/batavia">Batavia</a> (a Python interpreter written in JavaScript), implementing some of the more obscure (read: corner-case) features of the Python built-in functions (like abs, sum and oct). In return for my week of programming, I got not only to work with one of my Python heroes, but also a shiny challenge coin:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2019/01/beeware.jpg" class="kg-image" alt="2018 - A Year of Books &amp; Travel" loading="lazy"><figcaption>Everyone who makes a successful pull request to Beeware gets a Challenge Coin!</figcaption></figure><p>After PyCon, I headed down to Columbus for a music festival (Rock on the Range) featuring some of my favourite bands including Avenged Sevenfold and Bullet for My Valentine. Then it was off to Chicago to see a very pretty university, eat some delicious soul food, see one of my favourite works of art (The Picture of Dorian Gray by Ivan Albright) and finally to board a train to Seattle.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2019/01/uchic.jpg" class="kg-image" alt="2018 - A Year of Books &amp; Travel" loading="lazy"><figcaption>The University of Chicago was absolutely stunning, the rest of the city not so much...</figcaption></figure><p>American long-distance trains are worth every penny more than the equivalent Greyhound bus, something I wouldn&apos;t fully appreciate until after my 17 hour journey from Portland to San Jose. The trip took me through a half-dozen US states and across the Rocky Mountains - truly a sight to behold. Eventually, after two and a half days, I arrived in Seattle. Here, I saw <a href="https://en.wikipedia.org/wiki/Amazon_Spheres">Jeff Bezos&apos; giant glass balls</a>, drank my weight in London Fogs, and had more incredible American pizza. I also scoped out the lush, green University of Washington campus, another pretty place I could see myself spending 3-5 years at for a PhD.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2019/01/uw.jpg" class="kg-image" alt="2018 - A Year of Books &amp; Travel" loading="lazy"><figcaption>Department of Anthropology - The University of Washington</figcaption></figure><p>Portland, my next stop, is a city of such glaring economic disparity that it&apos;s quite hard to stomach. It was the first, though far from the last, place I saw luxury cars (Lamborghinis, Range Rovers etc.) driving down a block housing thirty or more homeless people on the sidewalk. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2019/02/33986827_2161831397165950_7046577191269695488_o.jpg" class="kg-image" alt="2018 - A Year of Books &amp; Travel" loading="lazy"><figcaption>A Very Pretty Fa&#xE7;ade</figcaption></figure><p>It only got worse as I went farther south. In fact, the rest of my American expedition was rather uneventful. I stayed briefly in Mountain View to check out San Fransisco and the Valley, but was largely underwhelmed by it all (Mountain View itself is really just a big office park nestled in suburbia). Stanford, despite being internationally recognised, didn&apos;t seem have the same air of classic intellectualism I&apos;d experienced at Chicago and even UW. I would go on to experience much the same thing at UCLA, though exploring the campuses was quite a pleasant adventure.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2019/02/34993994_2166513446697745_5396158930298601472_o.jpg" class="kg-image" alt="2018 - A Year of Books &amp; Travel" loading="lazy"><figcaption>The UCLA campus was alarmingly warm in June &#x1F525;</figcaption></figure><p>Los Angeles, my last stop before flying home, was similarly disappointing, being smoggy, crowded and appallingly afflicted with the same kind of disparity I&apos;d experienced in Portland and SF. My host in LA, a recruiter for Netflix, explained that what I saw was the result of a policy in central (read: Republican) states to provide one-way bus tickets for homeless people to west coast cities like LA and San Francisco.</p><p>This wasn&apos;t the greatest note to leave on, given the overwhelmingly rosy picture I&apos;d had prior to my arrival (and even up until my departure from the east coast). What it did give me was a much greater appreciation for the great land I&apos;d come from, and would soon be returning to.</p><h2 id="-straya">&apos;Straya</h2><p>Given that I had originally planned to spend the entire year abroad, first in Connecticut, then in Glasgow, why was I returning in June? An opportunity to contribute research at UQ. I&apos;d been brought on as a Winter Scholar to help with the Indigenous Language Robot project and during the five weeks I worked under <a href="http://gdurantin.com/">Dr Gautier Durantin</a> I produced <a href="https://github.com/CoEDL/hermes/">Hermes</a>, software for turning linguistic resources into learning material for the robots. </p><figure class="kg-card kg-image-card"><img src="https://blog.ndl.im/content/images/2019/01/process-flow.png" class="kg-image" alt="2018 - A Year of Books &amp; Travel" loading="lazy"></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2019/01/features.png" class="kg-image" alt="2018 - A Year of Books &amp; Travel" loading="lazy"><figcaption>The Original Hermes Interface</figcaption></figure><p>The software was well-received by Dr Durantin and his supervisor, Professor Janet Wiles, and I was ultimately extended an offer to continue work on Hermes and other projects as a Research Assistant in the Complex &amp; Intelligent Systems Group. At nearly the same time, I was offered a tutoring position for one of the introductory engineering subjects in the faculty of Engineering, Architecture and IT. I accepted both and quickly went from being unemployed to overwhelmed, just in time for a new semester at UQ.</p><p>As has been my way for as long as I can remember, I (again) bit off more than I could chew, signing up for five subjects in addition to my lab and teaching obligations. As the realities of what I&apos;d signed up for slowly dawned, this was quickly pared down to four subjects, then three, until finally I finished the semester with only two subjects: <em>Data Structures &amp; Algorithms</em> and <em>Professional Practice in the Business Environment</em>. My performance in <em>Data Structures</em> was lacklustre throughout the semester (to put it generously) due to a combination of too many work commitments, diminishing effects of my anti-depressant medication and my tendency to put more focus on the group work involved in <em>Professional Practice</em>. For the first time in nearly eight years of tertiary education (all of which took place post-onset), I had to sit a final exam under special conditions (in this case, later in the day due to the side effects of medication).</p><p>Despite my own less-than-stellar academic performance, my lab work (due to its flexible nature) and teaching (due to its scheduling) was largely unaffected. I took great pleasure in supervising 25 first year engineering students through the process of researching, designing and building their very own unpowered UAVs. My lab work was equally fulfilling, as I was moved from working on Hermes (My good friend <a href="https://github.com/JNRuan">James</a> took over development) to tackling problems in speech recognition with Ben Foley on the Transcription Acceleration Project (TAP), specifically in <a href="https://github.com/CoEDL/kaldi_helpers">KaldiHelpers</a> and <a href="https://github.com/CoEDL/elpis">Elpis</a> (abstraction layers for the <a href="http://kaldi-asr.org/">Kaldi ASR system</a>). During my short tenure with the lab I&apos;ve been lucky enough to travel to the Northern Territory to attend the <a href="http://wanala.org/">WANALA conference</a> on indigenous languages, secure a summer research scholarship to continue my work in these areas (practically full-time) over the summer break. I also received a scholarship from the ARC Centre of Excellence for the Dynamics of Language (CoEDL) to attend their summer school at the Australian National University in late November. Both conferences were incredible experiences that fundamentally changed my perspective with regards to my work. In particular, they made me realise that technology is only useful in as far as it empowers <em>people</em> to do the work they do. Technology can&apos;t save language, it can only facilitate the people already working to do so.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2019/02/DtOuT1NUUAABH49.jpg" class="kg-image" alt="2018 - A Year of Books &amp; Travel" loading="lazy"><figcaption>The CoEDL Summer School Attendees, with me out front (due mostly to poor planning)</figcaption></figure><p>This summer, following on from the CoEDL summer school, I&apos;ve been working with a talented group of software engineering students (and one similarly talented anthropologist) to develop a web GUI for non-computational linguists to interact with Elpis and Kaldi. The goal was to expose the power of Kaldi to linguists, without requiring them to have a background in computer science. As this project extends into next year, I&apos;ll speak more about it in my next summary post, which I hope will come a little sooner than 2020.</p>]]></content:encoded></item><item><title><![CDATA[(Relatively) Pain-Free Syntax Highlighting For Your Ghost Blog]]></title><description><![CDATA[Pain-Free Syntax Highlighting For Your Ghost Blog]]></description><link>https://blog.ndl.im/syntax-highlighting/</link><guid isPermaLink="false">5bd3f6c51bc93341860474c6</guid><category><![CDATA[code]]></category><category><![CDATA[ghost]]></category><category><![CDATA[blogging]]></category><dc:creator><![CDATA[Nicholas Lambourne]]></dc:creator><pubDate>Sat, 27 Oct 2018 05:27:13 GMT</pubDate><media:content url="https://blog.ndl.im/content/images/2018/10/Screen-Shot-2018-10-30-at-8.42.09-pm.png" medium="image"/><content:encoded><![CDATA[<h3 id="a-long-time-ago-in-a-galaxy-far-far-away">A long time ago in a galaxy far, far away</h3><img src="https://blog.ndl.im/content/images/2018/10/Screen-Shot-2018-10-30-at-8.42.09-pm.png" alt="(Relatively) Pain-Free Syntax Highlighting For Your Ghost Blog"><p>One of the first (and only) things I did last time I set up a Ghost-based blog was to enable syntax highlighting in code blocks. At the time, the most popular option was <a href="http://prismjs.com">prism.js</a>, a fully featured JavaScript library with &quot;batteries included,&quot; a phrase commonly used to describe Python and its comprehensive standard library. In this case, it means cool features like line numbers and &quot;copy to clipboard&quot; buttons. Unfortunately, this time around my dreams for pretty syntax-aware code were interrupted by a rude bug with prism (still very popular). When I finally found the directory on my server to plonk those JS/CSS files into, prism was shrinking the code blocks to fit the internal text, which looked positively awful.</p><h3 id="highlight-js-and-cdns-to-the-rescue-">highlight.js (and CDNs) to the rescue!</h3><p>I&apos;m very much a &quot;path of least resistance&quot; kind of person. If there&apos;s a problem with an upstream dependency in your Python module, you&apos;d better believe that I&apos;m already looking at your next-best competitor. This attitude comes from my near-constant, panicked desire to &quot;get things done,&quot; as well as too much time spent fighting <a href="https://pyinstaller.org">PyInstaller</a> and dependency trees on the <a href="https://github.com/CoEDL/hermes">Hermes project</a>. So naturally I went looking for an alternative. That market is sparse, but <a href="https://highlightjs.org/">highlight.js</a> stood out as a clear second choice. Alas, no line numbers, but there&apos;s a reason for that (<a href="https://highlightjs.readthedocs.io/en/latest/line-numbers.html">apparently</a>). What it did have was a standard, language-agnostic package common enough to have found a home on the <a href="https://cdnjs.com/libraries/highlight.js/">Cloudflare CDN</a>. I&apos;m well aware that I should <s>probably</s> definitely host my own dependencies, but when Ghost has such easy code-injection it was all too easy to just chuck those CDN links in the header. Doing this properly (and probably fixing the prism bug) are on my //TODO list, for sure, but an MVP is a nice place to start.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2018/10/Screen-Shot-2018-10-30-at-8.04.48-pm.png" class="kg-image" alt="(Relatively) Pain-Free Syntax Highlighting For Your Ghost Blog" loading="lazy"><figcaption>I&apos;m the king of bad practice when the problem is boring enough</figcaption></figure><h3 id="and-just-when-you-thought-i-was-done-">And just when you thought I was done...</h3><p>Unfortunately the latest version of Ghost doesn&apos;t support adding a language to your code blocks. In their infinite wisdom (or in an attempt to pander to writers over programmers), the developers have made code blocks started by &#xA0;the ``` ``` syntax <s>stolen</s> <s>lifted</s> borrowed from markdown automatically open a cool code input field. While this is initially quite cool, it allows no way to explicitly specify a programming language for the code inside. It took a bit of internet sleuthing, but eventually I found a (not terrible) solution: use a markdown block! Last time I used Ghost, everything was markdown anyway, but now you can explicitly specify markdown the same way you can with an image or a Youtube video (i.e. with Ghost&apos;s fancy pants context menu).</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2018/10/Screen-Shot-2018-10-30-at-8.27.07-pm.png" class="kg-image" alt="(Relatively) Pain-Free Syntax Highlighting For Your Ghost Blog" loading="lazy"><figcaption>Well this is new!</figcaption></figure><p>In said markdown block, you can use the traditional ```language ``` syntax for specifying a language. I&apos;m personally hoping that the Ghost developers can find a way to rectify this in the future, but I live in the now and this will have to do for the moment.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.ndl.im/content/images/2018/10/Screen-Shot-2018-10-30-at-8.28.45-pm.png" class="kg-image" alt="(Relatively) Pain-Free Syntax Highlighting For Your Ghost Blog" loading="lazy"><figcaption>Take that reStructuredText!</figcaption></figure><p>And that&apos;s it, I promise! As much fun as all of that was, there&apos;s only one thing left to do: try it out!</p><h3 id="here-have-some-pretty-colours-and-a-terrible-way-to-screen-programmers">Here, have some pretty colours and a terrible way to screen programmers</h3><!--kg-card-begin: markdown--><pre><code class="language-python">for i in range(100):
    if i % 3 == 0 and i % 5 == 0:
        print(&quot;fizzbuzz&quot;)
    elif: i % 3 == 0:
        print(&quot;fizz&quot;)
    elif: i % 5 == 0:
        print(&quot;buzz&quot;)
    else:
        print(i)
</code></pre>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Hello, world! (again)]]></title><description><![CDATA[Let's try this one more time. After a few failed attempts at this "blogging" thing, I've returned to Ghost. As it turns out, building your own blogging platform from scratch is a lot of work, and worst of all, most of that work involves front-end development.]]></description><link>https://blog.ndl.im/hello-world/</link><guid isPermaLink="false">5bd32d601bc9334186047482</guid><category><![CDATA[code]]></category><dc:creator><![CDATA[Nicholas Lambourne]]></dc:creator><pubDate>Fri, 26 Oct 2018 16:12:27 GMT</pubDate><media:content url="https://blog.ndl.im/content/images/2018/10/Screen-Shot-2018-10-27-at-2.13.49-am.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.ndl.im/content/images/2018/10/Screen-Shot-2018-10-27-at-2.13.49-am.png" alt="Hello, world! (again)"><p>Let&apos;s try this one more time. After a few failed attempts at this &quot;blogging&quot; thing, I&apos;ve returned to <a href="Ghost">Ghost</a>.</p><p> As it turns out, building your own blogging platform from scratch is a lot of work, and worst of all, most of that work involves front-end development. As much fun as I had learning about <a href="https://developers.google.com/search/docs/guides/intro-structured-data">structured data</a>, I was tired of compromising on writing experience in exchange for the faux street-cred of being able to call my blog &quot;roll your own.&quot; In the end, because the experience was so poor, I ended up writing nothing at all beyond a couple of paragraphs of meandering filler. On the upside though, Ghost seems to have improved substantially over the last few years. There are still many features I will have to implement myself, but for now I&apos;m content to try and accomplish those as plugins using the Ghost API. As a result (at least for the interim) <a href="https://ndl.im">ndl.im</a> will exist as some sort of Frankensteinian montage of my original Node/Express/Mongo stack - handling the index and custom pages - and <a href="https://blog.ndl.im/">blog.ndl.im</a> as a space for prose, built on Ghost&apos;s Node/Express/MySQL/Ember stack. </p><p>I&apos;m also interested in having a play with theming Ghost, as all of the third-party themes available in the <a href="https://marketplace.ghost.org/">official marketplace</a> and through <a href="https://themeforest.net/category/blogging/ghost-themes">themeforest</a> seem lacklustre at best. Casper isn&apos;t terrible, but I&apos;m very particular when it comes to this sort of thing. I&apos;m also toying with the idea of building out a Python client API library, just for shits and giggles. It&apos;s unlikely that I&apos;d ever use such a thing, but it appears to be <a href="https://docs.ghost.org/api/">something</a> the developers themselves are aiming for. Potential <a href="https://summerofcode.withgoogle.com/">Google Summer of Code</a> project, perhaps? I guess we&apos;ll see.</p><p>It&apos;s my aim to make this blogging business a weekly endeavour. My next challenge will be setting up code blocks and syntax highlighting (again) using prism.js. It may even end up being worth documenting the process.</p>]]></content:encoded></item></channel></rss>