<?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: Nattee Kotsomnuan</title>
    <description>The latest articles on DEV Community by Nattee Kotsomnuan (@nattee_kotsomnuan).</description>
    <link>https://dev.to/nattee_kotsomnuan</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%2F3287198%2Fc43821d7-7356-4668-8ee4-2bc70a33657e.png</url>
      <title>DEV Community: Nattee Kotsomnuan</title>
      <link>https://dev.to/nattee_kotsomnuan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nattee_kotsomnuan"/>
    <language>en</language>
    <item>
      <title>Why Base64 Encoding is More Useful Than You Think</title>
      <dc:creator>Nattee Kotsomnuan</dc:creator>
      <pubDate>Sat, 09 Aug 2025 06:35:08 +0000</pubDate>
      <link>https://dev.to/nattee_kotsomnuan/why-base64-encoding-is-more-useful-than-you-think-4h8j</link>
      <guid>https://dev.to/nattee_kotsomnuan/why-base64-encoding-is-more-useful-than-you-think-4h8j</guid>
      <description>&lt;p&gt;If you’ve ever worked with web development, APIs, or security tokens, chances are you’ve bumped into Base64 encoding — maybe without even realizing it.&lt;/p&gt;

&lt;p&gt;For many developers, Base64 is just that weird output when you “convert an image to text.” But in reality, it’s a powerful and practical tool for solving everyday problems in software development.&lt;br&gt;
What is Base64, Really?&lt;br&gt;
Base64 is a way to represent binary data as plain text using 64 characters (A–Z, a–z, 0–9, +, /) plus = for padding.&lt;/p&gt;

&lt;p&gt;This makes it safe to send binary files (like images, PDFs, or ZIP archives) over channels that only support text — such as JSON, XML, or email.&lt;br&gt;
Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Hello → SGVsbG8=
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When I Use Base64 in Real Life&lt;br&gt;
Embedding images in HTML/CSS&lt;br&gt;
Great for small icons or SVGs without extra HTTP requests.&lt;/p&gt;

&lt;p&gt;Sending files in JSON APIs&lt;br&gt;
Some APIs require you to Base64 encode a file before sending.&lt;/p&gt;

&lt;p&gt;JWT token debugging&lt;br&gt;
Both the header and payload in JWTs are Base64URL-encoded JSON objects.&lt;/p&gt;

&lt;p&gt;Storing binary inside config files&lt;br&gt;
Helpful when working with systems that can’t store raw binary data.&lt;/p&gt;

&lt;p&gt;The Downsides You Should Know&lt;br&gt;
Increases size by ~33% compared to raw binary.&lt;/p&gt;

&lt;p&gt;It’s not encryption — don’t treat it as a security feature.&lt;/p&gt;

&lt;p&gt;Large files might cause performance issues if handled entirely as Base64.&lt;/p&gt;

&lt;p&gt;Base64 Examples in Different Languages&lt;br&gt;
JavaScript&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Encode
const text = "Hello World";
const encoded = btoa(text);
console.log(encoded); // SGVsbG8gV29ybGQ=

// Decode
const decoded = atob(encoded);
console.log(decoded); // Hello World

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Python&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import base64

# Encode
text = "Hello World"
encoded = base64.b64encode(text.encode()).decode()
print(encoded)  # SGVsbG8gV29ybGQ=

# Decode
decoded = base64.b64decode(encoded).decode()
print(decoded)  # Hello World

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;PHP&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;?php
// Encode
$text = "Hello World";
$encoded = base64_encode($text);
echo $encoded; // SGVsbG8gV29ybGQ=

// Decode
$decoded = base64_decode($encoded);
echo $decoded; // Hello World
?&amp;gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;My Favorite Tool for Base64&lt;/strong&gt;&lt;br&gt;
If you ever need quick Base64 encoding/decoding without writing scripts, I recommend Base64Kit.com.&lt;/p&gt;

&lt;p&gt;It’s:&lt;/p&gt;

&lt;p&gt;100% client-side (your data stays in your browser).&lt;/p&gt;

&lt;p&gt;Works with both text ↔ Base64 and file ↔ Base64.&lt;/p&gt;

&lt;p&gt;Has a clean, mobile-friendly UI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Thoughts&lt;/strong&gt;&lt;br&gt;
Base64 might look like gibberish, but once you understand its purpose, it becomes one of those “always handy” tools in your developer toolkit.&lt;/p&gt;

