Wednesday, 23 August 2023

An application for reading BIG files

There are many times that I want to read a big text file but current text viewers cannot handle it. 
So I decided to develop an application that would put me out of this trouble. 
It is open source and reseased in this repository

Wednesday, 29 March 2023

On the Generative AI rush

It is weird how people react these days about Generative AI, especially ChatGPT. It was released a few months ago and many people already have developed an addiction on it while many others hate it or are afraid of it passionately.

How can serious professionals depend on a chat bot on their daily work? From my perspective they are either not serious or not professionals. Using such a great tool is reasonable but suddenly to depend on it out of the blue is  not rational. When the service stopped a few days ago some people were panicked. Really???

It is actually a great tool and has many programming potentials. The statement that these capabilities will some day signal the end of programming is not accurate. Trivial programming has passed away long ago. There are many tools and websites that actually help you build applications in seconds, it is not only chatGPT. But really innovative programming cannot be created by such chat bots that only use the knowledge that they have from their training and cannot, at least yet, create knowledge and science.

About the fear on the use of AI. Well, as any other technological achievement it can be used for the good or the bad, for the best or the worst of humanity. You can use a knife to cook or kill, on the same spirit you can use AI to detect and treat cancer or manipulate the elections.



Friday, 10 February 2023

About chatGPT

These days the talk of the town is ChatGPT and its potential uses. It really is a great tool and it impressed me, and everybody else, with the way it responds to simple language questions.
Of course it has some flaws. There is some criticism about its math capabilities or the accuracy of some information it provides, like historical dates and paper citations. But this doesn't really bother me; if I wanted math calculations I would use a calculator and for dates and historical events I would prefer Wikipedia. There are more fundamental concerns about the use of chatGPT, especially about its potential use in research as many people claim (or fear) that generative AI could replace original research. Well, not yet.
The current model of chatGPT doesn't have critical "thinking" and has troubles on reasoning and induction. I asked it some questions about how certain AI methods could be combined on an innovative way, like genetic algorithms and unsupervised learning. As there are no references of such combinations, chatGPT discouraged this idea. I would expect an answer that would reason for or against this idea based on the features of these two methods.
Then I thought of asking a stupid and easy question, but it still failed. The question was why my favourite football team cannot win Champions League. The obvious question is that it is a weak team and cannot face the competition. But the model responded that it's just a language model and cannot answer. I had to guide it through some more questions to make it answer correctly.
The cause for these weaknesses must be the architecture of the model. Probably more interconnections among the layers of the model will improve its ability to reason and combine previous knowledge. But this is more of future goal, currently it cannot replace original research and we should probably cross check its quite interesting answers.

Tuesday, 1 November 2022

Java programming is environmental friendly

I recently came across this paper, which provides experimental evidence that show that programming with different languages has different environmental footprint. It is reasonable to say that this is true, although I really believe that no one has every consider this while programming. 
The good news is that I don't have to give up my Java habits, as Java has a good environmental footprint. Also I can find in this study one more excuse to avoid Python, it has a bad environmental footprint.
Of course Python is great but old habits die hard.

Friday, 26 August 2022

On the order of executing genetic procedures

The classical approach on genetic algorithm design is to generate an initial population and then in every generation to execute Selection, Crossover and then Mutation; in that particular order. I often place Selection last, after Crossover and Mutation. There are pretty good reasons for following any of the two approaches and the answer to the question of which forms the best strategy is as usually case dependant.

By placing Selection first in order, you actually make a cleaning of the population from weak solutions and then go on with the rest of the procedures. If the population contains lots of invalid or bad solutions without any hope that they will generate a good solution via Crossover or Mutation then this strategy is profitable. But in case the initial population covers a small part of the solution space then starting with Selection limits the possibilities of reaching a goal solution.

Placing Selection last enables the search of a larger part of the solution space and finally choose the best of them. Especially on NP-hard problems where the solution space is large, this strategy enables first the exploration of a wide part of the space and then the cleanup which is a more fruitful strategy.