Tag Archive

project

Use dbg to check your Elixir code

  • 1 min read

Debugging Elixir code has become even more accessible thanks to the dbg function. Thanks to the latest version, your work may become more pleasant and the search for errors even easier. Check how to apply new possibilities in your code. A simple one-line can facilitate your error analysis.

Solving problems is not easy

  • 4 min read

The initial solution we wanted to apply may turn out to be insufficient. Try to provide as much helpful information as possible. Make sure you understand all the requirements well. Don’t be afraid that something will go wrong. Failure isn’t fatal, but failure to change might be.

Health status without log request

  • 1 min read

Sometimes our application collects more logs than we would expect. Especially in the case of endpoints responsible for the server status. Thanks to a simple plug, you can inform about the system state all the time without logging this request.

The Twelve-Factor App methodology

  • 6 min read

The Twelve-Factor App methodology is a methodology for building software-as-a-service applications. It allows you to eliminate the most common problems with our applications. Some of them have already become the industry standard, so you should get to know them all. The methodology constitutes design guidelines strongly focused on cloud-native, portable, and resilient applications.

Guards - simple restriction checking

  • 1 min read

Guards are a great way to check data limits. They are safe and can make the everyday work with the project more pleasant and, at the same time, limit the duplicated code. And it’s all in pattern matching!

Find leaked credentials with TruffleHog

  • 1 min read

One of the possible vectors of an attack on the system is the disclosure of the used keys, certificates, or other access data. I found TruffleHog as a tool to verify your project. The tool can scan projects on GitHub or GitLab, including entire organizations! You can attach them to your CI/CD pipeline to verify that no confidential information has been published.

Using JSON Web Tokens and their security

  • 3 min read

JSON Web Tokens known as JWT, are a great way to ensure security in communication between system parts. Remember not to trust the user and verify the data before use. JWT contains a lot of information about the user and his permissions. It is also a well-thought-out structure. It indicates in an accessible way for whom and by whom the token was prepared. Also, check out the topic of key rotation and its benefits.

Delegate tasks, and don’t be afraid to say no!

  • 2 min read

Feeling overwhelmed by work is quite a common feeling. Especially if we work on the project for a long time. Good planning can make your work more pleasant and simplified. You don’t have to complete all tasks (alone). Some tasks can even be removed. With the Eisenhower matrix you can manage your priorities.

Good error message

  • 3 min read

Error handling is an integral part of any project. However, only a few can do it well. What makes an error message good? Take care of the language of the message, its length and indicate how to mitigate errors. Have automatic bug reporting tools to quickly respond to system problems.

Zero downtime deployments

  • 3 min read

Not so long ago, to release the application, it was necessary to modify the binary files on the servers. Thanks to good DevOps practices, the entire process can be changed. It is possible to achieve tens or hundreds of releases each day. Everything without the downtime of the application.

A ways to be a more effective engineer

  • 6 min read

Start from understanding the needs and point of view of the organization. Take care of good communication with customers. Don’t be afraid to develop both technical and soft skills. You will have a lot of battles at work. Choose wisely what you can engage in, given your limited time capacity. Act locally, think globally to change the project in small steps. Use non-hanging fruit to be successful and avoid burnout.

Skills development as the best investment in life

  • 5 min read

In my opinion, the best investment is our development. It allows us to achieve better results, receives promotions, and increase our remuneration. By investing in ourselves, we invest in our future. You didn’t know everything (and you still don’t know everything). It is worth trying to help others and learning at the same time.

Using View as a way to simplify your system

  • 2 min read

Many applications introduce some kind of status to make it easier to share data. However, more and more modules in your codebase need to be explicit about these assumptions. Views can eliminate the problematic SQL query. It’s also great way to introduce well-defined entities.

Automatic tests won’t solve all your problems

  • 4 min read

Automated testing can unburden Quality Assurance teams from the monotonous manual review of every change. They can also be a great acceleration for programmers. But they won’t make your organization or product great overnight. It would help if you had people’s support, a clear plan, and an understanding of expectations.

Parkinson’s Law

  • 2 min read

The more time we have to do the job (especially in the office), the longer it takes. Work complicates to fill the available time. Check out Parkinson’s Law and understand why!

Phoenix 1.6 released!

  • 3 min read

We have a new version of the most popular Elixir framework - Phoenix framework. New generators, fixes and improvements are now available. Find out more about the new HEEx engine.

Recruitment and IT - when two worlds meet

  • 6 min read

A good recruitment process starts with a personalized message selected for a specific candidate. Worth mentioning which technologies are used in the project. Try to keep the first conversations short but very meaningful so that neither party feels like wasting their time.

Faster test execution in Elixir

  • 3 min read

Try to use setup_all to prepare the data once and re-use it in tests. Use tags to have a better context and be able to exclude some tests. Prepare a processing pipeline to check the quick tests first, and when they do not fail, take care of the more time-demanding tests.

Code review is not for catching bugs

  • 4 min read

Code review can be an opportunity to sharing knowledge. Finding errors is a side effect of the entire code review process. Thanks to code review, you can promote one standard style of changes to the entire team. Don’t be afraid to ask if you don’t understand something.

Response status and the security of your API

  • 1 min read

Have you thought about the response statuses of your endpoints? Some of them can be used for scanning your architecture. Some attacks on IT systems target the weakest areas, which may be addresses used for internal purposes.

