Alcides Fonseca

40.197958, -8.408312

Projeto de Regulamento do Emprego Científico em Contexto Não Académico da FCT

Está em consulta pública o Projeto de Regulamento do Emprego Científico em Contexto Não Académico da FCT. Eu fiz a minha parte e enviei o meu feedback sobre a proposta:

1. A candidatura é feita pelos possíveis investigadores doutorados. Isto não faz sentido: a candidatura apoia as entidades (privadas ou públicas) e portanto estas deveriam ser as candidatas. Na situação actual mostra um compromisso maior realizar a candidatura do que escrever apenas uma carta de apoio (proposta actual). Mas na realidade, a entidade deveria-se candidatar ao apoio para a vaga, independentemente da pessoa que for ocupar a vaga (nem submetendo o currículo). É que estes resultados demoram meses a sair, e no entanto os candidatos actuais de topo acabam por arranjar outras alternativas.

2. Estão excluídos os candidatos que já tenham um contrato sem termo. Ora uma pessoa que para financiar o seu doutoramento tenha conseguido uma posição de técnico sem termo, termina o doutoramento e não pode concorrer a estes apoios. É uma restrição completamente desnecessária.

Choose your editor font, tournament style

Coding Font is a web-based tournament game that allows you to select your favorite programming font.

Mine is Inconsolata, which I have used for years in macOS’s Terminal.app), but I’m not sure I ever used in my editor. My VSCode is set to use “Menlo, Monaco, ‘Courier New’, monospace”.

Justin Trudeau on Elections

Trudeau, who is now answering questions from reporters, said his one regret of his premiership has been his failure to introduce electoral reform.
In particular, he said he wanted Canadians to be able to choose their second and third choices in elections.
He said this would have helped reduce polarisation in society and ensure “common ground” between political parties.

BBC: Justin Trudeau resigns as Canadian prime minister

As the extreme right and left gain more power in Europe, we should be considering voting in more than 1 party at a time.

2024 in Music

Throughout December, Spotify promotes their Wrapped feature, where users can share their music stats. Despite being an early Spotify adopter (back when I lived in Sweden, and knew all Swedish ads by heart, without understanding a word), I’ve been abandoning cloud-based solutions over the last decade.

Audio and Scrobbling Setup

For Music, my setup relies on a Synology NAS at home, running Plex for all my movies, tv shows and music. I buy songs from artists directly if possible, otherwise I buy DRM-free versions on iTunes Store, which Apple is trying to hide more and more in their (awful) desktop Music.app.

For tracking, I’ve been a Last.fm user since 2006, with a few gaps in my scrobbling due to using Apple Music or Spotify. But, when configured, Plex scrobbles all my plays (regardless of being mobile, desktop or CarPlay) and this is the first year I can properly share all my stats, wrapped-style.

One of the caveats in this report is that Plex shuffle is not really random. And I don’t mean the perceived randomness, but rather that Plex by default is more likely to include highly-rated songs when shuffling artists or playlists, creating a bubble effect. For 2025, I’ve disabled this feature to try and identify the differences. Personally, I would like this setting to be enabled when playing my whole library, but disabled for playlists and artists, as my whole library has many albums just for the sake of completeness.

2024 Wrapped

I guess my 2024’s report was not surprising. Early in the year I found out about D’artagnan’s two English songs: C’est la vie (a translation of their German original) and We’re Gonna be Drinking, a pub-style Celtic rock shanty.

I’ve been a long-time fan of the Metal Opera super-group Avantasia (And got to see them live in Madrid!) with their latest album A Paranormal Evening with the Moonflow Society, which follows the style of the previous one (they frequently do album trilogies, like my favorite fantasy authors).

And despite being released halfway through November, Linkin Park’s first album with Emily Armstrong From Zero became my daily driver until today. Heavy is the Crown is a complete banger, and The Emptiness Machine, Over Each Other and Two Faced round up the playlist. Now, a lot of folks think they should have started a new band, but I actually think this more pre-meteora style than the last Chester-featured albums. Several bands go through multiple vocalists (most notably Nightwish) when it’s a project led by another musician (Shinoda in this case). Bands are just like companies, they have a life outside of their members, and Theseus’s Ships can happen!

Symphonic and Power Metal artists are a big chunk of my Scrobbles: Avantasia, Amaranthe, Kamelot, Arion, Ad Infinitum, Ayreon, Dynasty, Epic, Aina, Exit Eden, DragonForce and so on. After Amaranthe being the top band in 2023, they have kept in the top-played rotation, joined by DragonForce’s Doomsday Party and Kamelot’s Under Grey Skies ballad.

