Skip to main content

· 3 min read
Rogelio Lozano

Why javascript?

Javascript has become the lingua franca of the browser. As such, learning it can uncover powerful skills to understand new frameworks, tools or systems written for the browser and also to be able to write down one myself one day!

To that end, is of priority to understand how the browser works.

Web browser models of execution.

The browser is quite ample of a theme => Main principle to begin:

Client-side web application Life Cycle

Consists of two phases:

  1. Page building: The DOM (document object model) is built from the markup language html. The elements of the DOM tree are created and rendered in the browser and displayed in the webpage. The css styling and js code is also loaded and if there are js blocks of code, they influence the state of the client-side application and can create or alter or modify or almost anything related to DOM elements. Like creating new nodes, registering event handlers to certain actions like user interactions or server side events. During this phase, the browser execution can shift between rendering the DOM and executing javascript code. This is why JS is a hell of a lot useful for web development!
  2. Event handling: Once step one is finished, the event handling phase starts. It consists of listening to events stored in an Event Queue dispatched in a FIFO order by their corresponding event listeners registered in the previous phase. This loop keeps going, listening to new events added to the Queue and handling them by event handlers, it only ends when the page is closed or new browser I suspect the suspension mode that some tabs fall in when inactive for a period of time is the same as stopping the execution of the Event Loop. Okay, according to chatgpt:

"Even in an inactive tab, the event loop continues to run, but with limited or deferred activity to conserve resources."

Browsers (such as chrome, safari, mozilla) have single threaded execution model this means that only one flow of execution can be active at a time.

Now that we now more about the execution context of js programs, let's move on to know about js and its importance.

Javascript functional programming paradigm

The functional paradigm of js is key to exploit is most powerful capabilities to develop programs. Js functions are first-class citizens of the langauge, which means that they can be used whenever an object is used. They can be defined as expressions literals or single-statements. This function expressions can be passed as parameters, assigned to bindings, returned from other functions or methods and so on.

-------> The key to have in mind is: the flexibility of using js functions allow to perform sneaky changes throught the whole codebase, declaring, instantiating, and in sum using encapsulated blocks of code that define verbs (higher level of abstractions actions) whenever we need them; fostering modularization, reusability and maintainability.

References:

  • Secrets Of The Javascript Ninja. John Resig and Bear Bibeault. Manning Publications. December 2012.

· 2 min read
Rogelio Lozano

Business cycles

In Mexico there's a business cycle every 6 years for the presidential elections. Economy activity goes down in the first year of the new administration. The Business cycle has 4 stages:

  • peak: max employment and production = protential production.
  • recession: start to decrease prodution and employment. Companies start to cut off budgets and lay off workers.
  • trough: Minimum production reached, maxium unemployment.
  • expansion: Production increases, less unemployment, more debt is created and increases interest rate -> inflation.

