How to learn Machine Learning

Photo by Alex Knight on Unsplash

Introduction

Machine Learning has traditionally been a technology that only PhDs and institutions with lots of financial resources could utilize. But nowadays, there are so many tools out there that allow anyone to get started learning Machine Learning. No excuses!

In this blog post, I’ll highlight the four foundation stones of Machine Learning, and how each of them has been democratized in the past few years.

If you want to stay up to date with my latest AI content, make sure to subscribe to my YouTube channel.

The four foundation stones of Machine Learning are datacomputationsalgorithms, and education.

Data

Check out this amazing list of public datasets on GitHub. And if that’s not enough, Kaggle has some amazingly polished datasets available as well. Whether you are using publicly available datasets, or scraping data from the web via Python libraries like scrapy, everyone has access to quality datasets now.

Of course, the big tech companies have walled data gardens of their own, but decentralized startups like OpenMined are working hard to create services to allow data scientists to train their models on that data as well.

Computations

Got GPUs? Machine learning, and especially deep learning, require lots of expensive computations. Neural networks require the use of massively parallel computations, which GPUs are well suited for.

Unfortunately, GPUs can be very expensive. But with tools like Google’s CoLabor Kaggle’s Kernels, anyone can run machine learning code in the browser using free (Tesla K80) GPUs.

Algorithms

Algorithms are a commodity. Luckily for us, the machine learning field has built a culture of open source code and lots of result sharing. Whether its at the annual NIPS or ICLR conference, researchers tend to be very happy with sharing their results.

If you want to keep up with the latest research, you can use the Arxiv Sanity Preserver to read the latest papers in a beautifully indexed way. And there’s of course the machine learning subreddit. You can either use existing code, or use the free Tensorflow library to build your own models.

Education

With great power comes great responsibility. You’ve got the code, you’ve got the data, you’ve got the computing power. Now you just need to be educated on how to use them!

Besides my YouTube channel of course, there are a ton of free educational resources out there to help you learn how to use the tools of machine learning. I made a three month machine learning curriculum that uses all of the above resources and several I’ve found on the Web to help a beginner get started. You’ll find that here.

Go forth and learn!

You should be excited right now. This is an incredible time to be alive! There are so many changes happening so fast. Amidst all this complexity, machine learning can help us understand our world in ways we couldn’t otherwise. It can help us create and discover new things orders of magnitude more efficiently than ever before. You’ve got the power, use it wisely.

10 fixes for Windows 10 updates

How to fix a stuck Windows update

Operating system updates are a necessary evil, like taxes and car MOTs: they can be a real chore, but they’re essential for a happy and peaceful life. You might not care for Windows updates, but they keep you protected, squash nasty bugs and generally keep the OS running as smoothly as possible.

Speaking of running smoothly, however, these updates don’t always do that. In recent versions of Windows Microsoft has tried to make the process as pain-free as possible, but with so many hardware and software configurations out there, there’s always the chance that some unexpected problem will crop up.

But if it does, don’t panic – we’ve got you covered. Read on to learn how to fix common problems with Windows updates.

1. Make sure the updates really are stuck

How to fix a stuck Windows update

We’re going to cover a lot of ground here for several versions of Windows and a variety of ‘stuck’ scenarios, so you may have to tweak some of these steps to suit your situation and software.

The first point to make is that interfering with updates that aren’t actually stuck can cause a host of problems, so you want to make sure they really are stuck.

If you’ve got the time, and the patience, we’d recommend waiting a couple of hours, especially with slower machines – go and cut the grass or watch a movie. It may seem extreme, but you don’t want to start meddling with these fundamental processes unless you really have to.

2. Turn it off and on again

How to fix a stuck Windows update

Do you know why “have you tried turning it off and on again” is such an IT support cliché? Because it so often works. There’s no magic trick to this – it simply clears out your computer’s temporary memory (including any stalled files or processes), and lets Windows start again from scratch with everything on the system.

If your updates are stuck in the background while you still have access to Windows, you can restart as normal; if they’re stuck before or after the OS loads, you’re going to have to hold down the power button and do a hard reset. This can cause issues itself, so make sure your updates definitely aren’t progressing at all.