&lt;p&gt;Next time you need to transfer binary data through a text-only channel, think Base64 — and save yourself a few headaches.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Generating PDF from ABAP SmartForm with a Custom Filename</title>
      <dc:creator>Nattee Kotsomnuan</dc:creator>
      <pubDate>Sat, 09 Aug 2025 00:30:09 +0000</pubDate>
      <link>https://dev.to/nattee_kotsomnuan/generating-pdf-from-abap-smartform-with-a-custom-filename-2ce9</link>
      <guid>https://dev.to/nattee_kotsomnuan/generating-pdf-from-abap-smartform-with-a-custom-filename-2ce9</guid>
      <description>&lt;p&gt;If you’ve ever worked with SAP SmartForms, you probably know how easy it is to generate beautiful, print-ready documents directly from your ABAP programs. But what if you need to automatically save that SmartForm output as a PDF file — and not just any PDF, but one with a custom filename defined at runtime?&lt;/p&gt;

&lt;p&gt;In this tutorial, we’ll walk through the process of:&lt;/p&gt;

&lt;p&gt;Calling the SmartForm programmatically.&lt;/p&gt;

&lt;p&gt;Converting the output to PDF.&lt;/p&gt;

&lt;p&gt;Downloading the file with your own custom filename.&lt;/p&gt;

&lt;p&gt;Let’s get started.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Get the SmartForm Function Module Name
Before calling a SmartForm, we need its generated function module name. This can be retrieved with SSF_FUNCTION_MODULE_NAME.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DATA: lv_fm_name      TYPE rs38l_fnam,
      lv_bin_filesize TYPE i,
      lt_pdf_content  TYPE TABLE OF solix.

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
  EXPORTING
    formname = 'Z_MY_SMARTFORM'
  IMPORTING
    fm_name  = lv_fm_name.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Call the SmartForm and Get the PDF Output
We’ll call the SmartForm’s function module with parameters that tell it to generate PDF output (PDF1).
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DATA: ls_job_output TYPE ssfcrescl.

CALL FUNCTION lv_fm_name
  EXPORTING
    control_parameters-no_dialog = 'X'
    output_options-tdprinter     = 'PDF1'
    user_settings                = 'X'
  IMPORTING
    job_output_info              = ls_job_output
  EXCEPTIONS
    OTHERS                       = 1.

lt_pdf_content = ls_job_output-otfdata.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Convert OTF to PDF
The SmartForm output is initially in OTF format. We’ll convert it to PDF binary using CONVERT_OTF.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DATA: lt_pdf_bin  TYPE TABLE OF solix,
      lv_pdf_size TYPE i.

CALL FUNCTION 'CONVERT_OTF'
  EXPORTING
    format                = 'PDF'
  IMPORTING
    bin_filesize          = lv_pdf_size
  TABLES
    otf                   = lt_pdf_content
    lines                 = lt_pdf_bin
  EXCEPTIONS
    err_conv_not_possible = 1
    OTHERS                = 2.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Download the PDF with a Custom Filename
Now that we have our PDF binary, we can download it to the local machine with a dynamic filename.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DATA: lv_filename TYPE string.

lv_filename = |C:\Temp\Invoice_{ sy-datum }.pdf|.

CALL FUNCTION 'GUI_DOWNLOAD'
  EXPORTING
    bin_filesize = lv_pdf_size
    filename     = lv_filename
    filetype     = 'BIN'
  TABLES
    data_tab     = lt_pdf_bin
  EXCEPTIONS
    OTHERS       = 1.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Final Thoughts&lt;br&gt;
With just a few function calls, you can:&lt;/p&gt;

&lt;p&gt;Retrieve the SmartForm’s generated function module name.&lt;/p&gt;

&lt;p&gt;Call it to produce PDF output directly.&lt;/p&gt;

&lt;p&gt;Convert and download the PDF with a filename of your choice.&lt;/p&gt;

&lt;p&gt;This approach is perfect for automated processes, batch jobs, or scenarios where users shouldn’t have to manually save files themselves.&lt;/p&gt;

&lt;p&gt;If you’re working in environments where file access is restricted (like web-based SAP GUI), consider adapting this approach to store the PDF in an application server directory or send it via email automatically.&lt;/p&gt;

