IndyWatch Education Feed Archiver

Go Back:30 Days | 7 Days | 2 Days | 1 Day

IndyWatch Education Feed Today.

Go Forward:1 Day | 2 Days | 7 Days | 30 Days

IndyWatch Education Feed was generated at Community Resources IndyWatch.

Wednesday, 11 July


These testing methods should be mandatory for any software freeCodeCamp - Medium

4 Testing Methods Which Are Mandatory For Any Software

Software testing is the art of investigating a software in a systematic fashion so as to find deep-rooted defects in it. In addition to that, software testing also checks the quality and correctness of the software. After the errors are identified, it becomes easier to develop a bug-free and user-friendly software.

Now, as you know, even a small defect can cause the entire software to crash. If a software crashes, it can cause a great deal of damage. Proper testing methods can prevent this.

The testing process can identify any defect, bug or error. It is best to introduce software testing right from the initial phase of the software development cycle. All the successful software development companies adhere to this. They consider testing to be an important part of the development cycle. Also, automated testing is gaining popularity over manual testing. Automated testing is quicker and more accurate as compared to manual testing.

But, before we move any further, there are three software test cases which you should know about:

  1. Black box testingIn this method of testing, the user/tester does not have any working knowledge of the internal structure of the software. It verifies the functionality of the software. Black box testing is particularly beneficial because the black box testers find the bugs which cannot be traced during the program execution. The testing methods used in black box testing are boundary value analysis, equivalence partitioning, model-based testing, all pairs testing and fuzz testing among others.
  2. White box testingIn white box testing, the user/tester has professional knowledge of algorithms and the structure of the test software. Testing methods used are mutation testing methods, Application Programming Interface, static testing, code statements, code branches, paths and conditions. It is generally performed by software developers.
  3. Grey box testingIn this method, the user/tester can access the internal algorithms and data structures to design test cases. Grey box testing is somewhat similar to black box testing. If your software requires the joint output of two or more models, this type of integration testing is deployed.

Now, that you have a clear understanding of these terms, lets move on to the various types of software testing.

The 4 mandatory testing methods your software should undergo

Well, there are many types of testing which software companies use. Each testing type has its own features, advantages, and d...


How to use image preprocessing to improve the accuracy of Tesseract freeCodeCamp - Medium

Previously, on How to get started with Tesseract, I gave you a practical quick-start tutorial on Tesseract using Python. It is a pretty simple overview, but it should help you get started with Tesseract and clear some hurdles that I faced when I was in your shoes. Now, Im keen on showing you a few more tricks and stuff you can do with Tesseract and OpenCV to improve your overall accuracy.

Where did we leave off last time?

In the previous story, I didnt bother going into details for the most part. But if you liked the first story, here comes the sequel! So where did we leave off?

Ah, we had a brief overview of rescaling, noise removal, and binarization. Now, its time to get down to details and show you a few settings you can play with.


The images that are rescaled are either shrunk or enlarged. If youre interested in shrinking your image, INTER_AREA is the way to go for you. (Btw, the parameters fx and fy denote the scaling factor in the function below.)

img = cv2.resize(img, None, fx=0.5, fy=0.5, interpolation=cv2.INTER_AREA)

On the other hand, as in most cases, you may need to scale your image to a larger size to recognize small characters. In this case, INTER_CUBIC generally performs better than other alternatives, though its also slower than others.

img = cv2.resize(img, None, fx=2, fy=2, interpolation=cv2.INTER_CUBIC)

If youd like to trade off some of your image quality for faster performance, you may want to try INTER_LINEAR for enlarging images.

img = cv2.resize(img, None, fx=2, fy=2, interpolation=cv2.INTER_LINEAR)


Its worth mentioning that there are a few blur filters available in the OpenCV library. Image blurring is usually achieved by convolving the image with a low-pass filter kernel. While filters are usually used to blur the image or to reduce noise, there are a few differences between them.

1. Averaging

After convolving an image with a normalized box filter, this simply takes the average of all the pixels under the kernel area and replaces the central element. Its pretty self-explanatory, I guess.

