Caching Strategies: Everything You Need to Know

Caching Strategies: Everything You Need to Know:

Over the years, the size of web applications has grown considerably larger with the arrival of multimedia and rich graphics. This has been made possible with the use of numerous supporting libraries and stylesheets.

Modern user interfaces not only load large amounts of resources but also load large amounts of data, including data from API-based CMS systems. Downloading these resources and data each time is time-consuming and also costly.

Caching strategies: ESPN 2000, a lot of text.     Caching strategies: ESPN 2020, a lot of video.

This is precisely where web and API caching strategies come to the rescue. Caching helps in reducing these calls while maintaining the quality of output. 

Caching 101: A quick overview

Caching means to store resources or data once retrieved as cache. Once stored, the browser/API client can get the data from the cache. This means the server will not have to process or retrieve the data repeatedly. Consequently, it results in a reduced load on the server. 

Caching does seem like a simple concept – Store the data and retrieve it from the cache when needed again. However, it can become complex when implemented. Caching strategies should be understood and applied carefully. In this article, we will try to capture all you need to know about caching and various caching strategies.

Different caching strategies

Now that we have an understanding of what caching is, let us understand the various caching strategies that exist. Each resource being cached needs to have the right caching strategies associated with it to ensure it does not disrupt the functionality of the application. Further in this article, we will discuss the different variations and go deeper into them to explain how each of the caching strategies is unique in its own way. 

Enable global caching with our API-first CMS.

Browser level/Local caching

Browser level caching means to store the resources and API responses at the user level. This enables the web application to load considerably faster compared to a fresh load. Browser level caching utilizes the browser’s local data store and disk space to save resources. The browser also maintains an index of these resources along with their expiry time. The expiry time is the duration until the cache is considered valid. Depending on how often you change your resources, these expiry times may differ. 

Diagram: Local caching strategies

The browser is capable of caching not only JS or CSS files, but also images, API responses, and full web pages depending on how the website you visit is configured. 


  • Browser level cache consumes space only on a user’s system
  • Browser level cache helps in avoiding a full round trip to the server and back for getting resources
  • Results in quick loading of the web page
  • Reduced API calls to the server consequently reduce server traffic


  • If expiry time is configured too long, it could load stale files and the application might not function correctly
  • If the resources are too heavy, much of a client’s disk space could get consumed
  • We do not have control over the cache

Object level caching

Templating of web pages has become a common approach towards web development today. The object level caching strategy involves the caching of pre-processed pages at the server level along with the data. This helps in preventing frequent database calls as well as page processing calls. An object basically can be any resource, data, or web page. Object level caching is more beneficial when the web application is expecting more new users on a regular basis. 

Diagram: Object caching strategy


  • Common cache for all users helps in ensuring the right content delivery
  • Cache expiry is controlled by the server
  • Results in the optimization of database calls too 


  • Occupies server disk space 
  • Requires a shared disk or cache duplication in case of load-balanced multiple servers

Network level caching

Network level caching is a modern caching methodology where your intermediate HTTP web server and routers are configured to cache the API calls and resources. In this method of caching, we configure the network layer to hold the responses and resources for corresponding URLs. This type of caching works strictly based on URL. The network layer can be configured to use or ignore query parameters for the URLs as needed by your application. 

Diagram: Network caching strategies

Network layer caching improves the overall performance by completely avoiding the calls for a response. Thus, it results in better performance compared to object level caching. In certain setups, the users would be hitting a regional network layer closer to their location. This can improve the response time considerably as a roundtrip to the servers would be saved. 


  • Common cache irrespective of servers resulting in more accurate rendering 
  • Reduced hits on the application servers due to network layer caching 
  • Faster response times in a regional network layer setup 


  • Requires a durable network layer with sufficient disk space to hold the cache 
  • The traffic and bandwidth requirement at network layers increases

Third-party caching using cache stores

This is the best caching method in use at present. Third-party caching involves routing resource-intensive calls through third-party cache providers. These cache providers are then responsible to hold, manage, and clean the cache as needed. Moreover, the cache stores also provide better transparency into what the current cache is holding and allows you to clear the cache when desired. 

With third-party caching, you can also make sure that the same cache is served around the world irrespective of country or region. Thus, they also improve the website performance in turn by cascading data to locations closer to the user. 


  • Complete responsibility of the cache is handled by the third party
  • Gives you full control over the cache while ensuring that any changes are replicated throughout the world
  • Reduces hits on web application servers
  • Faster website performance due to durable high speed caching servers


  • Costlier compared to the previous cache strategies discussed

Enable global caching with our API-first CMS.

Advantages of caching

From the above, we understand that caching is surely a must for the majority of web applications. Below are some high-level advantages of implementing caching:

  • Lower hits or load on web application servers 
  • Better website performance and load times 
  • Higher SEO ranking due to optimized performance
  • Reduced data exchange with browser-based caching resulting in optimum consumption of internet data
  • Faster execution of actions due to API caching

To get the right benefits from each caching mechanism, we need to understand the concepts associated with it in depth. These concepts are discussed further in the next section. 

Importance of cache expiry

A cache is a store of files that were processed in the past and will be used in the future. These files may not remain the same throughout their lifetime. There could be scenarios where the file might get changed. In such cases, cache expiry becomes important. 

Cache expiry is the time before which the cache is considered valid. When the request for files is sent to the server, the server returns the relevant headers to specify the expiry time for the respective file. The caching engine (browser, third-party, or network layer) maintains this expiry for each file and takes care of refreshing it on time. Consequently, the stale cache issue will cease to exist. When analyzing the impact of different caching strategies, it is important to ensure that there is an option for configuring a custom cache expiry.

Drawbacks of extreme caching

Caching, although beneficial, still needs to be done carefully. You need to understand the files that are important to be cached. At the same time, you also need to carefully decide on the expiry time for the cache. Extreme caching is the situation where the web application servers cache every possible file with a high expiration time.

Extreme caching could end up resulting in improper performance of the web application. Stale JS or CSS files or data from API calls could result in unexpected behavior, too. Hence, it is important to carefully cache the resources and at the same time refresh the cache whenever updates are being made. The next section helps you carefully strategize caching for each resource.

Choosing the right caching strategy for your app

Caching static resources against caching API calls requires two different caching strategies. Each strategy focuses on caching different types of data. Before strategizing for the same, you need to segregate the resources and API calls into the categories below:

  • Static resources: JS, CSS, Font files, and images that change very rarely 
  • Master data API calls: API calls that provide data that does not change often
  • Other resources and API calls: These are files and APIs that contain dynamic content and needs to be retrieved fresh almost every time