&lt;p&gt;Related Resources&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://help.sap.com/viewer/product/SAP_NETWEAVER" rel="noopener noreferrer"&gt;Official SAP Documentation for SmartForms&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://base64kit.com/" rel="noopener noreferrer"&gt;Base64 Converter Online Tool&lt;/a&gt; – Useful if you want to convert your generated PDF to Base64 for API transfers.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>abap</category>
      <category>sap</category>
      <category>pdf</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>🚀 Base64Kit: A Lightning-Fast, Privacy-First Web Tool with Perfect Lighthouse Score!</title>
      <dc:creator>Nattee Kotsomnuan</dc:creator>
      <pubDate>Fri, 08 Aug 2025 14:49:32 +0000</pubDate>
      <link>https://dev.to/nattee_kotsomnuan/base64kit-a-lightning-fast-privacy-first-web-tool-with-perfect-lighthouse-score-489n</link>
      <guid>https://dev.to/nattee_kotsomnuan/base64kit-a-lightning-fast-privacy-first-web-tool-with-perfect-lighthouse-score-489n</guid>
      <description>&lt;p&gt;Hey Dev Community 👋&lt;/p&gt;

&lt;p&gt;I recently built Base64Kit — a clean, fast, privacy-focused tool for Base64 encoding and decoding directly in your browser. It supports both text and files (like images and PDFs), drag &amp;amp; drop, instant preview, and no ads or tracking whatsoever.&lt;/p&gt;

&lt;p&gt;🔥 And here's the best part — We just scored a perfect 100 on Google PageSpeed Insights!&lt;br&gt;
📱 Mobile Score:&lt;/p&gt;

&lt;p&gt;Performance: 100&lt;/p&gt;

&lt;p&gt;Accessibility: 98&lt;/p&gt;

&lt;p&gt;Best Practices: 100&lt;/p&gt;

&lt;p&gt;SEO: 100&lt;/p&gt;

&lt;p&gt;🧠 Why it matters:&lt;br&gt;
I designed Base64Kit with:&lt;/p&gt;

&lt;p&gt;⚡ Instant client-side performance (no server calls)&lt;/p&gt;

&lt;p&gt;🔐 Full privacy (everything stays in your browser)&lt;/p&gt;

&lt;p&gt;🌗 Dark/light mode toggle&lt;/p&gt;

&lt;p&gt;🧩 Clean UX without distractions&lt;/p&gt;

&lt;p&gt;📰 RSS Feed &amp;amp; open-source roadmap coming soon&lt;/p&gt;

&lt;p&gt;If you're working with Base64 or just love simple tools that do one thing well, check it out → &lt;a href="https://base64kit.com" rel="noopener noreferrer"&gt;Base64Kit&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Would love feedback, suggestions, or collaboration!&lt;br&gt;
&lt;a href="https://pagespeed.web.dev/analysis/https-base64kit-com/h786xw6gc3?form_factor=mobile" rel="noopener noreferrer"&gt;https://pagespeed.web.dev/analysis/https-base64kit-com/h786xw6gc3?form_factor=mobile&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%2Fgp7lr9urpijazirx1m74.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.amazonaws.com%2Fuploads%2Farticles%2Fgp7lr9urpijazirx1m74.jpg" alt=" " width="800" height="430"&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%2Fe3ebjb4uqnqyg4hqb2iu.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.amazonaws.com%2Fuploads%2Farticles%2Fe3ebjb4uqnqyg4hqb2iu.jpg" alt=" " width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cheers 🚀&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>I Built a Fast, Privacy-Friendly Base64 Tool for Developers — No Ads, Just Pure Utility</title>
      <dc:creator>Nattee Kotsomnuan</dc:creator>
      <pubDate>Fri, 08 Aug 2025 14:45:10 +0000</pubDate>
      <link>https://dev.to/nattee_kotsomnuan/i-built-a-fast-privacy-friendly-base64-tool-for-developers-no-ads-just-pure-utility-5e6n</link>
      <guid>https://dev.to/nattee_kotsomnuan/i-built-a-fast-privacy-friendly-base64-tool-for-developers-no-ads-just-pure-utility-5e6n</guid>
      <description>&lt;p&gt;Hey Dev Community 👋&lt;/p&gt;

&lt;p&gt;I've built a fast, clean, and privacy-focused tool for &lt;strong&gt;Base64 encoding and decoding&lt;/strong&gt;. It's designed for developers who often need to quickly convert files or strings — without being bombarded by ads or tracking.&lt;/p&gt;