img = cv.blur(img,(5,5))

2. Gaussian blurring

This works in a similar fashion to Averaging, but it uses Gaussian kernel, instead of a normalized box filter, for convolution. Here, the dimensions of the kernel and standard deviations in both directions can be determined independently. Gaussian blurring is very useful for re...


How you can get started with Tesseract freeCodeCamp - Medium

Its far from a secret that Tesseract is not an all-in-one OCR tool that recognizes all sort of texts and drawings. In fact, this couldnt be further from the truth. If this was a secret, Ive already spoiled it and its already too late to go back anyway. So, why not dive deep into Tesseract and share few tips and tricks that could improve your results?

I love free stuff!

Really, though. I do appreciate all those developers who contribute to open-source projects without expecting any benefits in return. After all, they provide us with capabilities that are relatively difficult for individuals to achieve, such as creating Deep Neural Networks via TensorFlow without much of the hassle. Who would have thought that Machine Learning would be as accessible as it is today?

Tesseract, too, helps us accomplish simple OCR tasks with a significant success rate, and is completely open-source. In this post, Ill try to get you going with Tesseract and hopefully help you clear some of the hurdles that you might face while working with it.

Even though there are a quite few options in the field, for example OCRopus, Tesseract still seems to be the first choice for most free riders. Well, that all adds up if you consider Tesseract is still being developed by the Google community and has constantly grown over time. However, if youve had experience with Tesseract before, you might have noticed that Tesseract is likely to disappoint you when it comes to image pre-processing or custom font training.

Leaving custom font trainings for a later discussion, for now, Ill be mainly focusing on going over the basics to get you started with Tesseract. First, lets quickly go over the installation.



Ill be using HomeBrew, a package manager, to install Tesseract libraries. After installing HomeBrew, you should prompt the following command.

$ brew install tesseract

Or, you could also do the same thing with MacPorts if you wish.

$ sudo port install tesseract


On Ubuntu, its quite simple as well.

$ sudo apt-get install tesseract-ocr


For Windows, you can download the unofficial installer from the official GitHub Repository. What a sentence, eh?

How do I know if things are installed correctly?

To verify if Tesseract is successfully installed, you can hit your terminal and type the following.

$ tesseract -v

If you receive a few lines of prompt similar to the one below, your Tesseract is installed correctly. Otherwise, you might want to check what has...

Go Back:30 Days | 7 Days | 2 Days | 1 Day

IndyWatch Education Feed Today.

Go Forward:1 Day | 2 Days | 7 Days | 30 Days

Tuesday, 10 July


IDYW Response to the APPG Inquiry What are the key issues and challenges faced by young people being addressed by current youth service provisions? IN DEFENCE OF YOUTH WORK


The second question asked by the NYA on behalf of the All Party Parliamentary Group.

What are the key issues and challenges faced by young people being addressed by current youth service provisions?

Have we got a vision of the future that is optimistic and democratic? This fundamental question facing society at large is one most keenly felt by young people, for whom life is increasingly precarious. After four decades of the neoliberal emphasis on the self-sufficient individual and the rule of the market young people are to be found in the mire of its contradictions, not least the the consequences of the policy of austerity upon families and communities. The impact of cuts in Public Services have been particularly disproportionate on what we once knew as the Youth Service, The figures of these cuts are now well known, so we dont need to repeat them here, suffice to say there is a dearth of places for the free association of young people, of spaces to explore and create for themselves collectively visions of their future, to struggle with the issues they experience whether this be lack of meaningful employment, concerns about climate change, dilemmas in their personal and home life, sexual choices, opportunities for arts, music or sport or needing somewhere to live. In short there is a lack of provision, wherein young people explore self-critically the purpose and direction of their lives

Currently, we are all aware of the increase in concern over the mental health of young people their anxiety,, their loneliness, their failure to be happy or well....


Authentication Using Twitter In ASP.NET Core 2.0 freeCodeCamp - Medium

Photo by William Iven on Unsplash