Ad Infinitum was my favorite newly-discovered band these last couple of years. All three opera-style albums are powerful and are as catchy as pleasant to listen to while working. Amaranthe kept the good pace coming with The Catalyst, of which Damnation Flame is a fantastic demo (pun intended), keeping the fast-paced and symphonic style post Jake’s departure.

This was a fun post to write, and let’s see what 2025 brings us (really excited for Avantasia’s Here Be Dragons).

Sobre as novas propostas do Estatuto da Carreira Científica

O Governo, PS e BE propuseram três versões muito idênticas de um novo estatuto da carreira de investigação científica.

Em linhas gerais, as três propostas pretendem tornar a carreira de investigador alinhada com a de docente do superior:

  • A contratação é feita por concurso internacional (com júri preferencialmente estrangeiro)
  • Tenure de 5 anos para Auxiliar e 3 para Principais e Coordenadores (Para docentes é apenas um ano para estes dois níveis).
  • Necessidade de Agregação para Coordenadores (mas com a ressalva que se vier do estrangeiro, pode fazê-la durante o período experimental)
  • Existência de Investigador Convidado
  • Avaliação em períodos de 3 anos (ou entre 3 e 5, segundo o BE)
  • Subida em escalões igual à de docentes (6 anos de avaliação máxima)

E outras novidades:

  • Existência de Investigador Doutorando, permitindo eventualmente acabar com as bolsas de investigação ilegais !
  • Carga lectiva até 4 horas (opcionais segundo o BE, decidido pelas instituições nas outras duas versões).
  • Permite alguma mobilidade entre a carreira de docência e investigação, mantendo o ordenado original.

Análise

Alinhamento com carreira docente

O alinhamento com a carreira docente parece-me um ponto positivo, em geral, visto que a diferença entre as duas carreiras se distinguem pelo peso da componente lectiva. Honestamente, parece-me um esforço desnecessário fazer uma carreira separada, quando bastava propor uma carreira única, onde a componente lectiva podia ser variável entre 0 a 100%, sendo a avaliação proporcional a essa fatia. Leis mais simples perduram mais tempo.

Infelizmente os graves problemas que existem com a carreira docente são transpostos para a carreira de investigação:

  • O período experimental é demasiado elevado. Quando comparado com o privado e outras áreas da função pública, os contratos permanentes são atribuídos nos primeiros 2-3 anos ou mesmo na celebração do contrato. Porque não podem as universidades e centros a liberdade de oferecer à tenure imediata a candidatos de excelência e CV apropriado.
  • Dá-se importância à agregação/habilitação. Embora seja mais fácil contratar investigadores de entidades estrangeiras onde não exista este título, é exigido na mesma aos nacionais que estejam na indústria. Devíamos descartar a necessidade de habilitação para qualquer posição: o currículo científico já é avaliado na totalidade pelo júri. A existência deste requisito não é justificado, senão para alinhar com a docência (onde também não encontro justificação).
  • Investigadores Auxiliares não gerem projectos. A separação entre investigador auxiliar e principal baseia-se no princípio que os principais gerem projectos. Ora a realidade é que os investigadores auxiliares gerem projectos (desde exploratórios até aos projectos de 3 anos FCT), criando uma situação impossível. Nesse caso, bastava serem investigadores principais de um projecto financiado para progredirem automaticamente para a categoria de Investigador Principal.
  • Os investigadores não doutorados têm de ser doutorandos. Não existe enquadramento para investigadores que não tenham nem queiram ter doutoramento. Passaram por mim já alguns jovens que queriam ser investigadores por alguns anos sem tirarem doutoramento. Estão satisfeitos com a formação de mestrado e estão a ser produtivos (com vários artigos publicados como primeiro autor). Porquê exigir que todos tenham doutoramento?
  • Avaliação de 3 em 3 (ou 5 em 5) anos é insuficiente. Tal como na docência, um período experimental de 5 anos (ou limite de 3 anos para convidados) torna uma avaliação ao final de 3 anos insuficiente para alterar o curso. Devemos promover avaliações ao final de semestres ou pelo menos anuais para docentes/investigadores convidados ou em período experimental. Assim, há de facto feedback útil para melhorarem.

Afinal já existia um LLM Português!

