If you’re planning on taking the AWS Big Data Specialty exam, I’ve compiled a quick list of tips that you may want to remember headed into the exam.
I passed the exam on December 6, 2018 with a score of 76%. In my opinion, this exam is more difficult than the AWS Solutions Architect Pro!
ALLstrategy (for smaller tables) to
EVENdistribution (for larger tables). Note: Redshift will not automatically switch back from
EVENdistribution, the leader node distributes rows equally across all slices. This is appropriate for tables that do not participate in joining.
KEYdistribution, rows are distributed according to a selected column. Tables that share common join keys are physically co-located for performance.
(Desired RCU/3000 RCU) + (Desired WCU/1000 RCU) = # of partitions needed
DS_DIST_ALL_NONEare good. They indicate that no distribution was required for that step because all of the joins are co-located.
DS_DIST_INNERmeans that the step will probably have a relatively high cost because the inner table is being redistributed to the nodes.
DS_DIST_BOTHare not good. (Source)
STL_LOAD_COMMITStable to verify that the expected files were loaded.
COPYcommand to transfer data from DynamoDB to Redshift. Use
UNLOADto transfer the results of a query from Redshift to S3.
If you’re planning on taking the AWS DevOps Engineer Professional exam, I’ve compiled a quick list of tips that you may want to remember headed into the exam.
I passed the exam on November 30th, 2018. Before taking this exam, I had already achieved my SA Pro. There is a fair amount of overlap between the two tests - I would highly recommend taking the SA Pro before this exam. I scored an 85% on the exam.
This exam is fairly difficult, although I would argue it’s slightly easier than the Solutions Architect Professional exam. There is a greater focus on implementation and debugging in the DevOps exam - the SA Pro exam is more about breadth of knowledge across AWS services.
pendingstate for up to 60 minutes by default.
All At Oncedeployment method.
appspec.ymlfile included with your source code binaries on an EC2/On-Premises Compute Platform.
Dockerrun.aws.jsonfile is an Elastic Beanstalk–specific JSON file that describes how to deploy a set of Docker containers as an Elastic Beanstalk application.
NoEchoproperty in CloudFormation templates to prevent a
describecommand from listing sensitive values, such as passwords.
If you’re planning on taking the AWS Solutions Architect Professional exam, I’ve compiled a quick list of tips that you may want to remember headed into the exam.
I passed the exam on November 24th, 2018. Before taking this exam, I held all three Associate certifications and the Security Specialty certification. I passed with an 80% score, and it took 69 minutes.
This exam is very difficult - on par with the Security Specialty exam! You will not accidentally pass this exam. :)
I am flying home from React Conf 2018, hosted at the Westin Hotel in Lake Las Vegas. Some of the key takeaways of this year’s conference:
The conference started out strong with Dan Abramov demonstrating new React hooks to the crowd. I heard many, many audible gasps from the crowd as Dan walked us through using hooks to replace traditional React classes. I had the feeling that I was watching a new version of React being demoed right before our eyes. Although the API is unstable and experimental at this point (it’s just an RFC right now), it is immediately clear that this is the future of React. I am very grateful I was there to hear the announcement in person.
So, what are hooks going to do for you? Well, first of all, you’re going to be writing a lot less boilerplate class code. React 16.7 (alpha) allows us to use functions rather than classes as our components.
State management will be handled by React’s
useState (docs) function - I will say that I felt a little strange about the ergonomics of
useState (you have to call it sequentially, ordering matters). I think that for complex components that require lots of state updates, I would still write traditional classes. This
useState pattern seems best suited for simpler components that only hold a couple values in state.
Instead of manually tracking side effects of components using
componentWillUnmount we can use (no pun intended) the new
useEffect (docs) functions that React provides in 16.7 Alpha. This is probably the most promising feature I saw from Dan Abramov’s presentation.
Rather than segmenting application logic throughout these various lifecycle components:
We will now be able to import the
useEffect function and use it like this:
That’s really it. It may seem a bit magical (it certainly feels like it), but React will now perform the same duties that it used to, but with all of the logic nicely grouped together! This makes writing and debugging side effects much easier.
One more big change.
One of the worst parts of React was dealing with boilerplate code, particularly when it comes to
shouldComponentUpdate is rarely used for much more than checking if the
nextProps based on some criteria.
This is some very typical
shouldComponentUpdate boilerplate that I’m sure you’re familiar with:
We are just checking if the incoming props have a different
id than the props we already have. This is a fairly standard check for a lot of React components. What if React could just diff our props for us, and only update when necessary?
Did I mention that when you use function components, there is no more binding to
this? That alone is a compelling reason to begin exploring using React Hooks.
async functions - once a single function is async, everything in the codebase eventually follows suit. That’s never personally been a problem for me (I greatly enjoy using the asynchronous features of JS).
James argued that the asynchronous nature of React Native’s interaction with native API’s was harming UX. He showed some compelling examples of janky scrollng behavior that occurs when the React Native asynchronous processes fall behind the screen render.
His solution: Block the main thread. Don’t let other tasks interrupt crucial animation rendering. What’s the best way to do that? Get rid of
async, and allow synchronous flow between native API’s and React Native.
Speaking of talks I enjoyed, I greatly enjoyed Conor Hasting’s talk about GraphQL.
In a typical REST API setup, a consumer requests data from an endpoint. The consumer has little to no control over what is delivered to them. To use Conor’s analogy, it’s like calling a pizza parlor for pizza delivery, and since they don’t know what toppings you like, they put 40 different toppings on the pizza, deliver it to your house, and tell you to pick off the ingredients you don’t like.
When you’re working on a front-end application and constantly consuming API’s for varying amounts of data, this can get exhausting. Want to get only the
timestamp of a given set of rows? Too f’ing bad. Now your front-end application is stuck having to munge, filter, and extract data, even though we know exactly what we want. It’s like calling the pizza parlor, asking for pepperoni, and getting 40 toppings.
GraphQL seeks to enforce the concept of getting only what you need, when you need it. This concept is not limited to any sort of technology stack or implementation - it is simply (in my eyes) a philosophy of API design. With GraphQL, your frontend can intelligently query the API for only the data it wants.
This saves time in two huge ways:
As someone who has a hard time hearing, I really, really appreciated the real-time captions provided by the conference. They were incredibly precise, accurate, and they made my conference experience a lot better. I am used to only hearing 50-60% of a speaker’s talk, and I really loved being able to look to the caption monitors and follow along.