Capital deepening: INcrease in capital that is faster than increase in labor. Example: A bank has only 5 tellers but the queues get long. It then buys and installs 50 Automated Teller Machines (ATM's). Is capital deepening as the bank increases machine (physical capital) but not the number of workers (tellers).

Mexico is a country of services as it accounts for 58.8% of GDP while industry for 32.1% and agriculture for 4.1%.

To increase productivity, we must increase the factors of production:

  • Land
  • Labor
  • Capital
  • Entrepreneurship

Technological advancements: Refers to changes in production processes or the invention of new products that serve as inputs to produce others. With techonological advances, we can increase the production as it afects the factors of production of capital and labor.

· One min read
Rogelio Lozano

What do I need to learn to know what I want?

I want to learn about economy and how work transform societies.

I want to learn about organizations-startups and their structure.

I want to learn about what do I need in Mexico to create an organization.

I want to learn about Mexico's history.

I want to learn about authority.

I want to learn to build relations.

I want to learn what is market capitalization.

I want to learn what I do not know.

I want to know the leaders in Mexico's software industry.

  • Create a table: Industry : companies :leaders

Research: What is that industry why it is important? What does the company and why it is important? What leaders are in those companies, what do they do? How can I contribute?

Where do I begin?

· 5 min read
Rogelio Lozano

Cómo es el estado de un mercado?

El conocimiento del estado requiere un estudio más táctico de las tendencias de oferta y demanda en un sector específico de una industria.

Cómo es el estado de un sector de la economía?

Este conocimiento requiere un estudio más estratégico de un sector específico de la actividad economica. Puedo obtener información de una industria mediante metricas clave como marketsize, growth rate, profitability margins, technological innovation, regulatory compliance and industry concentration (market share of top players)

Qué estado está la industria/services en México?

Most important industries in Mexico is the automotive industry. Difference with other countries is that Mexico is not only an assembler, its industry also produces technologically complex components and engages in some research and development activities, an example of that is the new Volkswagen Jetta model with up to 70% of parts designed in Mexico.

An Original Equipment Manufacturer (OEM) makes components of another company's products. An OEM component might be a part, a subsystem, or software. Examples include operating systems (OS) and microprocessors in computers. Typically, the computer manufacturer makes neither the microprocessor nor the OS.

Engineering and design is also important in Mexico, driven by low cost of manufactering and desing in Mexico. Strategic position as major consumer of electornics market. German multinational engineering and electronics conglomerate Siemens has a significant Mexican base.

From late 1990's , Mexico started to shift from simple line assembly work to more advanced work such as research, design, and the manufacture of advanced electronics systems such as LCD panels, semiconductors, microprocessors etc.

In the energy sector of Oil, Mexico has Pemex, actually the largest company in Mexico. It is still the most valuable company, nevertheless, its profit for the government (which taxes it for almost 62%) has been declining steadily over decades. In 1980, oil exports accounted for 61.6% of total exports; by 2010 it was only 7.3%. oil

Retail sector with FAMSA and Walmart is strong in Mexico.

A wave of acquisitions has left Mexico's financial sector in foreign hands. This has advantages such as increased competitive financial market leading to better financial services for the Mexican population but also drawbacks such as liquidity, capital flow and market stability problems in case of crisis of political and wars problems between countries.

Services are important (turism and financial services). Manufacturing is important. Oil is still important in Mexico's economy.

Qué puntos de referencia tiene para compararse en otros paises? GDP growth for exogenous or internal factors. How technological advancements impact factors of production: labor, capital, entrepeneourship, land.

Mexico is a country of services:

  • 58.8% of GDP is for services (tertiary sector)
  • 32.1% of GDP is for industry (secundary sector)
  • 4.1% of GDP is for agriculture (primary sector)

Yo tengo una empresa en la industria produciendo o servicio sirviendo X. Qué quiero de un colaborador/empleado, qué busco de él?

Tengo tareas ambiguas sin dirección clara que necesitan ser realizadas, él puede realizarlas?

¿Cómo evaluo si él puede realizarlas?

Debo evaluar claramente por qué quiere trabajar en mi empresa.

A qué rol está aplicando para yo saber qué tipo de preguntas dirigir y entender su motivación e interes.

Si desarrollo un producto, entonces el debe ser eficiente en el desarrollo de ese producto.

Si doy un servicio, espero que conozca sobre el servicio y tenga las cualidades necesarias para mantener y mejorar la oferta de ese servicio.

Qué factores de confianza debo evaluar para decidir si hacer una oferta o no?

Si solo quiere dinero, se irá cuando le ofrezcan más dinero. Si solo quiere aprender, se quedará en tanto el sienta que sigue aprendiendo. Se quedará si tiene una fuerte convicción sobre lo que la empresa sirve o produce.

  1. Identifica 5 empresas de servicios o productos de software que me parezca que hacen algo increible.
  2. Realiza una tabla con: empresa, qué hace?, cómo lo hace? por qué lo hace? cómo puedo contribuir? qué skills tengo que son transferibles? Qué roles de labores tienen estructurados? Qué personas son los líderes de equipos de roles en esa empresa? Qué retos tiene la empresa? Cómo puedo contribuir a solucionar esos retos?
EmpresaQué?Cómo?Por qué?Cómo contribuir?Qué skills son transferibles?NombresRetos
IBMEmpresa de tecnología.Realizan avances tecnológicos. Fabrica y comercializa hardware y software. Ofrece servicios de infraestructura, alojamiento de internet y consultoría.Liderar un cambio innovador para mejorar los negocios,
la sociedad y la condición humana
Liderazgo, comunicación, desarrollo de productos de software

Infrastructure and Technology roles:

Mainframe Technical Specialist Code, maintain and scale our mainframe technology, which is critical for servers and applications that require high resiliency and agility.

Storage Specialist Design, analyze and manage the biggest and most complex storage solutions for our clients to drive performance and reliability.

Site Reliability Engineer Be in charge of combining software and systems engineering to build and run large-scale, massively distributed, fault-tolerant systems.

Security Roles:

Security Specialist Become a thought leader in DevSecOps practices and demonstrate hands-on expertise with security practices across the infrastructure and applications.

Software Engineering Roles:

Software Engineer Create complex software systems for some of the biggest clients in the world.

Full Stack Developer Integrate multiple systems with your code in an agile manner, every step of the way.

DevOps Engineer Work with our development and systems team in huge projects to automate, scale and deploy in an agile way.

· 3 min read
Rogelio Lozano

What do I like?

Great explain of chinese philosophy, Chinese Dialectical Thinking—the Yin Yang Model

I like to learn and integrate it into my worldview.

I like to find new methods to learn and make the integrative process of information into knowledge more holistic.

I like to understand the world around me.

I love to listen to music.

I love to think and explore herustically how all I am changes or reacts or function every moment.

I love to use my knoweldge and see how everythings fits together after reading about different topics.

I like to feel curiosity for what is in our planet, why it is here and how.

I love to feel energized and focused, so I love practicing 氣功.

I like to think of things that can't be seen, and how they impact the seen reality. I like to understand not obvious forces and mechanisms that power the movement of the reality.

I like to understand how the history impact the present and the civilization I'm living everyday.

I like to better understand why we do what we do as a society, and ask why are we focused on those things, are they really necessary or is just a very old force that still exits only for historical innertia?

I love my life but I do not accept everything as it is, I like to think are better ways to do this?

I deeply feel the pain and fear of others as I remember how it feel and how difficult it is to overcome it.

I like to think and feel that my life matters and it is relvant to our reality, to our world somehow, that I'm not only an irrelevant dissipative structure that lasts just a bit more than a tornado.

I like to feel the empowering sense that knowledge of our different sectors of civilization give me.

I like to learn how individuality and social distancing tendencies can be equilibrated with authority and social cohesion to balance my personality and be able to contribute but also to feel freedom to expose without extreme consequences my ideas.

I like to empower people around me with a mental state of freedom so they can feel less enslaved by current powerful states and at the same time direct them towards creative innovation. Not towards resentment, anger and ultimately criminal activity.

I like the balanced focus of oriental mindsets like buddism, taoism and confusionism.

I like to know whatever I am more and by knowing me more, know others. I like to increase my consciousness.

I love to still joy spontaneously like a child and enjoy for moments those deep feelings.

I love to find ever better approaches to solve my problems. There must be a way to do what I want to achieve!

I love to write what I think.

I like to develop methods although I then have difficulty following them!

I like to reciprocate and cooperate instead of compete, I think the biggest ever competition is oneself, that is the harder contrincant.

I like to inspire a long-term view to foster challenging each other collaboratively instead of short-term competition.

I like to understand that the best way to help others is giving the living example of what I believe.

· 14 min read
Rogelio Lozano

I just read the book The Worldly Philosophers and to consolidate the ideas I wanted to write a summary here.

It is composed of many chapters that talk about different periods of the economic thinking focused on the personality and historical context of relevant economists, therefore it provides a more personal view behind the writters of economic theories.

Adam Smith

is the first that introduced the idea of accumulated wealth and the effects over the production of goods that would have. We thought about the market supply and demand. For example, there are many bourgeoisie that were competing against each other for the market demand of certain products, they in consequence require more workers to produce more and be able to sell the products at a lower price, so to win a higher market share. That implies hiring more workers, nevertheless, given that others are competing for producing those products at lower prices too, they also want more workers, therefore, the labor market forces to a rising of salaries paid to the workers. That implies higher earnings for that social class. This would hinder the benefits of the bourgeoisie. Nevertheless, there is a limit to the number of goods that the population required, and bourgeois families could only buy that much for their needs. Therefore, that imposed a limit to demand of certain products, diminishing the demand for employees and therefore aliviating the pressure of rising salaries, because less work force was required to satisfy the current demand of the product. For Smith, overall, there was a net increment in the produced goods and total wealth in the system via accumulation of wealth.

David Ricardo and Malthus

were actively collaborated and discussed their views about economics. The main difference in their viewpoint compared to that one Adam Smith is that the accumulated wealth would be limited, there was a boundary to the development of the economic machine: It was reach because of the tendency of this social class of workers to increase its number with each rising of salary, therefore, balancing the laboral offer in the market and reducing in consequence the salary offered by the bourgeoisie. It was not even desirable for it would lead to a Tragedy of the Commons. More mouths to feed would imply more production of goods, but the land can only offer a limited amount of goods that can be extracted and satisfy the demand given a period of time. Thus, the economic growth was capped. (A net-zero game).

John Stuart Mill

was a well educated (he started to study greek at the age three and by 6 years old he already had read Plato's Dialogues and many other greek poets and writters) English economist, he also learnt latin very young. His father raise him with a strict and elite education, that had the negative impact of Mill having crisis in his twenties where while other discovered that there could be beauty in intelectual work, Mill found that there could beauty in beauty. His main statement was the idea to separate production and distribution. He stated that the economic laws are only concerned with production, the distribution is completely separate from those laws. He said:

"The distribution of wealth depends on the laws and traditions of sociaty. The rules that determine it are the opinions and feelings of those who govern the community; they are very different in distinct periods and distinct countries."

This reasoning has its flaws, distribution policies can have impacts over production. For example, if we tax 100% of the benefits, that will change where the money goes but also hinder the desire to produce more, therefore a distribution policy affects production! Also, as Marx pointed out, we cannot separate distribution from production completely, because how different sociaties organize their payment modes is a constitutive element of their production modes.

So the critics that Mill made concerning the freedom with which sociaties can reestructure their distribution of wealth has its limits. Nevertheless, its approach has importance, for the time, its ideas were considered a bit socialist (utopic socialism) but the concept of having the freedom to distribute wealth implied that government or other institutions could have an influence over the economic machinery and help to stabilize it, for example, via taxes on heritage and land rent. Also, in opposition to Ricardo and Malthus, he didn't considered that the economic growth would reach a maximum and then decrase as a consequence of an increase in population that exerted a negative impact over the benefitis of accumulated wealth. Instead, he believed that with education, people could be informed about the negative impacts of non-controled natality, so population could be controled so salaries would only increase and reach a maximum of wealth accumulation. Therefore, in Mills model, the economy would reach a high stationary phase where we would see an end to the capitalism and the economic process and start a phase or stage of beingn socialism, where humanity would focus his energy towards higher ideals like justice and freedom. At the present time we can think of Netherlands or the three scandinavias (Norway, Sweden, Denmark) and see the elevated level of social responsability.

Karl Marx and Friedrich Engels

had opposite different personalities. Marx was a German Scholar par excellence, slow, meticulous, exhaustively perfeccionist. Engels was happy, clever, energetic, communicative; he was fond of bourgeois pleasures and had a good palate for wine. Engels could quickly writte a treatise, Marx could get back over and over the same theme, endlessly. Engels talked multiple languages, Marx after twenty years of practice could only talk a horrible Teutonic English. Nevertheless, with all its weight, Marx was the most powerful mind of the two. Wherever Engels introduced amplitude, Marx contributed deepness.

Now, Marx was influenced by Hegel with its dialects theory, loosely speaking, Hegel's dialect says that change is permanent, every idea, every force helps to grow its opposite, then after a tension they both get fused into one unity, which in turn produced its own contradiction. History, was the expression of that flux of contradictory forces and ideas in conflict.

In the dialectical materlialism, the root principle to understand the history is that the production of goods, and its subsequent distribution, determines the order of the society. As we saw with the counterexample for Mills' complete separation of production and distribution, the distribution has an impact in the production too. Given that the dialectical materialism proposes that the architecture of social order (in hierarchical classes) is determined by the distribution of goods that in turn is determined by what is produced and how it is produced, we see that it is all connected. The distribution allocates resources to certain members of society (which in turn create a new social class) is dependent on the relation that those members have with what is produced and how it is produced. Depending on the nature of that relation is the position that the newly created social class will have in its society and will or not maintain. Therefore, given that what is produced is related to how it is produced, then new products can be created when new techiniques and technological and scientifical advancements happen. For example, a new kind of mineral can be extracted from deeper places if there is the technical capacity to do it and perhaps a new class of technical positions will be created, perhaps, the more disruptive the changes in production the odds of allowing a new social class to emerge are greater. Or an existing way of producing wheat using manual grinders will be improved using vapor grinders or electrial grinders, therefore if there was an existing guild of manual operators of grinders, with the development of electrical grinders, that guild could be displaced by others or even just disapear exerting pressure over other sectors of society to emerge.

Dialectical materialism does not say that ideas are not relevant, but it says that people originate their ideas based on the production and distribution and society order they happend to live in, and the influence of those ideas were primarely originated from those afromentioned aspects.

In times of Marx and Engels, the prediction or natural consequence of the structure and operation of capitalism indicated that it had to finish. Its base class (proletariat) was beign oppressed by the middle top class (bourgeoisie, aristocrats) who had the means of production, the proletariat only had its work force to produce.

The ideal model of capitalism that Marx proposed is one that does not have monopolies and that the value of a product is the accumulated work required to produce it (being the same view that David Ricardo had in that aspect). Then given those conditions (among others, for formal details read Das Kapital), an equitative relation between the value of the proletariat's work force and the value that should be paid for that is equal to the required subsistance of a proletarian, therefore if 6 hours of a man's work is required to pay for its subsistance requirements, then that is what is going to be paid by the capitalist. If that were the case, the capitalist would not get any accumulated gains, but they get it by what Marx called surplus value, that is, they hired the proletarian to work for 8-10 hours per day and only pay them what they need to subsist. Then the capitalist can sell the product and obtain an extra accumulated gain. This is possible given that they own and monopolize the production modes according to the legal ordering of private property. Given that all the capitalist try to get benefits but are all in competition. Given that to generate benefits they have to expand, to grow, they require more workers, therefore they also have to compete for the labor force. This rise salaries. This rising of salaries have a negative pressure over the benefits the owners of the production modes, therefore, the way they find the way out of that is to buy machines that can substitute the labor force of living workers. With these machines they can satisfy the market demands that pressures them to expand and also diminished the negative pressure of the rising salaries of the labor market on their benefits. This machines will throw out into the street to many workers, so accomplishing the same function that the increment in population had for Smith and Ricardo, i.e., to compete for jobs in the labor market. Now, this only solves one problem but generates other, given that the surplus is only obtainable via the living proletariat, (machines in Marx model cannot produce surplus, if you bought the machine at 10,000, then you can only get 10,000 of equivalent work force from the machine). And even then, the benefits would decrease given the reduced population adquisitive power, and reducing the demand for products. So the end result is a reduction in the rate of benefits, this produces a capitalist crisis, the smaller go into bankrupt. This is not the end, just one cycle, the bigger companies can adquire the machines at lower prices from the smaller bankrupting companies, the works are forced to accept devaluated salaries and then slowly, the surplus begins to appear again and with it big benefits. Each crisis exists to renovate the expansion capacity of the system.

This is the concept Marx called laws of movement of historical development. The process of depressions (economic recession) or crisis is the way the capitalism system works, it is not a flaw it is the way it functions.

But each crisis is worse than the last one, given that the bigger firms absorb the smaller ones and when these industrial monsters fall, the harm to the society is stronger. This would lead to the colapse of capitalism in the end.

It's great that Marx was able to predict economic cycles and consequences of those cycles over the long run of big industries, i.e., benefits tend to go down always. The only way to solve this is that the whole economy grows. This requires innovation, techonological progress. Companies are obliged to innovate. To sum up the model of dialectical materialism was great at predicting future process and events.

Hobson and Marshall.

Then the Victorian Age started and almost all the formal economist saw the economy from the cold and static academic side. Alfred Marshall in his "Principles of Economics" described the economic machinery as a system of weights and counter-weight that balanced and allows to reach an equilibrium in the economy. It also considered for the first time the economic ideas separated from political economics, this is, the separation of economy from the ideas that related the distribution of power in hierarchical societies that ended up in creating a particular social order and their associated production and distribution of resources and goods.

On the other hand Hobson, was an english economist that worked on the concept of Imperialism as a new form of capitalism drived by the requirement of finding new markets to sell national products and avoid excesive offert and low demand if those products were only to be sell in their original national markets. The desire to find new markets to expand the earnings coupled with the searching of row materials (gold, silver, oil, etc.) prompted invasions of new territories and the period of colonialism that characterized the XIX century and the initial years of the XX century, actually this hunger for new colonies (opening up new markets and access to profitable commodities) led to wars between nations like Germany, Italy, England and France, this was part of the reasons that originated the first world war. Hobson's works influnced Vladimir Lenin's theory of underconsumption.

John Maynard Keynes

One of the most imporatant economists of the 19-20th centuries. "The economic consequences of peace" was influencial because in it he discussed the economic aspects of The Treaty of Versailles. Where he exposed that the winning nations did not seek to impose good treaties for the economic of even their own countires but the clauses were mainly motivated by resentment. In his book "The General Theory of Employment, Interest, and Money" one key aspect he mentioned was the notion of the economic machinery to require intervention from the government to release itself from economic stagnations due to the lack of private investment by businessmen and the related lack of economic activity (less flow of money => less income => less expending => less income (as the expenditure of someone is the income of someone else) => less capacity to save money => less money to invert => less economic activity => stagnation). So traditionally, government would decrease the price of borrowing savings, i.e. it would decrease the interest to incentive private inversion and incentive the economic overall. Nevertheless, Keynes pointed out that it is possible that given a certain gap in the cycle, there could be stagnations that would require further intervention from the governement to reactivate the economy, such as: creating jobs for public affairs as sweeping leaves from the streets and such. And also lending money and making arranges with private parties to incentivize inversion and reactive the economy.

Joseph Alois Schumpeter

Was the cause of giving the current understanding of the concept and social figure of a "entrepreneur": A individual from a sociaty that independently of its original social stratum, given its exceptional leadership capabilities, it would excel and innovate the markets or create even new ones with its inventions or optimizations of productions processes. Among other things, he also stressed the importance of considering different periods of economic business cycles. One long of about 60 years, one more short of about 10 years and smaller ones within the formers. He also considered that Capitalism would collapse but for different reasons as those posited by Marx. One masterpiece to read about is his book titled: "History of economic analysis"

· 5 min read
Rogelio Lozano

Project name: Sistema de identidades y seguridad. (SISE)

What?

My last project was about a dashboard and management of user's permissions re-engineered product. Our client was another department inside the government institution that had a legacy application and wanted to turn it into a web application.

Why?

The external department required a solution to improve their productivity and to modernise and improve security standards, so that the confidentiality and integrity of the information were assured, as well as improve the UI and UX experience.

How?

I led the technical development with other two developers and a designer. In the beginning we thought it would be straight forward, but it turned out that there were a lot of bureaucratic stoppers that we didn't consider at the beginning. We ended up focusing on finding the right teams that handled the required connections and focusing on testing the logic to assure that the business requirement result was correct for the new system. This increased the time from development to deployment by quite a bit, but it was solved even though we didn't have access to best practices like using DevOps for streamlining the development lifecycle. Personally it gave a lot of perspective into why is important to have a consolidated DevOps team, particularly as products mature and require much more maintenance (monitoring, metrics, logging, etc.)

Going down the technical rabbit hole, the architecture was a three layer solution: frontend, backend for frontend, and storage layer (structured database). The diagram below shows this layers as the right-side boxes, from left to right in order.

Infrastructure and operations:

The user interacted indirectly via an institutional reverse-proxy (so that name-discovery were easier and to avoid the time to propagate DNS modifications- IP:domain-name changes). The was also an institutional identity provider service that our application integrated with to provide seamlessly log-in (authentication) capabilities to the application for the clients using their credentials, enhancing the UX experience. This integration was implemented based on the protocol OAuth2.0, authorization code flow to provide us with an access token a a refresh token. This security implementation was integrated for the dashboard sessions and roles management. In the diagram below, the reverse-proxy identity service provider is represented on the leftmost box.

Another required integration was for employment data. Given the lack of private APIs to easily consume that information from legacy database systems, we decided to consume it via a subscriber-publisher design pattern. They pushed a new actualization of their table view and we consume it on a weekly basis. That is represented with one of the green lines.

We also decided to streamline a CICD process for the whole system with the help of another team that was starting to implement CICD practices and had the required infrastructure. The codebase was stored in different gitlab repositories and runners and registries servers were used to implement the CICD streamline. SonarQube was used for linting (static coding analysis). Finally, we dockerized the applications and deployed the containers to the corresponding layers. From my side, the process involved network configurations, regular meetings with external cloud providers, troubleshooting, and resources management and configuring. As well as creating the dockerfiles, docker-compose.yamls and gitlab-ci.yaml's.

Product Development:

From the development perspective, it involved developing a web application consisting of different submodules (subsystems). The stack used was:

  • SvelteKit and typescript for the front-end UI/UX development.
  • ActixWeb and Rust for the Restful API and server development.
  • Starlette and python for the proxy service.

To get high-performance and stability we opted to use Rust as the language for developing two web services A and B. Service A was a Restful API that implemented business logic for the front-end and performed CRUD operations interacting with the database. Service B was also programmed using ActixWeb but it only involved answering POST requests that asked for information about a certain user and the service responded based on the information stored in the database about the user whether it was authorized or not to consult the required information.

For auditing (verification) reasons, we kept record of all the request ot system B, so that we stored employees information that wanted to consult information about users in the database.

System A CRUD flows are described in the next two diagrams.

On the other hand, the python web service was used as a proxy to keep the legacy consumers systems supported. This is because the legacy systems consulted information using SOAP and XML requests. The python service provided conversion and passed down the converted request to json to the new system B.

As part of the information security actualizations, a new CA was generated and we used it to encrypt the communication between the different consumers and the service via TLS, that required resolving the domain-name of the DNS service to the new IP address of the re-engineered solution. The following diagram illustrate the idea.

Finally the front-end was implemented with the good practice of using both server and client side rendering. So that loading times and reduced and the overall user experience was great. We designed it using Figma and implemented the components using tailwindcss, SkeletonUI for styles and typescript with svelte for reactivity and state management.

Learned lessons

  • It is important to have a strong DevOps team to support mature products! We ended up losing a lot of time because of bureocratic stoppers.
  • When configuring a service behind an access gateway, remember to setup correctly the routes behind the protected paths.
  • Don't generate test cases for uncertain features before the client decides that they will used them.

· 2 min read
Rogelio Lozano

Will programming web applications be completely automated?

Though question to answer. So let's analyze it and try to formulate a good response. The idea that comes to my mind to start exploring the landscape consists in approaching a principled consideration in order to accumulate knowledge and arrive to an informed conclusion.

Historical perspective

I'll just divide the pharagraphs for order of gradual evolution but was not a sequential process, all the advancements overlap in time, space, and industry axes.

First, Alan Turing, John Von Neumann, among others developed the foundational concepts of computing and programming. This was a highly manual job, deep understanding of computer's architecture was required.

Second, advances in early machine code for specific computer architectures. Team led by Maurice Wilkes developed the concept of microprogramming (https://dl.acm.org/doi/10.1145/1458043.1458047). A method of implementing the behavior of machine instructions by means of more elementary operations, with direct correspondence with the functions of the physical components of the computer. The control of instructions was hardwired, composed of circuits that corresponds with execution of each instruction. This was difficult to modify, expensive to design but fast. Microprogrammed allowed for simpler designs, easier to modify but slower than hardwired control.

Assembly language emerged as a symbolic representation of machine code instructions. Instead of seeing addresses of instructions, programmers saw abstract symbols for instructions like read from memory, store into register rsp, etc.. This was easier to understand, modify and maintain as compared to raw machine code. Still, it was architecture instruction set dependent.

Then, the emergence of higher-level programming languages. With all the widely known advantages in portability, understanding, maintainability, among others. For what I know, assembly is possible only used for critical performance, systems programming, operating system development and embedded systems nowadays.

Now, is very general, because for what I know, changes happened gradually and at different phases in different industries and at different scales.

Great article for scenario planning for an AGI future

(The Impact of AI on Developer Productivity: Evidence from GitHub Copilot )

Technological Unemployment

· 5 min read
Rogelio Lozano

I've come to realize that many of my concepts are highly intuitive and sometimes that works out well, but some other concepts are more complex and require a more elaborated mental model to support good conclusions.

That is the case of questions. What is a question? I'll call this formulation WIQ

The first thing I realize when thinking about it is that is really difficult to analyze. First for the breadth and deepness of the ideas that come to my mind and second because my lake of known methodologies to approach endevours like this.

So I decide to go for it letting the flow of information in order to sink in my meaning of it. My intention is to create necessary conditions for the analysis but by no means I try to be exhaustive. It's beyond the current scope.

Second thing I note is my language limits (I recall Ludwig Wittgenstein aphorism: "Los límites de mi lenguaje son los límites de mi mundo" - I like the quote more in Spanish). When I noticed that WIQ is a self-referential formulation, then I inmediately fall into an ontological problem --> Is there something I can compare to convey the idea of a self-referential formulation in the WIQ?

Narratives!!

Perhaps is really hard to synthetize a comparable example for what I'm thinking and trying to communicate but narratives are great at transmitting highly dimensional-complex ideas!!

So, let's simplify it using a narrative because that is how I think I could undertand this situation better. Let's call a question X and an answer Y.

I'm something X whose existance is instanciated by a certain formulation of symbols (think of a symbol as a representation of some packet of information) that happend to be understood by other beings and generated by them in the first place. So I X, exist, conceptually but I'm only realized when formulated, and my essence is inferred by the realized instances. When I'm realized, many potential related questions coexist and are waiting to be formulated. Also, every time I'm formulated, infinite instances of something called Y, Y's are potentially created that are connected to my current formulation X' and intend to provide further information about X'.

Analysis

I will not attempt to define what is X beyond saying that is a concept. I know that X exists because I create instances of it whose particular formulations are different from each other.

So I'll naively assume that I can know X via instances of it, and perhaps know better the nature of X exploring and analyzing instances of it that boils down to the realm of language. In different languages the particular symbols and syntactic rules change but let's focus on the two languages I know better. Let's forget in this approach about strict grammatical rules so to advance faster. More strict consideration will not invalidate the main arguments.

  • In Spanish we formulate a question simply by preappending a ¿ and postappending a ? symbols to a sentence: ¿Es esto una pregunta? Respuesta: Sí
  • In English, let's simplify and formulate the question using only the symbol ? at the end. Is this a question? Answer: Yes

So there we have it. Let's explore X and their related Y's via instances of it. One particular interesting instance of it is the WIQ formulation:

What is a question?

Now I think is more clear to see that is a self-referential question. A particular instance of the concept that is asking for its own meaning. Is like X being forced (via me writing the formulation) to say: What am I? (Let's not question whether X is capable of instanciating itself or is only subjected to the will of the users of it, us, humans formulating questions... I'll assume the latter).

Ok, so now I have a mental model on which I can think about questions, i.e. A concept I can explore and analyze via instances of it that I formulate. And this heuristic turns out to be sufficient to give an answer to the WIQ.

What is a question? Answer: It is a concept whose realization is via instances I formulate and can be explored analyzing those instances, the product of the analysis is one or more instances of connected information intended to further inform about the formulated question, we call these later instances answers.

Great, now I have a better mental model to explore questions!!!

For example, will programming web applications be completely automated?

Thinking of a question as a concept whose nature can be examined via particular instances of it, we can see that this particular question is an instance of a concept whose nature can be examined via particular instances of formulated questions. In this case the instance is: Will programming web applications be completely automated?

Each question instantiated can be related to multiple instance questions whose core concept is the same. Answering those questions will inform more about the nature of the concepts I'm trying to know about. I'm not saying that all knowledge should ultimately be a concept that abstracts an intuition or perception, but I'm saying that we can try to condensate information towards concepts via questions and see the whole process as an exploration of an unknown abstract idea.

Now with solid mental model to explore and analyze questions, and one that encourages us to think about answering question as an explorative and always expanding process, fearless of uncertainty instead of static answers.

· 3 min read
Rogelio Lozano

To start smoothly, I'll share ideas I consider important to keep in mind when hunting counterexamples and rapidly discard conjectures that will go nowhere when solving difficult logical-constructive problems. Almost anyone subconsciously does think in two or three of these approaches, but it I wanted to have a reminder of these methods of thinking.

  • Think small – Start with small examples because they are easier to construct and reason about and allow you to grasp the fundamental ideas that are in the core structure of the problem.

  • Think exhaustively – There are usually only a small number of possible instances for the first non-trivial value of n. For example, there are only three distinct ways two intervals on the line can occur: as disjoint intervals, as overlapping intervals, and as properly nesting intervals, one within the other. All cases of three intervals can be systematically constructed by adding a third segment in each possible way to these three instances.

  • Hunt for the weakness – If a proposed algorithm is of the form “always take the biggest” (better known as the greedy algorithm), think about why that might prove to be the wrong thing to do.

  • Go for a tie – A devious way to break a greedy heuristic for example is to provide instances where everything is the same size. Suddenly the heuristic has nothing to base its decision on, and perhaps has the freedom to return something suboptimal as the answer.

  • Seek extremes – Many counter-examples are mixtures of huge and tiny, left and right, few and many, near and far. It is usually easier to verify or reason about extreme examples than more muddled ones.

  • Divide and conquer - A classical mental model to approach problems that can be divided into subproblems of smaller data size. The resulting structure after applying the method is usually a recursive tree where each node has the subproblem of smaller data size. One classical Example is MergeSort (with a runtime complexity of O(nlog(n)))

  • Determine what you are going to do. Set a clear and determined mindset of what you are about to do. What is your purpose. Set that idea clearly in your mind so that you can use your energy completely in that task. Do not let multiple "threads" of thinking starting to sprinkle all over around your head. Otherwise, you will not be able to focus and think deeply to solve difficult problems.

  • If you are feeling tired or distracted. Try a short walk or listen attentively to music. But only do that activity. Do not do something else; otherwise is of no usefulness.