The segregation of resources and API calls will help in finalizing the approach to be followed for each. Then, try to organize the static resources into a separate folder to treat them differently. Now, let us try to understand the methods to be followed for each. 

Static resources

The lifetime of static resources is normally high. These resources generally include the libraries and files that are brought in from a third party. For instance, this includes BootstrapJQueryGoogle FontsFont Awesome, and others. These files should be cached for longer with expiration times ranging from 1 month to 3 months. The majority of people prefer to use a third-party CDN to host these libraries. However, it is not advisable to do so. 

Caching of static resources will reduce the resource calls to the server considerably. These files can be cached using web browser caching. The browser can hold and manage the lifetime of these scripts. Thus, when your web application URL is entered, the browser checks all the requests that the web page makes. Based on the available cache, it pulls out the files from the disk cache. 

The caching of static resources can combine browser caching and third-party caching for the best web application performance. This ensures that even for first-time caching for a new user, the web application is rarely hit. 

Master data API calls with an API-first CMS

API calls caching is an interesting development that has been done over the past few years. However, caching API calls is still a tricky thing to do. Using a matured platform to cache such API calls is certainly better. 

An API-first CMS like ButterCMS allows you to cache your API calls for various entities like posts, testimonials, list of services, and others. API calls caching allows faster response times for the APIs which might otherwise take 1-2 seconds if the data is too large. 

With global caching, ButterCMS could deliver data for API calls quickly with less load on the server. Consequently, it results in better performance and increased satisfaction for you as a client. With CMS platforms, you can leave the complete caching responsibility to the API provider. Thus, it not only reduces your development time but also gives better quality output. 

Other resources and API calls 

These are the final set of resources that refresh more often and might need frequent cache cleaning to show the right data. Hence, the general advice for such resources is to ensure that it does not get cached at the user or server level. Any caching of dynamic data could impact the sanity of data visualized on the screen or consumed by a service. 


Based on the detailed discussion above, we can summarize that caching surely is a must-do activity for every web application owner. With caching, you get numerous benefits which in turn lead to a satisfactory visitor experience. However, choosing the right one or mixing all caching strategies proportionally is a crucial activity and must be done with proper knowledge. 

from Tumblr

10 Stunning Free Cosmic Backgrounds

10 Stunning Free Cosmic Backgrounds:

 Space is full of mysteries and scientists haven’t been able to decode the its secrets in their entirety. And there is nothing as beautiful as space. People have always been fascinated by pictures from the space and of the universe. But they haven’t been able to capture its beauty as a whole. So many people love such pictures and set them as a background on a laptop, desktop, mobile devices, and tablets. And we can find a lot of pictures of the cosmos and space around the Internet.

Today, we have come up with a blog post that lists the best images of cosmic backgrounds that you can use for various purposes. This blog showcases some of the best cosmic backgrounds that can be downloaded for free.

1. Blue Sky Night:

Blue Sky Night is a cosmic background offered by Pixabay. It signifies brilliant blue background with brightly shining stars. The background also shows an image of a hard surface like earth with presence of water. This image beautifully captures the skies and the space, a small part of the universe. Pixabay has come up with this background which can be accessed for free. The background can be downloaded in four various dimensions. If you select the first type, the dimensions boil down to 640 x 426 px and file size is 62 KB.

With the second type, the dimensions come down to 1280 x 853 px and the file size is 203 KB. The larger file type has dimensions of 1920 x 1280 px and the file size is 432 KB. And the largest file dimension available for download is 2100 x 1400 px and the file size is 783 KB. All the files are downloaded in JPEG file format which makes it easier to work with. You can download the background from the link we have provided here. This image can be modified or customized using applications like Adobe Photoshop and Adobe Illustrator.

2. Nasa Sky:

Nasa Sky is another cosmic and space background image which stunningly captures the gaseous formations. The sky is depicted in hues of orange, blue and grey shades. This image is available from the website called Unsplash. They have managed to capture the image. The original dimensions of the image are 5200 x 2500 px. Unsplash lets you pick up the files in four different dimensions. With the small file, the dimensions are 640 x 307 px. In the medium sized file, the dimensions come down to 1920 x 923 px.

With 2400 x 1153 px, the file reaches slightly larger size. And another dim is the original dimension of the image which is 5200 x 2500 px. You can download this background image from the link we have provided here. This image can be downloaded for free. In addition to this, the website does not ask for user authentication before you download the image. This makes the entire process hassle free. The image can be modified using applications like Adobe Photoshop and Adobe Illustrator. This image must be an authentic image because it seems like Nasa captured it.

3. Space Galaxy Background:

This background has been offered by the website called Freepik. The image of the space shows innumerable stars. Moreover, the color combinations range from pink, red, grey, black and blue as well. It shows how we are surrounded by infinite number of stars and celestial objects. You can download this background from the link we have provided here for free. The website does not need you to have a user profile to make sure the download is successful.

With resolution of the image at 5000 x 3333 px, you get a pretty high definition image. The size of the image is 14.8 MB which is justified with such dimensions. You can also choose to modify the image using applications like Adobe Photoshop and Adobe Illustrator. Such an image can be used as a background for innumerable devices like laptops, desktops, mobile wallpaper, and more.

4. Night Sky:

Night sky is a background image of a sky that seems to be rotating around an axis and the stars look like they have a streak of their own. It depicts the time of an evening where the sun is setting down and the orangish hues fill up the sky. This image can be found on the website called Pexels. The resolution of the image is 5472 x 3648 px and the size of the file is 7.51 MB which stands justified. This image comes with an aspect ratio of 3:2.

Moreover, this image can be downloaded in various file dimensions. And the best part is, the website lets you download the image in the dimension that you specify, according to your requirements. If you select original size of the file, the dimensions come down to 5472 x 3648 px. With the large size, the dimensions boil down to 1920 x 1280 px. At 1280 x 853 px, you reach the medium sized file. With the small size, the dimensions are 640 x 426 px. And in the custom sized file, you can specify the dimensions of the file of your choice and the image gets converted in that dimensions. This image can be modified or customized using applications like Adobe Photoshop and Adobe Illustrator. You can download the image using the link provided here.

5. Cosmo:

This website called WallpaperAccess provides the images of universe and skies in a set of 60 various images. We have picked first image in the list from the set of 60 images on the webpage. The image here brilliantly depicts the blending of shades of black, grey, white, and orange. It also showcases one tree and the surface of the grassy earth.

You can download the image using the link we have provided here. The dimensions of the file are 1920 x 1200 px and the size of the file is 454 KB. At such dimension, you get a high resolution image. The website lets you download the image for free. Moreover, you don’t have to authenticate yourself as a user on the website. This image can be customized using software applications like Adobe Photoshop and Adobe Illustrator.

6. Ultraviolet Galactic Background:

Ultraviolet Galactic Background is an image that depicts bluish purple sky that is home to multi colored planets. The white moon like celestial body in the centre of the image shows its aura in different layers. It also shows orange, greenish, and blue colored planets surrounding the white ball. You can also spot a meteor in the image which makes the image appear more beautiful.

A website called Vecteezy offers this image for free without any kind of user authentication required. The dimensions of the image are 1750 x 980 px and the size of the file is 191 KB. This image comes in the JPEG file format which makes it easier to work with.

7. Cosmic Galaxy Planet Background:

Cosmic galaxy planet background shows an image of a close up of a planet that appears huge in the image. And there are two other planets up and close against the huge planet. This image is built with various hues of purple, black and pinks. The stars are depicted using white spots. These planets in the image appear to have a varied surface on each of them. You can download this image using the link we have provided here.

This image is offered by the website called Pngtree. It lets you download the image for free without the need to provide the user authentication or the need to create a user profile. The dimensions of the image are 1920 x 900 px and the size of the file is 929 KB. This image can be modified using software applications like Adobe Photoshop and Adobe Illustrator. Since the image gets downloaded in the JPEG file format, it becomes easier to work with it.

8. Cosmos Background:

Cosmos background is an image of cloud formations and varying colors of clouds in the outer space. The image depicts changing and blending colors of blue and red shades. You can also spot innumerous stars shining with different intensities. But one star in the centre of the image shines brightly. You can download this image using the link we have given here and it is available from Wallpapercave website.

As you download the image, the size of the file is 356 KB and the dimensions of the image come down to 1920 x 1080 px. The website lets you download the image even if you don’t have a user profile on the website. This image can be modified or customized using software like Adobe Illustrator and Adobe Photoshop.

9. Cosmic wallpaper:

Cosmic Wallpaper comes from a website called Pixelstalk. This image shows the change in colors but the beauty of well blended colors. With blue and red colors in the sky, and stars shining like diamonds, the image looks stunning. Such an image can be used in various places for various purposes. It can be used as wallpaper for various devices. You can download this image for free from the website without having a user profile on the website.

The dimensions of the image are 1920 x 1080 px and the size of the file is 355 KB. With such dimensions, the image comes across as a high definition image. This image can be downloaded for free from the link given here. You can modify or customize the image using applications like Adobe Photoshop or Adobe Illustrator. This image can be used for various purposes, while one is used as wallpaper.

10. Star Space Background:

Star space background is a brilliant image which captures a man looking at the stars in the sky. You can also spot that there are countless stars in the skies and the colors vary from yellow, pink and blue. These colors blend in between with each other in various ways. It looks like the man is standing on the surface of the earth and looking at the beauty of the sky. You can download this image using the link we have put here. This image is provided by a website called Pikwizard. The website does not ask for user login details in order to allow the access to this image for download. Pikwizard, the website, lets you edit the image using its online editor and hence you don’t have to install any application to do that.

The size of the image comes down to 2.46 MB and the dimensions are 5616 x 3744 px. With such huge dimensions, the size of the file looks huge and the resolution of the image comes out with a lot of clarity and resolution. You can edit the image using the applications like Adobe Photoshop and Adobe Illustrator. This is only when you don’t want to use the image editor provided by the website. As the image gets downloaded in the JPEG file format, it becomes easier to work with it.


Cosmic backgrounds are something that everyone likes to use in various forms. And the backgrounds we have put here are stunning in their appearance and work best as a background. This blog here has collected some of the best cosmic backgrounds that the users can use for various purposes including using them as wallpaper. The best part here is that all the backgrounds are available for free. And these images can be downloaded using the links to these websites without any user authentication. This makes the entire process very easy to handle. Hence, whenever you need a cosmic background, you can always come up to this blog to see if an image in the set fits your requirements.

from Tumblr

How to use IoT authentication and authorization for security

How to use IoT authentication and authorization for security:


IT administrators can determine which IoT authentication and authorization type, such as one-way or three-way, will serve them best based on their latency and data requirements.

At their core, IoT devices simply connect to share data. With so many devices in use, it’s vital to secure these connections. IoT authentication and authorization can do that. Given the number of devices that connect to an organization’s network, IT administrators can’t afford to forget about this part of a security strategy.

An IoT authorization and authentication strategy begins with understanding how an organization uses IoT devices and how devices communicate with their network.

What is authentication and authorization?

Authentication is the process of device identification, while authorization provides permissions. IoT devices use these processes to do role-based access control and ensure that devices only have access and permission to do exactly what they need. Only authorized devices can interact with other devices, applications, cloud accounts and gateways.

Administrators register each device when they deploy it on the system. The system validates devices when they connect and share data. Many organizations use public key infrastructure (PKI) to link devices with public key certificates from certificate authorities to assign and verify device identities. PKI establishes an IoT device’s legitimacy on a network to share data.

Strong IoT authentication protects against control commands from unauthorized users or outside devices that attempt to access the network through a targeted device. The security measure prevents attackers from claiming their actions come from IoT devices on the network and therefore getting access to data in the broader network.

Organizations have multiple ways to authenticate and authorize IoT devices that depend on the device, location and nature of the data the device transmits or receives.

Understand 3 types of authentication and authorization models

Security falls into two main categories: distributed and centralized. In the distributed model, devices store certificates and identities and validate authorization. In the centralized model, a centralized server or trusted third-party application distributes and manages the IoT devices’ authentication certificates. When devices connect to the network, the certificate’s central repository performs the verification and authentication.

Depending on the nature of IoT devices, combinations of distributed and centralized models can ensure the most efficient and secure management.

Depending on the nature of an organization’s IoT devices, combinations of distributed and centralized models can ensure the most efficient and secure management.

There are three main IoT authentication and authorization security protocols and options available that admins can deploy:

Distributed one-way authentication. Whenever two devices decide to connect, such as an IoT sensor and gateway, the protocol dictates that only one device authenticates itself to the other, and the second device is not authenticated. One device registers as valid with the second device through a password hash or digital certificate. When the first device tries to connect, the second device checks the password or certificate and compares it to the stored information. If the information matches, the device authorizes the connection.

One-way authentication works best for devices that only connect to one other device. These devices still need security mechanisms, but don’t require constant monitoring.

Distributed two-way authentication. Also known as mutual authentication, this protocol is used when both devices authenticate each other before they communicate. Each device must have a unique digital identity stored for the other device and then compare identities. The devices can only connect when the first device trusts the second device’s digital certificate and vice versa. The Transport Layer Security protocol exchanges and compares certifications.

Online e-commerce transactions and highly sensitive data transmissions typically use this protocol.

Centralized three-way authentication. In this approach, an admin registers the devices with a central authority or server and associates the devices with valid digital certificates. The central authority facilitates the secure handshake between the two devices that wish to communicate. In three-way authentication, the security certificates aren’t stored on the devices and can’t be stolen by criminals, yet the devices still have strong security.

This approach works best for always-connected devices or ones with on-demand internet access because it eliminates any authentication delay. A certificate and key lifecycle management service can manage the certificates centrally and connect to any device on a network that needs verification.

IoT authentication types and suggested uses

Consider communication protocols for IoT authentication and authorization

To choose the right approach to an IoT authentication and authorization strategy, organizations must consider the technology used to secure data and machine identification.

IT administrators must monitor the network for machine identities to ensure only authorized devices connect and communicate with the network. Admins can also get alerts when unauthorized devices try to connect.

The communication protocol a network uses to connect and share data is also critical for IoT device security. For example, an X.509 certificate provides security for certificates, but may use too much computing power, internet bandwidth and electricity to be useful for IoT devices.

The PKI that a network uses can create connectivity issues when the system authenticates and authorizes devices. Devices that use chained digital certificates may require more bandwidth to verify themselves and permit communication.

A more efficient and smaller footprint protocol that’s quickly becoming the IoT security standard is Message Queuing Telemetry Transport (MQTT). As a centralized approach to IoT security, MQTT connects a client, such as the IoT device, to a broker that stores digital identities and certificates.

Organizations integrate MQTT into various network monitoring and management systems, which enables IT professionals to monitor thousands of IoT devices in a scalable way. The protocol offers customization options for communication bandwidth between devices and ensures that data transmits smoothly and securely between devices.

from Tumblr

16 Simple Tips to Boost Your Productivity x10

16 Simple Tips to Boost Your Productivity x10:

 These easy-to-follow tips will improve your output dramatically.

1. Remove Notifications 🔔

  • Check your phone after a couple of hours.
  • Keep an eye on the app with the most notifications.
  • Block them.
  • Don’t fear FOMO.
  • Choose your shots.
  • You are going to lose some content around.
  • Deal with it.
  • Watch The Social Dilemma.

2. Slice Your Time 🍕

  • Use blocks of time without interruptions (timeboxing).
  • My favorite is Pomodoro Technique.
  • If you come across new tasks write them down.
  • Don’t multitask.
  • You cannot switch until time is up.
  • 20 minutes it’s a good slice.

3. Inbox0 📥

  • Keep your inbox ALWAYS empty.
  • Unsubscribe to all irrelevant mails (most of the time is a just-one-click).
  • Create filtering rules – out of the inbox.
  • If you need to action on mails: (keep the list out, create a special folder).
  • Inbox is not a To-do list.

