Eduardo Zepeda's latests posts
Common and Useful Deployment Patterns
- software architecture
<h2 id="what-is-a-deployment-pattern">What is a deployment pattern?</h2><p>A deployment pattern (Not to be confused with a <a class="markdown-link" href="https://coffeebytes.dev/en/python/design-patterns-in-software/">design pattern</a>) is an automatic method...
Read more
Worker Pool Design Pattern Explanation
- software architecture
- go
<p>This entry is about a the Worker Pool design pattern. Imagine that you have a number of concurrent tasks that you want to perform, either crawling many websites, or perhaps processing information from each of the pixels of an image or anything else you can think of.</p><p...
Read more
Chat Gpt, Searle's Chinese Room and consciousness
- artificial intelligence
- opinion
<p>Chat GPT is on everyone's lips, some are afraid of it, because of its <a class="markdown-link" href="https://coffeebytes.dev/en/artificial-intelligence/i-test-chatgpt-with-codewars-coding-challenges/">ability to solve code problems</a> others are excited a...
Read more
Go with Reflect: Boost Your Code's Flexibility
- go
<p>The “reflect” package is a useful library in the Go programming language that provides functions for working with reflection.</p><p class="message info"> <span><img width="60" height="60" src="https://res.cloudinary.com/dwrscezd2/image/upload...
Read more
Stream your videos and audios: HLS for your applications
- linux
- software architecture
<p>Almost all modern web applications perform some form of streaming, from video platforms to live streaming. In this post I explain how streaming works with HLS in such a simplified way that it will bring out your inner purist.</p><p>I leave you a minimal example of streami...
Read more
Fast and performant APIs using Go Lang gRPC and Protobuffers
- software architecture
<p>Protobuffers allow you to create a Go Lang gRPC API that has the characteristic of being incredibly faster, because it uses binary instead of other less optimized formats (such as JSON), in this post you will learn what this type of API is and why it is so fast.</p><p>In ...
Read more
I Test ChatGPT With Codewars Coding Challenges
- artificial intelligence
<p>ChatGPT is breaking with everything previously known in artificial intelligence, some developers are worried that it may replace them in their jobs, just as Github Copilot threatened at the time. In this post I test <a class="markdown-link" href="https://coffeebytes....
Read more
Go Migration Tutorial with migrate
- go
- databases
<p>In frameworks like <a class="markdown-link" href="https://coffeebytes.dev/en/django/why-should-you-use-django-framework/">Django, migrations are created automatically</a>, from the models. However, in languages like go, as long as we are not using an ORM, migrat...
Read more
Go: Handling Signals for Closing Applications
- go
- linux
<p>Today I'm going to talk about a topic that is often overlooked in most tutorials: handling application closing. What do I mean? To those times when you have to close an application, but there may be pending tasks running, open connections or you simply want to leave a re...
Read more
Generating PDFs with Django and Reportlab
- django
<p>With django and reportlab we can generate PDFs dynamically, using information from our database, user input or any other business logic we want.</p><h2 id="installation-of-reportlab">Installation of reportlab</h2><p>The first thing will be to install reportlab, we ca...
Read more
This may look pretty good so far, at first, but it has multiple disadvantages; first, you will be creating workers without control, which can increase your program’s memory usage incredibly fast; second, you are constantly creating and destroying workers, which can be costly for your program.
","datePublished":"Wed, 28 Jun 2023 00:00:00 +0000","dateModified":"Wed, 28 Jun 2023 00:00:00 +0000","author":{"@type":"Person","name":"Eduardo Zepeda"},"mainEntityOfPage":{"@type":"WebPage","@id":"https://coffeebytes.dev/en/software-architecture/worker-pool-design-pattern-explanation/"}},{"@type":"BlogPosting","headline":"Chat Gpt, Searle's Chinese Room and consciousness","description":"Chat GPT is on everyone’s lips, some are afraid of it, because of its ability to solve code problems others are excited about its potential to change the world of work. Today I leave aside the economic consequences of AI and the question about whether we’re in an overhyped AI bubble or not , to focus on the philosophical aspect of Chat GPT and reflect a bit on the question: does Chat GPT really understand language, is Chat GPT conscious?
","datePublished":"Wed, 19 Apr 2023 00:00:00 +0000","dateModified":"Wed, 19 Apr 2023 00:00:00 +0000","author":{"@type":"Person","name":"Eduardo Zepeda"},"mainEntityOfPage":{"@type":"WebPage","@id":"https://coffeebytes.dev/en/artificial-intelligence/chat-gpt-searles-chinese-room-and-consciousness/"}},{"@type":"BlogPosting","headline":"Go with Reflect: Boost Your Code's Flexibility","description":"The “reflect” package is a useful library in the Go programming language that provides functions for working with reflection.
What is reflection in programming?
Reflection is the ability of a program to inspect its own structure at runtime. This includes the ability to examine: types, values and metadata of objects in memory. Reflection allows us to have more flexible and generic code and allows us to create functions and data structures that can work with any type of object, regardless of its type. It is also the basis for metaprogramming.
","datePublished":"Mon, 13 Mar 2023 00:00:00 +0000","dateModified":"Mon, 13 Mar 2023 00:00:00 +0000","author":{"@type":"Person","name":"Eduardo Zepeda"},"mainEntityOfPage":{"@type":"WebPage","@id":"https://coffeebytes.dev/en/go/go-with-reflect-discover-how-reflect-can-boost-your-programs-flexibility/"}},{"@type":"BlogPosting","headline":"Stream your videos and audios: HLS for your applications","description":"Almost all modern web applications perform some form of streaming, from video platforms to live streaming. In this post I explain how streaming works with HLS in such a simplified way that it will bring out your inner purist.
I leave you a minimal example of streaming in Go here in my github repository , in case you want to see the code.
Introduction to streaming
Videos and audios contain a lot of encoded information, so their handling and downloading strongly impacts the bandwidth and usage of any server.
","datePublished":"Thu, 02 Mar 2023 00:00:00 +0000","dateModified":"Thu, 02 Mar 2023 00:00:00 +0000","author":{"@type":"Person","name":"Eduardo Zepeda"},"mainEntityOfPage":{"@type":"WebPage","@id":"https://coffeebytes.dev/en/linux/stream-your-videos-and-audios-a-simple-introduction-to-streaming-with-hls-for-your-applications/"}},{"@type":"BlogPosting","headline":"Fast and performant APIs using Go Lang gRPC and Protobuffers","description":"Protobuffers allow you to create a Go Lang gRPC API that has the characteristic of being incredibly faster, because it uses binary instead of other less optimized formats (such as JSON), in this post you will learn what this type of API is and why it is so fast.
In my post about the basic characteristics of a REST API I mentioned to you that, besides REST, there were other types of APIS, one of them is gRPC, which is derived from RPC, so let’s start the post talking about the latter.
","datePublished":"Thu, 19 Jan 2023 00:00:00 +0000","dateModified":"Thu, 19 Jan 2023 00:00:00 +0000","author":{"@type":"Person","name":"Eduardo Zepeda"},"mainEntityOfPage":{"@type":"WebPage","@id":"https://coffeebytes.dev/en/software-architecture/fast-and-performant-apis-using-go-lang-grpc-and-protobuffers/"}},{"@type":"BlogPosting","headline":"I Test ChatGPT With Codewars Coding Challenges","description":"ChatGPT is breaking with everything previously known in artificial intelligence, some developers are worried that it may replace them in their jobs, just as Github Copilot threatened at the time. In this post I test ChatGPT’s supposed intelligence against three codewars challenges.
How does Codewars work?
Before we start you need to understand that Codewars is a social network for programmers where code challenges written by the same users are shared. Each challenge can be tested with a series of tests and, if it passes all of them, the challenge is considered completed. These challenges are called katas.
","datePublished":"Mon, 12 Dec 2022 00:00:00 +0000","dateModified":"Mon, 12 Dec 2022 00:00:00 +0000","author":{"@type":"Person","name":"Eduardo Zepeda"},"mainEntityOfPage":{"@type":"WebPage","@id":"https://coffeebytes.dev/en/artificial-intelligence/i-test-chatgpt-with-codewars-coding-challenges/"}},{"@type":"BlogPosting","headline":"Go Migration Tutorial with migrate","description":"In frameworks like Django, migrations are created automatically , from the models. However, in languages like go, as long as we are not using an ORM, migrations will be done manually.
What is a database migration?
A migration is an abstraction to manage the state and changes that occur in a database. Instead of executing SQL statements one by one manually, we automate the process by writing all the necessary SQL and running it automatically.
","datePublished":"Fri, 25 Nov 2022 00:00:00 +0000","dateModified":"Fri, 25 Nov 2022 00:00:00 +0000","author":{"@type":"Person","name":"Eduardo Zepeda"},"mainEntityOfPage":{"@type":"WebPage","@id":"https://coffeebytes.dev/en/go/go-migration-tutorial-with-migrate/"}},{"@type":"BlogPosting","headline":"Go: Handling Signals for Closing Applications","description":"Today I’m going to talk about a topic that is often overlooked in most tutorials: handling application closing. What do I mean? To those times when you have to close an application, but there may be pending tasks running, open connections or you simply want to leave a record, in the form of a log, that the application was closed.
","datePublished":"Thu, 06 Oct 2022 00:00:00 +0000","dateModified":"Thu, 06 Oct 2022 00:00:00 +0000","author":{"@type":"Person","name":"Eduardo Zepeda"},"mainEntityOfPage":{"@type":"WebPage","@id":"https://coffeebytes.dev/en/go/go-handling-signals-for-closing-applications/"}},{"@type":"BlogPosting","headline":"Generating PDFs with Django and Reportlab","description":"With django and reportlab we can generate PDFs dynamically, using information from our database, user input or any other business logic we want.
Installation of reportlab
The first thing will be to install reportlab, we can use pip, pipenv or any other package manager you want.
pip install reportlab
# pip install reportlab
Define PDF response type in Django
Once installed, the first lines we will write will be to make sure that the browser knows that we will return a pdf, we will do it through an HTTP header, the Content-Type header, through the content_type variable.
","datePublished":"Thu, 22 Sep 2022 00:00:00 +0000","dateModified":"Thu, 22 Sep 2022 00:00:00 +0000","author":{"@type":"Person","name":"Eduardo Zepeda"},"mainEntityOfPage":{"@type":"WebPage","@id":"https://coffeebytes.dev/en/django/generating-pdfs-with-django-and-reportlab/"}}]}