Recentemente o Primeiro Ministro anunciou na WebSummit uma contratação directa para o desenvolvimento de um LLM Português. Falou no IST e na Nova, omitindo o resto do consórcio em IA Responsável que tem trabalhado em vários aspectos relevantes (fairness, sustentabilidade ambiental e fiabilidade).

Curiosamente, um grupo de investigação do meu departamento tem já feito trabalho na área, tendo lançado dois modelos (Albertina e Gervásio) em Português Europeu. Deu agora uma entrevista muito educativa ao Dinheiro Vivo:

Por exemplo, um banco quer apenas ter um assistente virtual para os seus clientes, que fale acerca de depósitos, levantamentos, etc. Não vai querer que o seu chatbot faça tradução automática, sumarização, dê a biografia do Friedrich Nietzsche e faça piadas.

Um LLM não é um chatbot. Um LLM é, numa analogia que as pessoas compreendem, uma espécie de um motor e a partir de um motor nós podemos fazer diferentes modelos de carros. O LLM é aquilo sobre o qual se pode desenvolver diferentes aplicações, uma das quais é o chatbot, outra, por exemplo, a tradução automática, ou o diagnóstico médico, etc.

Então, a nossa proposta nesse artigo de opinião, que saiu no Público em fevereiro de 2023, é que o que precisamos de uma IA aberta e de desenvolvimento de LLMs em código aberto, licença aberta e distribuição aberta para que outros atores e outras organizações, seja da investigação, seja da administração pública, seja do setor da inovação, possam eles próprios construir as suas propostas de valor e tirar partido desses LLMs sem estarem dependentes do fornecimento desses serviços, das big techs. Portanto, quanto mais houver uma oferta cada vez mais variada, mais se reduz o risco de dependência de um pequeno oligopólico que nos fornece esses serviços.

António Branco @ Dinheiro Vivo

Gwern.net on the scalability of AI

I’ve been following Gwern.net for a long time, and I was really curious when I found out this interview that kept him anonymous.


How does an hearing-impaired, introvert American grow up to be a polymath and a scholar?

The wikipedia editor, now full-time writer without a salary
got a lot farther by writing a lot and harder,
by being a lot smarter, by going down rabbitrabbitholesholes
by fourteen, they placed him in charge of wikipedia edits
🎶

Wanted: an elegant solution for breadth-first iteration of a tree structure.

While working on the enumerative feature of GeneticEngine, I wanted to recursively explore all the instances of a grammar, ideally using cache.

My first solution ended up being DFS as I used Python generators to yield all possible options on sum types and recursively iterating through all arguments in product types.

I’ve written this proof of concept pt implement breadth-first iteration in a generic tree structure that yields the right order. However, I find the extra argument a bit ugly, and I would like a more elegant solution. If you happen to know it, I’m all ears!

Hidden Bug: Python class as definition

While preparing geneticengine to participate in the SRBench 2024 run, I was getting None out of a constructor:


def PredictorWrapper(BaseEstimator): def __init__(self, ind: tuple[str, str]): self.ind = ind

def predict(self, X): _, data = self.prepare_inputs(X) return forward_dataset(self.ind0, data) def to_sympy(self): return self.ind1

def mk_estimator(x): print(f“x={x}”) p = PredictorWrapper(x) print(f“p={p}”) return p

Outputting:

x=('np.log(np.power(dataset[:,1], 10.0))', 'log((x1 ** 10.0))')
p=None


Have you found the bug? It took me probably around 1 hour, mainly because I trusted myself too much (and there many other things going on in the code). If you still haven’t found the bug, check the first 3 characters of the code snippet. A function with only other functions inside returns None.

LG to add Ads to Screensavers


And it’s a bold move on LG’s part, considering most folks just want to see their family photos or some calming art while they’re not actively binge-watching. Even if you can turn it off, the default setting is a bit of a slap in the face for anyone who thought they’d bought a premium product free from such annoyances.

This shift towards monetizing every idle moment on your TV is a slippery slope. It’s not just about selling hardware anymore; it’s about squeezing every last cent from customers, and brokering the data to get more revenue. And while LG claims this will boost brand awareness, one has to wonder if viewers will just tune out entirely (or worse, switch to a platform that respects their downtime). As the lines blur between content and advertising, it feels like we’re all just one step closer to a world where even our screen savers are working overtime.

LG adds Ads to Screensavers by Rui Carmo

Someone should send a copy of Black Mirror’s Fifteen Million Merits down to LG leadership. As long as profit is all these corporations care about, and as long as the users don’t stand up to this, it’s all going downhill from here.