3. Check the Windows Update utility

How to fix a stuck Windows update

In Windows 10 you can find the Windows Update page by launching the Settings app from the Start menu and clicking Update & Security – if there’s something wrong and Windows knows what it is then you should find details here. Sometimes you’ll just get a message telling you to try the update again at a different time.

If you click ‘Advanced options’ and then ‘View your update history’, you can see recently installed updates that were successful, and uninstall some or all of them – again, this can be a handy troubleshooting option. Windows 10 has actually streamlined the update process, so you should be seeing fewer errors.

4. Run Microsoft’s troubleshooter program

How to fix a stuck Windows update

Microsoft feels your pain: it knows the update process can cause problems every now and again, which is why it’s developed a troubleshooter program specifically for it – search the old Control Panel for “troubleshooting”, then select ‘Fix problems with Windows Update’ from the list on-screen.

The link should be available in Windows 7 and 8 too, but if not you can get at it on the web as well. That said, if you haven’t yet upgraded to Microsoft’s latest and greatest operating system then it’s probably still worth your while, as it’s more than likely to solve your update problems at the same time.

5. Launch Windows in Safe Mode

How to fix a stuck Windows update

Safe Mode is like a restart with extras – only the very basic apps and code that Windows needs to run are loaded into memory, so there’s even less chance of a rogue, damaged file interfering with the update. In Windows 10, hold down the Shift key then choose Power and Restart from the Windows sign-in screen.

On the next screen you see pick Troubleshoot, Advanced Options, Startup Settings and Restart, and you should then see the Safe Mode option appear: try running through the update process again if you can. A quick search online will give you Safe Mode instructions for older versions of Windows.

6. Go back in time with System Restore

How to fix a stuck Windows update

System Restore has been helpful for solving Windows problems for many a year now, but it happens to be quite well hidden in Windows 10. Go to Control Panel, System, System Protection and then click System Restore. Go through the wizard, then choose ‘Show more restore points’ to see all your available options.

Pick a time and date, then complete the wizard to go back to how Windows was configured at that point (and hopefully solve your update issues at the same time). The process doesn’t affect your personal files or programs, but it may not be available to you depending on how Windows was originally set up.

7. Delete the Windows Update file cache yourself, part 1

How to fix a stuck Windows update

If Windows’ own troubleshooter doesn’t work (see step 4) then you can try and carry out the same process yourself manually: stopping the Windows Update service, deleting the temporary files it’s created, then starting Windows Update again. It’s a little more involved, but it’s not difficult to do.

First, boot up into Safe Mode (see step 5), then access to the command prompt, the most basic of Windows interfaces: right-click on the Start menu, choose Command Prompt (Admin), and a text box should appear. Type “net stop wuauserv” and hit Enter, then follow that with “net stop bits” and hit Enter again.

8. Delete the Windows Update file cache yourself, part 2

How to fix a stuck Windows update

Back in Windows proper, navigate to the C:\ Windows\ SoftwareDistribution folder, and delete everything you find therein. You’re not going to break anything by doing this – these are just temporary files Windows creates so it knows where it’s up to, and Windows Update will create them again from scratch.

With that done, go back to your command prompt window and type “net start wuauserv” (Enter) then “net start bits” (Enter) to get Windows Update and its related background services up and running again; hopefully this trick should be enough to kick-start the update that was previously stuck.

9. Launch a thorough virus scan

How to fix a stuck Windows update

One of the more obscure reasons why a Windows update might not be installing is because a virus or some kind of spyware is blocking it: malicious apps like these can often be squashed by Windows security updates, which is why they try and stop the latest patches from being installed on your machine.

Try running a full and thorough virus scan using whatever security software you have installed (you do have some installed, right?). If you think your antivirus tool has also been compromised you can download some on-demand scanners, like this one from Microsoft or this one from Dr. Web.

10. Run a full Windows reset

How to fix a stuck Windows update

Restoring key Windows files and OS options is a lot easier than it used to be, and ‘resetting’ Windows 10 basically means putting all the system files back to their factory state without touching your personal files along the way (although you can choose to wipe your drive completely if you want).

