A random image generator using Unsplash API

For a side project I am currently working on I needed a simple random image generator. I was recommended to take a look at unsplash.com/random, and it was exactly what I wanted!

But, it worked not exactly how I expected.

It opens images in the browser perfectly fine, but the Unsplash random image API returns a JSON object with lots of extra information about a resource, instead of a binary blob.

The example below is not the complete JSON object from a response. It is a part that includes URLs to different sizes of the image.

I can request…


Improve the stability and performance of VSCode extensions

For single-threaded languages such as JavaScript, it might be a situation when a long-running operation blocks the entire application. For example, some code calculates a value using a complex algorithm that significantly incurs CPU and memory usage. Or a controller waits for a response from a query that runs against a huge database without properly configured indexes. You might want to collect metrics, analyze data structures, parse files, etc and do all of this not in the main thread but in the background process to avoid performance costs and ensure the stability of the application.

In JavaScript, each task in…


When you open the MongoDB Compass application, an initial dialog that appears is a connection screen. There are two ways in which you can connect to your desired database: fill in connection details manually or connect via a connection string (URI). We wanted to improve the user experience of the connection screen to make the tool more flexible and the connection process more transparent.

Earlier versions of Compass could detect whether you have MongoDB URI in your system clipboard and auto-populate the connection dialog using this information. The parsing process happened only in one direction — from the connection string…


Playing with the CLIEngine API

You might have a question, why on earth would you format ESLint output when it prints good, styled, verbose reports, plus has lots of configurable options out of the box? Well, I want to learn more about the ESLint tool, play with CLIEngine API, and it definitely should be a use case for customizing it. For example, to format the terminal output when a linter succeeds, perform some extra operations before it exits, or to have more detailed debug information during the execution process.

This is how you call a regular eslint command:

eslint ./ --ext .json --ext .js

If…


Du bist so wunderbar Berlin!

When I was moving to Germany, I didn’t know anyone here who could help me with the relocation process. It was very stressful but at the same time the very exciting period of my life. To make your experience more exciting and less stressful, I decided to collect all my notes and useful links here.

The first thing you need to understand and accept, you have to get over these difficulties and bureaucracy only once. …


In my career I have spent plenty of time developing my technical skills, rather than being actively involved in the life of community. There are many reasons for that, but what is more important, after a while I realised, that developers are not just people who write code. It is a small slice of a much larger pie.


Early this year, I joined the team which develops and supports MongoDB Compass, a graphical interface for MongoDB. Compass users via Intercom requested a tool which would enable them to write database queries using any convenient programming language supported by the MongoDB driver. So, we needed a capability to transform (compile) the Mongo Shell language into other languages and vice versa.

This article can be viewed as both a practical guide for writing a JavaScript compiler and a theoretical resource that describes the basic concepts and principles of compiler design. At the end of the article you can find a…


Want to be a react developer, but don’t know how to start?

There was a time when I as a backend developer quite often heard such fancy word as React, but didn’t have a clue what it means. The only thing I knew for sure, if you truly want to stay relevant as a developer, you have to keep learning.

This is how you can start learning React. I would take it in this order:

  1. Check your timeline for learning React: https://daveceddia.com/timeline-for-learning-react/
  2. Read the official documentation: https://reactjs.org/
  3. Free lessons: https://www.fullstackreact.com/30-days-of-react/
  4. Take step-by-step training course: https://reactforbeginners.com/ (try CSSTRICKS code for discount)
  5. Try to start a client-side React project with no configuration: https://github.com/facebook/create-react-app
  6. Go deeper in React Router: https://css-tricks.com/learning-react-router/
  7. Learn how to build maintainable and performant user interfaces for your web applications using React: https://www.scribd.com/book/279962698/React-js-Essentials
  8. Browse other useful links and examples: http://todomvc.com/examples/react/
  9. Don’t stop learning 😉

Alena Khineika

Senior Software Engineer at MongoDB

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store