Em homenagem ao Mês do Código Aberto , gostaria de escrever sobre o ShlinkedIn . ShlinkedIn é uma paródia de um site muito popular (deixarei para o leitor adivinhar qual) e, de acordo com seu principal desenvolvedor , tem milhares de usuários. Cerca de um ano atrás, ele estava na página nº 1 do HackerNews . Ouvi falar deles pela primeira vez em um podcast britânico chamado Tech Team Weekly .
Para ser completamente claro, não fui eu quem o construiu... embora tenha feito algumas pequenas contribuições que podem ser caracterizadas como uma desculpa para escrever este post no blog. Um leitor casual pode pensar que este site é um projeto paralelo casual de um engenheiro de software - e eles estariam corretos - mas aqui estão algumas razões pelas quais acho que ShlinkedIn é mais do que aparenta:
A pilha de tecnologia, que você pode encontrar em seu GitHub aqui, é realmente muito interessante. Ele usa o relativamente novo Phoenix LiveView , pois Holtz queria praticar a construção de algo com ele. O núcleo do ShlinkedIn foi esse vídeo
Esta é uma demonstração do que uma rede social pode ser. Não há anúncios. Não há coleta de dados. Em vez disso, ganha dinheiro com um nível pago opcional
Ele critica o LinkedIn e a cultura agitada que o LinkedIn às vezes parece representar. Ele também evolui com a plataforma: no lado direito estão as manchetes de notícias que qualquer um pode inventar, em cada postagem há botões de reação completamente sem sentido (como “leite” e “molho picante”) e, em todo o site, são exibidos os principais recursos avançados, como geração de NFT, animações de página de perfil e integração com o Spotify. Eles ainda têm um recurso de IA, e perguntei em sua discórdia qual biblioteca eles estavam usando. Eles disseram que estavam usando “libs malucas” e demorei um pouco para perceber que eles estavam brincando
Muitas das vantagens do código aberto são óbvias: é gratuito e “vamos todos jogar”, nas palavras de Linus Torvalds (sim, me senti obrigado em um post sobre código aberto a citar Linus Torvalds. No contexto, ele estava tendo um discussão com alguém sobre permitir que as empresas usem software de código aberto para obter lucro). Mas também apresenta uma oportunidade de aprendizado muito mais realista e relevante do que um tutorial ou, ouso dizer, uma pergunta do LeetCode.
Quando você cria uma conta e faz login, você pode postar. Fiquei curioso sobre os botões e tentei alguns. Você pode adicionar emojis desnecessários a uma postagem, mas não especifica quantos. Um botão “desfazer” seria útil porque o padrão “ctl + z” não funciona aqui.
Então como você faz isso? Você procura como as pessoas em outros aplicativos implementam “desfazer”? Talvez apenas use uma estrutura de dados simples, como uma pilha, para rastrear todas as alterações? Talvez seja muito mais simples…porque estes botões não incorporam nada aleatório, porque não usar apenas alguns contadores simples? Esses são os tipos de perguntas que você teria que fazer a si mesmo para implementar um recurso significativo e também são os tipos de coisas que você realmente faria no campo (embora em um projeto muito maior e mais complicado).
…Mas enquanto eles esperavam por isso, decidi trabalhar em algo completamente diferente. Havia um botão "Espaçamento excessivo", mas parecia não fazer nada. Eu registrei um problema no GitHub deles e o desenvolvedor esclareceu que só faria algo se houvesse quebras de parágrafo. Isso parecia um fruto fácil para demonstrar que eu estava falando sério.
Acabou não sendo tão complicado, mas com certeza foi menos trivial do que eu imaginava. Existem dois arquivos escritos em JavaScript e Elixir, respectivamente, que lidam com este formulário acima. O desenvolvedor esclareceu que o Phoenix LiveView é front-end, mas na superfície este projeto parecia desafiar a dicotomia ao misturar front-end e back-end juntos. O criador do Phoenix LiveView parece corroborar um pouco isso em sua postagem no blog: Phoenix LiveView é algo completamente diferente.
O LiveView elimina as camadas de abstração, porque resolve o cliente e o servidor em uma única abstração. O HTTP quase desaparece completamente. Chega de DESCANSO. Não há mais JSON. Sem APIs GraphQL, controladores, serializadores ou resolvedores. Você apenas escreve modelos HTML e um processo com informações de estado o sincroniza com o navegador, atualizando-o somente quando necessário. E não há JavaScript para escrever.
-- Fonte
Há algumas horas, agora sou um colaborador do ShlinkedIn. A princípio fiz um alerta, mas ficou péssimo e não condizia com o formato de um erro semelhante. Em vez disso, decidi adicionar uma nova tag, distingui-la com um id e escrever uma pequena quantidade de JavaScript para detectar quebras de parágrafo e apenas adicionar espaços excessivos se uma condição fosse atingida.
Eu provavelmente não deveria ter usado “var”, mas, por favor, não diga a eles.
Como funcionam o Phoenix LiveView e o Elixir? Achei que teria que aprender muito mais sobre eles, mas acabou sendo apenas JavaScript. Além disso, por que eu tive que usar JavaScript? Por que o criador do Phoenix LiveView parece argumentar que o JavaScript é desnecessário aqui?
Estou correto em minha crença de que o Phoenix LiveView confunde a linha entre front-end e back-end, ou isso está incorreto? Muitas pessoas no Medium argumentam que o Phoenix LiveView é extremamente eficiente, mas é? Se sim, como faço para testar isso?
O ShlinkedIn é criativo, é de código aberto e tira proveito de coisas novas e novas ideias. Também é muito divertido... tem até sua própria versão dentro do universo de The Onion .
Siga o Discord deles e você poderá dar uma primeira olhada em como uma mídia social escala. Há também algumas discussões menos divertidas que eles têm, como moderar um comentário racista quando o autor da postagem está parodiando anonimamente uma pessoa famosa. A declaração dela é realmente racista ou ela está parodiando um comentário racista?
O projeto é novo e interessante, por isso acho que merece a atenção do HackerNoon.
(Se você gostou do que leu, considere me seguir no meu blog )