<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Kornel Rzeczycki</title>
    <description>The latest articles on DEV Community by Kornel Rzeczycki (@kornel_rzeczycki_523d157b).</description>
    <link>https://dev.to/kornel_rzeczycki_523d157b</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3849142%2F48de8f44-f452-40b8-9db6-940b2661976f.jpeg</url>
      <title>DEV Community: Kornel Rzeczycki</title>
      <link>https://dev.to/kornel_rzeczycki_523d157b</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kornel_rzeczycki_523d157b"/>
    <language>en</language>
    <item>
      <title>Ustawiłem zegar</title>
      <dc:creator>Kornel Rzeczycki</dc:creator>
      <pubDate>Sat, 07 Nov 2026 22:21:30 +0000</pubDate>
      <link>https://dev.to/kornel_rzeczycki_523d157b/ustawilem-zegar-5hie</link>
      <guid>https://dev.to/kornel_rzeczycki_523d157b/ustawilem-zegar-5hie</guid>
      <description>&lt;p&gt;Jak brakująca stała przesunął wynik w grudniu&lt;br&gt;
Celem ćwiczenia było napisanie funkcji, która na podstawie daty w formacie rok–miesiąc–dzień wyznacza dzień tygodnia. Datę zapisywałem zgodnie z formatem RFC 3339, a do obliczeń wykorzystałem wzór Zellera. Implementację przygotowałem w C#.&lt;/p&gt;

&lt;p&gt;Na początku funkcja działała poprawnie dla większości sprawdzanych dat. Dwa testy zwracały jednak inny wynik, niż oczekiwałem. Zauważyłem, że oba dotyczyły dat grudniowych. To zawęziło poszukiwania: ponownie sprawdziłem implementację wzoru i odkryłem, że pominąłem stałą „−2” w jednym z jego składników.&lt;/p&gt;