Sometimes, we want our users to log in using their existing credentials from third-party applications such as Facebook, Twitter, Google and so on. In this article, we are going to look into authentication of an ASP.NET Core app using Twitter.


  • Install .NET Core 2.0.0 or above SDK from here.

Create MVC Web Application

Open Visual Studio and select File >> New >> Project. After selecting the project, a New Project dialog will open. Select .NET Core inside Visual C# menu from the left panel. Then, select ASP.NET Core Web Application from available project types. Put the name of the project as DemoTwitterAuth and press OK.

After clicking on OK, a new dialog will open asking to select the project template. You can observe two drop-down menus at the top left of the template window. Select .NET Core and ASP.NET Core 2.0 from these dropdowns. Then, select the Web application(Model-View-Controller) template. Click on the Change Authentication button, and a Change Authentication dialog box will open. Select Individual User Account and click OK. Now, click OK again to create your web app.

Before running the application, we need to apply migrations to our app. Navigate to Tools >> NuGet Package Manager >> Package Manager Console.

It will open the Package Manager Console. Put in the Update-Database command and hit enter. This will update the database using Entity Framework Code First Migrations.

Press F5 to run the application. You can see a home page as shown below.

Note the URL from the browser address bar. In this case, the URL is http://localhost:51763/. We need this URL to configure our Twitter App, which we will be doing in the next section.

Create the Twitter App



Authentication Using Google In ASP.NET Core 2.0 freeCodeCamp - Medium

Photo by Jason Blackeye on Unsplash


Sometimes, we want our users to log in using their existing credentials from third-party applications, such as Facebook, Twitter, Google, and so on. In this article, we are going to look into authentication of an ASP.NET Core app using a Google account.


  • Install .NET Core 2.0.0 or above SDK from here.

Create MVC Web Application

Open Visual Studio and select File >> New >> Project. After selecting the project, a New Project dialog will open. Select .NET Core inside the Visual C# menu from the left panel. Then, select ASP.NET Core Web Application from the available project types. Put the name of the project as GoogleAuth and press OK. Refer to this image.

After clicking OK, a new dialog will open asking you to select the project template. You can observe two drop-down menus at the top left of the template window. Select .NET Core and ASP.NET Core 2.0 from these dropdowns. Then, select the Web application(Model-View-Controller) template. Click on the Change Authentication button, and a Change Authentication dialog box will open. Select Individual User Account and click OK. Now, click OK again to create our web app.

Before running the application, we need to apply migrations to our app.

Navigate to Tools >> Nuget Package Manager >> Package Manager Console.

It will open the Package Manager Console. Put in the Update-Database command and hit enter. This will update the database using Entity Framework Code First Migrations.

Press F5 to run the application. You will see a homepage, as shown below.

Note the URL from the browsers address bar. In this case, the URL is http://localhost:51792/. We need this URL to configure our Google app, which we will be doing in the next section.

Create the Google app...


How to avoid frustration by choosing the right JavaScript selector freeCodeCamp - Medium

A quick guide on how selectors affect your code

A beautiful sunset in a cloudy sky, casted above a calm ocean. by Sebastien Gabriel on Unsplash

While working on a project, I ran into an issue in my code. I was attempting to define multiple HTML elements into a collection and then change those elements based on some preset conditions. I struggled for roughly four hours of coding time (across two days) debugging my code and trying to figure out why I wasnt getting my desired outcome.

Turns out I had used document.querySelectorAll() to assign my elements to a variable, and then I was attempting to change those elements. The only problem is that particular JavaScript selector returns a static node list. Since it isnt a live representation of the elements, I wasnt able to change them later in my code.


In this article, I assume a few things to be true:

  • You are working in plain or vanilla JavaScript (no framework / library)
  • You have a basic understanding of JavaScript elements / selectors
  • You have a basic understanding of the DOM

The Nitty-gritty

In the event I have assumed too much, I have provided links to relevant material within the article that I hope will be helpful.

