<?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>Forem: eniamza</title>
    <description>The latest articles on Forem by eniamza (@eniamza).</description>
    <link>https://forem.com/eniamza</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2155554%2Ff098e6fc-ebfc-4293-aaf6-d4b8ef6959f0.jpeg</url>
      <title>Forem: eniamza</title>
      <link>https://forem.com/eniamza</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/eniamza"/>
    <language>en</language>
    <item>
      <title>PocketPal X DeepScaleR 1.5B Preview | Locally Run a not-shitty reasoning model easily!</title>
      <dc:creator>eniamza</dc:creator>
      <pubDate>Thu, 13 Feb 2025 22:34:54 +0000</pubDate>
      <link>https://forem.com/eniamza/pocketpal-x-deepscaler-15b-preview-locally-run-a-not-shitty-reasoning-model-easily-2eo</link>
      <guid>https://forem.com/eniamza/pocketpal-x-deepscaler-15b-preview-locally-run-a-not-shitty-reasoning-model-easily-2eo</guid>
      <description>&lt;h2&gt;
  
  
  The Drama and The Breakthrough
&lt;/h2&gt;

&lt;p&gt;After the release of Deepseek R1, the market and the consensus of general consumers of ChatGPT went berserk! Nvidia's stock went roller-coaster mode. Sam Altman had very few nails left to bite and Elon Musk as usual poked OpenAI and offered to buy the Org for 97.4 Billion Dollars which Sam of course declined. &lt;/p&gt;

&lt;p&gt;Amid all the drama and media hype, A team named Agentica dropped a distilled 1.5 Billion Parameter version named &lt;code&gt;agentica-org/DeepScaleR-1.5B-Preview&lt;/code&gt; based on Deeseek R1 surpassing the o1-preview in the Math 500 benchmark and doing decent in other benchmarks too! &lt;/p&gt;

&lt;p&gt;However, I would rather not rely on a benchmark to measure a model's performance. As Goodhart's Law says:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;When a measure becomes a target, it ceases to be a good measure&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The best way to measure a model is to vibe with it!&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%2Fl7rmietx7wrew66vge9d.gif" 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%2Fl7rmietx7wrew66vge9d.gif" alt="Vibing GIF" width="498" height="498"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  On a phone? Really?
&lt;/h2&gt;

&lt;p&gt;Yup! In today's blog, we are going to vibe with the new model on our very little, cute-looking phone and run the model at a decent speed. All thanks to the 1.5B Parameter version!&lt;/p&gt;

&lt;p&gt;We are going to use a &lt;a href="https://huggingface.co/bartowski/agentica-org_DeepScaleR-1.5B-Preview-GGUF" rel="noopener noreferrer"&gt;GGUF Quantized Version&lt;/a&gt; from &lt;a href="https://huggingface.co/bartowski" rel="noopener noreferrer"&gt;bartowski&lt;/a&gt; to achieve the maximum performance possible. &lt;/p&gt;

&lt;p&gt;A cool FOSS app named &lt;a href="https://github.com/a-ghorbani/pocketpal-ai" rel="noopener noreferrer"&gt;PocketPal AI&lt;/a&gt;. Which is absolutely free and open-source to the moon!&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%2Fq6kbqaix50iuvp73x281.gif" 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%2Fq6kbqaix50iuvp73x281.gif" alt="FOSS Spongebob GIF" width="220" height="186"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Installing the PocketPal AI.
&lt;/h2&gt;

&lt;p&gt;PocketPal AI is both Available for &lt;a href="https://play.google.com/store/apps/details?id=com.pocketpalai&amp;amp;pcampaignid=web_share" rel="noopener noreferrer"&gt;Android&lt;/a&gt; and &lt;a href="https://apps.apple.com/us/app/pocketpal-ai/id6502579498" rel="noopener noreferrer"&gt;iOS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After the installation, the rest of the process is pretty straightforward. &lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Go to the "Models" Tab
&lt;/h3&gt;

&lt;p&gt;On the models tab, you will find a lot of open-source and ready-to-use LLM models just one click away, but we are interested in something else!&lt;/p&gt;

&lt;p&gt;To download DeepScaleR 1.5B, Click on the (+) icon at the bottom-right corner of the screen. and click "Add from Hugging Face"&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%2F0ve0i82vcqv660xmvadu.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.amazonaws.com%2Fuploads%2Farticles%2F0ve0i82vcqv660xmvadu.png" alt="+ sign in pocketpal ai" width="396" height="836"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Search the model
&lt;/h3&gt;

&lt;p&gt;On the search box at the bottom of the screen, Type "DeepscaleR" At the top of the search results you should see a model named &lt;code&gt;agentica-org_DeepScaleR-1.5B-Preview&lt;/code&gt; by Bartowski. &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%2Fppgei4mp4qku4tgq98tt.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.amazonaws.com%2Fuploads%2Farticles%2Fppgei4mp4qku4tgq98tt.png" alt="bartowski model" width="405" height="484"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Download the model
&lt;/h3&gt;