&lt;p&gt;👉 Try it here: &lt;a href="https://base64kit.com" rel="noopener noreferrer"&gt;https://base64kit.com&lt;/a&gt;&lt;br&gt;
🔧 Features&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🔁 Encode and decode &lt;strong&gt;any file&lt;/strong&gt; (images, PDFs, etc.)&lt;/li&gt;
&lt;li&gt;🧾 Plain text encoding with live preview&lt;/li&gt;
&lt;li&gt;⚡ Instant results, drag &amp;amp; drop support&lt;/li&gt;
&lt;li&gt;🌓 Dark mode + light mode&lt;/li&gt;
&lt;li&gt;🧘‍♀️ No ads, no analytics, no cookies&lt;/li&gt;
&lt;li&gt;📰 RSS feed for blog updates (more articles coming!)
🎯 Why I built this
Most online Base64 tools are either:&lt;/li&gt;
&lt;li&gt;Overloaded with ads&lt;/li&gt;
&lt;li&gt;Tracking users unnecessarily&lt;/li&gt;
&lt;li&gt;Not responsive or dev-friendly
So I created &lt;strong&gt;Base64Kit&lt;/strong&gt; — built with developer ergonomics in mind, and zero distractions.
### 🚀 What's next?&lt;/li&gt;
&lt;li&gt;Planning to open-source parts of the project&lt;/li&gt;
&lt;li&gt;Adding new tools (e.g. Base64 to Image, Validators)&lt;/li&gt;
&lt;li&gt;Publishing blog articles about how Base64 works under the hood
Would love feedback, bug reports, or just a visit from you 🙏
Happy encoding!
👉 &lt;a href="https://base64kit.com" rel="noopener noreferrer"&gt;https://base64kit.com&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>I Built a Fast, Privacy-Friendly Base64 Tool for Developers — No Ads, Just Pure Utility</title>
      <dc:creator>Nattee Kotsomnuan</dc:creator>
      <pubDate>Fri, 08 Aug 2025 09:15:07 +0000</pubDate>
      <link>https://dev.to/nattee_kotsomnuan/i-built-a-fast-privacy-friendly-base64-tool-for-developers-no-ads-just-pure-utility-3fbe</link>
      <guid>https://dev.to/nattee_kotsomnuan/i-built-a-fast-privacy-friendly-base64-tool-for-developers-no-ads-just-pure-utility-3fbe</guid>
      <description>&lt;p&gt;Hey Dev Community 👋&lt;/p&gt;

&lt;p&gt;I've built a fast, clean, and privacy-focused tool for &lt;strong&gt;Base64 encoding and decoding&lt;/strong&gt;. It's designed for developers who often need to quickly convert files or strings — without being bombarded by ads or tracking.&lt;/p&gt;

&lt;p&gt;👉 Try it here: &lt;a href="https://base64kit.com" rel="noopener noreferrer"&gt;https://base64kit.com&lt;/a&gt;&lt;br&gt;
🔧 Features&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🔁 Encode and decode &lt;strong&gt;any file&lt;/strong&gt; (images, PDFs, etc.)&lt;/li&gt;
&lt;li&gt;🧾 Plain text encoding with live preview&lt;/li&gt;
&lt;li&gt;⚡ Instant results, drag &amp;amp; drop support&lt;/li&gt;
&lt;li&gt;🌓 Dark mode + light mode&lt;/li&gt;
&lt;li&gt;🧘‍♀️ No ads, no analytics, no cookies&lt;/li&gt;
&lt;li&gt;📰 RSS feed for blog updates (more articles coming!)
🎯 Why I built this
Most online Base64 tools are either:&lt;/li&gt;
&lt;li&gt;Overloaded with ads&lt;/li&gt;
&lt;li&gt;Tracking users unnecessarily&lt;/li&gt;
&lt;li&gt;Not responsive or dev-friendly
So I created &lt;strong&gt;Base64Kit&lt;/strong&gt; — built with developer ergonomics in mind, and zero distractions.
### 🚀 What's next?&lt;/li&gt;
&lt;li&gt;Planning to open-source parts of the project&lt;/li&gt;
&lt;li&gt;Adding new tools (e.g. Base64 to Image, Validators)&lt;/li&gt;
&lt;li&gt;Publishing blog articles about how Base64 works under the hood
Would love feedback, bug reports, or just a visit from you 🙏
Happy encoding!
👉 &lt;a href="https://base64kit.com" rel="noopener noreferrer"&gt;https://base64kit.com&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