JavaScript is such a vast and rich ecosystem that its no surprise that there are many ways of accomplishing the same task. Depending on your task, the way it is accomplished matters to a certain degree.

You can dig a hole with your hands, but its much easier and more efficient to do it with a shovel.

To that end, I hope to hand you a shovel after youve read this article.

A long-exposure shot of a group of people on a beach with children digging a deep hole by Khrt Williams on Unsplash

Choosing the right tool for the job

Ive had the question, Which element selector should I use? several times. Until now, I havent had much desire or need to learn the difference as long as my code produced the desired result. After all, what does the color of the taxi matter as long as it gets you to your destination safely and in a timely mannerright?

Lets start with some of the ways to select...


How I optimized Conways Game Of Life freeCodeCamp - Medium

Use Chromes Developer Tools to speed up your code

Image source.

Last month my brother reinvigorated my love for Conways Game of Life with some ridiculous videos on YouTube. I loved itId heard of the Game of Life while I was at university, but had never really looked at it in depth. I started doing a little research and, as I learned more about the famous cellular automata, I decided to build my own version.

I have absolutely loved the project, but my first implementation wasnt as fast as I had hoped. In order to run smoothly, I had to use a low resolution grid and slow frame rates. Since the original release, Ive continued to make improvements and Im proud to say that my vanilla JavaScript project is now satisfyingly fast.

Optimizing code can be tricky. Identifying performance issues in a complex system can be hard to do. Deciding how to fix them can be a challenge, too. In this article I want to share my journey through optimizing my code, some tactics I used, and tricks I learned to help you optimize your own webapps.

Identifying the problems

The first rule of performance optimization is: test your assumptions. If you built the system, you probably have some good ideas of where to start looking for problems . But, before you start changing code, you should prove yourself right (or wrong). Nothing is quite as unsatisfying as making painful and complex changes to your code only to discover it runs at exactly the same speed as before.

The best place to start is with a measurement of some kind. Decide what optimized is, then measure the optimizedness of your app. I wanted to improve frame rate, so I decided to aim for a 20ms clock cycle on my laptop for a pretty high resolution grid. Once I decided on my metric, I had to measure my apps current (slow) performance.

Pretty high resolution.


Lessons learned from my journey as a self-taught developer freeCodeCamp - Medium

The path of the self-taught developer is tough and clouded with uncertainty. There is no straight line from newbie to career programmer. Because of this, I believe all self-taught developers have a unique story to tell.

In this article, Ive shared a few stories and lessons learned from my time teaching myself programming. Hopefully reading about my experiences will help you reflect on your past and motivate you moving forward.

Focus on the process

When I first started learning to program, I never had the intention of making a career out of it. I just wanted to make a specific app.

My journey started when I was a senior in college. I just finished Richard Bransons book Losing my Virginity, and I was probably reading too much TechCrunch. I was pumped up full of entrepreneurial energy. I was constantly reading about how college kids were receiving massive amounts of investment for their mobile app ideas. I thought I could be one of those people.

One day, while walking in-between classes, an app idea hit me. The specifics of the app arent important. The point is, the idea was unique and had a lot of growth potential (at least in my mind).

I was convinced that Id found the next big thing. I was consumed by the idea and stopped paying attention to lectures. My excitement for the idea quickly grew to the point where I felt the need to take action.

There was one big problem. My idea was a mobile app and I didnt know anyone who could build mobile apps.

So I thought what the hell. How hard could programming be? I was losing interest in my major and I was spending a lot of time playing Xbox. I could allocate some of my free time towards building this mobile app.

Sometimes being naive helps you take action when you normally wouldnt.

What we had was a college student with no programming, business, or design experience trying to learn Android so he could build a complex app. I guess thats what you get when you mix a big idea with the Silicon Valley hype machine.

I wish I could tell you things went well from here. 

I bought a few books on Android development and spent many hours in my room trying to duct-tape this app together. I didnt care how the app worked. I just wanted a finished product, if that meant copying and pasting code from any source I could find.