TIL: Flags for macOS's open command

  • open -e opens the item in TextEdit. I basically never want this, and it’s fascinating that it’s built in.
  • open -t opens in your default text editor — for me it’s BBEdit; but whatever you have configured will do. Note: this is not $EDITOR but LaunchServices: a macOS-ism.
  • open -F opens a “fresh” version of the app, not doing window or document restoration. Handy if it’s borked!
  • open -R reveals it in the Finder instead of opening it.
  • open -f reads input from stdin and opens the results in your text editor (weird but… cool, I think).

Read the Manual: open — Chris Krycho

The dict: protocol

Custom URL schemes are the de facto way to launch other apps on iOS and Android ecosystems. Today, while reading about the dict: url scheme, I assumed it was a custom url scheme for the default dictionary app on iOS.

But I was wrong:

The (informal) standard was published in 1997 but has kept a relatively low profile since then. You can understand why it was invented – in an age of low-size disk drives and expensive software, looking up data over a dedicated protocol seems like a nifty idea.

http:, ftp:, and … dict:? — Terence Eden

It now makes sense. This was created in an era where protocols dominated the internet. IRC, SMTP, POP3, HTTP, FTP. Nowadays, it’s all about startups with their own internal protocol that moves too fast, for any standardization to happen. Even big names like Google and Facebook care less about open protocols than they used to.

It’s clear that we need more open-source efforts and funding.

Estimated Reading Time

Because I’ve always seen reading time as such an incredibly personal thing, I’ve never once paid any heed to these widgets. In fact, I’ve been slightly perturbed a service would presume to know how quickly I could read an article.

I’ve always viewed any service that sticks a “reading time” widget on its articles as the literary equivalent of fast-food: you’re not here for quality, but for expediency.

Personally, I think they devalue a text more than they add to it.

Estimated Reading Time Widgets — Jim Nielsen

I’m with Nielsen on this one. It makes no sense to suggest an (average) estimated reading time, unless you are trying to convince your audience that this is not a long piece, and you can read it in a minute or two. For personal blogs like this one, I really don’t care if people read it or not. But if you are writing one of those linked-in-self-promotion-bullshit-crypto-AI-latest-fad types of posts, then your goal is to get the reader to take its time. And in those cases, you can bluntly lie and always say it’s one minute.

My guess is that this trend comes in response to instagram/reels/shorts/tiktoks where people do not want to spend any more time on a particular content than they need. Long-form reading is dying, especially on the internet.

Other than teaching how debilitating this is to the younger generation, I hold a very pessimistic view for the next generation.

Guia para um Caloiro de Engenharia Informática

Acabaste de entrar em Engenharia Informática numa das universidades ou politécnicos em Portugal? Se não fazes ideia do que te espera, este post é para ti. Baseado nas minhas próprias experiências como aluno, e nos mais de 15 anos de docência em engenharia informática, deixo aqui alguns esclarecimentos e dicas de como melhor aproveitar esta nova fase da vida.

Ensino Superior vs Secundário

Enquanto passar do ensino básico para o secundário não teve mudanças significativas, entrar na universidade é um passo radical, por vários aspectos.

O primeiro é que são considerados maiores de idade (mesmo que entrem com 17 anos, como foi o meu caso). Já mais ninguém vai ver as vossas notas (nem mesmo os colegas), nem verificar as vossas faltas. Por isso, cabe-vos a vocês fazerem essa gestão, de forma responsável. Para alguns, entrar na universidade implica sair de casa dos pais e mudar de localidade. Essa mudança é óptima para um crescimento pessoal, mas também exige muito mais responsabilidade.

O segundo aspecto de diferença é o tamanho das turmas e consequente relação professor-aluno. Um professor fàcilmente tem entre 100 a 400 alunos por semestre (muito superior aos 60-90 do secundário). Portanto os professores não vão criar uma relação tão próxima com todos os alunos, ou preocupar-se se estão a ter um fraco aproveitamento. De notar que os chumbos no superior são bem mais comuns que no secundário, e por isso os professores não fazem disso um bicho de sete cabeças, nem leva a reuniões no final do ano onde ainda se pode salvar o aluno. Se chumba no projecto ou exame, chumba e que faça para o ano. Cabe-te a ti como aluno comunicar ao professor que dificuldades estás a ter, bem como dar feedback sobre a cadeira. Naturalmente os professores criam ainda alguma ligação com os alunos que vão às aulas e são participativos.