Take care of your customers

  • 5 min read

Instead of focusing solely on our business, we should try to understand the client’s expectations. Your client’s success is your success. A satisfied customer is our primary source of recommendations. Treat others as you would like others to treat you.

Principles of estimating

  • 3 min read

We expect our estimates will have a positive impact on the implementation. The most significant value of the estimation is not the value itself. It is a better understanding of the project, and a consistent view of the tasks carried out.

Personal roadmap - find your way

  • 2 min read

Companies often create strategy plans called roadmaps. In the case of a personal roadmap, the plan is for a specific person - you. It can be a great way to achieve your goals and expectations.

Empirical approach to refactoring

  • 1 min read

We don’t touch the code in our projects with equal frequency. The tool for automatically discovering candidates comes in handy by identifying the most frequently modified files with high cyclomatic complexity. Then we can focus on these files and make changes to work with better codebase.

Knowledge sharing is important

  • 2 min read

Knowledge sharing can be a great way to grow faster. It’s also an excellent opportunity to build the image of the expert. There will always be someone we can help. Our knowledge can be helpful and a huge step in personal development.

Business doesn’t understand technical debt

  • 2 min read

Developers and business misunderstand the concept of technical debt. Building on weak foundations can result in losses and risks to your business. Instead of talking about debt, we should talk about missed opportunities.

Take notes during the meetings

  • 1 min read

Taking notes and summaries of meetings can provide a better engagement in discussions. Notes can also be a source of truth and a good reference while working. Do it on paper or immediately digitally, depending on your preferences.

How to overcome task delay?

  • 1 min read

You don’t want to postpone tasks? The best way is to change your approach and set the time window for the project. Instead of dividing up into tasks and thinking about everything right away, you can accomplish as much as you can.

The enemy of good work and code

  • 3 min read

We spend most of our life at work. Work should not be a place where we are forced to go. Have you considered the enemies of our work? Blame culture, ego, responsibilities - these are only some of the topics worth paying attention to.

Document your learning

  • 2 min read

Recently I came across the topic of learning and documenting progress. Sharing our development with others can be done in many ways. I want to share my opinion about the advantages I see.

Top things that annoy programmers

  • 2 min read

Daily work provides many situations to upset, surprise, and even laugh. I asked my friends who are programmers what annoyed them. Please don’t take it as a complaint, but rather as an opportunity to change.

The most important thing in the project

  • 1 min read

No project is perfect from the start. The real problems are very complicated. While something seems simple and fits perfectly, it may not be. I want to present the most critical and unchanging aspect of each project.

Get noticed at a new project

  • 4 min read

Changing your job or team often means changing the current project. It can be a difficult situation for most, especially at the beginning. The first impression can only be made once. It’s worth doing it right. See what we should do to get noticed at a new project.

Back to Top ↑

learning

TIL: Using phash2 for data partitioning

  • ~1 min read

In programming, we often need fairly distribution of data. Using phash2 we can get the same hash for the same Erlang term regardless of machine architecture and ERTS version. This fast function should always be used for hashing any data and limiting the result to a range of integers.

Use dbg to check your Elixir code

  • 1 min read

Debugging Elixir code has become even more accessible thanks to the dbg function. Thanks to the latest version, your work may become more pleasant and the search for errors even easier. Check how to apply new possibilities in your code. A simple one-line can facilitate your error analysis.

The Twelve-Factor App methodology

  • 6 min read

The Twelve-Factor App methodology is a methodology for building software-as-a-service applications. It allows you to eliminate the most common problems with our applications. Some of them have already become the industry standard, so you should get to know them all. The methodology constitutes design guidelines strongly focused on cloud-native, portable, and resilient applications.

Find leaked credentials with TruffleHog

  • 1 min read

One of the possible vectors of an attack on the system is the disclosure of the used keys, certificates, or other access data. I found TruffleHog as a tool to verify your project. The tool can scan projects on GitHub or GitLab, including entire organizations! You can attach them to your CI/CD pipeline to verify that no confidential information has been published.

Good error message

  • 3 min read

Error handling is an integral part of any project. However, only a few can do it well. What makes an error message good? Take care of the language of the message, its length and indicate how to mitigate errors. Have automatic bug reporting tools to quickly respond to system problems.

A ways to be a more effective engineer

  • 6 min read

Start from understanding the needs and point of view of the organization. Take care of good communication with customers. Don’t be afraid to develop both technical and soft skills. You will have a lot of battles at work. Choose wisely what you can engage in, given your limited time capacity. Act locally, think globally to change the project in small steps. Use non-hanging fruit to be successful and avoid burnout.

Skills development as the best investment in life

  • 5 min read

In my opinion, the best investment is our development. It allows us to achieve better results, receives promotions, and increase our remuneration. By investing in ourselves, we invest in our future. You didn’t know everything (and you still don’t know everything). It is worth trying to help others and learning at the same time.

Automatic tests won’t solve all your problems

  • 4 min read

Automated testing can unburden Quality Assurance teams from the monotonous manual review of every change. They can also be a great acceleration for programmers. But they won’t make your organization or product great overnight. It would help if you had people’s support, a clear plan, and an understanding of expectations.

Parkinson’s Law

  • 2 min read

The more time we have to do the job (especially in the office), the longer it takes. Work complicates to fill the available time. Check out Parkinson’s Law and understand why!

Long-term thinking

  • 2 min read