&lt;p&gt;Tap on the result and you should see a list of available GGUF (GPT-Generated Unified Format) Files. GGUF is a popular Quantization format designed to be efficient and perform well on consumer-grade hardware.&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%2Fe3vvqpvki1dyussj5zk1.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.amazonaws.com%2Fuploads%2Farticles%2Fe3vvqpvki1dyussj5zk1.png" alt="GGUF List of models" width="400" height="674"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you feel confused about which one to download here's a reference for your convenience fetched from Bartowski's Repository. &lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Filename&lt;/th&gt;
&lt;th&gt;Quant type&lt;/th&gt;
&lt;th&gt;File Size&lt;/th&gt;
&lt;th&gt;Split&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://huggingface.co/bartowski/agentica-org_DeepScaleR-1.5B-Preview-GGUF/blob/main/agentica-org_DeepScaleR-1.5B-Preview-f32.gguf" rel="noopener noreferrer"&gt;DeepScaleR-1.5B-Preview-f32.gguf&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;f32&lt;/td&gt;
&lt;td&gt;7.11GB&lt;/td&gt;
&lt;td&gt;false&lt;/td&gt;
&lt;td&gt;Full F32 weights.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://huggingface.co/bartowski/agentica-org_DeepScaleR-1.5B-Preview-GGUF/blob/main/agentica-org_DeepScaleR-1.5B-Preview-f16.gguf" rel="noopener noreferrer"&gt;DeepScaleR-1.5B-Preview-f16.gguf&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;f16&lt;/td&gt;
&lt;td&gt;3.56GB&lt;/td&gt;
&lt;td&gt;false&lt;/td&gt;
&lt;td&gt;Full F16 weights.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://huggingface.co/bartowski/agentica-org_DeepScaleR-1.5B-Preview-GGUF/blob/main/agentica-org_DeepScaleR-1.5B-Preview-Q8_0.gguf" rel="noopener noreferrer"&gt;DeepScaleR-1.5B-Preview-Q8_0.gguf&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Q8_0&lt;/td&gt;
&lt;td&gt;1.89GB&lt;/td&gt;
&lt;td&gt;false&lt;/td&gt;
&lt;td&gt;Extremely high quality, generally unneeded but max available quant.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://huggingface.co/bartowski/agentica-org_DeepScaleR-1.5B-Preview-GGUF/blob/main/agentica-org_DeepScaleR-1.5B-Preview-Q6_K_L.gguf" rel="noopener noreferrer"&gt;DeepScaleR-1.5B-Preview-Q6_K_L.gguf&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Q6_K_L&lt;/td&gt;
&lt;td&gt;1.58GB&lt;/td&gt;
&lt;td&gt;false&lt;/td&gt;
&lt;td&gt;Uses Q8_0 for embed and output weights. Very high quality, near perfect, &lt;em&gt;recommended&lt;/em&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://huggingface.co/bartowski/agentica-org_DeepScaleR-1.5B-Preview-GGUF/blob/main/agentica-org_DeepScaleR-1.5B-Preview-Q6_K.gguf" rel="noopener noreferrer"&gt;DeepScaleR-1.5B-Preview-Q6_K.gguf&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Q6_K&lt;/td&gt;
&lt;td&gt;1.46GB&lt;/td&gt;
&lt;td&gt;false&lt;/td&gt;
&lt;td&gt;Very high quality, near perfect, &lt;em&gt;recommended&lt;/em&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://huggingface.co/bartowski/agentica-org_DeepScaleR-1.5B-Preview-GGUF/blob/main/agentica-org_DeepScaleR-1.5B-Preview-Q5_K_L.gguf" rel="noopener noreferrer"&gt;DeepScaleR-1.5B-Preview-Q5_K_L.gguf&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Q5_K_L&lt;/td&gt;
&lt;td&gt;1.43GB&lt;/td&gt;
&lt;td&gt;false&lt;/td&gt;
&lt;td&gt;Uses Q8_0 for embed and output weights. High quality, &lt;em&gt;recommended&lt;/em&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://huggingface.co/bartowski/agentica-org_DeepScaleR-1.5B-Preview-GGUF/blob/main/agentica-org_DeepScaleR-1.5B-Preview-Q5_K_M.gguf" rel="noopener noreferrer"&gt;DeepScaleR-1.5B-Preview-Q5_K_M.gguf&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Q5_K_M&lt;/td&gt;
&lt;td&gt;1.29GB&lt;/td&gt;
&lt;td&gt;false&lt;/td&gt;
&lt;td&gt;High quality, &lt;em&gt;recommended&lt;/em&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://huggingface.co/bartowski/agentica-org_DeepScaleR-1.5B-Preview-GGUF/blob/main/agentica-org_DeepScaleR-1.5B-Preview-Q4_K_L.gguf" rel="noopener noreferrer"&gt;DeepScaleR-1.5B-Preview-Q4_K_L.gguf&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Q4_K_L&lt;/td&gt;
&lt;td&gt;1.29GB&lt;/td&gt;
&lt;td&gt;false&lt;/td&gt;
&lt;td&gt;Uses Q8_0 for embed and output weights. Good quality, &lt;em&gt;recommended&lt;/em&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://huggingface.co/bartowski/agentica-org_DeepScaleR-1.5B-Preview-GGUF/blob/main/agentica-org_DeepScaleR-1.5B-Preview-Q5_K_S.gguf" rel="noopener noreferrer"&gt;DeepScaleR-1.5B-Preview-Q5_K_S.gguf&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Q5_K_S&lt;/td&gt;
&lt;td&gt;1.26GB&lt;/td&gt;
&lt;td&gt;false&lt;/td&gt;
&lt;td&gt;High quality, &lt;em&gt;recommended&lt;/em&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://huggingface.co/bartowski/agentica-org_DeepScaleR-1.5B-Preview-GGUF/blob/main/agentica-org_DeepScaleR-1.5B-Preview-Q3_K_XL.gguf" rel="noopener noreferrer"&gt;DeepScaleR-1.5B-Preview-Q3_K_XL.gguf&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Q3_K_XL&lt;/td&gt;
&lt;td&gt;1.18GB&lt;/td&gt;
&lt;td&gt;false&lt;/td&gt;
&lt;td&gt;Uses Q8_0 for embed and output weights. Lower quality but usable, good for low RAM availability.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://huggingface.co/bartowski/agentica-org_DeepScaleR-1.5B-Preview-GGUF/blob/main/agentica-org_DeepScaleR-1.5B-Preview-Q4_1.gguf" rel="noopener noreferrer"&gt;DeepScaleR-1.5B-Preview-Q4_1.gguf&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Q4_1&lt;/td&gt;
&lt;td&gt;1.16GB&lt;/td&gt;
&lt;td&gt;false&lt;/td&gt;
&lt;td&gt;Legacy format, similar performance to Q4_K_S but with improved tokens/watt on Apple silicon.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://huggingface.co/bartowski/agentica-org_DeepScaleR-1.5B-Preview-GGUF/blob/main/agentica-org_DeepScaleR-1.5B-Preview-Q4_K_M.gguf" rel="noopener noreferrer"&gt;DeepScaleR-1.5B-Preview-Q4_K_M.gguf&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Q4_K_M&lt;/td&gt;
&lt;td&gt;1.12GB&lt;/td&gt;
&lt;td&gt;false&lt;/td&gt;
&lt;td&gt;Good quality, default size for most use cases, &lt;em&gt;recommended&lt;/em&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://huggingface.co/bartowski/agentica-org_DeepScaleR-1.5B-Preview-GGUF/blob/main/agentica-org_DeepScaleR-1.5B-Preview-Q4_K_S.gguf" rel="noopener noreferrer"&gt;DeepScaleR-1.5B-Preview-Q4_K_S.gguf&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Q4_K_S&lt;/td&gt;
&lt;td&gt;1.07GB&lt;/td&gt;
&lt;td&gt;false&lt;/td&gt;
&lt;td&gt;Slightly lower quality with more space savings, &lt;em&gt;recommended&lt;/em&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://huggingface.co/bartowski/agentica-org_DeepScaleR-1.5B-Preview-GGUF/blob/main/agentica-org_DeepScaleR-1.5B-Preview-Q4_0.gguf" rel="noopener noreferrer"&gt;DeepScaleR-1.5B-Preview-Q4_0.gguf&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Q4_0&lt;/td&gt;
&lt;td&gt;1.07GB&lt;/td&gt;
&lt;td&gt;false&lt;/td&gt;
&lt;td&gt;Legacy format, offers online repacking for ARM and AVX CPU inference.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://huggingface.co/bartowski/agentica-org_DeepScaleR-1.5B-Preview-GGUF/blob/main/agentica-org_DeepScaleR-1.5B-Preview-IQ4_NL.gguf" rel="noopener noreferrer"&gt;DeepScaleR-1.5B-Preview-IQ4_NL.gguf&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;IQ4_NL&lt;/td&gt;
&lt;td&gt;1.07GB&lt;/td&gt;
&lt;td&gt;false&lt;/td&gt;
&lt;td&gt;Similar to IQ4_XS, but slightly larger. Offers online repacking for ARM CPU inference.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://huggingface.co/bartowski/agentica-org_DeepScaleR-1.5B-Preview-GGUF/blob/main/agentica-org_DeepScaleR-1.5B-Preview-IQ4_XS.gguf" rel="noopener noreferrer"&gt;DeepScaleR-1.5B-Preview-IQ4_XS.gguf&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;IQ4_XS&lt;/td&gt;
&lt;td&gt;1.02GB&lt;/td&gt;
&lt;td&gt;false&lt;/td&gt;
&lt;td&gt;Decent quality, smaller than Q4_K_S with similar performance, &lt;em&gt;recommended&lt;/em&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://huggingface.co/bartowski/agentica-org_DeepScaleR-1.5B-Preview-GGUF/blob/main/agentica-org_DeepScaleR-1.5B-Preview-Q3_K_L.gguf" rel="noopener noreferrer"&gt;DeepScaleR-1.5B-Preview-Q3_K_L.gguf&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Q3_K_L&lt;/td&gt;
&lt;td&gt;0.98GB&lt;/td&gt;
&lt;td&gt;false&lt;/td&gt;
&lt;td&gt;Lower quality but usable, good for low RAM availability.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://huggingface.co/bartowski/agentica-org_DeepScaleR-1.5B-Preview-GGUF/blob/main/agentica-org_DeepScaleR-1.5B-Preview-Q2_K_L.gguf" rel="noopener noreferrer"&gt;DeepScaleR-1.5B-Preview-Q2_K_L.gguf&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Q2_K_L&lt;/td&gt;
&lt;td&gt;0.98GB&lt;/td&gt;
&lt;td&gt;false&lt;/td&gt;
&lt;td&gt;Uses Q8_0 for embed and output weights. Very low quality but surprisingly usable.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://huggingface.co/bartowski/agentica-org_DeepScaleR-1.5B-Preview-GGUF/blob/main/agentica-org_DeepScaleR-1.5B-Preview-Q3_K_M.gguf" rel="noopener noreferrer"&gt;DeepScaleR-1.5B-Preview-Q3_K_M.gguf&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Q3_K_M&lt;/td&gt;
&lt;td&gt;0.92GB&lt;/td&gt;
&lt;td&gt;false&lt;/td&gt;
&lt;td&gt;Low quality.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://huggingface.co/bartowski/agentica-org_DeepScaleR-1.5B-Preview-GGUF/blob/main/agentica-org_DeepScaleR-1.5B-Preview-IQ3_M.gguf" rel="noopener noreferrer"&gt;DeepScaleR-1.5B-Preview-IQ3_M.gguf&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;IQ3_M&lt;/td&gt;
&lt;td&gt;0.88GB&lt;/td&gt;
&lt;td&gt;false&lt;/td&gt;
&lt;td&gt;Medium-low quality, new method with decent performance comparable to Q3_K_M.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://huggingface.co/bartowski/agentica-org_DeepScaleR-1.5B-Preview-GGUF/blob/main/agentica-org_DeepScaleR-1.5B-Preview-Q3_K_S.gguf" rel="noopener noreferrer"&gt;DeepScaleR-1.5B-Preview-Q3_K_S.gguf&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Q3_K_S&lt;/td&gt;
&lt;td&gt;0.86GB&lt;/td&gt;
&lt;td&gt;false&lt;/td&gt;
&lt;td&gt;Low quality, not recommended.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://huggingface.co/bartowski/agentica-org_DeepScaleR-1.5B-Preview-GGUF/blob/main/agentica-org_DeepScaleR-1.5B-Preview-IQ3_XS.gguf" rel="noopener noreferrer"&gt;DeepScaleR-1.5B-Preview-IQ3_XS.gguf&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;IQ3_XS&lt;/td&gt;
&lt;td&gt;0.83GB&lt;/td&gt;
&lt;td&gt;false&lt;/td&gt;
&lt;td&gt;Lower quality, new method with decent performance, slightly better than Q3_K_S.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://huggingface.co/bartowski/agentica-org_DeepScaleR-1.5B-Preview-GGUF/blob/main/agentica-org_DeepScaleR-1.5B-Preview-IQ3_XXS.gguf" rel="noopener noreferrer"&gt;DeepScaleR-1.5B-Preview-IQ3_XXS.gguf&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;IQ3_XXS&lt;/td&gt;
&lt;td&gt;0.77GB&lt;/td&gt;
&lt;td&gt;false&lt;/td&gt;
&lt;td&gt;Lower quality, new method with decent performance, comparable to Q3 quants.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://huggingface.co/bartowski/agentica-org_DeepScaleR-1.5B-Preview-GGUF/blob/main/agentica-org_DeepScaleR-1.5B-Preview-Q2_K.gguf" rel="noopener noreferrer"&gt;DeepScaleR-1.5B-Preview-Q2_K.gguf&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Q2_K&lt;/td&gt;
&lt;td&gt;0.75GB&lt;/td&gt;
&lt;td&gt;false&lt;/td&gt;
&lt;td&gt;Very low quality but surprisingly usable.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If you have a phone model of 2024 and later, I would suggest starting with the &lt;code&gt;Q6_K_L&lt;/code&gt; Variation and if it performs well, gradually try &lt;code&gt;Q8_0&lt;/code&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%2Fnst7dfi6w5ylfg7zg6au.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.amazonaws.com%2Fuploads%2Farticles%2Fnst7dfi6w5ylfg7zg6au.png" alt="Quantization Highlight" width="391" height="504"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this walkthrough, I will be using the &lt;code&gt;Q8_0&lt;/code&gt; for the perfect balance.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Wait for it to download and Load the model
&lt;/h3&gt;