You can find the option via the Recovery tab on the Update & Security page in the Settings app – note that third-party apps are removed too, so these will need installing again. Windows 8 offers both ‘refresh’ and ‘reset’ options, while on Windows 7 the reset option will typically have been provided by the PC’s manufacturer.

You don’t need standup

Notice: Below represents PERSONAL beliefs of palmerj3 (Engineering lead at Spotify) about agile and team organization. Your results may vary.

I recently became a technical product manager at work and this puts me in charge of a team of engineers for the first time. Up until January I was a developer who was upset at how many meetings I had.

So I ran an experiment for the last six months which consisted of a few new behaviors:

  1. No stand-ups
  2. No planning at regular intervals
  3. No retros
  4. All meetings are optional

This may sound extreme. But there is some logic to this madness.

I wanted the team to know I trusted them. To know that it’s ok to tackle tech debt, explore, and work at their own pace. I laid out the goals for the quarter and trusted that the work would get done. Then I got the fuck out of the way.

Would you believe it: work got done. A lot of it.

We were an extremely productive team that responded to change and nailed every goal we set out to.

But before we go into detail about why this experiment worked, let’s see how a typical agile team operates.

A typical agile team

We’re going to create a fictitious team called the SuperAgileRockstars.

SuperAgileRockstars do weekly sprints.

So every Monday they spend an hour planning the work for the week. They meet every morning at 10am for standup where each team member says what they did yesterday, what they are doing today, if tasks are blocked, and give announcements. At the end of the week they spend an hour doing a retrospective where they discuss what went right, what went wrong, and create tasks to address these issues.

It sounds pretty logical, right?

How can this paradise of productivity be broken? Let’s see.

  1. Trello (or whatever you use) has to be kept in sync with what’s discussed in these meetings. It often isn’t. As the team grows this becomes even more complicated.
  2. Stand-ups ENCOURAGE plans to change daily. Lack of consistency is a great way to ruin developer flow.
  3. Standup forces every team member to be productive at a set place and a set time
  4. Extroverts thrive at stand-ups, planning, and retros. It’s no wonder that tech debt is such a common problem. Developers shouldn’t have to PUSH for tech debt to be addressed. Teams should operate at a sustainable pace.
  5. Why do we encourage problems to be discussed once a week? We should address them immediately, not just at retros.
  6. Sprints encourage iterative development. This sounds really good to people like me who strongly advocate small, concise, pull requests over long-living feature branches. But it’s not the same thing. Sprints encourage features over tech debt. How often have you had to advocate spending an entire sprint tackling tech debt?

What would happen if we didn’t plan every week, didn’t do retros, and didn’t do standup?

Stop doing standup

Standup has always bothered me. It usually serves to interrupt developers, make them feel pressured to prioritize features over tech debt, and has been known to last longer than 1/2 hour.

The natural side effects of not doing standup are:

  1. Developers communicate more
  2. Your team becomes more remote-friendly
  3. Tech debt gets addressed
  4. Developers feel more in control and less stressed
  5. Developers know you trust them and that you have their back

At Spotify my role is a technical product manager. It’s my role to “steer the ship” (e.g. decide what we work on). If I’m changing my mind about this on a daily basis that’s problematic. If the entire organization changes its mind on a daily basis then it’s my job to fix that.

The reality is: I’ve told my bosses what we’ll deliver by the end of the quarter and I would rather trust that my team know what’s required to get there and be creative along the way.

I want to give them as much freedom as possible to get shit done.

Feel like taking a day off to work on open source? Fuck yeah.

Feel like working on something completely different for a few days? Have fun.

Think our tech debt is out of hand so you want to spend some time fixing it up? We are best friends now.

I know you’re going to get us to our goals and who am I to tell you every single day, “well the highest priority item on the backlog is x,y,z”.

Fuck that noise.

Stop planning every sprint

Planning on a regular basis is another thing that has always bothered me. It’s rare, in my experience, that things change so drastically that the entire team needs to get together and figure things out. But if there is an emergency then by all means call a meeting and communicate that shit. That said, I’m not against planning, I’m against planning on an interval.