Everything around us makes us concentrate on what is available immediately and instantly. Short-term gains and results are much more appreciated than long-term with much better results. Long-term thinking and acting following this thought is the key to a peaceful life on your own terms.

Kranzberg’s laws of technology

  • 1 min read

Have you wondered about the nature of technology? Technology is neither good nor bad, nor is it neutral. The invention is the mother of necessity. The same technology may have completely different results. New needs, as well as new technical possibilities, make the impossible possible.

What could the Internet of the future look like?

  • ~1 min read

Have you ever wondered what the Internet might look like in the future? With the Wayforward Machine, we can move into the future to see how the Internet has dealt with the problem of advertising, user tracking, paywall, and all kinds of cybersecurity problems.

Code review is not for catching bugs

  • 4 min read

Code review can be an opportunity to sharing knowledge. Finding errors is a side effect of the entire code review process. Thanks to code review, you can promote one standard style of changes to the entire team. Don’t be afraid to ask if you don’t understand something.

Programmer’s personal branding

  • 3 min read

Personal branding is not only social media and a broad group of followers on Twitter or LinkedIn. It is the opinion of others about us and our suitability for a given topic. Building personal branding is a long process.

Personal roadmap - find your way

  • 2 min read

Companies often create strategy plans called roadmaps. In the case of a personal roadmap, the plan is for a specific person - you. It can be a great way to achieve your goals and expectations.

Knowledge sharing is important

  • 2 min read

Knowledge sharing can be a great way to grow faster. It’s also an excellent opportunity to build the image of the expert. There will always be someone we can help. Our knowledge can be helpful and a huge step in personal development.

The enemy of good work and code

  • 3 min read

We spend most of our life at work. Work should not be a place where we are forced to go. Have you considered the enemies of our work? Blame culture, ego, responsibilities - these are only some of the topics worth paying attention to.

The best learning resource: Harvard CS50 course

  • 1 min read

Harvard CS50 - probably the best free introductory programming course you can find. What does it offer, and why is it worth it? An excellent introduction to C and Python languages, data allocation, pointers, heap, and many others concepts.

Document your learning

  • 2 min read

Recently I came across the topic of learning and documenting progress. Sharing our development with others can be done in many ways. I want to share my opinion about the advantages I see.

Back to Top ↑

management

Solving problems is not easy

  • 4 min read

The initial solution we wanted to apply may turn out to be insufficient. Try to provide as much helpful information as possible. Make sure you understand all the requirements well. Don’t be afraid that something will go wrong. Failure isn’t fatal, but failure to change might be.

The Twelve-Factor App methodology

  • 6 min read

The Twelve-Factor App methodology is a methodology for building software-as-a-service applications. It allows you to eliminate the most common problems with our applications. Some of them have already become the industry standard, so you should get to know them all. The methodology constitutes design guidelines strongly focused on cloud-native, portable, and resilient applications.

Delegate tasks, and don’t be afraid to say no!

  • 2 min read

Feeling overwhelmed by work is quite a common feeling. Especially if we work on the project for a long time. Good planning can make your work more pleasant and simplified. You don’t have to complete all tasks (alone). Some tasks can even be removed. With the Eisenhower matrix you can manage your priorities.

Good error message

  • 3 min read

Error handling is an integral part of any project. However, only a few can do it well. What makes an error message good? Take care of the language of the message, its length and indicate how to mitigate errors. Have automatic bug reporting tools to quickly respond to system problems.

A ways to be a more effective engineer

  • 6 min read

Start from understanding the needs and point of view of the organization. Take care of good communication with customers. Don’t be afraid to develop both technical and soft skills. You will have a lot of battles at work. Choose wisely what you can engage in, given your limited time capacity. Act locally, think globally to change the project in small steps. Use non-hanging fruit to be successful and avoid burnout.

Skills development as the best investment in life

  • 5 min read

In my opinion, the best investment is our development. It allows us to achieve better results, receives promotions, and increase our remuneration. By investing in ourselves, we invest in our future. You didn’t know everything (and you still don’t know everything). It is worth trying to help others and learning at the same time.

Automatic tests won’t solve all your problems

  • 4 min read

Automated testing can unburden Quality Assurance teams from the monotonous manual review of every change. They can also be a great acceleration for programmers. But they won’t make your organization or product great overnight. It would help if you had people’s support, a clear plan, and an understanding of expectations.

Parkinson’s Law

  • 2 min read

The more time we have to do the job (especially in the office), the longer it takes. Work complicates to fill the available time. Check out Parkinson’s Law and understand why!

Long-term thinking

  • 2 min read

Everything around us makes us concentrate on what is available immediately and instantly. Short-term gains and results are much more appreciated than long-term with much better results. Long-term thinking and acting following this thought is the key to a peaceful life on your own terms.

Recruitment and IT - when two worlds meet

  • 6 min read

A good recruitment process starts with a personalized message selected for a specific candidate. Worth mentioning which technologies are used in the project. Try to keep the first conversations short but very meaningful so that neither party feels like wasting their time.

Programmer’s personal branding

  • 3 min read

Personal branding is not only social media and a broad group of followers on Twitter or LinkedIn. It is the opinion of others about us and our suitability for a given topic. Building personal branding is a long process.

Take care of your customers

  • 5 min read

Instead of focusing solely on our business, we should try to understand the client’s expectations. Your client’s success is your success. A satisfied customer is our primary source of recommendations. Treat others as you would like others to treat you.