&lt;p&gt;After the model is downloaded, it should appear in the Models Tab at the top&lt;/p&gt;

&lt;p&gt;Tap on the "Load" button of the model Card and we are good to go!&lt;/p&gt;

&lt;h2&gt;
  
  
  How's the vibe?
&lt;/h2&gt;

&lt;p&gt;The most fun and controversial prompt for the LLMs is &lt;code&gt;How many Rs are there in the word Strawberry?&lt;/code&gt;. On popular demands, of course, I asked it first&lt;/p&gt;

&lt;p&gt;The model surprisingly was fast. It reasoned for around 3 minutes and counted the Rs letter by letter. Answered within another minute. The answer was correct. &lt;/p&gt;

&lt;p&gt;Q: &lt;code&gt;How many Rs are there in the word strawberry&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;A:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;think&amp;gt;
Okay, so I need to figure out how many times the letter 'R' appears in the word "strawberry." Let me start by writing out the word to make it clearer: S-T-R-A-W-B-E-R-R-Y. Hmm, wait, no, maybe I should count each letter as I go through it.

First, let's break down the word "strawberry" letter by letter. I know that "strawberry" is a type of fruit, but I'm not sure about the exact spelling. Let me confirm: S-T-R-A-W-B-E-R-R-Y. Wait, actually, I think the correct spelling is S-T-R-A-W-B-E-R-R-Y, but maybe I'm overcomplicating it. Let me just focus on the letters as they are.