I thought I could get away with learning very little about programming. I became too focused on the end result. The light at the end of the tunnel kept driving me forward.

Time went on and the app turned into a Frankenstein of copy and pasted code. The app didnt have many features and it barely ran without crashing.

It wasnt until I accidentally got into a Computer Science class that I realized that maybe I should focus more on learning. My inability to program lead me to abandon my initial app i...


Learn your coding fundamentals: the main differences between sets and arrays freeCodeCamp - Medium

A question I get a lot from my CS students at The Forge is why I often use sets instead of plain old arrays in interview problems.

To answer that question, we have to understand the fundamental differences between a set and an array.

If you are a visual learner and prefer a video explanation, heres a 3 minute video that explains the answer (albeit in less depth).

Arrays were one of the first data structures I learned how to use.

Not only are they a fundamental data structure used in almost every coding application, but theyre fairly easy to understand as well.

It wasnt until way later in my software career that I got introduced to the arrays strange, but magical, cousin:

The Set.

Sets are like arrays except theyre not.

Lets quickly remind ourselves about how an array works


  • Are ordered
  • Have indices starting at 0
  • Can contain duplicate elements
  • Have a O(n) lookup time when you search for an element

However, sets behave a bit differently


  • Are unordered (in almost all languages)
  • Have hashed indices
  • Can NOT contain duplicate elements
  • Have a O(1) lookup time when searching for an element

Lets take a more in-depth look.

1. Sets Insert By Hashing

The elements in a set are stored quite differently than that of an array.

The way a set stores its elements is by Hashing.

Lets say you want to store the character A in a set and an array.

The array would simply find the next available index, unless otherwise specified, and place the element in that index.

Our A gets an index of 0 since its the first element.

With hashing, however, things look a bit different.

How Hashing Works

Hashing is the act of taking in input (x), distorting it with a specific hash function (h), and getting a final output (y).

Basically h(x) = (y)

Looks a bit confusing right?

Dont worry! This should clear things up.

An easy example of a hashing function (h) could be appending asdf to the end of your input (x).

If (x) is A and appending asdf is (h), the output (y) would simply be as follows:

A + asdf Aasdf

So Aasdf would be our (y).

So, how does a set use Hashing?

A set uses hashing to decide where to store your input (x).

In a nutshell, a set takes your input...


A heartfelt letter to inspire the aspiring developer freeCodeCamp - Medium

Close-up of a person's hands on the keyboard of a MacBook by Glenn Carstens-Peters on Unsplash

Im writing a letter to my friend. You should read it. He studies Computer Science, and he hates it. I build React Apps and I love it. I want him to love it too. First, let me set the tone with a little imagery.

I am writing to you in the dark, cluttered room of my fathers mancave. Its hardly that. The only thing in here that would make it a mancave is his assorted pipe tobacco and hand-carved pipes. As I sit at my computer, I can hear crickets chirping in the night, and since it rained yesterday, the croaking of frogs is more of a roar than anything else. I am glad to grow up in an environment such as this.

Today has been one of those days. You know, the kind where your thoughts scream out at you from deep inside your mind. Those thoughts have been about a friend of mine. He studies computer science at a university hotter than hell itself, and where every Walmart greeter knows the name of the Rodriguez Seven (its an inside joke. Maybe youll be a part of one some day (and thats a quote from The Office)).

Hes exhausted and limping to the finish line. Computer Science has held him hostage with the allure of a wealthy future. We all see the appeal. Who wouldnt want to ship code for Amazon, or build React 17? In most of my dreams, Im working with Will Smith as Agent L, writing React components powerful enough to reduce a lumbering cockroach-man to powder. We all have these dreams. But in the day to day, it is so easy to become bogged down with drudgery and learning.

I write this letter to my friend, and he knows who he is. I love him dearly and I hope that he continues on the incredible path of computer science before him. I invite the world to see what it takes to love (and excel in) Programming. Do take these words to heart.

Firstly, Walk a Path

Photo by Stephen Leonardi on Unsplash