Principles of estimating

  • 3 min read

We expect our estimates will have a positive impact on the implementation. The most significant value of the estimation is not the value itself. It is a better understanding of the project, and a consistent view of the tasks carried out.

Business doesn’t understand technical debt

  • 2 min read

Developers and business misunderstand the concept of technical debt. Building on weak foundations can result in losses and risks to your business. Instead of talking about debt, we should talk about missed opportunities.

Take notes during the meetings

  • 1 min read

Taking notes and summaries of meetings can provide a better engagement in discussions. Notes can also be a source of truth and a good reference while working. Do it on paper or immediately digitally, depending on your preferences.

Self-management in time

  • 3 min read

Since you can’t manage time, let’s try to manage yourself in time. Avoid multitasking, focus on one activity, and try to do the best you can. Group tasks into blocks to reduce context switching. Remember that meetings can be tiring.

Time is the most valuable resource

  • ~1 min read

Time can be the best gift our loved ones can receive. It’s you who gets to live your one and only life. Don’t let people who won’t ever live with the consequences of your choices determine how you spend your time.

How to overcome task delay?

  • 1 min read

You don’t want to postpone tasks? The best way is to change your approach and set the time window for the project. Instead of dividing up into tasks and thinking about everything right away, you can accomplish as much as you can.

The enemy of good work and code

  • 3 min read

We spend most of our life at work. Work should not be a place where we are forced to go. Have you considered the enemies of our work? Blame culture, ego, responsibilities - these are only some of the topics worth paying attention to.

Document your learning

  • 2 min read

Recently I came across the topic of learning and documenting progress. Sharing our development with others can be done in many ways. I want to share my opinion about the advantages I see.

The most important thing in the project

  • 1 min read

No project is perfect from the start. The real problems are very complicated. While something seems simple and fits perfectly, it may not be. I want to present the most critical and unchanging aspect of each project.

Why choose Elixir?

  • 3 min read

Companies operate in an uncertain environment. Uncertain technology is certainly not something that will interest them. What makes companies decide to use Elixir language?

How to work remotely without going crazy

  • 4 min read

Most of us have moved from working in the office to working from home. For most, this was a new and unexpected situation. Reflecting on the topic of remote work, I wanted to prepare a list of activities that will allow us to avoid lack of concentration, constant monotony, and being at work 24 hours a day.

Back to Top ↑

tips

TIL: Using phash2 for data partitioning

  • ~1 min read

In programming, we often need fairly distribution of data. Using phash2 we can get the same hash for the same Erlang term regardless of machine architecture and ERTS version. This fast function should always be used for hashing any data and limiting the result to a range of integers.

Use dbg to check your Elixir code

  • 1 min read

Debugging Elixir code has become even more accessible thanks to the dbg function. Thanks to the latest version, your work may become more pleasant and the search for errors even easier. Check how to apply new possibilities in your code. A simple one-line can facilitate your error analysis.

Solving problems is not easy

  • 4 min read

The initial solution we wanted to apply may turn out to be insufficient. Try to provide as much helpful information as possible. Make sure you understand all the requirements well. Don’t be afraid that something will go wrong. Failure isn’t fatal, but failure to change might be.

Health status without log request

  • 1 min read

Sometimes our application collects more logs than we would expect. Especially in the case of endpoints responsible for the server status. Thanks to a simple plug, you can inform about the system state all the time without logging this request.

The Twelve-Factor App methodology

  • 6 min read

The Twelve-Factor App methodology is a methodology for building software-as-a-service applications. It allows you to eliminate the most common problems with our applications. Some of them have already become the industry standard, so you should get to know them all. The methodology constitutes design guidelines strongly focused on cloud-native, portable, and resilient applications.

TIL: Temporary data folder

  • ~1 min read

The temporary directory for data storage is often used. However, /tmp dir is not always a good solution. Depending on the configuration, it can be represented differently. Check how you can fix it with simple modification.

Guards - simple restriction checking

  • 1 min read

Guards are a great way to check data limits. They are safe and can make the everyday work with the project more pleasant and, at the same time, limit the duplicated code. And it’s all in pattern matching!

Using JSON Web Tokens and their security

  • 3 min read

JSON Web Tokens known as JWT, are a great way to ensure security in communication between system parts. Remember not to trust the user and verify the data before use. JWT contains a lot of information about the user and his permissions. It is also a well-thought-out structure. It indicates in an accessible way for whom and by whom the token was prepared. Also, check out the topic of key rotation and its benefits.

Delegate tasks, and don’t be afraid to say no!

  • 2 min read

Feeling overwhelmed by work is quite a common feeling. Especially if we work on the project for a long time. Good planning can make your work more pleasant and simplified. You don’t have to complete all tasks (alone). Some tasks can even be removed. With the Eisenhower matrix you can manage your priorities.

Good error message

  • 3 min read

Error handling is an integral part of any project. However, only a few can do it well. What makes an error message good? Take care of the language of the message, its length and indicate how to mitigate errors. Have automatic bug reporting tools to quickly respond to system problems.

Zero downtime deployments

  • 3 min read

Not so long ago, to release the application, it was necessary to modify the binary files on the servers. Thanks to good DevOps practices, the entire process can be changed. It is possible to achieve tens or hundreds of releases each day. Everything without the downtime of the application.

A ways to be a more effective engineer

  • 6 min read