The word is: S, T, R, A, W, B, E, R, R, Y. Wait, no, I think I made a mistake here. Let me actually spell it correctly. The correct spelling of strawberry is S-T-R-A-W-B-E-R-R-Y. So that's 10 letters. Let me list them again:

1. S
2. T
3. R
4. A
5. W
6. B
7. E
8. R
9. R
10. Y

Now, looking through these letters, I need to count how many 'R's there are. Let's go step by step:

- The first letter is S, not R.
- Second letter is T, not R.
- Third letter is R. That's one R.
- Fourth letter is A, not R.
- Fifth letter is W, not R.
- Sixth letter is B, not R.
- Seventh letter is E, not R.
- Eighth letter is R. That's the second R.
- Ninth letter is R. That's the third R.
- Tenth letter is Y, not R.

So, counting the R's: the third letter, the eighth letter, and the ninth letter. That makes three R's in total.

Wait a second, I think I might have missed something. Let me recount. The word is S-T-R-A-W-B-E-R-R-Y. So, positions 3, 8, and 9 are R's. That's three R's. Alternatively, maybe I should count the letters more carefully. Let's write them out:

S, T, R, A, W, B, E, R, R, Y.

So, the letters are:

1: S

2: T

3: R (1)

4: A

5: W

6: B

7: E

8: R (2)

9: R (3)

10: Y

Yes, that's three R's. So the answer should be three R's.

But wait, sometimes people might count differently, but in this case, each R is clearly identified. So, I think three is correct.

Final Answer
The number of R's is \boxed{3}.
&amp;lt;/think&amp;gt;

To determine the number of 'R's in the word "S T R A W B E R R Y", we need to carefully check each letter:

1. S
2. T
3. R (1)
4. A
5. W
6. B
7. E
8. R (2)
9. R (3)
10. Y

By counting each 'R', we find that there are three 'R's in the word.

The number of R's is 3.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That was accurate!&lt;/p&gt;

&lt;p&gt;The next question I asked was about a simple real-world store scenario-based calculation, basically a school-level problem&lt;/p&gt;

&lt;p&gt;Q: &lt;code&gt;If a store sells apples for $0.75 each and oranges for $0.50 each, how much would it cost to buy 3 apples and 2 oranges?&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;A:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;think&amp;gt;
Alright, let's tackle this problem step by step. The store sells apples for $0.75 each and oranges for $0.50 each. We need to find out how much it would cost to buy 3 apples and 2 oranges.

First, I'll calculate the cost of the apples. Each apple costs $0.75, and we want to buy 3 apples. So, I'll multiply the cost per apple by the number of apples:

$0.75 * 3 = $2.25

So, the apples will cost $2.25.

Next, I'll calculate the cost of the oranges. Each orange costs $0.50, and we want to buy 2 oranges. So, I'll multiply the cost per orange by the number of oranges:

$0.50 * 2 = $1.00

So, the oranges will cost $1.00.

Now, to find the total cost, I'll add the cost of the apples and the cost of the oranges together:

$2.25 + $1.00 = $3.25

Therefore, buying 3 apples and 2 oranges would cost $3.25.
&amp;lt;/think&amp;gt;

To determine the total cost of purchasing apples and oranges, follow these steps:

1. Calculate the cost of the apples:
   - Each apple costs \$0.75.
   - Number of apples to buy: 3.
   \[
   \text{Total cost for apples} = 0.75 \times 3 = 2.25
   \]

2. Calculate the cost of the oranges:
   - Each orange costs \$0.50.
   - Number of oranges to buy: 2.
   \[
   \text{Total cost for oranges} = 0.50 \times 2 = 1.00
   \]

3. Add the costs together to find the total cost:
   \[
   \text{Total cost} = 2.25 + 1.00 = 3.25
   \]

Final Answer:
\[
\boxed{3.25}
\]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The model reasoned for around 2 minutes and answered correctly! Although there are some formatting errors related to Latex which we used to see on the earlier version of GPT models. But we can easily sanitize that by running it through a lighter model (More on that in a future blog)&lt;/p&gt;

&lt;p&gt;Okay, Last question, LLMs are popular for writing crappy, gibberish, and overly complex codes. But hey! if it works, it works!&lt;/p&gt;

&lt;p&gt;Q: &lt;code&gt;Write a recursive function for in order traversal&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;A:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;think&amp;gt;
Alright, I need to write a recursive function for in-order traversal of a binary tree. Let me think about how in-order traversal works. In in-order traversal, we visit the root node, then recursively visit the left subtree, and then recursively visit the right subtree. So the order is left, root, right.

I should define a function that takes a node as an argument. For each call, I first traverse the left subtree. Then, if there's a node (which it always will be in this context), I visit it, typically by printing or something. Then traverse the right subtree.

Wait, but the problem is just about writing the function, not the output. So perhaps the function should count the number of nodes visited, but that might complicate things. Alternatively, perhaps the function should return the count or something else.

But perhaps the function is intended to just traverse the tree in order, without returning any specific value. So maybe I can just implement the traversal logic.

I'll start by writing a function that takes a node as an argument and doesn't return anything. Then, for each call, it will traverse the left subtree, then itself, then the right subtree. That way, it's a standard in-order traversal.

I should make sure that the function handles null nodes correctly. When the node is null, it just returns. Otherwise, it proceeds to the left, itself, and right.

Let me outline the steps:

1. If the node is null, return.
2. Traverse the left subtree.
3. Visit the current node.
4. Traverse the right subtree.

This should implement the in-order traversal correctly.

I think that's the plan. Now I'll write the code accordingly.
&amp;lt;/think&amp;gt;

To perform an in-order traversal of a binary tree, we can define a function that recursively visits the left subtree, then the root node, and finally the right subtree. Here's how we can do it step by step:

1. Base Case: If the current node is null (i.e., it's a leaf node or beyond the tree), return immediately.
2. Traverse Left Subtree: Recursively call the function on the left child of the current node.
3. Visit Current Node: This step can be omitted if we just need to traverse the tree and not collect any specific data from each node.
4. Traverse Right Subtree: Recursively call the function on the right child of the current node.

This approach ensures that we visit each node exactly once in the order: left, root, right.

Here is the implementation of the in-order traversal:

void InOrderTraversal(node* node) {
    if (node == nullptr) {
        return;
    }

    // Traverse left subtree
    InOrderTraversal(node-&amp;gt;left);

    // Visit current node
    // (Note: If data is needed from current node, add the data here)

    // Traverse right subtree
    InOrderTraversal(node-&amp;gt;right);
}
This function correctly traverses each node exactly once in an in-order manner. The time complexity of this algorithm is O(n), where n is the number of nodes in the tree, as each node is visited exactly once. The space complexity is O(h), where h is the height of the tree, due to the recursion stack.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The model reasoned for 5 minutes and wrote the algorithm for inorder traversal recursively as instructed. Interestingly, while most LLMs prefer Python, DeepScaleR replied in C++!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bonus Question&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Q: &lt;code&gt;Write a recursive function to count level-order nodes, you can't pass anything other than the root node as the input parameter as the function&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;DeepScaleR reasoned for around 12 minutes and then something abruptly stopped the thinking process and never returned any actual answers. Given that the problem itself is quite hard and almost paradoxical for LLMs to solve, we can see the clear confusion and self-contradiction in its thinking process.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;think&amp;gt;
Okay, I need to write a recursive Python function to count all the nodes in a binary tree without using a dictionary as an input parameter. The function must be recursive. Let me think about how to approach this.

First, I know that a binary tree node has left and right children. So each node can be represented as an object with data and pointers to left and right children. But since it's a Python function, perhaps I can represent the tree nodes using a class or just use tuples. But since the function needs to be recursive, perhaps using objects is easier.

Wait, but in the function, perhaps it's better to pass around each node as a parameter. However, since the function isn't allowed to use a dictionary as input, maybe I need to track the nodes as I traverse them without using a dictionary to collect them. Hmm, perhaps I should instead count the nodes during the traversal, but without storing all the nodes in a dictionary.

Wait, perhaps the function can perform an in-order traversal, count each node as it's visited, and sum them up. But the problem is, how to count without using a dictionary as an input parameter. Wait, perhaps the function can be structured to count nodes during the traversal.

Alternatively, perhaps the function can be written to traverse the tree recursively and keep a counter that increments each time a node is visited. But in that case, how do we avoid storing the nodes in a dictionary? Because the function needs to return the count, not the actual nodes.

Hmm, perhaps the approach is to write a helper function that takes the root node and a counter, and during each recursive call, if a node is found, increment the counter. Then, the main function can call this helper and return the counter.

But wait, the problem says the function must be recursive and not use a dictionary as an input parameter. So perhaps the function itself should not have any parameters except maybe for the root and a counter. But perhaps that
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It just ended there, rephrasing the prompt and allowing it to use helper functions didn't help much either. &lt;/p&gt;

&lt;h2&gt;
  
  
  Cool, now what
&lt;/h2&gt;

&lt;p&gt;Well, this is just the first step towards Reasoning models on ARM chips. Observing the quick progress that happened within the last month, we can expect major improvements in this field in the near future.&lt;/p&gt;

&lt;p&gt;JARVIS, a capable AGI from the movie Iron Man is not fiction anymore ;)&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%2F3djpho8fy3qy586hjwjq.gif" 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%2F3djpho8fy3qy586hjwjq.gif" alt="JARVIS IronMan GIF" width="500" height="255"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Till the next drop, sayonara!&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Agentica's Model: &lt;a href="https://huggingface.co/agentica-org/DeepScaleR-1.5B-Preview" rel="noopener noreferrer"&gt;https://huggingface.co/agentica-org/DeepScaleR-1.5B-Preview&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Bartowski's GGUF Version: &lt;a href="https://huggingface.co/bartowski/agentica-org_DeepScaleR-1.5B-Preview-GGUF" rel="noopener noreferrer"&gt;https://huggingface.co/bartowski/agentica-org_DeepScaleR-1.5B-Preview-GGUF&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;PocketPal AI: &lt;a href="https://play.google.com/store/apps/details?id=com.pocketpalai&amp;amp;hl=en" rel="noopener noreferrer"&gt;Android&lt;/a&gt; , &lt;a href="https://apps.apple.com/us/app/pocketpal-ai/id6502579498" rel="noopener noreferrer"&gt;iOS&lt;/a&gt; and &lt;a href="https://github.com/a-ghorbani/pocketpal-ai" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>deepseek</category>
      <category>openai</category>
      <category>llm</category>
    </item>
    <item>
      <title>CUPP: How Dictionary based Bruteforce Attacks can be more optimized</title>
      <dc:creator>eniamza</dc:creator>
      <pubDate>Sat, 05 Oct 2024 16:18:03 +0000</pubDate>
      <link>https://forem.com/eniamza/cupp-how-dictionary-based-bruteforce-attacks-can-be-more-optimized-3b0g</link>
      <guid>https://forem.com/eniamza/cupp-how-dictionary-based-bruteforce-attacks-can-be-more-optimized-3b0g</guid>
      <description>&lt;h2&gt;
  
  
  What is a Dictionary Attack?
&lt;/h2&gt;




&lt;p&gt;In most of the Sci-Fi movies, generally, we see a hacker wearing a black hoodie typing constantly on the keyboard. While these movies don't exactly portray a proper hacking culture, they also make it seem unbelievably easy to exploit an individual user.&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%2Fct1ujgb2vz8xniri1cqv.gif" 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%2Fct1ujgb2vz8xniri1cqv.gif" alt="Hacker Typing" width="640" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But we have to understand that not all website is easily exploitable. Tech Giants such as Google and Facebook implant high-level security and constantly patch new vulnerabilities. So which part is the most vulnerable? You're right it's the user itself!&lt;/p&gt;

&lt;p&gt;Once upon a time, users chose passwords such as "Honey123", "Love321", "I'mdumb111", etc. These passwords could be easily brute-forced and cracked using a Dictionary attack where the script tries the passwords from a provided Dictionary. &lt;em&gt;Imagine Trying Several Keys at the same time from the collection of keys in the world&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;CUPP takes this attack one step ahead.&lt;/p&gt;

&lt;h2&gt;
  
  
  CUPP, not Mug or Jug?
&lt;/h2&gt;




&lt;p&gt;I know it'd be fun to call it Jug. But CUPP stands for &lt;strong&gt;Common User Password Profiler&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Also, sounds fun, right? &lt;br&gt;
In this technique, We input a little information about our target. For example, a person named Danny Morgan wouldn't use the word "Scott" as his password. Unless he has a favorite actor named "Scott".&lt;/p&gt;

&lt;p&gt;CUPP v3 goes through different combinations and algorithms based on the given data to create a wordlist for the target as effectively as possible.&lt;/p&gt;
&lt;h2&gt;
  
  
  Let's get the party started!
&lt;/h2&gt;



&lt;p&gt;Before jumping into the steps, make sure you have these applications pre-installed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://git-scm.com/downloads" rel="noopener noreferrer"&gt;Git&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.python.org/downloads/" rel="noopener noreferrer"&gt;Python3&lt;/a&gt; (v3 Recommended!)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now that we have set up our environment to run CUPP,  let's&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Clone the Official CUPP Repository&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/Mebus/cupp.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Change your directory&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd ./cupp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Check if everything is working&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;python3 cupp.py -h
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;This should result in this output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;usage: cupp.py [-h] [-i | -w FILENAME | -l | -a | -v] [-q]  