4. Find Your Flow 🕯️

  • Creative work happens on [flow state](
  • Takes some time to enter flow (about 15 mins).
  • Takes one second to leave it and go to the queue again.
  • Remove all external flow interruptions, notifications, noise
  • Control all internal stimulus.

5. Use Zenware 💭

  • Use simple software.
  • Minimalistic tasks editors like writemonkey and simple managing software like Trello
  • If you blog on you will find its markup editor very convenient.
  • Don’t procrastinate gold plating your articles.

6. Close Your Browser Tabs 🔓

  • Manage to-do lists and items.
  • Do not open multiple tabs.
  • No operating system or web browser handles them very well. Neither you.
  • Don’t multitask.
  • If something takes less than two minutes do it. Else add it to To-Do list.
  • Web tabs are not to-do lists.

7. Find Homes For Everything 🏠

  • Every object (real or virtual) should have a home.
  • We can keep inboxes (or incoming places) for things a couple of days.
  • We need brief processes to empty those inboxes.
  • When emptying those inboxes we should define new ‘homes’ if necessary.

8. Keep A Daily Agenda 📅

  • Start each day with a short daily agenda.
  • You can mix personal and work items or keep them in two separate lists.
  • Plan for unplanned work.
  • Revisit hourly to keep up.
  • And close it at night.
  • Never reuse it for the next day. Start from scratch.

9. Automate Repetitive Tasks 🤖

  • Find repeatable shortcuts.
  • Automate repetitive tasks.
  • It is a two sharp blade. Never automate when DOING a task.
  • Automating is more enjoyable than doing (Procrastination).
  • Automate only tasks made on daily basis.
  • Don’t automate infrequent things.

10. Avoid Unproductive Meetings 🤝

  • Schedule meetings for 25 or 50 minutes.
  • So you can have time to switch.
  • Meetings without agenda are useless.
  • Avoid meetings with more than three people.
  • The outcome of the meeting should be action items.

Commitments must include:

  • who / what / when

11. Avoid Multitasking 👨‍💼

  • Don’t multitask.
  • Work on one task at a time.
  • Multitasking is a myth, and trying to do it only splits your focus.
  • Human Brain is monotask.
  • Context Switching for neurons is too expensive, so you are thrashing most of the time.

Focus -> Flow.

12. Avoid Voice Calls 📞

  • Voice Calls are interruptions.
  • Interruptions are our worst enemy.
  • Avoid unscheduled voice calls.
  • If it is not urgent you can talk via messaging in an asynchronous way.
  • If it is urgent, double check it is urgent
  • If you wanna talk, schedule!

13. Eat The Frog Early In The Morning 🌤️

  • Do the annoying tasks early in the morning.
  • Plan for the day.
  • Review everything accomplished the day before.

14. Don’t Reuse Daily To-Do Lists ✔️

  • Start each day with a different one.
  • With this method there’s no carry over.
  • Daily check yesterday’s unfinished goals and evaluate if they deserve being on the new list.
  • It is YOUR list. Be honest with yourself.

15. Measure Objectives 📈

  • Set long term, middle term and short term goals.
  • They should not be fuzzy.
  • Set a realistic and measurable metric.
  • If it is not measurable with exit condition it is not a goal.
  • Keep track on them on a weekly basis.
  • Change it if need it.

16. Don’t Save For Later 🍓

  • Save for later is a myth.
  • There are excellent apps like PocketInoreaderEvernote or even like in this article!
  • But unless you consume the list often this will grow forever.
  • Don’t save content, consume it.
  • Don’t Hoard.

I’m sure there are plenty of Productivity advices around. Which one does work for you?

Please leave me a comment.

from Tumblr

What Is the Jamstack in 2021?

What Is the Jamstack in 2021?:


2020 was a terrible year for a lot of things but it was a pretty good year for the Jamstack. We not only saw a lot of startups in the Jamstack space getting massive funding, but also big companies jumping in as well. For example, Microsoft launched Azure Static Web Apps and, more recently, Cloudflare launched Cloudflare pages. As I argued in the recent issue of Jamstacked, I think we will look back on this year as the year the Jamstack went mainstream.

What Does Jamstack Mean in 2021?

This has also been a year in which the concept of the Jamstack has been evolving. What began as just tools for static sites, was redefined to include dynamic client-side functionality via JavaScript and APIs in 2016, when the term Jamstack was coined. In 2020 we saw the first hints of change in this definition since it was originally defined caused by the rise of hybrid sites that use a combination of SSR (server-side rendering) and static pre-rendering. This hybrid option has been popularized largely by Next.js.

But are these sites truly Jamstack? I’d argue that, on the one hand, how we define and redefine the Jamstack term doesn’t matter at all in practice, while on the other it is actually really important.

The Background

JavaScript based Jamstack tools like Next.js, RedwoodJS and Nuxt allow developers to define how a route within a site will be generated. For instance, my blog pages could all be purely static, while my home page could be server-side rendered. This was initially only available via hosting on Vercel or a Node-based hosting service, but Netlify has also begun supporting these hybrid SSR/SSG sites via tools like Next on Netlify.

There has been lively debate within the community about whether these sites are Jamstack or not. As with every debate about the term Jamstack, this is colored by the fact that Netlify largely created and maintains the term. This has become more pronounced as Jamstack has gained popularity and, in particular, as companies have jumped into the ecosystem. For instance, while I’m not privy to any of the internal discussion, I largely suspect this is why Microsoft uses the phrase “static web app” rather than Jamstack – because it can be hard to disassociate promoting Jamstack from promoting Netlify. This is no more obvious than with Vercel’s recent funding announcement, wherein the company went from being a Jamstack promoter to attacking the concept of Jamstack as “the dogmatism of pure static.”

Thus the debate has gone from whether hybrid SSR/SSG sites were Jamstack to whether they represented what you might call a post-Jamstack concept.

Labels Are Meaningless

You may wonder why anyone cares about such an esoteric debate and you’d have a point. The reality for most developers is that these definitions are pointless in the day-to-day work. We aren’t paid according to our strict adherence to the concepts of Jamstack, but to get the job done. If the requirements of a site are best served by building it fully SSR, partially SSR or fully static, then that’s what we should do. We may have a preference for one type of solution, which may guide us, but it doesn’t – it cannot – restrict how we ultimately solve the problem.

This leads many developers to often see this as a debate about marketing. After all, they say, Jamstack was just a marketing term created by Netlify to popularize a set of tools (static site generators) that, not coincidentally, were how you built sites to run on Netlify.

That’s true but…

Labels Are Important

Let’s go back to 2016 when the term Jamstack was created. Having been an active proponent of static site generators for already some years by that time, it was obvious to me and to others that there was a real perception problem. “Static sites”, as we called them, were seen as purely a niche solution primarily for developer blogs and developer portfolios (and maybe, to a lesser degree, for documentation). No one would build a serious site with a static site generator, right?

By defining a new term, one that dropped the problematic use of “static”, Jamstack helped change the perception of these tools – but it did more than that. It helped define a concept around which we could organize – write Jamstack books, host Jamstack conferences, run Jamstack meetups and so on. Doing so doesn’t just require a term, but a term that has understandable meaning and value to the community. Jamstack was clearly defined enough that it accomplished this and, in my opinion, helped drive the use of these tools from a fringe solution in 2016 to a mainstream one as we enter 2021.

Which is where we get to the problem of how we define Jamstack going forward…

Jamstack in 2021 is Static-First but not Static-Only

My one big criticism of Vercel’s “attack” on the concept of Jamstack is that it didn’t offer any clearly defined alternative. We “don’t care if an application is CSR, SSR, SSG, etc. as long as [our] end-user is delighted” is exactly the sentiment I shared in the “labels are meaningless” section above but it is not a principle or concept we can organize around or evangelize. It only says what it isn’t not what it is.

Which leaves us with the problem of how we define Jamstack going forward. I believe it is fair to say that the concept of Jamstack can evolve to include hybrid sites, though some will disagree. However, the term has to retain a clear definition and understandable meaning if it will continue to have value for all the reasons I defined above. Saying a site is Jamstack just because it uses a static site generator, even if it is an entirely SSR site running on Next makes the definition far too nebulous to me. What’s the difference then between that and a plain old React site with SSR (and no Next)? Or really any site because, well, nearly everything on the web nowadays is JavaScript, APIs and Markup (HTML is markup after all)? Going that route, to me, ends up putting us in a position where we are, more or less, just advocating modern web development, with no real organizing principle or architecture.

My personal definition has room for hybrid solutions, but it is static first, by which I mean every route is assumed to be static unless the specific requirements for that route prevent the possibility of a static solution. So this is a site built upon statically generated assets sprinkled with SSR where necessary, not an SSR site sprinkled with static routes. That is not to say there is anything wrong with the alternative, just that it isn’t Jamstack – and that’s fine, do what works for you. I personally believe that many, if not a majority of, sites on the web can work in a static-first hybrid model of Jamstack. I also think adding some sprinkled SSR doesn’t overly dilute the value of the term.

So for 2021, let’s start first by dropping the JAM acronym (in my opinion, it creates more confusion than it helps nowadays). It’s just Jamstack not JAMstack. It’s an architecture or a methodology rather than a “stack” of specific tools – so, yeah, the stack part of the name is a bit confusing but it’s the name we have. Let’s define Jamstack as static-first and not static-only, making room for hybrid solutions. Finally, as a developer, do what you need to do regardless of whether it fits neatly into Jamstack or not – but learn about and apply Jamstack principles wherever you can for the benefit of your project.

from Tumblr

SEO Basics

SEO Basics:

 We’ll cover some of the very basics of SEO. No black magic tricks, that would rank you on the first page, no promises, just some of the things that might matter when our sites are being ranked.

The Document Title

Let’s start with the foundation. Always update the document title – it serves as a short description of the page. When our site pops up in a google search the title of the document is rendered in large font, serving as a link to our page.

Your Document title
Enter fullscreen mode Exit fullscreen mode

Linking to pages you want to get indexed

Everything has to be connected via links, no search bot is going to attempt to guess the URIs on your website. If we have a /blog endpoint available, but there’s no link to it, it will not get indexed.

Always specify an alt property on images

Search bots don’t use machine learning to guess what our image represents (at the time of writing). For that reason we should always set the alt property on image tags.

white cat
Enter fullscreen mode Exit fullscreen mode

Bots don’t fill out forms

If we have content on our web page that is only accessible after the user fills in a form, chances are it won’t get indexed. The same counts for content that is only accessible by registered users, so we have to be mindful when restricting content.

Choose a suitable domain / url path

Try to have a domain that represents what your business does, what people would search for in a search engine. For example if you sell bikes – would be a good pick, however most good domain names are already taken so try to at least include the information in the url path –

Use the meta description tag

The tag provides a concise summary of our web page. The tag should be one – two sentences. It appears underneath the blue clickable links in a search engine results page.

Enter fullscreen mode Exit fullscreen mode

Heading tags are more important than other tags

When our pages get parsed by robots, some tags are perceived as more important than others. Heading tags get ranked depending on what headings they are. Always make the few most important headings h1 and h2 tags.

The content matters

It’s important how often our keywords appear in the body content. That’s why so many people just spammed words, that might get picked up by bots in hidden html tags a few years ago.

However those days are long gone and the search bots are not as easy to trick nowadays. For that reason the best thing we could do is to have more related content at a single endpoint. What I mean by that is if you have for example a long blog post, don’t split it into multiple parts, instead publish it as is and you will have more related keywords at a single endpoint.

Include robots.txt / sitemap.xml

The robots.txt file is placed at the root directory of our website. It’s an instruction on what the search engine bot is NOT allowed to crawl. So you could disallow the search crawler to crawl some of your pages if don’t want a page
to get indexed.

Note, that hackers may look for the pages that you disallowed in your robots.txt to select endpoints they should target.

The sitemap is used to inform search engines about URLs on a website that are available for crawling. The sitemap.xml is the opposite of robots.txt. The sitemap lists the URLs for a site and you could write it yourself or generate it using a script.

from Tumblr

React Dashboard – 5 Modern UI Kits for 2021

React Dashboard – 5 Modern UI Kits for 2021:

 This article presents a shortlist of React Dashboards that might help us all to code new products on top of modern UI Kits crafted by open-source enthusiasts (freelancers and agencies). The list contains only FREE products actively supported and versioned by their vendors. 

At the end of the article, I will mention similar (popular) articles that list 10+ React Dashboards – feel free to check the links for more great React products.

Thanks for reading! TL;DR;

  • Airframe React – developed by Tomasz Owczarczyk (freelancer)
  • AntD – Open-Source design with impressive charts
  • React Material Dashboard – crafted by Creative-Tim in NextJS
  • Light Blue React – A modern dark-themed dashboard
  • CoreUI React – 3k GH stars and 1.3k forks

Pretty sure there are plenty of nice designed dashboards out there, probably better than the ones listed here, .. but each mentioned product has at least one strong point which can be the design, Github popularity, UX, .. etc. I will point when will be the case this key information. Let’s go!

Airframe React

This modern React Dashboard is built by a solo-developer: Tomasz Owczarczyk. Coding a top-notch dashboard and later release it for free is something quite hard to achieve, and this guy did it. Please note that all other products are developed by agencies with efforts from many developers.

Product Features – 3k Github Stars

Airframe Dashboard with a minimalist design and innovative Light UI will let you build an amazing and powerful application with great UI. Perfectly designed for large scale applications, with detailed step by step documentation.

This Airframe project is a typical Webpack based React app, React Router also included together with customised Reacstrap. This project has all of it’s few dependencies up to date and it will be updated on a regular basis.

  • 10+ Layout Variations – a multitude of possibilities to rearrange the layout, allows customizing the look of your application just as you imagined.
  • Applications – applications ready, allows you to save time and focus on project development.
  • UI Components – we offer you a large number of UI components; fully ready for changes that will customize them for your needs.
  • Responsive Design – fully adapted to your application, exactly well presented on the desktop, a tablet or smartphone.
  • 120+ Unique Pages designed to make use of them directly in your application.
  • 2 Starters so that you can immediately work with the components that are necessary for your application.

AntD React

An excellent front-end solution for enterprise applications built upon Ant Design and UmiJS. I’ve selected this product mostly for the impressive charts provided.

Product Features – 8k Github Stars

  • Internationalization, extracting translation fields from source – code, loading language packs on demand
  • Dynamic permissions, different permissions for different menus
  • Elegant and beautiful, Ant Design system
  • Mock data, local data debugging

NextJS Material Dashboard

This product is crafted in NextJS, a popular and trendy React Framework.

Product Features

NextJS Material Dashboard is a free Material-UI, NextJS and React Admin with a fresh, new design inspired by Google’s Material Design. We are very excited to introduce our take on the material concepts through an easy to use and beautiful set of components. NextJS Material Dashboard was built over the popular Material-UI, NextJS and React frameworks.

Light Blue React

This open-source product is developed by FlatLogic and comes with a modern dark-themed UI.

Product Features

Light Blue React Template is a great template to quick-start development of SAAS, CMS, IoT Dashboard, E-Commerce apps, etc
Lite version of a Light Blue includes the following features and pages:

  • Bootstrap 4+ & SCSS
  • Responsive layout
  • React Chart.js
  • Simple login / logout
  • Error page
  • Styled Bootstrap components like buttons, modals, etc.

CoreUI React

This is probably one of the best free products crafted on top of a Material Design. Personally, I’m not a fan of this UI concept but CoreUI simply looks good.

Product Feature

CoreUI is meant to be the UX game changer. Pure & transparent code is devoid of redundant components, so the app is light enough to offer the ultimate user experience. This means mobile devices also, where the navigation is just as easy and intuitive as on a desktop or laptop. The CoreUI Layout API lets you customize your project for almost any device – be it Mobile, Web or WebApp – CoreUI covers them all!

Thanks for reading! For more React Dashboards please access:

from Tumblr

Using a REST API in react

Using a REST API in react:


An API stands for an “Application Programming Interface”. It allows communication between softwares and provides ways of sharing data between applications. The REST API stands for “Representational State Transfer”.

REST API is a software architectural style that defines a set of constraints and allows communication with RESTful web service. The REST API uses the HTTP request method to access and use data.


Below are the REST API methods:

  • Get Method: As the name implies, it gets the data directly from the API.

  • Post Method: The post method is used to give back data collected from the application to the server or an API.

  • Put Method: This action is used to make changes and update a request.

  • Delete Method: This method is used to eradicate pieces of information or data that are not needed.

    For this article, we are using a free API to demonstrate how to use the API call in react.


Run this code in your command prompt to create a new react app.
npx create-react-app api-usage
then cd into the app:
cd api-usage
run yarn start or npm start 
yarn start
npm start

You should see the react logo spinning in your browser


link to api:

In this project, we are going to use Axios. Axios is used for making HTTP requests and used for fetching data from an API or a database or XMLRequests.
Run: npm i axios

Inside your App.js get rid of everything and it should look like this:

import React from 'react';
import './App.css';

function App() {

  return (
{/*No component yet*/}
); } export default App;

Then inside the src folder create a new component Joke.js.Since we installed Axios earlier we are going to import it into our app.

import React from 'react';
import axios from 'axios';

const Joke = () => {
return (


); } export default Joke;

From the code above:

We are creating a new Joke component and rendering an h1, then we export the Joke component by default.

Next, we import the Joke component into the App.js component so that it can be displayed in the browser.

import React from 'react';
import Joke from './Joke';
import './App.css';

function App() {

  return (
{/*Joke component*/}
); }

In your browser, you should see Joke: displaying on the screen:

Next, I am going to show how to use the API in our code.

import React, {useState} from 'react';
import axios from 'axios';

function Joke = () => {
     //create a state to store the jokes from the api
const [joke, setJoke]  useState([]); //make sure you to import useState from react

//store the api in a variable
    const apiLink = "";

//create a function to fetch the data
 const fetchData = async () => {
        const res = await axios.get(`${apiLink}`, { headers: { Accept: "application/json" } });

return (


); } export default Joke;

From the code above:

I created a state const [joke, setJoke] = useState([])
to store the data from the api and created a function fetchData 
to fetch data from the api that was stored in the variable 
const apiLink = ""; then created the response variable const res = await axios.get(${apiLink}, { headers: { Accept: "application/json" } }).
We use async and await to wait for the data any time it fetches it. We also logged the data to the browser console so we can see what we fetched from the API. If you open your browser console by pressing f12 you will see the data from the API in an object {data}.

Next we are going to be displaying the jokes inside our browser.
Let’s go 🚀🚀🚀…

//imports ....

const Joke = () => {
    const [joke, setJokes] = useState([]);

    const apiLink = "";

    const fetchData = async () => {
        const res = await axios.get(`${apiLink}`, { headers: { Accept: "application/json" } });
    return (


{/*Fetch data from url*/} Load jokes {/*data from api goes here*/} {joke &&, index) => (
) } export default Joke;

From the code above:

In the fetchData function, we set the state to the response of every joke we get from the API setJokes([]);.In the return statement we passed in the fetchData function to a button, for any time we click the button it loads new jokes Load jokes.

From the code below:

We are mapping through the joke array if there is any joke, and returning the joke from the API in a div.

  {/*data from api goes here*/}
                    {joke &&, index) => (

Now start your app you would see Joke: and Load jokes displaying. When you click on the Load jokes button new jokes are displayed. It should look like this:


In this article, we have seen how to use a REST API in react. By using the GETmethod to get data from the API in JSON format then incorporating that data into our application.

from Tumblr

Creating day-night CSS only toggle switch

Creating day-night CSS only toggle switch:

In this article, I’ll recreate this in CSS and help you understand the elements and code you will need to do the same.

The result will look like this:

HTML Structure


Yes, that’s all the HTML we need, weird right?
We will use a lot of pseudo-elements to add the little styling gimmicks.

The basic idea is that we use the label to control the checkbox, the checkbox in turn will be hidden.
But it’s checked state will cause the switch effect.

We did use this effect before in this CSS Custom checkbox article.

CSS only day/night toggle switch

To create our switch we need to use quite a lot of pseudo-elements.

But let’s start with the basics.
We need to hide our checkbox, the checkbox is only used to toggle our styling.

The label will be the one visible and toggling the checkbox

We use ‘display: none’ to hide our checkbox

.toggle--checkbox {
  display: none;

Once that is out of the way let’s use CSS grid to center everything in our body.

body {
  display: grid;
  place-items: center;
  min-height: 100vh;
  position: relative;

I’m using CSS variables for this tutorial, just for the colours, here is the variable declaration:

:root {
  /** sunny side **/
  --blue-background: #c2e9f6;
  --blue-border: #72cce3;
  --blue-color: #96dcee;
  --yellow-background: #fffaa8;
  --yellow-border: #f5eb71;
  /** dark side **/
  --indigo-background: #808fc7;
  --indigo-border: #5d6baa;
  --indigo-color: #6b7abb;
  --gray-border: #e8e8ea;
  --gray-dots: #e8e8ea;
  /** general **/
  --white: #fff;

Then, we should move to the label styling as you see in the end result this is about twice the size of our sun and moon element.

We also add a transition so it will animate with ease. In this case, the animation will be the background and border color.

.toggle--label {
  width: 200px;
  height: 100px;
  background: var(--blue-color);
  border-radius: 100px;
  border: 5px solid var(--blue-border);
  display: flex;
  position: relative;
  transition: all 350ms ease-in;

This code will result in the following.

Let’s add our first pseudo-element the sun icon.
It is an absolute position element and has a fixed width and height.

.toggle--label:before {
  animation-name: reverse;
  animation-duration: 350ms;
  animation-fill-mode: forwards;
  transition: all 350ms ease-in;
  content: '';
  width: 82px;
  height: 82px;
  border: 5px solid var(--yellow-border);
  top: 4px;
  left: 4px;
  position: absolute;
  border-radius: 82px;
  background: var(--yellow-background);

Note: don’t use border-radius: 50% since we want to expand the width of this element.

Now we should see the following result.

We also add a custom animation called reverse, this animation takes 350ms to complete and the fill-mode is set to ‘forwards’ which means it will stop at the last frame.

This animation is as follows:

@keyframes reverse {
  0% {
    left: 104px;
    width: 82px;
  60% {
    left: 72px;
    width: 112px;
  100% {
    left: 4px;

What happens, is that we start on our initial value, and then 60% of the time (350ms) we modify the left position and width.
Then from 60-100%, we change the position to 4px.
This gives us a neat grow and move effect.

We also see the main background div it’s used for the full color and is absolutely positioned in our body.

The only thing that will change there is the background color.

.background {
  position: absolute;
  left: 0;
  top: 0;
  background: var(--blue-background);
  z-index: -1;
  width: 100%;
  height: 100%;
  transition: all 250ms ease-in;

Adding the cloud detail

You might have also noted the white cloud in the sun switch, we will animate this to transform into the stars so it’s based on three elements.

The main element is the span background inside the label. This in turn has a before and after pseudo-element.

The main span is relatively positioned on the right-hand side, it has a transition that takes 150ms so it’s faster than our main toggle.

.toggle--label-background {
  width: 10px;
  height: 5px;
  border-radius: 5px;
  position: relative;
  background: var(--white);
  left: 135px;
  top: 45px;
  transition: all 150ms ease-in;

This alone results in the following:

The before and after are absolute positioned elements that resemble the top and bottom part of the cloud.

.toggle--label-background:before {
  content: '';
  position: absolute;
  top: -5px;
  width: 40px;
  height: 5px;
  border-radius: 5px;
  background: var(--white);
  left: -20px;
  transition: all 150ms ease-in;
.toggle--label-background:after {
  content: '';
  position: absolute;
  top: 5px;
  width: 40px;
  height: 5px;
  border-radius: 5px;
  background: var(--white);
  left: -10px;
  transition: all 150ms ease-in;

With those, we get the simplistic looking cloud.

CSS changing styling based on checked class

Now that we have our default sunny side of the toggle let’s go ahead and see how to make it switch to the nighttime mode.

There is a really cool feature where you can detect a checkbox checked state and then target the next element.

The code works as follows

.toggle--checkbox:checked + element {
  // Element can be after our checkbox

Knowing that we will start with the background.

.toggle--checkbox:checked ~ .background {
  background: var(--indigo-background);

Now if we click our label the background will change.

So knowing this works we can go ahead and use this principle for our label.

I’ve said we only need to change the background and border so the CSS is as follows

.toggle--checkbox:checked + .toggle--label {
  background: var(--indigo-color);
  border-color: var(--indigo-border);

And this result in the following

Let’s continue and change our sun into a moon, this has the same idea a change of background and border is enough, but we want to reverse the animation so we add another custom animation to this one.

.toggle--checkbox:checked + .toggle--label:before {
  background: var(--white);
  border-color: var(--gray-border);
  animation-name: switch;
  animation-duration: 350ms;
  animation-fill-mode: forwards;

The animation is the same as the “reverse” one, but from left to right.

@keyframes switch {
  0% {
    left: 4px;
  60% {
    left: 4px;
    width: 112px;
  100% {
    left: 104px;
    width: 82px;

Then for the moon, we need to add another after to show some dimples.

.toggle--label:after {
  transition-delay: 0ms;
  transition: all 250ms ease-in;
  position: absolute;
  content: '';
  box-shadow: var(--gray-dots) -13px 0 0 2px, var(--gray-dots) -24px 14px 0 -2px;
  left: 143px;
  top: 23px;
  width: 10px;
  height: 10px;
  background: transparent;
  border-radius: 50%;
  opacity: 0;

This has an opacity of 0 and once it’s checked we will show it.
You also see we use a box-shadow to actually create this effect.
What this does is create two circles positioned left from the actual element.

Then once we clicked the CSS will need to change the opacity

.toggle--checkbox:checked + .toggle--label:after {
  transition-delay: 350ms;
  opacity: 1;

I think these little dimples make a big difference, wouldn’t you agree?

The last part is that we want to move our cloud and turn it into the three stars.

We move the positions around and make them a bit smaller.

.toggle--checkbox:checked + .toggle--label .toggle--label-background {
  left: 60px;
  width: 5px;
.toggle--checkbox:checked + .toggle--label .toggle--label-background:before {
  width: 5px;
  height: 5px;
  top: -25px;
.toggle--checkbox:checked + .toggle--label .toggle--label-background:after {
  width: 5px;
  height: 5px;
  left: -30px;
  top: 20px;

That gives us the following end result, have a play on this Codepen.

Thank you for reading

from Tumblr

5 GitHub Repos for creating Resumes

5 GitHub Repos for creating Resumes:


There is a chapter in the book Soft Skills: The software developer’s life manualwhich says a resume is like an advertising brochure. The advertisement is trying to get a hiring manager to fork over $60,000, $80,000, or more to rent a software developer for a year. And most cases our resumes are not up to the mark as we are not professional resume writers.

Why write a resume when we can code it.

I have curated five fantastic Github repositories that can be modified easily to create your Resume/CV.

1. salomonelli/best-resume-ever

GitHub stars: 89,300

👔 💼 Build fast 🚀 and easy multiple beautiful resumes and create your best CV ever! Made with Vue and LESS

2. sharu725/online-cv

GitHub stars: 1512

It’s A minimal Jekyll Theme to host your resume (CV). Edit data.yml and add your information. it can be hosted easily on Github pages / Netlify.

3. jsonresume/resume-cli

GitHub stars: 3680

JSON Resume is a community-driven open-source initiative to create a JSON-based standard for resumes. The advantage here is that once a JSON is created we can any theme from over 250+ packages listed on npm.

4. WebPraktikos/universal-resume

GitHub stars: 1300

Minimal and formal résumé (CV) website template for print, mobile, and desktop. It’s built with amazing Tailwind CSS.

5. elipapa/markdown-cv

GitHub stars: 672

It’s a simple template to write your CV in a readable markdown file and use CSS to publish/print it.


  • Check the forks of the repo, to see how other developers have used the template to create their resumes.

  • Host your resume on Github Pages

  • When a resume is created in Jekyll, It a little difficult to create a pdf of resume. use to convert HTML to PDF without any watermark.

from Tumblr