Ainda outra diferença é o facto de que, em engenharia informática, a avaliação não se resume a testes e exames. São poucas as cadeiras que são avaliadas apenas por exame. Normalmente têm exames, mais projectos (e eventualmente mais mini-testes, fichas nas aulas e outros). Mas aquele onde mais se aprende é nos projectos, que simula o tipo de tarefas que vão fazer quando acabarem o curso. E é nos projectos que vão aprender a ser engenheiros de software, que vão aprender a programar e a resolver problemas. É muito tentador na primeira cadeira de programação pedir ao ChatGPT (ou ao colega do lado) a solução do exercício. E embora possam passar à primeira cadeira com boa nota, estão a garantir o chumbo nas cadeiras seguintes. A ideia é que quando acabarem o curso vocês dominem o vosso computador (e outros tantos) e consigam fazer tudo aquilo que desejarem, sem se sentirem perdidos. Não tomem atalhos, e aproveitem para tornar os vossos projectos algo de que se orgulhem e possam mostrar na vossa primeira entrevista de emprego.

Dou-te o primeiro truque secreto para passar a qualquer cadeira: todos os professores têm todas as semanas um horário em que estão no seu gabinete disponíveis para esclarecer quaisquer dúvidas. Se há algo que não estás a perceber, dá um salto no gabinete e tens a dúvida tirada pela pessoa que mais percebe do assunto (e te vai avaliar mais tarde). Quase ninguém aproveita esta oportunidade bem escondida, pelo que, com sorte, podes ter o professor quase uma hora só para ti!

A última diferença a nível de ensino é que não existe bem o conceito de turma que tem todas as aulas juntos. Conforme a disciplina e a tipologia (teórica em anfiteatro, ou teórico-práticas ou práticas laboratoriais), as turmas vão ser diferentes. Esta diferença implica um desenvolvimento de uma ginástica social maior, porque precisam de ser mais activos no vosso círculo de amigos.

O que é Engenharia Informática

Porque escolheste Eng. Informática? Muitos dos candidatos escolheram este curso porque há muito emprego, e gostam de estar no computador (normalmente a jogar jogos, redes sociais e afins).

Há uma fatia ainda significativa que não gostam de engenharia informática (apesar de poderem gostar de informática), e demoram imensos anos a fazer o curso. Conheço também vários casos que depois de um primeiro ano de frustração, decidiram mudar de curso para onde foram ser mais felizes. Se não for o que gostam, não tenham medo em mudar para outra coisa. Um ano “perdido” é na verdade um ano ganho, se a alternativa for demorar 7 anos a acabar o curso de informática sem nenhum prazer.

Desde o primeiro dia que deves tentar perceber o que faz um engenheiro informático. E não estou a falar da versão romantizada das séries e filmes. Um engenheiro típico não passa o dia em salas escuras com terminais pretos a entrar ilegalmente em sistemas do FBI, NASA ou companhia, em menos de 30 segundos. Apesar de existirem especialistas de segurança que o fazem, trata-se uma minoria dos profissionais.

Outro motivo popular para escolher Engenharia Informática é porque gostam de jogos de computador e gostariam de criar jogos. Mais uma vez, apenas uma minoria acaba por conseguir fazer isto, talvez por ser muito exigente, tanto tècnicamente como socialmente.

Uma noção mais realista do protótipo de engenheiro informático envolve as seguintes tarefas:

  • Arquitectura, realizado por elementos mais seniores, com muita experiência em projectos semelhantes
  • Desenvolvimento (Sobretudo programação), realizada por elementos mais juniores da equipa.
  • Testes, tarefa realizada por membros que podem não ser engenheiros sequer
  • Suporte, consiste em ajustar configurações, corrigir bugs, e lidar com clientes (ou representantes deles)

Existem outras tarefas menos representativas, como gestão de sistemas ou administrador de bases de dados (que estão cada vez mais a fazer parte do desenvolvimento).

Finalmente, existe outra actividade que todos fazem parte, e cuja duração aumenta à medida que progridem na carreira: gestão de equipas e gestão de produto/projecto. Se escolheste informática para evitar ter de lidar com pessoas, isso não vai acontecer de todo.

O mais provável quando acabares o curso é passares 20% do tempo a perceber o problema que te deram e a desenhar uma solução (como se fosse um puzzle de lógica ou um problema de matemática) e os restante 80% a tentar perceber porque é que a solução que encontraste falha em alguns casos. Esta realidade é normalmente uma fonte de frustração para os alunos, especialmente porque os problemas no secundário eram fechados (as soluções vinham de um conjunto de 5 ou 6 alternativas dadas durante o ano) e havia uma resposta certa. Em informática, as alternativas são quase infinitas e os problemas estão normalmente sub-especificados. Estamos mais perto do mundo real, não de exercícios académicos.