Common User Passwords Profiler         

optional arguments:                                                                                                       -h, --help show this help message and exit                                                                      -i, --interactive  Interactive questions for user password profiling                                                    -w FILENAME  Use this option to improve existing dictionary, or WyD.pl output to make some pwn sauce 
-l Download huge wordlists from repository                                                              -a Parse default usernames and passwords directly from Alecto DB. Project Alecto uses purified databases of Phenoelit and CIRT which were merged and enhanced 
-v, --version      Show the version of this program.                                                                    -q, --quiet        Quiet mode (don't print banner)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This means our script is ready to blast!&lt;/p&gt;

&lt;h2&gt;
  
  
  The Actual Business
&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%2F9wxbvxhx0w83vqbzmpsr.gif" 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%2F9wxbvxhx0w83vqbzmpsr.gif" alt="Serious Business GIF" width="498" height="278"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now we're going to generate the actual list! Yeah, yeah, I know there are a few more options available, but to keep it simple we'll stick to the classic Interactive Question-based Walkthrough. And don't worry, I'll add a short explanation for all of them later in this article. &lt;/p&gt;

&lt;p&gt;To initiate the process first run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;python3 cupp.py -i
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here &lt;em&gt;-i&lt;/em&gt; stands for interactive. You can also use &lt;em&gt;-interactive&lt;/em&gt; (if you love typing)&lt;/p&gt;

&lt;p&gt;This will bring our first question in front:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[+] Insert the information about the victim to make a dictionary                                                        [+] If you don't know all the info, just hit enter when asked! ;)                                                                                                                                                                               &amp;gt; First Name:
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So as our target's name was "Danny Morgan", let's put "Danny" here and hit enter!&lt;/p&gt;

&lt;p&gt;Then it asks for the Surname:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; Surname:
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Which is "Morgan"&lt;br&gt;
And for the Nickname, Let's Put Dan. Yeah, his Mom calls him Dan.&lt;/p&gt;

&lt;p&gt;We attended know his birthdate because he's our friendly neighbor which is: 02011990.&lt;/p&gt;

&lt;p&gt;Unfortunately, he's still single so he doesn't have a partner. So for the next 3 questions, we'll just keep those empty and press enter to move forward!&lt;/p&gt;

&lt;p&gt;As he's single, obviously he doesn't have any children too! The next 3 questions also go empty!&lt;/p&gt;

&lt;p&gt;But he has a loving dog named "Kevin". So for the next question, We put &lt;em&gt;Kevin&lt;/em&gt; as our answer!&lt;br&gt;
We know he works at Mcdonald's. I know, it is what it is.&lt;/p&gt;

&lt;p&gt;Here comes an important part. Our target might have some more related keywords we may want to add. Such as the street he lives in, her grandma's name whom he all day yaps about or simply his favorite color black. Not to forget his favorite movie &lt;em&gt;Terminator&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Now CUPP will ask you if you want to add special characters and numbers [For Ex. @,!, # and 1,2,3,4] at the end of each word. Most modern sites encourage a user to use them, so it's better to have them! We will Enter "Y"  for both and move forward.&lt;/p&gt;

&lt;p&gt;The script also can combine its output with the &lt;strong&gt;Leet Mode&lt;/strong&gt;. Where a number is used instead of a look-alike character. For example: E=3, S=5, l=1, T = 8, etc.&lt;/p&gt;

&lt;p&gt;Danny isn't that much geeky so let's skip on this one! Enter N to continue.&lt;/p&gt;

&lt;p&gt;At last, Hyperspeed print means CUPP will print the generated dictionary on the console, It's fun to look through. But for now, we'll just skip through.&lt;/p&gt;

&lt;p&gt;Finally! Our intelligent little script will say something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Now load your pistolero with ←[1;31mdanny.txt←[1;m and shoot! Good luck!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This means, our customized dictionary is finally done!&lt;/p&gt;

&lt;p&gt;We should see a "danny.txt" in the same directory with 13612 words ready to be tested!&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%2Fee08mamjzra2pzjhhj8a.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.amazonaws.com%2Fuploads%2Farticles%2Fee08mamjzra2pzjhhj8a.png" alt="Screenshot of the generated text document" width="419" height="138"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It tries to generate the common combinations a human might use. Just wonder what accuracy you can achieve with an existing pwned database, some OSINT research on the target and this!&lt;/p&gt;

&lt;h2&gt;
  
  
  Other Options
&lt;/h2&gt;




&lt;p&gt;Now that we wrapped up our basic interactive option, let's briefly explore what other things we can do with CUPP.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;help &amp;gt; -h&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This option generates a help message with a list of arguments we can use with this script&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;interactive Steps &amp;gt; -i / -interactive&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The one we just used. Scroll up to jog your memories!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Optimize existing Dictionary &amp;gt; -w FILENAME&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you have an existing dictionary in hand and want to add some custom spices. This is suitable and WyD.pl AKA Who's Your Daddy Password Profiler is a tool similar to CUPP but it scraps Strings from the files of a website and generates a custom password list!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Download Huge Dictionaries &amp;gt; -l&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can download existing dictionaries of common words [Contains 10 Millions or more words!]&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Default Passwords &amp;gt; -a&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Parse default usernames and passwords directly from Alecto DB. Project Alecto uses purified databases of Phenoelit and CIRT which were merged and enhanced  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Version Number &amp;gt; -v / --version&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Just prints the version number, nothing special&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Quiet Mode &amp;gt; -q / --quiet&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That Doesn't prints the intro Banner of CUPP.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping Up!
&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%2F5hb4m7e9jkxg3m26blig.gif" 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%2F5hb4m7e9jkxg3m26blig.gif" alt="The End is near GIF" width="498" height="362"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You surely don't want to fall victim to this kind of customized brute-force attack. So always be cautious to use unique and long passwords which are of course easy to remember. (Password resets on every login wouldn't make you happy, trust me!)&lt;/p&gt;

&lt;p&gt;Also, enable 2 Factor Authentication where possible so hackers can't gain access to your online accounts without the secret code on your phone!&lt;/p&gt;

&lt;p&gt;In further Episodes of Dictionary Attacks, we'll cover other Profiler scripts such as CRUNCH and WyD.pl (we just heard here).&lt;/p&gt;

&lt;p&gt;Till then, Sayonara my peeps!&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>security</category>
      <category>learning</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Scrambled EXIF: Remove Metadata From Your Media In A Blink!</title>
      <dc:creator>eniamza</dc:creator>
      <pubDate>Thu, 03 Oct 2024 14:13:53 +0000</pubDate>
      <link>https://forem.com/eniamza/scrambled-exif-make-your-image-metadata-go-poof-5628</link>
      <guid>https://forem.com/eniamza/scrambled-exif-make-your-image-metadata-go-poof-5628</guid>
      <description>&lt;h2&gt;
  
  
  Metadata Doxxing and You
&lt;/h2&gt;




&lt;p&gt;We all love to snap pics and upload them to social media in the blink of an eye. "Hey, see, I look cool in this dude!”. But you can not be certain of when those dudes will start looking beyond your picture!&lt;/p&gt;

&lt;p&gt;This is an example of a logo I created and uploaded to my Quora Space:&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%2Fbzz7e8xhhpt0wqqv1sit.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.amazonaws.com%2Fuploads%2Farticles%2Fbzz7e8xhhpt0wqqv1sit.png" alt="Logo of Null" width="200" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But there's nothing interesting, right? It's impossible to tell who is the creator and where he lives. But is that really the case?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Metadata&lt;/strong&gt; is associated with every file ever created. It contains valuable information like the Creation Date, Modification Date, Name of the Device that was used for creation, the Creator's Name, and even the Software name that was used to edit this logo!&lt;/p&gt;

&lt;p&gt;EXIF (Exchangeable Image Format) is such a standard for images. Let's take a look at the EXIF Data extracted from my logo!&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%2F7qyfvgp5oy6e69qomss0.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.amazonaws.com%2Fuploads%2Farticles%2F7qyfvgp5oy6e69qomss0.png" alt="EXIF Data Image 1" width="573" height="763"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can see the last modification date, the creator tool named &lt;strong&gt;Canva&lt;/strong&gt;, and most importantly my name under the &lt;strong&gt;Author&lt;/strong&gt; Section.&lt;/p&gt;

&lt;p&gt;If you were a creep (I know you aren't, my readers are cool!), a simple Google search would present you with a whole page of information and social media links directly related to me. It'd take you less than 10 minutes to find out who I am!&lt;/p&gt;

&lt;p&gt;Sounds like a nightmare, right?&lt;/p&gt;

&lt;h2&gt;
  
  
  Shuffle Up Your EXIF Metadata
&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%2F0img5y69hdrf1j3p2ugs.gif" 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%2F0img5y69hdrf1j3p2ugs.gif" alt="Exif Data after cleanup" width="498" height="498"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://play.google.com/store/apps/details?id=com.jarsilio.android.scrambledeggsif&amp;amp;hl=en&amp;amp;gl=US&amp;amp;pli=1" rel="noopener noreferrer"&gt;Scrambled EXIF&lt;/a&gt; is here to rescue as! It acts as an intermediary for sharing files. This app acts as a middleman when you share your files by just adding another step. When sharing your files, you just need to tap the share button as usual and select &lt;a href="https://play.google.com/store/apps/details?id=com.jarsilio.android.scrambledeggsif&amp;amp;hl=en&amp;amp;gl=US&amp;amp;pli=1" rel="noopener noreferrer"&gt;Scrambled EXIF&lt;/a&gt; app. Shortly the share popup with apps will appear again after Scrambled EXIF's magic process! To summarize, it's just three steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tap Share&lt;/li&gt;
&lt;li&gt;Choose Scrambled EXIF&lt;/li&gt;
&lt;li&gt;Choose the preferred app in the 2nd share popup.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Results?
&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%2Fn53uj8mj6k1qfqpej1gx.gif" 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%2Fn53uj8mj6k1qfqpej1gx.gif" alt="ANON GIF" width="400" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://play.google.com/store/apps/details?id=com.jarsilio.android.scrambledeggsif&amp;amp;hl=en&amp;amp;gl=US&amp;amp;pli=1" rel="noopener noreferrer"&gt;Scrambled EXIF&lt;/a&gt; not only strips metadata from your files but also renames it with random strings. Why?&lt;/p&gt;

&lt;p&gt;Because your phone sometimes names files containing dates and categories. For example, My phone saves Photos with this naming format: "YYYYMMDD-TIMESTAMP-PXL" That means, you can know the exact time of the capture and also the device model name. &lt;/p&gt;

&lt;p&gt;But when I share the same logo above through Scrambled EXIF, the filename becomes: &lt;code&gt;394269db-d328-4ea9-8524-3880efb8df87.png&lt;/code&gt; and the metadata becomes: &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%2F4zfy0yfk8lvokkiy1wls.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.amazonaws.com%2Fuploads%2Farticles%2F4zfy0yfk8lvokkiy1wls.png" alt="Exif Data 3" width="572" height="473"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Nothing Specific! It's that simple.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;




&lt;ul&gt;
&lt;li&gt;Scrambled EXIF App - &lt;a href="https://play.google.com/store/apps/details?id=com.jarsilio.android.scrambledeggsif&amp;amp;hl=en&amp;amp;gl=US&amp;amp;pli=1" rel="noopener noreferrer"&gt;Play Store&lt;/a&gt; &lt;a href="https://f-droid.org/packages/com.jarsilio.android.scrambledeggsif/" rel="noopener noreferrer"&gt;F-Droid&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;What is EXIF - &lt;a href="https://en.wikipedia.org/wiki/Exif" rel="noopener noreferrer"&gt;Wikipedia&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Repository - &lt;a href="https://gitlab.com/juanitobananas/scrambled-exif" rel="noopener noreferrer"&gt;GitLab&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>android</category>
      <category>cybersecurity</category>
      <category>apk</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>DumbProofing: When UX Becomes Superior to Functionality (And 5 Bonus Tips for Improving the UX)</title>
      <dc:creator>eniamza</dc:creator>
      <pubDate>Thu, 03 Oct 2024 09:25:35 +0000</pubDate>
      <link>https://forem.com/eniamza/dumbproofing-when-ux-becomes-superior-to-functionality-and-5-bonus-tips-for-improving-the-ux-4io5</link>
      <guid>https://forem.com/eniamza/dumbproofing-when-ux-becomes-superior-to-functionality-and-5-bonus-tips-for-improving-the-ux-4io5</guid>
      <description>&lt;h2&gt;
  
  
  Once upon a time...
&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%2F5claarenvpxo64v8zfyo.gif" 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%2F5claarenvpxo64v8zfyo.gif" alt="It's been 84 years" width="200" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;During the good ol' days of the internet, things were simple. You used to enter an email and password and maybe confirm your email with an OTP sent to your mail that's it. &lt;/p&gt;

&lt;p&gt;Fast-forward two years. We now have OAUTH signups for Google, Facebook, and Github, which enable users to sign up with one click (or two if they need to confirm with the Authentication provider), and that's it. &lt;/p&gt;

&lt;p&gt;You may have also noticed that when using the sign-in options like Google, it doesn't matter most of the time if you use the signup page or the Login Page because The Website determines if you're an existing user in the Backend and lets you proceed as suited. &lt;/p&gt;

&lt;p&gt;Now, why didn't the developers simply rely on the user to make an educated decision and use the appropriate page for Logging In / Signing Up? &lt;/p&gt;

&lt;h2&gt;
  
  
  If you love her, you don't let her go
&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%2Fvxedfpk81i4keui17b8m.gif" 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%2Fvxedfpk81i4keui17b8m.gif" alt="Please Don't Go" width="220" height="152"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As the internet grew bigger and bigger, the struggle for online presence stonked! Soon enough it didn't matter if you were a viable SaaS Startup or a Tech Giant like Google who just doesn't care. It all came down to the "Retention and Conversion Rate". &lt;/p&gt;

&lt;p&gt;In simple terms, You don't want to lose a customer or drive away a potential user from our beautifully designed landing page.&lt;/p&gt;

&lt;p&gt;Now, imagine this, A user named Jim is pretty chill and randomly browses the internet (Like most of the audience). When he came to your website for a service, he wants to have a taste of that fruit as quickly as possible. If you block his first experience with layers after layers of authentication and finally a paywall (You surely don't want to live in your mother's basement forever), he will just get frustrated and move on to the next site in a blink. Unfortunately, that second website offers a free trial without a signup (Also known as Guest Browsing).&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%2F7h81foh2gy8s7jzdshhq.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.amazonaws.com%2Fuploads%2Farticles%2F7h81foh2gy8s7jzdshhq.png" alt="A fancy chat of user signup rate" width="800" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the chart above you can see how less of the audience actually signs up for your product unless they are blown away by your landing page. &lt;/p&gt;

&lt;p&gt;That's why it is extremely important to make the onboarding process as painless as possible for the user.&lt;/p&gt;

&lt;h2&gt;
  
  
  5 Curated Tips from My Experience in UX
&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%2Fcwow8edcw11q5dq5o6ly.gif" 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%2Fcwow8edcw11q5dq5o6ly.gif" alt="Tip me!" width="220" height="135"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After years of fiddling around with highly complex User experiences, Simple Grandma-friendly Apps get way more traction in the long run. Here are some tips to improve the user experience of your Side hustle which will fail anyway!&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Offer Guest Mode and Free Trials whenever Possible.
&lt;/h3&gt;

&lt;p&gt;Companies from Nvdia to niche online media converters, all offer some free credits requiring no sign-ups. You should try that out too! Let me link some of the Basic 3rd Party services such as Firebase too help you get started!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="https://firebase.google.com/docs/auth/web/anonymous-auth" rel="noopener noreferrer"&gt;Firebase Auth&lt;/a&gt;:&lt;/strong&gt; You can easily use Firebase's Anonymous Auth to track users without needing to sign up and afterward convert them to permanent users in the least intrusive way! &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="https://stackoverflow.com/questions/23740411/how-to-store-this-data-in-cookies" rel="noopener noreferrer"&gt;LocalStorage + Cookie&lt;/a&gt;:&lt;/strong&gt; You can store a user's browsing and progress information in their Browser. Beware that cookies can be deleted and the Local Storage of the browser can be cleaned resulting in an infinite free trial glitch&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Offer OAuth Powered signups and Logins
&lt;/h3&gt;

&lt;p&gt;Passwords are a pain in the butt and are less secure in the era of sophisticated phishing attacks. Offering users to sign up through their Google and other social accounts such as Facebook or Github can greatly enhance their user experience!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You have multiple options to choose from when it comes to integrating OAuth. Some of them are [&lt;strong&gt;&lt;a href="https://auth0.com/learn/social-login" rel="noopener noreferrer"&gt;AUTH0&lt;/a&gt;&lt;/strong&gt;, Free Tier, 25K Users], [&lt;strong&gt;&lt;a href="https://firebase.google.com/docs/auth/web/google-signin" rel="noopener noreferrer"&gt;Firebase Auth&lt;/a&gt;&lt;/strong&gt;, Free Tier, 50K Users], [&lt;strong&gt;&lt;a href="https://supabase.com/docs/guides/auth/social-login" rel="noopener noreferrer"&gt;Supabase OAuth&lt;/a&gt;&lt;/strong&gt;, Free Tier, 50K Users], [&lt;strong&gt;&lt;a href="https://authjs.dev/getting-started/authentication/oauth" rel="noopener noreferrer"&gt;AuthJS&lt;/a&gt;&lt;/strong&gt;, Free Library, Supports nearly all OAUTH Providers] , etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Don't drive away a user from the website unless absolutely necessary.
&lt;/h3&gt;

&lt;p&gt;If a user or a potential customer wanders off from your website for Email Confirmation, Survey, Payments, etc, there's a higher chance that the user will not make it back to your app in the midst of the Attention-Hungry Dungeon of Internet Sales Funnels. &lt;/p&gt;

&lt;p&gt;Here are a few libraries and services to help you with that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="https://surveyjs.io/" rel="noopener noreferrer"&gt;SurveyJS&lt;/a&gt;&lt;/strong&gt;: Add seamless forms to your website that return a well-structured JSON data. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="https://support.google.com/docs/answer/2839588?hl=en-GB#zippy=%2Cembed-a-form-on-a-website-or-blog" rel="noopener noreferrer"&gt;Embedded Google Form&lt;/a&gt;&lt;/strong&gt;: Want to chill? You can easily create and embed a google form in your website in Less than a minute!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="https://docs.stripe.com/checkout/embedded/quickstart?locale=en-GB" rel="noopener noreferrer"&gt;Stripe's Embedded Checkout&lt;/a&gt;&lt;/strong&gt;: White the most famous payment gateway, Stripe has their own Hosted Checkout feature, You can always embed that in your website for a seamless and non-intrusive checkout process&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Less Click = More comfort for the user
&lt;/h3&gt;

&lt;p&gt;I understand that you may have a groundbreaking app that has highly complex features. Yet your users are not dungeon masters. It's always a bad idea to Nest your most useful settings and options in the Dashboard or Navigation Menus. &lt;/p&gt;

&lt;h3&gt;
  
  
  5. Be a Guardian Angel, Guide them.
&lt;/h3&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%2Fst1nmwpivmowxiu2gfy8.gif" 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%2Fst1nmwpivmowxiu2gfy8.gif" alt="Look Ma! I can walk" width="320" height="180"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Not all your users are Tech-savvy. They won't know how to navigate through different parts of your app and if you don't get them hooked, they will just move to the next easier app. That is why while Adobe Photoshop is a beast, people still tend to prefer Canva for smaller tasks. Why? It's easier! That's why Guide them like a baby. &lt;/p&gt;

&lt;p&gt;Here's a cool Javascript library that helps you to set up an initial tour for your audience. &lt;strong&gt;&lt;a href="https://driverjs.com/" rel="noopener noreferrer"&gt;DriverJS&lt;/a&gt;&lt;/strong&gt; (Give it a try, it's easy!)&lt;/p&gt;

&lt;p&gt;Now you're ready to see your conversation rate go crazy! (Or slightly upwards) , It's in our best interest to make the user experience for our audience as smooth as possible. You give them easy, they give you their Credit Cards! (Just don't call them and ask their PIN)&lt;/p&gt;

&lt;p&gt;If the article helped, Consider showing some love and a lot of constructive feedback! Cheers!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ux</category>
      <category>designsystem</category>
      <category>design</category>
    </item>
  </channel>
</rss>