Start from understanding the needs and point of view of the organization. Take care of good communication with customers. Don’t be afraid to develop both technical and soft skills. You will have a lot of battles at work. Choose wisely what you can engage in, given your limited time capacity. Act locally, think globally to change the project in small steps. Use non-hanging fruit to be successful and avoid burnout.

Skills development as the best investment in life

  • 5 min read

In my opinion, the best investment is our development. It allows us to achieve better results, receives promotions, and increase our remuneration. By investing in ourselves, we invest in our future. You didn’t know everything (and you still don’t know everything). It is worth trying to help others and learning at the same time.

Using View as a way to simplify your system

  • 2 min read

Many applications introduce some kind of status to make it easier to share data. However, more and more modules in your codebase need to be explicit about these assumptions. Views can eliminate the problematic SQL query. It’s also great way to introduce well-defined entities.

Long-term thinking

  • 2 min read

Everything around us makes us concentrate on what is available immediately and instantly. Short-term gains and results are much more appreciated than long-term with much better results. Long-term thinking and acting following this thought is the key to a peaceful life on your own terms.

Back to Top ↑

code

TIL: Using phash2 for data partitioning

  • ~1 min read

In programming, we often need fairly distribution of data. Using phash2 we can get the same hash for the same Erlang term regardless of machine architecture and ERTS version. This fast function should always be used for hashing any data and limiting the result to a range of integers.

Use dbg to check your Elixir code

  • 1 min read

Debugging Elixir code has become even more accessible thanks to the dbg function. Thanks to the latest version, your work may become more pleasant and the search for errors even easier. Check how to apply new possibilities in your code. A simple one-line can facilitate your error analysis.

Health status without log request

  • 1 min read

Sometimes our application collects more logs than we would expect. Especially in the case of endpoints responsible for the server status. Thanks to a simple plug, you can inform about the system state all the time without logging this request.

TIL: Temporary data folder

  • ~1 min read

The temporary directory for data storage is often used. However, /tmp dir is not always a good solution. Depending on the configuration, it can be represented differently. Check how you can fix it with simple modification.

Guards - simple restriction checking

  • 1 min read

Guards are a great way to check data limits. They are safe and can make the everyday work with the project more pleasant and, at the same time, limit the duplicated code. And it’s all in pattern matching!

Find leaked credentials with TruffleHog

  • 1 min read

One of the possible vectors of an attack on the system is the disclosure of the used keys, certificates, or other access data. I found TruffleHog as a tool to verify your project. The tool can scan projects on GitHub or GitLab, including entire organizations! You can attach them to your CI/CD pipeline to verify that no confidential information has been published.

TIL: Custom timestamps fields in Elixir

  • ~1 min read

Ecto Schema is very easy to adapt to our needs. Besides changing the type of the primary key, you can also change the type and names of the fields created by the timestamps() macro.

Using View as a way to simplify your system

  • 2 min read

Many applications introduce some kind of status to make it easier to share data. However, more and more modules in your codebase need to be explicit about these assumptions. Views can eliminate the problematic SQL query. It’s also great way to introduce well-defined entities.

UUID as Primary key with Ecto

  • 2 min read

A simple example of how to introduce a Universally unique identifier (UUID) into your project. You just need to remember a small modification in the migration and the column type change.

Ecto Named Bindings in your queries

  • 1 min read

Positional bindings can be problematic due to the order when building large queries with many different functions. Named bindings can be of great help in our challenges. It is not necessary to know the position to be able to refer to the variable. Creating reusable and maintainable queries doesn’t have to be complicated.

Phoenix 1.6 released!

  • 3 min read

We have a new version of the most popular Elixir framework - Phoenix framework. New generators, fixes and improvements are now available. Find out more about the new HEEx engine.

Faster test execution in Elixir

  • 3 min read

Try to use setup_all to prepare the data once and re-use it in tests. Use tags to have a better context and be able to exclude some tests. Prepare a processing pipeline to check the quick tests first, and when they do not fail, take care of the more time-demanding tests.

Dynamic Queries in Ecto

  • 3 min read

The macro Ecto Query dynamic/2 allows you to build query fragments and interpolate them into one large query. We get easy-to-manage query building in an accessible way. It allows you to control the parameters from the user and transparently create filtering of data stored in the database.

Empirical approach to refactoring

  • 1 min read

We don’t touch the code in our projects with equal frequency. The tool for automatically discovering candidates comes in handy by identifying the most frequently modified files with high cyclomatic complexity. Then we can focus on these files and make changes to work with better codebase.

New Elixir 1.12 - The developer’s point of view

  • 4 min read

The Elixir 1.12 version introduced some significant changes. The main one is the ability to create scripts and import dependencies via Mix.install. The interactive console can be more helpful in the software development, prototyping and debugging processes.

Ecto.Repo.stream/1 in large data processing

  • 1 min read

The datasets can be too large to handle entirely in-memory, but we should do the processing. With Ecto.Repo.stream/1 we can process it in batches. Tested in practice solution can come in handy when dealing with CSV export, updating indexes, and much more.

Manipulate enumerable: Enum vs. Stream

  • 2 min read

Two ways of handling enumerables dominate Elixir language. Seemingly very similar to each other, offering a matching set of possibilities, but they behave entirely differently.

Handling configuration variables in Elixir

  • 2 min read