Dito isto tudo, para quem tem gosto em construir coisas ou resolver problemas difíceis, esta é uma profissão que pode trazer muita satisfação (com algumas dores de cabeça, como é óbvio). E para quem é bom, paga muito bem.

Quatro receitas para o sucesso

1. Ir às aulas

Como expliquei, ir às aulas é opcional. No entanto, os alunos que vão passam quase todos, e os que faltam chumbam quase todos. E quem chumba no primeiro ano (ou pior, passa com 10 ou 11 sem perceber nada) acaba por chumbar também em anos seguintes. Portanto só há em ganhar em ir às aulas, certo?

Bem, os teus colegas de anos anteriores não concordam a 100%. Pré-covid, faltavam para ir a festas até às tantas, e faltavam às aulas para dormir. Depois de faltar durante o primeiro mês nas festas de recepção, percebiam que já tinham perdido o fio à meada, e faltavam também o resto do semestre. Pós-covid, penso que os alunos acham que estudar em casa pelos vídeos gravados é suficiente. Spoiler alert: não é! E esses alunos acabam por chumbar também.

Ir às aulas é a receita para fazer o curso com sucesso. Em primeiro lugar, criam-se laços com colegas de curso (laços esses impossíveis de serem criados no Discord, visto que 90% da comunicação é não-verbal), colegas esses que vos vão ajudar a manter focados, a tirar dúvidas, apoiar quando estiverem com dificuldades ou abatidos, e em festejar depois de se livrarem de uma cadeira. Notem que, em informática, é normal ficar mais umas horas na universidade a fazer trabalhos em salas que existem para o efeito. Aproveitem bem esta oportunidade. As ligações feitas nestes momentos não se comparam aos discords e whatsapps. É também um bom treino para a interação que vão ter no mundo de trabalho.

Finalmente, ir às aulas permite esclarecer dúvidas em tempo real, ganhar experiências e dicas que não estão nos slides, nos livros ou na internet. Em grande parte das vezes as respostas às perguntas do exame são dadas nas aulas teóricas e práticas. É uma grande vantagem estar presente!

2. Não deixar para a última

XKCD tower of dependencies

No seguimento de ir às aulas, a segunda dica é fazer os projectos quando o enunciado é lançado. O principal motivo é porque os alunos são muito maus a estimar o tempo que demoram. Primeiro, porque acham que os trabalhos demoram o mesmo tempo que os exercícios nas aulas (não é bem verdade), segundo porque assumem que se lembram de tudo nas aulas (não é verdade se não os fizerem logo) e em terceiro porque se esquecem que a informática tem muitos meandros, que podem tornar uma simples tarefa muito demorada (lembram-se dos 80% a resolver problemas com a solução?).

E fazer o trabalho no dia que sai o enunciado tem a vantagem de ainda se lembrarem das dicas que os professores deram nas aulas. Passado duas semanas, perto da deadline, essas dicas já foram há muito esquecidas.

E por mais que achem que trabalham melhor sob pressão, isso não é verdade. Chama-se procrastinação, e fazer as coisas em cima da hora não dá tempo para testar e afinar, coisas essenciais nos trabalhos de informática.

3. Grupos

Em informática, a maior parte dos trabalhos são em grupo, e ter um bom grupo é meio caminho andado para ter boa nota.

Em primeiro lugar, tenta encontrar colegas que tenham as mesmas cadeiras que tu. Isto vai fazer com que estejam sempre alinhados nas mestas, e trabalhem ao mesmo tempo. Grupos com cadeiras diferentes (e de diferentes anos) vai resultar em trabalhares num projecto sozinho, que o teu colega está a trabalhar noutro. Depois os professores apercebem-se disto (é muito fácil, sobretudo com discussões), e podem os dois ter 0 no trabalho, e ser acusados de plágio.

O segundo critério é que os teus colegas de grupo estejam mais ou menos ao teu nível, seja em motivação para fazer a cadeira, seja em capacidades de fazer o trabalho. Juntar um aluno de 20 e um aluno de 11 é uma excelente receita para ambos passarem à cadeira, mas o de 8 vai chumbar a todas as cadeiras seguintes por falta de bases. Dois alunos de 11 com motivação facilmente têm uma nota melhor, e ficam com as bases para os anos seguintes.

4. Actividades