No one will ever arrive at their desired location without knowing what that location is. Programming is no different. Every keyboard cowboy from Reddit to Facebook say, You must learn X before you can understand Y.

Whether on Twitter, or Stack Overflow, theres more than enough controversy over what to learn. The university is accommodating to learning, yes. But the community is screaming at u...


Meet Stack Overflow, your path to programming and debugging knowledge freeCodeCamp - Medium

Endless knowledge?

Can you imagine a platform where you could access the advice and wisdom of developers from all around the world? That is exactly what Stack Overflow is for programming and why its a vital tool for you as a developer.

Stack Overflow is what I consider a collective encyclopedia in the form of online forums with knowledge and experiences shared by developers across the world. Developers help other developers solve problems that they face during their software development projects.

This platform is so powerful that I felt it was vital to introduce it to those exactly like you, who are embarking on this amazing journey to learn computer science and programming.

Collaboration makes great ideas change the world. Stack Overflow has transformed the way developers across the globe solve problems, and find the information they need for their projects.

If you try to Google an error thrown by your code or simply a question related to coding, Im 99.99% sure that you will find a very similar (if not the same) question already asked and answered on Stack Overflow by developers who are probably thousands of miles away from you.

Really impressive, right? Lets dive deeper into why this platform is so powerful!

The power of Stack Overflow

Your true potential as a developer unleashes when you are able to find the right information at the right moment for your current project. Only then are you completely free to apply your new knowledge to new domains with enough confidence to create something really amazing.

This is where the true power of Stack Overflow lies: it allows you to be as creative as possible while learning and experimenting, without the risk of running into a dead end when there are no answers to your questions.

By adapting existing answers that you find on Stack Overflow to your own projects, you will develop a skill that is incredibly valuable. You will learn how to face new challenges by creatively applying existing resources to new circumstances.

The only source of knowledge is experience.Albert Einstein

When will you need Stack Overflow?

  • When you are learning programming and new technologies, you will need lots of practice. This requires learning by researching and by trying new things on your own. Stack Overflow can be your guide to finally solving the puzzle.
  • When you are working on a project and find bugs in your code, Stack Overflow will be your place to read about similar scenarios and...


A friendly introduction to Kubernetes freeCodeCamp - Medium

Photo by Erwan Hesry on Unsplash

Kubernetes is one of the most exciting technologies in the world of DevOps these days. It has attracted a lot of attention over the last few years. The reason for its instantaneous fame is the mighty containers.

Docker Inc. brought containers to the lime light with their impeccable marketing of an amazing product. Docker laid the foundation for the wide-spread use of containers, although container technology outdates it. Yet because of Docker, the use of Linux containers has become more prevalent, cementing the foundation for container orchestration engines.

Enter Kubernetesdeveloped by Google using years of experience running a world class infrastructure on billions of containers. Kubernetes was an instant hit, and starting this year, Docker Inc. has packaged Kubernetes as an additional orchestration engine alongside Docker Swarm.

From now on, Kubernetes will be a part of the Docker community and Docker Enterprise Edition. Sounds pretty cool, huh? The best of both worlds packaged together as a single binary.

Birds Eye Overview

Kubernetes, k8s, or kube, is an open source platform that automates container operations. It eliminates most of the existing manual processes, which involve the deploying, scaling, and managing of containerized applications. Phew! thats a lot of work.

With Kubernetes, you can cluster groups of hosts running containers together. Kubernetes helps you manage those clusters. These clusters can span the public, private, and hybrid cloudsand who knows, the Star War universe one day.

Kubernetes was developed and designed by the engineering team at Google. Google has long been a contributor to container technology. Alongside being vocal about its use of container technology, Kubernetes is the technology behind Googles cloud service offerings.

Google deploys more than 2 billion containers a week. All powered by an internal platform called Borg (sounds more like some Orc warlord from Mordor, but no). Borg was the predecessor to Kubernetes. The lessons learned by Google working with Borg over the years became the guiding force behind Kubernetes.