We have some environmental variables in almost every Elixir application. They change the behavior of the system. They even allow you to reduce variables to be hard-coded somewhere in the depths of the code. I will show how you can use environment variables better.

Back to Top ↑

Elixir

TIL: Using phash2 for data partitioning

  • ~1 min read

In programming, we often need fairly distribution of data. Using phash2 we can get the same hash for the same Erlang term regardless of machine architecture and ERTS version. This fast function should always be used for hashing any data and limiting the result to a range of integers.

Use dbg to check your Elixir code

  • 1 min read

Debugging Elixir code has become even more accessible thanks to the dbg function. Thanks to the latest version, your work may become more pleasant and the search for errors even easier. Check how to apply new possibilities in your code. A simple one-line can facilitate your error analysis.

Health status without log request

  • 1 min read

Sometimes our application collects more logs than we would expect. Especially in the case of endpoints responsible for the server status. Thanks to a simple plug, you can inform about the system state all the time without logging this request.

TIL: Temporary data folder

  • ~1 min read

The temporary directory for data storage is often used. However, /tmp dir is not always a good solution. Depending on the configuration, it can be represented differently. Check how you can fix it with simple modification.

Guards - simple restriction checking

  • 1 min read

Guards are a great way to check data limits. They are safe and can make the everyday work with the project more pleasant and, at the same time, limit the duplicated code. And it’s all in pattern matching!

TIL: Custom timestamps fields in Elixir

  • ~1 min read

Ecto Schema is very easy to adapt to our needs. Besides changing the type of the primary key, you can also change the type and names of the fields created by the timestamps() macro.

Using View as a way to simplify your system

  • 2 min read

Many applications introduce some kind of status to make it easier to share data. However, more and more modules in your codebase need to be explicit about these assumptions. Views can eliminate the problematic SQL query. It’s also great way to introduce well-defined entities.

UUID as Primary key with Ecto

  • 2 min read

A simple example of how to introduce a Universally unique identifier (UUID) into your project. You just need to remember a small modification in the migration and the column type change.

Ecto Named Bindings in your queries

  • 1 min read

Positional bindings can be problematic due to the order when building large queries with many different functions. Named bindings can be of great help in our challenges. It is not necessary to know the position to be able to refer to the variable. Creating reusable and maintainable queries doesn’t have to be complicated.

Phoenix 1.6 released!

  • 3 min read

We have a new version of the most popular Elixir framework - Phoenix framework. New generators, fixes and improvements are now available. Find out more about the new HEEx engine.

Faster test execution in Elixir

  • 3 min read

Try to use setup_all to prepare the data once and re-use it in tests. Use tags to have a better context and be able to exclude some tests. Prepare a processing pipeline to check the quick tests first, and when they do not fail, take care of the more time-demanding tests.

Dynamic Queries in Ecto

  • 3 min read

The macro Ecto Query dynamic/2 allows you to build query fragments and interpolate them into one large query. We get easy-to-manage query building in an accessible way. It allows you to control the parameters from the user and transparently create filtering of data stored in the database.

Empirical approach to refactoring

  • 1 min read

We don’t touch the code in our projects with equal frequency. The tool for automatically discovering candidates comes in handy by identifying the most frequently modified files with high cyclomatic complexity. Then we can focus on these files and make changes to work with better codebase.

New Elixir 1.12 - The developer’s point of view

  • 4 min read

The Elixir 1.12 version introduced some significant changes. The main one is the ability to create scripts and import dependencies via Mix.install. The interactive console can be more helpful in the software development, prototyping and debugging processes.

Ecto.Repo.stream/1 in large data processing

  • 1 min read

The datasets can be too large to handle entirely in-memory, but we should do the processing. With Ecto.Repo.stream/1 we can process it in batches. Tested in practice solution can come in handy when dealing with CSV export, updating indexes, and much more.

Manipulate enumerable: Enum vs. Stream

  • 2 min read

Two ways of handling enumerables dominate Elixir language. Seemingly very similar to each other, offering a matching set of possibilities, but they behave entirely differently.

Why choose Elixir?

  • 3 min read

Companies operate in an uncertain environment. Uncertain technology is certainly not something that will interest them. What makes companies decide to use Elixir language?

Handling configuration variables in Elixir

  • 2 min read

We have some environmental variables in almost every Elixir application. They change the behavior of the system. They even allow you to reduce variables to be hard-coded somewhere in the depths of the code. I will show how you can use environment variables better.

Back to Top ↑

teamwork

Solving problems is not easy

  • 4 min read

The initial solution we wanted to apply may turn out to be insufficient. Try to provide as much helpful information as possible. Make sure you understand all the requirements well. Don’t be afraid that something will go wrong. Failure isn’t fatal, but failure to change might be.

The Twelve-Factor App methodology

  • 6 min read

The Twelve-Factor App methodology is a methodology for building software-as-a-service applications. It allows you to eliminate the most common problems with our applications. Some of them have already become the industry standard, so you should get to know them all. The methodology constitutes design guidelines strongly focused on cloud-native, portable, and resilient applications.

Using JSON Web Tokens and their security

  • 3 min read

JSON Web Tokens known as JWT, are a great way to ensure security in communication between system parts. Remember not to trust the user and verify the data before use. JWT contains a lot of information about the user and his permissions. It is also a well-thought-out structure. It indicates in an accessible way for whom and by whom the token was prepared. Also, check out the topic of key rotation and its benefits.