Uma das melhores coisas do ensino superior é conhecer pessoas com interesses iguais. Para isso sugiro que olhes para os núcleos e grupos da tua universidade (desde grupos culturais, tunas, rádio, desportos etc..) e experimenta dois ou três. É muito importante teres também um grupo social fora do curso, para perceberes as diferentes realidades no mundo. Nem todas as pessoas vão ser eng. informáticos bem pagos. Muitos outros cursos vão ter baixa empregabilidade, ou dificuldades em fazer trabalhos de campo, ou festas bem mais interessantes, ou rádios de género bem diferentes do de informática. É bom ter contacto com outras realidades.

Pessoalmente, recomendo contra ocuparem-se com jogos de computador. Já vais passar imenso tempo em frente ao ecrã a fazer os trabalhos e deves cortar no tempo em ecrã para fins recreativos. É uma questão de saúde: a vossa vista vai diminuir, vão ter problemas de costas, pulsos e outros. Para que tenhas uma carreira (e vida) longa, recomendo que escolhas actividades ao ar livre ou com actividade física para compensar a ausência disso no teu curso. Pessoalmente, sou fã de jogos de tabuleiro como alternativa a jogos de computador, mas certamente a tua universidade tem várias actividades por onde escolheres.

Perguntas frequentes:

  • Que computador comprar?

É um mito que precisam de um computador super potente para fazer o curso de informática. A coisa que pode ser mais exigente é correr máquinas virtuais, que nos dias que correm, qualquer computador mediano suporta. As minhas recomendações para um computador que dure a faculdade inteira é um portátil com pelo menos 16GB de RAM, 512GB de disco, e um processador Intel Core i3, AMD ou ARM. Uma placa gráfica integrada serve perfeitamente, e uma gráfica potente só ajuda nos jogos de computador, aquilo que queres evitar.

  • Fazer estágios?

Muitas empresas oferecem estágios de verão. Embora Portugal tenha um tempo fantástico para passar o Verão na praia, um estágio de verão pode distinguir-te dos teus colegas do teu ano. Numa altura onde as contratações na área estão difíceis para juniores (substituição por ChatGPTs e despedimentos em massa nas FAANG), devem ganhar o máximo de experiência diferenciada. Outra alternativa é contribuir para projectos open-source ou ajudar professores em projectos de investigação.

  • Seguir para mestrado?

Normalmente Engenharia Informática é vendida como licenciatura + mestrado. Embora seja perfeitamente possível arranjar emprego com apenas uma licenciatura, conseguem posições mais interessantes se tiverem o mestrado. No mestrado tipicamente podem escolher as cadeiras nos tópicos que mais gostam, pelo que tipicamente é bem mais agradável que a licenciatura, e custa menos.

A divisão entre licenciatura e mestrado foi criada para os alunos poderem fazer o mestrado noutra instituição. Durante o ensino, devem tentar ter contacto com outras realidades académicas, seja mudando no mestrado para outra universidade/politécnico, seja aproveitando o programa Erasmus e ir para fora um tempo.

  • Preciso de saber Inglês para fazer o curso de engenharia informática?

Honestamente, sim. Apesar das licenciaturas em Portugal serem em português e existirem vários livros em Português, a verdade é que grande parte dos recursos online estão em inglês. Desde documentação de linguagens de programação e software, até documentos científicos, passando por blogues técnicos e por páginas detalhadas da Wikipédia que só existem em inglês, precisam mesmo de dominar essa língua franca. Se não estiverem à vontade, recomendo que procurem cursos livres numa universidade perto. (U.Lisboa, U.Coimbra, U.Porto, U.Aveiro, U. Minho)

O autor escreve no acordo ortográfico de 1945, como crítica ao novo acordo ortográfico. O autor agradece também à Catarina Gamboa, Paulo Santos e Antónia Lopes pelo feedback sobre o draft inicial, sem prejuízo de poderem não partilhar da opinião na sua totalidade

False and True Positive Testing in Differential Testing

Alive2 is a translation validation tool: given two versions of a function in LLVM IR–usually these correspond to some code before and after an optimization has been performed on it–Alive2 tries to either prove that the optimization was correct, or prove that it was incorrect. Alive2 is used in practice by compiler engineers: more than 600 LLVM issues link to our online Alive2 instance.

John Regehr & Vsevolod Livinskii

Really interesting read on how Alive2 is used alongside the Minotaur superoptimizer and llvm-mca.

European Union will stop funding Open-Source projects in Horizon Program