Kubernetes makes everything associated with deploying and managing containerised applications a joy. Kubernetes automates rollouts, rollbacks, and monitors the health of deployed services. This prevents bad rollouts before things actually go bad.

Additionally, Kubernetes can scale services up or down b...


10 New Courses to Take This Summer Coursera Blog

Were excited to share a round-up of the newest courses and Specializations in the Coursera catalog so you can learn from the worlds top universities and leading companies anytime, anywhere. Whether you want to become a sales expert or learn how to be happier by taking the most popular course ever offered at Yale University, weve got you covered. Start your summer off right with a new course or Specialization:

1. The Art of Sales: Mastering the Selling Process Northwestern University

Selling is a critical skill that will accelerate your success at work and is useful for someone in any field. Craig Wortmann, Specialization instructor and clinical professor at the Kellogg School of Management at Northwestern University will teach you the tools needed to become a high performing seller.

I know some people shy away from the word selling and thats okay, call it whatever youd like. Youre still trying to influence an outcome whether its selling a product, or doing well in a job interview, honing these skills will benefit anyone and everyone. Craig Wortmann

2. Crisis at the Border Teach-Out University of Michigan

The American media has extensively covered the controversy surrounding the Trump Administrations implementation of a zero tolerance immigration policy. The policy has resulted in the detention of migrant families seeking asylum in the United States and has separated children from their families.  

This Teach-Out will help you focus on key dimensions central to this issue, providing context on the policy, legal, and health implications of the family separation and detainment policies and what the new Executive Order may mean for the future.

3. The Science of Well-Being Yale University



How to Get a Software Engineer Job at Google and Other Top Tech Companies freeCodeCamp - Medium

Hi everyone!

Ive already talked about how I personally got a software engineer job at Google in a few videos on my programming-education YouTube channel called CS Dojo.

However, a lot of people still ask me about how to get a job at Google as a software engineer. So, heres my article explaining the strategy I would use.

You can use the same strategy to get a software engineering job not just at Google, but also at other top tech companies like Amazon, Microsoft, and Facebook.

In this article, Im going to show you the 6 step process for landing a job at one of these companies. Along the way, Im also going to discuss:

  • How to learn to code in the first place
  • What to learn after learning to code
  • How to get your first coding job or internship
  • The best ways to apply for software engineer jobs
  • How best to prepare for programming interviews
  • Is it important to get a computer science degree?
  • Is it important to go to a top university?

Okay, lets get started!

Step 1: Learn to code

This is the absolute minimum qualification you need to become a software engineer.

For this, Id recommend you get started with an interactive website such as Codecademy and freeCodeCamp. You can learn most of the programming fundamentals from these sites. I also heard that SoloLearn is good, too.

After that, I would use video tutorials to learn more advanced topics. I recommend websites like YouTube, Pluralsight, and Udemy for this. On these websites, you should be able to find tutorials on topics like:

  • Web development
  • Mobile development
  • Game development

depending on your interest.

But wait, what programming language should I learn first?

My short answer would be, pick either JavaScript or Python, but it really depends on your interests. I have a longer answer to this question in this video.

Step 2: Work on a few personal projects

After youve followed a few programming tutorials, you should build a few personal projects to practice using what youve learned.

For this, you should find something youre interested in building.

For example, if you like photography, maybe you can build a portfolio site for all your photos. If you like trading stocks, maybe you can build a system that analyzes stock charts for you. Or, if you enjoy problem-solving, you can try com...


How to make your Dotfile management a painless affair freeCodeCamp - Medium

In the first article, I introduced dotfiles. In this one, well cover their development and management.

Photo by Jens Jakob on Unsplash
Note: This is the second article in the series and discusses more advanced aspects of dotfile management. To learn about what dotfiles are and the very fundamentals of dotfile management, read the first article.

In the last article, we added a few aliases and functions to the .bash_profile and the .bashrc file. We also learned that those arent the only dotfiles available for us to customize.