Delegate tasks, and don’t be afraid to say no!

  • 2 min read

Feeling overwhelmed by work is quite a common feeling. Especially if we work on the project for a long time. Good planning can make your work more pleasant and simplified. You don’t have to complete all tasks (alone). Some tasks can even be removed. With the Eisenhower matrix you can manage your priorities.

Good error message

  • 3 min read

Error handling is an integral part of any project. However, only a few can do it well. What makes an error message good? Take care of the language of the message, its length and indicate how to mitigate errors. Have automatic bug reporting tools to quickly respond to system problems.

A ways to be a more effective engineer

  • 6 min read

Start from understanding the needs and point of view of the organization. Take care of good communication with customers. Don’t be afraid to develop both technical and soft skills. You will have a lot of battles at work. Choose wisely what you can engage in, given your limited time capacity. Act locally, think globally to change the project in small steps. Use non-hanging fruit to be successful and avoid burnout.

Skills development as the best investment in life

  • 5 min read

In my opinion, the best investment is our development. It allows us to achieve better results, receives promotions, and increase our remuneration. By investing in ourselves, we invest in our future. You didn’t know everything (and you still don’t know everything). It is worth trying to help others and learning at the same time.

Automatic tests won’t solve all your problems

  • 4 min read

Automated testing can unburden Quality Assurance teams from the monotonous manual review of every change. They can also be a great acceleration for programmers. But they won’t make your organization or product great overnight. It would help if you had people’s support, a clear plan, and an understanding of expectations.

Parkinson’s Law

  • 2 min read

The more time we have to do the job (especially in the office), the longer it takes. Work complicates to fill the available time. Check out Parkinson’s Law and understand why!

Faster test execution in Elixir

  • 3 min read

Try to use setup_all to prepare the data once and re-use it in tests. Use tags to have a better context and be able to exclude some tests. Prepare a processing pipeline to check the quick tests first, and when they do not fail, take care of the more time-demanding tests.

Code review is not for catching bugs

  • 4 min read

Code review can be an opportunity to sharing knowledge. Finding errors is a side effect of the entire code review process. Thanks to code review, you can promote one standard style of changes to the entire team. Don’t be afraid to ask if you don’t understand something.

Principles of estimating

  • 3 min read

We expect our estimates will have a positive impact on the implementation. The most significant value of the estimation is not the value itself. It is a better understanding of the project, and a consistent view of the tasks carried out.

The enemy of good work and code

  • 3 min read

We spend most of our life at work. Work should not be a place where we are forced to go. Have you considered the enemies of our work? Blame culture, ego, responsibilities - these are only some of the topics worth paying attention to.

Top things that annoy programmers

  • 2 min read

Daily work provides many situations to upset, surprise, and even laugh. I asked my friends who are programmers what annoyed them. Please don’t take it as a complaint, but rather as an opportunity to change.

Get noticed at a new project

  • 4 min read

Changing your job or team often means changing the current project. It can be a difficult situation for most, especially at the beginning. The first impression can only be made once. It’s worth doing it right. See what we should do to get noticed at a new project.

Back to Top ↑

explanation

Solving problems is not easy

  • 4 min read

The initial solution we wanted to apply may turn out to be insufficient. Try to provide as much helpful information as possible. Make sure you understand all the requirements well. Don’t be afraid that something will go wrong. Failure isn’t fatal, but failure to change might be.

Health status without log request

  • 1 min read

Sometimes our application collects more logs than we would expect. Especially in the case of endpoints responsible for the server status. Thanks to a simple plug, you can inform about the system state all the time without logging this request.

TIL: Temporary data folder

  • ~1 min read

The temporary directory for data storage is often used. However, /tmp dir is not always a good solution. Depending on the configuration, it can be represented differently. Check how you can fix it with simple modification.

Using JSON Web Tokens and their security

  • 3 min read

JSON Web Tokens known as JWT, are a great way to ensure security in communication between system parts. Remember not to trust the user and verify the data before use. JWT contains a lot of information about the user and his permissions. It is also a well-thought-out structure. It indicates in an accessible way for whom and by whom the token was prepared. Also, check out the topic of key rotation and its benefits.

Good error message

  • 3 min read

Error handling is an integral part of any project. However, only a few can do it well. What makes an error message good? Take care of the language of the message, its length and indicate how to mitigate errors. Have automatic bug reporting tools to quickly respond to system problems.

Kranzberg’s laws of technology

  • 1 min read

Have you wondered about the nature of technology? Technology is neither good nor bad, nor is it neutral. The invention is the mother of necessity. The same technology may have completely different results. New needs, as well as new technical possibilities, make the impossible possible.

What could the Internet of the future look like?

  • ~1 min read

Have you ever wondered what the Internet might look like in the future? With the Wayforward Machine, we can move into the future to see how the Internet has dealt with the problem of advertising, user tracking, paywall, and all kinds of cybersecurity problems.

Back to Top ↑

TIL

TIL: Using phash2 for data partitioning

  • ~1 min read

In programming, we often need fairly distribution of data. Using phash2 we can get the same hash for the same Erlang term regardless of machine architecture and ERTS version. This fast function should always be used for hashing any data and limiting the result to a range of integers.

TIL: Temporary data folder

  • ~1 min read

The temporary directory for data storage is often used. However, /tmp dir is not always a good solution. Depending on the configuration, it can be represented differently. Check how you can fix it with simple modification.