The European Union must keep funding free software

Since 2020, Next Generation Internet (NGI) programmes, part of European Commission’s Horizon programme, fund free software in Europe using a cascade funding mechanism (see for example NLnet’s calls). This year, according to the Horizon Europe working draft detailing funding programmes for 2025, we notice that Next Generation Internet is not mentioned any more as part of Cluster 4.

NGI programmes have shown their strength and importance to support the European software infrastructure, as a generic funding instrument to fund digital commons and ensure their long-term sustainability. We find this transformation incomprehensible, moreover when NGI has proven efficient and ecomomical to support free software as a whole, from the smallest to the most established initiatives. This ecosystem diversity backs the strength of European technological innovation, and maintaining the NGI initiative to provide structural support to software projects at the heart of worldwide innovation is key to enforce the sovereignty of a European infrastructure.
Contrary to common perception, technical innovations often originate from European rather than North American programming communities, and are mostly initiated by small-scaled organizations.

Previous Cluster 4 allocated 27 millions euros to:

“Human centric Internet aligned with values and principles commonly shared in Europe” ; “A flourishing internet, based on common building blocks created within NGI, that enables better control of our digital life” ; “A structured eco-system of talented contributors driving the creation of new internet commons and the evolution of existing internet commons” .

In the name of these challenges, more than 500 projects received NGI funding in the first 5 years, backed by 18 organisations managing these European funding consortia.

NGI contributes to a vast ecosystem, as most of its budget is allocated to fund third parties by the means of open calls, to structure commons that cover the whole Internet scope – from hardware to application, operating systems, digital identities or data traffic supervision. This third-party funding is not renewed in the current program, leaving many projects short on resources for research and innovation in Europe.

Moreover, NGI allows exchanges and collaborations across all the Euro zone countries as well as “widening countries“¹, currently both a success and and an ongoing progress, likewise the Erasmus programme before us. NGI also contributes to opening and supporting longer relationships than strict project funding does. It encourages to implement projects funded as pilots, backing collaboration, identification and reuse of common elements across projects, interoperability in identification systems and beyond, and setting up development models that mix diverse scales and types of European funding schemes.

While the USA, China or Russia deploy huge public and private resources to develop software and infrastructure that massively capture private consumer data, the EU can’t afford this renunciation.
Free and open source software, as supported by NGI since 2020, is by design the opposite of potential vectors for foreign interference. It lets us keep our data local and favors a community-wide economy and know-how, while allowing an international collaboration.
This is all the more essential in the current geopolitical context: the challenge of technological sovereignty is central, and free software allows to address it while acting for peace and sovereignty in the digital world as a whole.

— OW2

The Register has more information on this issue.

4 ways to break out of a firewalled environment

There are four tricks in our arsenal that we’re going to use to jailbreak internal hosts behind a restrictive customer firewall:

Gabriella Gonzalez

I’ve lost count of how many times I’ve needed to do some kind of creating a socket between machines behind VPNs/Firewalls. This is a pretty useful summary of all the useful techniques.

Uv as the sane Python packaging default

There are two main issues with python’s packaging tooling: There is no sane way to distribute python-written apps, in a way that guarantees that all dependencies (including C and Fortran-written OS-level dependencies) and a way to manage the dependencies of your python apps.

In particular, in-the-wild requirements.pip are neither OS-aware neither python-version aware. Maybe with Python 3.9 I want a set of dependencies, and with Python 3.13 I want another. This becomes relevant when dealing with multiple (api-breaking) numpy and other scientific packages.

Astral released a new uv version that tries to solidify the ecosystem, replacing all the usual, incomplete suspects (poetry, pip-tools, etc..). Their newish goal with uv is to become Python’s cargo. With uv, you can now create and run projects, execute standalone python tools on your OS (replacing pipx) and managing different python versions.

But one of my favorite features is the support for PEP 723, which allows you to include dependencies in single-file python scripts:

#!/usr/bin/env uv run
# /// script
# requires-python = ">=3.12"
# dependencies = [
#     "flask==3.*",
# ]
# ///
import flask
# ...

(via Simon Willison)

Rust Low-level Concurrency in Practice

Mara Bos and O’REILLY have made Rust Atomics and Locks available online for free.

If the only thing you need is to create threads to handle different tasks that share no state, you won’t need this. But if you ware working on shared data-structures among threads, this books provides a full reference with examples that will help you step to the next level in Rust. Highly recommend!

I might even use this book to revamp my “Parallel and Concurrent Programming” master-level course.