This article focuses on making our approach to dotfile management more sophisticated and scalable. At this point, there is one important thing you need to bear in mind from this point onwards. Dotfiles are a matter of personal preference, and so is their management. You should manage them your way. This article only provides general guidelines and common ways to deal with recurring tasks in dotfile management.

Setting Up Your Environment

Start with creating a directory for your dotfiles and cd into it. I like to have mine in the Projects folder in my home directory, but this is up to you:

$ mkdir ~/Projects/dotfiles
$ cd ~/Projects/dotfiles

This is where well have all our dotfiles. Lets start by making this a git repository.

$ git init

Lets start by moving the .bash_profile from the HOME directory to our new dotfiles directory.

$ mv ~/.bash_profile ~/Projects/dotfiles/.bash_profile

Lets commit this file.

$ git commit -am "Added .bash_profile"

And there you have it! This is exactly how youd work on any other project, and thats exactly how you should manage your dotfiles.

  • Pushing the dotfiles to a remote repo allows people to share their dotfiles with others or access them remotely when they need them. This is also a secure way to back your dotfiles up.
  • Version control allows you to see how your dotfiles evolve over time.

But if you start another terminal instance, youll notice that your setup is broken! The terminal doesnt source your .bash_profile or .bashrc from a custom folder, as these files are expected to be found in the home directory.

So we need a way to keep our dotfiles...


An introduction to Dotfiles: how to take control of your development environment freeCodeCamp - Medium

Dotfiles are generally preceded by a dot(.)

Note: This is a very basic, introductory article. If you already know the fundamentals of dotfile management, Id recommend you read my second article.

As developers, we strive to minimize the time we spend on redundant things, like setting up our environment, writing boilerplate code, and basically not doing anything that does not concern the fun part of coding - building new stuff.

In this context, imagine a perfect world where tiny commands carry out incredibly complex tasks tailored to your needs, where you could buy a new laptop today and install all the tools and packages you need and setup your development environment with nothing but a couple of terminal commands, and where everything is magic.

This digital fairyland can be made, and with ease. And there is a name for this magic: dotfiles.

Without further ado, lets unravel the secrets of the dotfiles!


Note: This article assumes that youre working with a Unix-like operating system and it relies heavily on Unix terminal commands and shell scripting. If youre not familiar with these, I recommend learning the basics and coming back here. Heres a primer to shell scripting.

In UNIX-like systems, a lot of configuration files and the like are preceded with a dot(.). These files are hidden by the OS by default, and even the ls command doesnt reveal their presence (well get to how to find these files in a bit). Since these files are preceded by a dot, theyre called dotfiles. Duh.

So how do we find these legendary files if theyre hidden by default? Pop open a terminal and do this:

Note: The $ sign is not meant to be typed in the terminal. It represents the fact that the text after it is supposed to be typed in a terminal prompt.
$ cd ~
$ ls -a

So what does this do?

The first command ( cd ~ ) moves into the home directory (the ~ symbol represents the home directory). The home directory is where most of your config files are found. So we move there first.

The second command lists the files and folders in the current directory. But theres some magic here. The -a flag instructs the command to include hidden files in the list.

Bingo! We can now see the dotfiles!

Modifying the .bash_profile

Usually, the first file that most people modify when they enter the world of dotfiles is the .bash_profile or the .bashrc. And for good reason. This file is loaded when you start your terminal, and its commands are executed at terminal startup.

One reason...

Monday, 09 July


IDYW Response to the APPG Inquiry What is the role of youth work in addressing the needs and opportunities for young people? IN DEFENCE OF YOUTH WORK




Ta to

The first question asked by the NYA on behalf of the All Party Parliamentary Group.


What is the role of youth work in addressing the needs and opportunities for young people?

There are many different versions of youth work and it is highly likely the Committ...

IndyWatch Education Feed Archiver

Go Back:30 Days | 7 Days | 2 Days | 1 Day

IndyWatch Education Feed Today.

Go Forward:1 Day | 2 Days | 7 Days | 30 Days

IndyWatch Education Feed was generated at Community Resources IndyWatch.

Resource generated at IndyWatch using aliasfeed and rawdog