&lt;p&gt;Po poprawieniu wzoru wszystkie testy przechodziły.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;DayOfWeek&lt;/span&gt;&lt;span class="p"&gt;[((&lt;/span&gt;&lt;span class="m"&gt;26&lt;/span&gt; &lt;span class="p"&gt;*&lt;/span&gt; &lt;span class="n"&gt;month&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;/&lt;/span&gt; &lt;span class="m"&gt;10&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="n"&gt;day&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="n"&gt;year&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="n"&gt;year&lt;/span&gt; &lt;span class="p"&gt;/&lt;/span&gt; &lt;span class="m"&gt;4&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="n"&gt;cent&lt;/span&gt; &lt;span class="p"&gt;/&lt;/span&gt; &lt;span class="m"&gt;4&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="m"&gt;5&lt;/span&gt; &lt;span class="p"&gt;*&lt;/span&gt; &lt;span class="n"&gt;cent&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;%&lt;/span&gt; &lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ta pomyłka przypomniała mi, jak ważne są testy obejmujące różne miesiące i przypadki brzegowe. Pokazała mi też, że gdy wynik jest nieoczekiwany, warto wrócić do założeń i dokładnie porównać implementację z użytym algorytmem.&lt;/p&gt;

&lt;p&gt;Źródła:&lt;br&gt;
&lt;a href="https://swistak.codes/post/okreslanie-dnia-tygodnia-dla-dowolnej-daty/" rel="noopener noreferrer"&gt;https://swistak.codes/post/okreslanie-dnia-tygodnia-dla-dowolnej-daty/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.rfc-editor.org/info/rfc3339/#appendix-B" rel="noopener noreferrer"&gt;https://www.rfc-editor.org/info/rfc3339/#appendix-B&lt;/a&gt;&lt;/p&gt;

</description>
      <category>learning</category>
      <category>programming</category>
      <category>debugging</category>
      <category>fix</category>
    </item>
    <item>
      <title>Jak odzyskać władzę nad Windows 11: gdy BitLocker i zapomniane hasło odetną Cię od świata</title>
      <dc:creator>Kornel Rzeczycki</dc:creator>
      <pubDate>Tue, 01 Sep 2026 08:41:05 +0000</pubDate>
      <link>https://dev.to/kornel_rzeczycki_523d157b/jak-odzyskac-wladze-nad-windows-11-gdy-bitlocker-i-zapomniane-haslo-odetna-cie-od-swiata-29n8</link>
      <guid>https://dev.to/kornel_rzeczycki_523d157b/jak-odzyskac-wladze-nad-windows-11-gdy-bitlocker-i-zapomniane-haslo-odetna-cie-od-swiata-29n8</guid>
      <description>&lt;p&gt;Wyobraź sobie taką sytuację: włączasz rano komputer. Nie zmieniałeś niczego w BIOS-ie, nie grzebałeś przy partycjach, a mimo to Windows zamiast standardowego ekranu logowania wita Cię niebieskim ekranem z żądaniem 48-cyfrowego klucza odzyskiwania BitLockera.&lt;/p&gt;

&lt;p&gt;Na dodatek okazuje się, że za nic w świecie nie pamiętasz hasła do swojego profilu.&lt;/p&gt;

&lt;p&gt;Brzmi jak cyfrowy wyrok śmierci dla danych?&lt;/p&gt;

&lt;p&gt;Na szczęście niekoniecznie.&lt;/p&gt;

&lt;p&gt;W moim przypadku udało się najpierw odblokować dysk za pomocą klucza BitLocker, a następnie odzyskać dostęp do danych bez reinstalowania systemu i bez ich utraty.&lt;/p&gt;

&lt;h2&gt;
  
  
  Disclaimer
&lt;/h2&gt;

&lt;p&gt;Opisuję tutaj procedurę, którą wykorzystałem na własnym komputerze w celu odzyskania dostępu do własnych danych.&lt;/p&gt;

&lt;p&gt;Podmiana utilman.exe jest znanym mechanizmem umożliwiającym uzyskanie uprzywilejowanego wiersza poleceń z poziomu ekranu logowania. Z tego powodu nie powinno się pozostawiać takiej modyfikacji w systemie — po zakończeniu operacji należy bezwzględnie przywrócić oryginalny plik.&lt;/p&gt;

&lt;p&gt;Warto też zaznaczyć jedną rzecz: konto utworzone bezpośrednio z poziomu środowiska odzyskiwania nie zawsze zachowuje się jak normalne konto utworzone przez Windows podczas standardowej konfiguracji systemu. W moim przypadku utworzone w ten sposób konto nie dawało mi pełnego, normalnego środowiska użytkownika i nie mogłem z niego korzystać tak, jak oczekiwałem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Krok 1: Pierwsza zasieka — BitLocker
&lt;/h2&gt;

&lt;p&gt;Pierwszym problemem okazał się BitLocker.&lt;/p&gt;

&lt;p&gt;Windows potrafi przejść w tryb odzyskiwania BitLockera, jeżeli mechanizmy zabezpieczeń związane z TPM wykryją zmianę w środowisku rozruchowym. Może się to zdarzyć między innymi po niektórych aktualizacjach lub zmianach dotyczących procesu uruchamiania systemu.&lt;/p&gt;

&lt;p&gt;W moim przypadku pojawił się ekran z żądaniem klucza odzyskiwania.&lt;/p&gt;

&lt;p&gt;Na szczęście klucz odzyskiwania BitLockera miałem wcześniej zapisany na zewnętrznym nośniku danych. Dzięki temu mogłem go odnaleźć i przepisać na ekranie odzyskiwania.&lt;/p&gt;

&lt;p&gt;Po wpisaniu 48-cyfrowego klucza dysk został odblokowany i mogłem przejść do środowiska odzyskiwania Windows oraz uruchomić Wiersz Poleceń.&lt;/p&gt;

&lt;p&gt;I tutaj zaczęła się właściwa zabawa.&lt;/p&gt;

&lt;h2&gt;
  
  
  Krok 2: Problem z kontem i zaszyfrowanym dyskiem
&lt;/h2&gt;

&lt;p&gt;Warto tutaj doprecyzować jedną rzecz, ponieważ łatwo pomylić dwie niezależne kwestie.&lt;/p&gt;

&lt;p&gt;Moje konto Windows było kontem lokalnym, a nie kontem Microsoft. Sam profil użytkownika znajdował się jednak na dysku chronionym przez BitLocker.&lt;/p&gt;

&lt;p&gt;W związku z tym próba wykorzystania standardowego net user z poziomu środowiska odzyskiwania nie rozwiązała mojego problemu. Środowisko recovery działa w innym kontekście niż normalnie uruchomiony Windows, a dostęp do właściwej instalacji systemu i znajdujących się na niej danych użytkownika wymagał wcześniejszego odblokowania zaszyfrowanego dysku.&lt;/p&gt;

&lt;p&gt;To ważne rozróżnienie: problemem nie było samo konto lokalne, tylko sposób, w jaki środowisko odzyskiwania miało dostęp do właściwej instalacji Windows znajdującej się na zaszyfrowanym woluminie.&lt;/p&gt;

&lt;p&gt;Jeżeli natomiast korzystasz z konta Microsoft, przedstawiona dalej metoda odzyskiwania dostępu również może mieć zastosowanie. W takim przypadku sposób uwierzytelniania konta jest inny, ale uzyskanie lokalnego dostępu administracyjnego pozwala przede wszystkim utworzyć nowe konto lokalne i wykorzystać je do odzyskania dostępu do danych.&lt;/p&gt;

&lt;p&gt;Dodatkowo okazało się, że CMD uruchomione w środowisku odzyskiwania niekoniecznie operuje na tej instalacji Windows, którą widzimy jako C: po normalnym uruchomieniu systemu.&lt;/p&gt;

&lt;p&gt;Najpierw trzeba więc ustalić, która litera dysku odpowiada właściwej instalacji Windows.&lt;/p&gt;

&lt;p&gt;Pomocne może być np.:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;dir C:\Windows&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Jeżeli nie widzimy właściwej instalacji, sprawdzamy kolejne litery dysków.&lt;/p&gt;

&lt;p&gt;Po znalezieniu właściwej partycji mogłem przejść do kolejnego etapu.&lt;/p&gt;

&lt;h2&gt;
  
  
  Krok 3: Utilman jako awaryjne wejście do systemu
&lt;/h2&gt;

&lt;p&gt;Windows posiada na ekranie logowania przycisk Ułatwienia dostępu. Odpowiada za niego między innymi program utilman.exe.&lt;/p&gt;

&lt;p&gt;Wykorzystałem znany mechanizm polegający na zastąpieniu tego programu kopią cmd.exe.&lt;/p&gt;

&lt;p&gt;Najpierw zrobiłem kopię oryginalnego pliku:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;move C:\Windows\System32\utilman.exe C:\Windows\System32\utilman.exe.bak&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Następnie skopiowałem w jego miejsce Wiersz Poleceń:&lt;br&gt;
&lt;code&gt;copy C:\Windows\System32\cmd.exe C:\Windows\System32\utilman.exe&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Kluczowa jest tutaj kopia .bak. Bez niej późniejsze przywrócenie systemu byłoby znacznie bardziej kłopotliwe.&lt;/p&gt;

&lt;h2&gt;
  
  
  Krok 4: CMD zamiast Ułatwień dostępu
&lt;/h2&gt;

&lt;p&gt;Po ponownym uruchomieniu komputera pojawił się standardowy ekran logowania.&lt;/p&gt;

&lt;p&gt;Kliknąłem ikonę Ułatwień dostępu w prawym dolnym rogu.&lt;/p&gt;

&lt;p&gt;Zamiast standardowego menu Windows otworzył się… Wiersz Poleceń.&lt;/p&gt;

&lt;p&gt;I co najważniejsze — został uruchomiony w kontekście systemowym, a więc z bardzo wysokimi uprawnieniami.&lt;/p&gt;

&lt;p&gt;To był moment, w którym odzyskałem możliwość wykonywania operacji administracyjnych na lokalnej instalacji Windows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Krok 5: Utworzenie właściwego użytkownika
&lt;/h2&gt;

&lt;p&gt;Pierwsza próba utworzenia użytkownika na wcześniejszym etapie nie dała mi tego, czego potrzebowałem. Konto istniało, ale środowisko użytkownika nie zachowywało się jak normalny profil Windows.&lt;/p&gt;

&lt;p&gt;Dlatego wykorzystałem odzyskany dostęp do uruchomionego systemu i utworzyłem nowe konto lokalne już z poziomu Windows.&lt;/p&gt;

&lt;p&gt;W tym celu uruchomiłem CMD z uprawnieniami administratora i użyłem:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;net user Serwis 1234 /add&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Następnie dodałem konto do grupy administratorów:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;net localgroup Administratorzy Serwis /add&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Po wylogowaniu lub ponownym uruchomieniu komputera konto Serwis pojawiło się na ekranie logowania.&lt;/p&gt;

&lt;p&gt;Po zalogowaniu okazało się jednak, że nowe konto nie działało w pełni jak standardowy profil Windows. Eksplorator Windows nie uruchamiał się poprawnie, więc nie mogłem po prostu otworzyć starego katalogu użytkownika i skopiować plików za pomocą GUI.&lt;/p&gt;

&lt;p&gt;Nie oznaczało to jednak, że dane są niedostępne.&lt;/p&gt;

&lt;p&gt;Do ich odzyskania wykorzystałem PowerShell i narzędzie robocopy, które pozwoliło mi skopiować zawartość starego profilu bez korzystania z Eksploratora Windows.&lt;/p&gt;

&lt;p&gt;Użyłem między innymi następującej komendy:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;robocopy "C:\Users\TwojaNazwa" "D:\Kopia_Prawidlowa" /E /R:0 /W:0 /XF NTUSER.dat NTUSER.dat.* /XJD /NFL /NDL&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Parametry dobrałem tak, aby kopiowanie obejmowało również podkatalogi, nie ponawiało operacji w przypadku błędów oraz pomijało pliki związane z aktywnym profilem użytkownika, których nie potrzebowałem do odzyskania własnych danych.&lt;/p&gt;

&lt;p&gt;Dzięki temu mogłem odzyskać potrzebne dokumenty i pozostałe pliki bez konieczności uruchamiania Eksploratora Windows.&lt;/p&gt;

&lt;p&gt;W praktyce okazało się to nawet dobrym przypomnieniem, że w sytuacji awaryjnej Windows nie musi oferować działającego GUI, żeby nadal można było skutecznie pracować z systemem plików.&lt;/p&gt;

&lt;h2&gt;
  
  
  Krok 6: Sprzątanie po operacji
&lt;/h2&gt;

&lt;p&gt;Tutaj nie ma miejsca na zapomnienie.&lt;/p&gt;

&lt;p&gt;Podmiana utilman.exe była tylko tymczasowym mechanizmem odzyskiwania dostępu. Nie powinien pozostać w systemie.&lt;/p&gt;

&lt;p&gt;Po zakończeniu operacji przywróciłem oryginalny plik:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;copy C:\Windows\System32\utilman.exe.bak C:\Windows\System32\utilman.exe&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;W ten sposób przywróciłem oryginalne Ułatwienia dostępu i usunąłem zmianę wykorzystaną podczas odzyskiwania.&lt;/p&gt;

&lt;p&gt;A co z DISM i SFC?&lt;/p&gt;

&lt;p&gt;Można dodatkowo sprawdzić integralność systemu za pomocą:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;DISM /Online /Cleanup-Image /RestoreHealth&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;oraz:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sfc /scannow&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Warto jednak rozróżnić te dwie rzeczy.&lt;/p&gt;

&lt;p&gt;SFC i DISM nie są bezpośrednim zamiennikiem ręcznego przywrócenia utilman.exe. Ich zadaniem jest wykrywanie i naprawianie problemów z plikami systemowymi oraz magazynem składników Windows.&lt;/p&gt;

&lt;p&gt;Jeżeli mamy własną kopię oryginalnego utilman.exe.bak, to właśnie jej użycie jest najbardziej jednoznacznym sposobem cofnięcia wykonanej przez nas podmiany.&lt;/p&gt;

&lt;p&gt;Dopiero później można potraktować SFC/DISM jako dodatkową kontrolę integralności systemu.&lt;/p&gt;

&lt;h2&gt;
  
  
  Happy end
&lt;/h2&gt;

&lt;p&gt;Ostatecznie cały problem sprowadzał się do kilku warstw zabezpieczeń:&lt;/p&gt;

&lt;p&gt;BitLocker → odzyskanie dostępu do dysku → środowisko odzyskiwania → odzyskanie dostępu administracyjnego → utworzenie normalnego konta → skopiowanie danych → przywrócenie zmian.&lt;/p&gt;

&lt;p&gt;Nie straciłem swoich plików.&lt;/p&gt;

&lt;p&gt;Wniosek&lt;/p&gt;

&lt;p&gt;Najciekawsza lekcja z całej sytuacji jest chyba taka, że współczesny Windows jest jednocześnie bardzo dobrze zabezpieczony i zaskakująco zależny od tego, czy użytkownik ma przygotowany plan awaryjny.&lt;/p&gt;

&lt;p&gt;BitLocker uratował moje dane przed dostępem do dysku przez osoby niepowołane, ale jednocześnie bez klucza odzyskiwania sam mógłbym zostać od nich odcięty.&lt;/p&gt;

&lt;p&gt;Z kolei kilka podstawowych narzędzi administracyjnych Windows pozwoliło mi odzyskać kontrolę nad systemem bez jego reinstalacji.&lt;/p&gt;

&lt;p&gt;Dlatego warto mieć:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;zapisany klucz odzyskiwania BitLocker,&lt;/li&gt;
&lt;li&gt;dostęp do konta Microsoft,&lt;/li&gt;
&lt;li&gt;kopię najważniejszych danych,&lt;/li&gt;
&lt;li&gt;podstawową znajomość CMD i środowiska odzyskiwania Windows.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bo czasami Windows nie jest zepsuty.&lt;/p&gt;

&lt;p&gt;Po prostu trzeba znaleźć właściwe drzwi.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Own AI chatbot in terminal</title>
      <dc:creator>Kornel Rzeczycki</dc:creator>
      <pubDate>Sun, 21 Jun 2026 19:40:08 +0000</pubDate>
      <link>https://dev.to/kornel_rzeczycki_523d157b/own-ai-chatbot-in-terminal-1ebh</link>
      <guid>https://dev.to/kornel_rzeczycki_523d157b/own-ai-chatbot-in-terminal-1ebh</guid>
      <description>&lt;p&gt;Lately I was looking for an opportunity to expand my knowledge in algorithms. Particularly for sharpening designing skills for optimisation purposes. &lt;br&gt;
Hence I found it useful to incorporate my PC powers to give me some boost in this matter. &lt;br&gt;
I did a bit of research and it turns out that there is plenty of options having Apple M2 Silicon on board with 16GB of RAM.&lt;br&gt;
My choice was Qwen2.5-7B. Why You could ask? Well first and foremost it has excellent reasoning particularly in Mathematics and logical exercises which I find useful in tasks I am about to throw at it. &lt;br&gt;
Secondly it is reliably small which makes it maintainable in long term. Also it does not eat up too much RAM memory to avoid swap overworking. &lt;br&gt;
So once You have this covered You can download the model. I was fully aware it needs quantisation by some well renowned party.&lt;/p&gt;

&lt;p&gt;So I went under this address:&lt;br&gt;
&lt;a href="https://huggingface.co/bartowski/Qwen2.5-Math-7B-Instruct-GGUF/tree/main" rel="noopener noreferrer"&gt;https://huggingface.co/bartowski/Qwen2.5-Math-7B-Instruct-GGUF/tree/main&lt;/a&gt;&lt;br&gt;
And downloaded the model below: Qwen2.5-Math-7B-Instruct-Q4_K_M.gguf&lt;/p&gt;

&lt;p&gt;I chose Qwen2.5-Math-7B-Instruct because of its strong performance in mathematical reasoning and logical problem-solving, which aligns well with algorithmic practice tasks. Its relatively small size also makes it suitable for local execution on Apple Silicon machines with 16GB of unified memory, without excessive reliance on disk swapping.&lt;/p&gt;

&lt;p&gt;To run it efficiently, I used a quantised GGUF version. Quantisation reduces the precision of model weights (for example, to 4-bit integers), significantly lowering memory usage while maintaining acceptable output quality. In this case, the Q4_K_M variant reduces the model size to approximately 4–5 GB.&lt;/p&gt;

&lt;p&gt;The goal is to ensure the model fits entirely in unified memory, avoiding swap usage, which would severely degrade inference speed and responsiveness.&lt;/p&gt;

&lt;p&gt;So why is it that important? Ideally the size of model should fit in the free RAM memory not being used. Because Apple Silicon uses a unified memory architecture, it is important that the model fits in available memory to avoid swapping to disk. What this brings us to? Well you want the model to generate text in reasonable time to conversation to go fluently. Secondly you want to avoid situation where the model overflows the fast RAM memory and leak into SWAP memory (that is the part of You physical hard drive which serves as additional RAM) that is painfully slow and increase wearing out of your SSD.&lt;/p&gt;

&lt;p&gt;Having all this set up we need to think about how would we use our brand new model on PC. You need an engine to run it on the pc. My choice was llama.cpp because I usually like to tinker with things and it gives endless possibilities in that terms.&lt;/p&gt;

&lt;p&gt;What you will need here at the beginning is a cmake. It is a tool to build programs in C/C++ language.&lt;br&gt;
You can easily install it by running: brew install cmake&lt;/p&gt;

&lt;p&gt;Then I strongly advise to compile the source code from source. Without Metal enabled, the model runs entirely on CPU, which significantly reduces performance.&lt;/p&gt;

&lt;p&gt;So now you need a separate folder and in there You should execute commands below:&lt;br&gt;
&lt;code&gt;&lt;br&gt;
git clone https://github.com/ggml-org/llama.cpp.git&lt;br&gt;
cd llama.cpp&lt;br&gt;
cmake -B build -DGGML_METAL=ON&lt;br&gt;
cmake --build build --config Release&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Now engine is set up and you can give LLM a go. &lt;br&gt;
To do this assuming that you stored a model under models directory the command should look something like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy0j9p7u6jaj3yv4jwhu3.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy0j9p7u6jaj3yv4jwhu3.jpg" alt=" " width="800" height="37"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And this brings us to another point. You can now talk to the chatbot and have the whole university library university in one place! This makes local experimentation much more accessible.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmwfzl9dx0o8xjfxgbea9.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmwfzl9dx0o8xjfxgbea9.jpg" alt=" " width="800" height="275"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Where did all my disk space space go?</title>
      <dc:creator>Kornel Rzeczycki</dc:creator>
      <pubDate>Sat, 20 Jun 2026 18:37:42 +0000</pubDate>
      <link>https://dev.to/kornel_rzeczycki_523d157b/where-did-all-my-free-space-went-596k</link>
      <guid>https://dev.to/kornel_rzeczycki_523d157b/where-did-all-my-free-space-went-596k</guid>
      <description>&lt;p&gt;In today's post I wanted to give some basic introduction of the free program that I discovered. &lt;br&gt;
GrandPerspective gave me the ability to analyze disk usage and identify files and folders that were taking up more storage space than I realized. This was especially useful because I am preparing my Mac for an offline LLM deployment.&lt;br&gt;
Its strong feature is the visuals. You can visualise Hard Disk usage just like that in the form of visually appealing blocks just as you were viewing computer memory from Grand Perspective!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnn7nsf1in0cl995mb5iv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnn7nsf1in0cl995mb5iv.png" alt=" " width="800" height="520"&gt;&lt;/a&gt;&lt;br&gt;
It will definitely have its place in my tool belt!&lt;br&gt;
Secondly it is 100% Mac compatible software including Apple Silicon Macs.&lt;br&gt;
Most importantly it has a very useful version which is totally free! &lt;br&gt;
However, you can purchase a paid version from Apple App Store whenever you want.&lt;br&gt;
Check out the link below.&lt;br&gt;
&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://grandperspectiv.sourceforge.net" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;grandperspectiv.sourceforge.net&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


</description>
    </item>
    <item>
      <title>First App built with Google AI studio</title>
      <dc:creator>Kornel Rzeczycki</dc:creator>
      <pubDate>Sun, 29 Mar 2026 12:13:59 +0000</pubDate>
      <link>https://dev.to/kornel_rzeczycki_523d157b/first-app-built-with-google-ai-studio-5gj7</link>
      <guid>https://dev.to/kornel_rzeczycki_523d157b/first-app-built-with-google-ai-studio-5gj7</guid>
      <description>&lt;p&gt;&lt;em&gt;This post is my submission for &lt;a href="https://dev.to/deved/build-apps-with-google-ai-studio"&gt;DEV Education Track: Build Apps with Google AI Studio&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built an app to generating full box cover of retro game at a snap of the finger. It includes the front being an image generated with Imagen from Google and game text description on the back of the cover. The master prompt I used:&lt;br&gt;
"Please create an app to generate new unique Retro Game cover picture using Imagen for the visuals, and Gemini to create the text descriptions for the game."&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkpm3sc7axjibhbnrh8oo.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkpm3sc7axjibhbnrh8oo.jpeg" alt=" " width="800" height="366"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Felw7jemj7fzdzbuwpg6x.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Felw7jemj7fzdzbuwpg6x.jpeg" alt="GUI of app" width="800" height="554"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0qysabeauarw6fvf9wxp.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0qysabeauarw6fvf9wxp.jpeg" alt=" " width="800" height="1185"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftgbkzjsx5ick3xbvllu3.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftgbkzjsx5ick3xbvllu3.jpeg" alt=" " width="776" height="1164"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ai.studio/apps/c1aa2a41-6d3c-46c7-9bc4-a6fb1357fc1f?fullscreenApplet=true" rel="noopener noreferrer"&gt;https://ai.studio/apps/c1aa2a41-6d3c-46c7-9bc4-a6fb1357fc1f?fullscreenApplet=true&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My Experience
&lt;/h2&gt;

&lt;p&gt;I was surprised how easy it was to generate an app in just a few minutes from successful prompt. Also I was curious about how new Google AI studio can handle such tasks which to me does it surprisingly well. I've got a bit of react along the way to read through generated code.&lt;/p&gt;

</description>
      <category>deved</category>
      <category>learngoogleaistudio</category>
      <category>ai</category>
      <category>gemini</category>
    </item>
  </channel>
</rss>