So what do things look like if we don’t plan every week or two:

  1. Developers are trusted to be working on the correct things
  2. Developers aren’t interrupted nearly as much so things get done
  3. Backlog is used as a priority queue of work to be done
  4. Tasks are added to the backlog as needed, continuously
  5. Blockers are communicated right away
  6. Planning happens when plans change. Meeting fatigue is reduced and the team knows this was a last resort and is important

Stop doing retros

Say you’re in a relationship and it’s going amazing. You should totally start going to couples therapy once a week, right?

Of course not. So why the fuck are we doing retros every week or every month?

Furthermore, why are we waiting until retros to discuss problems or to give praise?

What do things look like when we stop doing retros:

  1. Developers aren’t interrupted and get shit done
  2. Problems are addressed sooner
  3. Stickies and sharpies are returned and we buy lunch instead

Here’s some questions I know you’re wanting to ask

“How will I know what to work on?”

Good: Pick an item from the backlog.

Better: The backlog is prioritized and you pick the highest priority item from the backlog.

Best: You work on tech debt or open source because you need a mental health day.

“What do I do if I’m blocked?”

Good: Pick a different item from the backlog.

Better: Create a “blocked” column in trello, move the task there, then pick a different item from the backlog.

Best: Put the task in the “blocked” column, pick a different item from the backlog, and drop a message in slack letting the team know it’s blocked.

“How will I track the progress?”

Good: Ask the team. Don’t ask every day.

Better: Keep the backlog up-to-date & relevant. Fucking look at Trello.

Best: Communicate to the team if anything high priority is happening. Otherwise trust that work is getting done until that trust is broken. Casually get updates every so often over lunch and/or beers.

“Hold on. We totally handle tech debt and we do stand-ups!”

Awesome!

You must have vocal developers who are willing to push for tech debt to be addressed and management that deeply cares about engineering quality.

The reality is that most companies don’t operate this way and even your company is likely not a great environment for introverts.

Conclusion

Effective teams question everything. They also trust each other. They also get a lot of shit done.

This article is my attempt to question what’s become the default behavior of agile teams. Daily stand-ups, weekly/bi-weekly planning, and weekly/bi-weekly retros. We didn’t even discuss estimation either.

My advice for all teams is to not start by complicating things.

Stand-ups, planning, and retros are a tool and you should be putting a lot of thought into what tools you use.

Mimecast has Acquired Solebit

Mimecast is excited to announce we have acquired Solebit, a leading security technology provider. A key component of Mimecast’s email solution architecture, Solebit’s differentiated technology has already been protecting our customers with Mimecast’s Targeted Threat Protection globally against the ever-growing, complex threat landscape as a core solution partner.

Realizing the opportunity to change the game for you and your customers with a solution that features a rare combination of stronger protection with higher performance is what led to Mimecast’s decision to make Solebit’s technology ours. We believe the evasion-aware, signature-less, technology has the power to change the game for cybersecurity. The combination of Solebit and Mimecast provides high performance and efficiency combined with tremendous threat protection efficacy—a powerful and rare combination of capabilities.

As with Ataata, the security awareness and training company recently brought into the family of Mimecast solutions in early July, Solebit complements Mimecast’s core cyber resilience platform that includes a messaging solution proven at more than 30,000 organizations globally and a newly emerging Web Security offering that’s currently an Early Adopter program and will be officially launching later this year.

We’re thrilled to have this compelling technology become part of our core technology platform.

For additional detail around Mimecast’s acquisition of Solebit or Ataata, please reach out to your local Partner Account Manager.

Building Serverless Mobile Applications with React Native & AWS

Building Serverless Mobile Applications with React Native & AWS In this post, we’ll look at how to build fully serverless & backendless mobile applications with AWS Amplify & React Native that include features like authentication, analytics, a managed data layer, storage & push notifications. When building a real-world mobile application there are a ton of essential basic requirements. You need to have a way to authenticate users, you want to track user engagement & usage, & you probably want to be able t

Source: Building Serverless Mobile Applications with React Native & AWS