TIL: Custom timestamps fields in Elixir

  • ~1 min read

Ecto Schema is very easy to adapt to our needs. Besides changing the type of the primary key, you can also change the type and names of the fields created by the timestamps() macro.

UUID as Primary key with Ecto

  • 2 min read

A simple example of how to introduce a Universally unique identifier (UUID) into your project. You just need to remember a small modification in the migration and the column type change.

Back to Top ↑

team

Automatic tests won’t solve all your problems

  • 4 min read

Automated testing can unburden Quality Assurance teams from the monotonous manual review of every change. They can also be a great acceleration for programmers. But they won’t make your organization or product great overnight. It would help if you had people’s support, a clear plan, and an understanding of expectations.

Recruitment and IT - when two worlds meet

  • 6 min read

A good recruitment process starts with a personalized message selected for a specific candidate. Worth mentioning which technologies are used in the project. Try to keep the first conversations short but very meaningful so that neither party feels like wasting their time.

Document your learning

  • 2 min read

Recently I came across the topic of learning and documenting progress. Sharing our development with others can be done in many ways. I want to share my opinion about the advantages I see.

Back to Top ↑

security

Find leaked credentials with TruffleHog

  • 1 min read

One of the possible vectors of an attack on the system is the disclosure of the used keys, certificates, or other access data. I found TruffleHog as a tool to verify your project. The tool can scan projects on GitHub or GitLab, including entire organizations! You can attach them to your CI/CD pipeline to verify that no confidential information has been published.

Using JSON Web Tokens and their security

  • 3 min read

JSON Web Tokens known as JWT, are a great way to ensure security in communication between system parts. Remember not to trust the user and verify the data before use. JWT contains a lot of information about the user and his permissions. It is also a well-thought-out structure. It indicates in an accessible way for whom and by whom the token was prepared. Also, check out the topic of key rotation and its benefits.

Response status and the security of your API

  • 1 min read

Have you thought about the response statuses of your endpoints? Some of them can be used for scanning your architecture. Some attacks on IT systems target the weakest areas, which may be addresses used for internal purposes.

Back to Top ↑

business

Back to Top ↑

Phoenix

Use dbg to check your Elixir code

  • 1 min read

Debugging Elixir code has become even more accessible thanks to the dbg function. Thanks to the latest version, your work may become more pleasant and the search for errors even easier. Check how to apply new possibilities in your code. A simple one-line can facilitate your error analysis.

Back to Top ↑

automation

Find leaked credentials with TruffleHog

  • 1 min read

One of the possible vectors of an attack on the system is the disclosure of the used keys, certificates, or other access data. I found TruffleHog as a tool to verify your project. The tool can scan projects on GitHub or GitLab, including entire organizations! You can attach them to your CI/CD pipeline to verify that no confidential information has been published.

Zero downtime deployments

  • 3 min read

Not so long ago, to release the application, it was necessary to modify the binary files on the servers. Thanks to good DevOps practices, the entire process can be changed. It is possible to achieve tens or hundreds of releases each day. Everything without the downtime of the application.

Back to Top ↑

Ecto

Using View as a way to simplify your system

  • 2 min read

Many applications introduce some kind of status to make it easier to share data. However, more and more modules in your codebase need to be explicit about these assumptions. Views can eliminate the problematic SQL query. It’s also great way to introduce well-defined entities.

Back to Top ↑

DevOps

Find leaked credentials with TruffleHog

  • 1 min read

One of the possible vectors of an attack on the system is the disclosure of the used keys, certificates, or other access data. I found TruffleHog as a tool to verify your project. The tool can scan projects on GitHub or GitLab, including entire organizations! You can attach them to your CI/CD pipeline to verify that no confidential information has been published.

Zero downtime deployments

  • 3 min read

Not so long ago, to release the application, it was necessary to modify the binary files on the servers. Thanks to good DevOps practices, the entire process can be changed. It is possible to achieve tens or hundreds of releases each day. Everything without the downtime of the application.

Back to Top ↑

remote work

How to work remotely without going crazy

  • 4 min read

Most of us have moved from working in the office to working from home. For most, this was a new and unexpected situation. Reflecting on the topic of remote work, I wanted to prepare a list of activities that will allow us to avoid lack of concentration, constant monotony, and being at work 24 hours a day.

Back to Top ↑

home office

How to work remotely without going crazy

  • 4 min read

Most of us have moved from working in the office to working from home. For most, this was a new and unexpected situation. Reflecting on the topic of remote work, I wanted to prepare a list of activities that will allow us to avoid lack of concentration, constant monotony, and being at work 24 hours a day.

Back to Top ↑

blog

Back to Top ↑

interesting facts

Kranzberg’s laws of technology

  • 1 min read

Have you wondered about the nature of technology? Technology is neither good nor bad, nor is it neutral. The invention is the mother of necessity. The same technology may have completely different results. New needs, as well as new technical possibilities, make the impossible possible.

Back to Top ↑

books

Back to Top ↑

TimescaleDB

Back to Top ↑

domain driven design

Back to Top ↑

release

Zero downtime deployments

  • 3 min read

Not so long ago, to release the application, it was necessary to modify the binary files on the servers. Thanks to good DevOps practices, the entire process can be changed. It is possible to achieve tens or hundreds of releases each day. Everything without the downtime of the application.

Back to Top ↑

selling

Back to Top ↑

health

Back to Top ↑