<?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: Ratul Hasan Ruhan </title>
    <description>The latest articles on DEV Community by Ratul Hasan Ruhan  (@ratul).</description>
    <link>https://dev.to/ratul</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%2F703051%2F22007440-b63e-4b21-a742-2671f1546c4e.png</url>
      <title>DEV Community: Ratul Hasan Ruhan </title>
      <link>https://dev.to/ratul</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ratul"/>
    <language>en</language>
    <item>
      <title>Is WPF Still Relevant in 2025? Here's What Developers Should Know</title>
      <dc:creator>Ratul Hasan Ruhan </dc:creator>
      <pubDate>Wed, 16 Apr 2025 23:24:35 +0000</pubDate>
      <link>https://dev.to/ratul/is-wpf-still-relevant-in-2025-heres-what-developers-should-know-g0p</link>
      <guid>https://dev.to/ratul/is-wpf-still-relevant-in-2025-heres-what-developers-should-know-g0p</guid>
      <description>&lt;p&gt;Windows Presentation Foundation (WPF) was first introduced in 2006 with .NET Framework 3.0. Fast forward to 2025 — some developers are surprised to hear it's still in active use.&lt;/p&gt;

&lt;p&gt;So the big question is: is WPF dead? Or is it quietly powering enterprise-grade desktop software behind the scenes?&lt;/p&gt;

&lt;p&gt;The truth is more nuanced than a yes/no answer — let’s break it down.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧠 What is WPF at its Core?
&lt;/h2&gt;

&lt;p&gt;WPF is a UI framework for building Windows desktop applications. It uses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;XAML (Extensible Application Markup Language) for UI design&lt;/li&gt;
&lt;li&gt;C# or VB.NET for logic&lt;/li&gt;
&lt;li&gt;MVVM (Model-View-ViewModel) is the primary design pattern&lt;/li&gt;
&lt;li&gt;It offers vector-based rendering, data binding, animation, styles/templates, and custom controls — all natively supported by Windows.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🧨 Why WPF is "Dead" — According to the Internet
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Microsoft is pushing MAUI and Winui&lt;/li&gt;
&lt;li&gt;Lack of cross-platform support&lt;/li&gt;
&lt;li&gt;Minimal updates to the tooling/UI designer in Visual Studio&lt;/li&gt;
&lt;li&gt;Trend toward web-first or Electron apps
**But here’s the kicker: **most of those reasons apply to startups or cross-platform-focused teams, not to Windows-first enterprise environments.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🛠 Why WPF is Still Alive (and Used) in 2025
&lt;/h2&gt;

&lt;p&gt;✅ 1. Massive Enterprise Codebases&lt;br&gt;
There are thousands of legacy WPF apps in industries like finance, manufacturing, logistics, and healthcare. Rewriting them into MAUI/Blazor isn’t just time-consuming — it’s often unnecessary.&lt;/p&gt;

&lt;p&gt;✅ 2. Performance for Heavy UI&lt;br&gt;
Need high-performance UI with real-time data, charts, dashboards, and hardware integration? WPF still handles that better than most modern web stacks.&lt;/p&gt;

&lt;p&gt;✅ 3. Mature Ecosystem&lt;br&gt;
From third-party libraries like DevExpress, Telerik, and Syncfusion to open-source options, WPF is well-supported and production-ready.&lt;/p&gt;

&lt;p&gt;✅ 4. Integration with .net 8&lt;br&gt;
Since .net Core 3.0, WPF has been open-sourced and supported in the .net SDK ecosystem. It’s no longer tied to just the full .net Framework. It runs smoothly with .net 6/7/8 LTS, and that's a big deal for modernisation.&lt;/p&gt;

&lt;h2&gt;
  
  
  📈 When Should You Still Use WPF?
&lt;/h2&gt;

&lt;p&gt;Choose WPF if:&lt;/p&gt;

&lt;p&gt;You're building a Windows-only tool for internal enterprise use&lt;/p&gt;

&lt;p&gt;You want deep control over the UI/UX and rendering performance.&lt;/p&gt;

&lt;p&gt;You're working on POS, medical, or industrial apps&lt;/p&gt;

&lt;p&gt;You’re maintaining or upgrading an existing WPF codebase&lt;/p&gt;

&lt;p&gt;You need a multi-monitor, touch screen, or hardware input support.&lt;/p&gt;

&lt;h2&gt;
  
  
  🚫 When You Should Avoid WPF
&lt;/h2&gt;

&lt;p&gt;Don’t go with WPF if:&lt;/p&gt;

&lt;p&gt;You need cross-platform desktop + mobile support → Use .net MAUI or Electron + Blazor&lt;/p&gt;

&lt;p&gt;You're targeting a browser → Use Blazor, React, or Vue.&lt;/p&gt;

&lt;p&gt;You're building consumer-grade, modern-looking apps with web-style flexibility.y&lt;/p&gt;

&lt;h2&gt;
  
  
  💡 Personal Insight
&lt;/h2&gt;

&lt;p&gt;As someone who’s worked on Flutter, Electron, and WinForms too, I still find WPF powerful for specific kinds of apps. It’s not dead; it’s just not cool anymore. But in the enterprise world, cool doesn't matter — stability does.&lt;/p&gt;

</description>
      <category>microsoft</category>
      <category>programming</category>
    </item>
    <item>
      <title>Flutter Package Power: Share Your Creations</title>
      <dc:creator>Ratul Hasan Ruhan </dc:creator>
      <pubDate>Mon, 08 Jul 2024 10:48:41 +0000</pubDate>
      <link>https://dev.to/ratul/flutter-package-power-share-your-creations-iph</link>
      <guid>https://dev.to/ratul/flutter-package-power-share-your-creations-iph</guid>
      <description>&lt;p&gt;&lt;strong&gt;Important things about Flutter package development.&lt;/strong&gt;&lt;br&gt;
Simply create a flutter project. But set the Project Type to package.&lt;/p&gt;

&lt;p&gt;Android Studio =&amp;gt; New Flutter Project&lt;/p&gt;




&lt;p&gt;And the project will be created. Here don't have any Android, iOS or other folders. Make a src directory for all files and a [package_name].dart inside the lib folder. Also, make an Example folder. Inside the example folder make a new Flutter application (not package) for the example app.&lt;/p&gt;

&lt;p&gt;Inside the [package_name].dart addyour file name and most importantly add&lt;br&gt;
a library declaration. Like this:-&lt;/p&gt;

&lt;p&gt;Write readme.md file instruction is given inside the file. Record a short video of your project and convert it to .gif. And set it to readme file. It will be more professional.&lt;br&gt;
Write CHANGELOG as .md method. You can follow this method -&lt;/p&gt;

&lt;h2&gt;
  
  
  1.0.0
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Initial release&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  1.0.1
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;add example&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  1.0.2
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;some minor changes
Edit the license file. Flutter recommend this &lt;a href="https://opensource.org/license/BSD-3-Clause" rel="noopener noreferrer"&gt;https://opensource.org/license/BSD-3-Clause&lt;/a&gt; . 
BSD 3-Clause License
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;`Copyright (c) 2024, RATUL HASAN RUHAN
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this
   list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice,
   this list of conditions and the following disclaimer in the documentation
   and/or other materials provided with the distribution.

3. Neither the name of the copyright holder nor the names of its
   contributors may be used to endorse or promote products derived from
   this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Add your project to GitHub.
Then the most important thing. Add data for the pub.dev. 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Optional thing but If you add those. It will be more professional. `&lt;/p&gt;

&lt;p&gt;Optional&lt;br&gt;
Now, a most important thing. You have to add platforms: on pubspec.yaml otherwise it shows undefined platform on pub.dev.&lt;/p&gt;

&lt;p&gt;Most important for show this:&lt;/p&gt;

&lt;p&gt;For a better view on pub.dev . Like this-&lt;/p&gt;

&lt;p&gt;Just add this on pubspec.yaml. And put your screenshot on it.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;br&gt;
&lt;/code&gt;screenshots:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;description: "Example of first page"
path: example/screenshot/screenshot1.png&lt;/li&gt;
&lt;li&gt;description: "Example of middle page"
path: example/screenshot/screenshot2.png&lt;/li&gt;
&lt;li&gt;description: "Example of final page"
path: example/screenshot/screenshot3.png
&lt;code&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;
Now the publishing part:
You can create a publisher account (optional). Login with Google on pub.dev .
Now on the project terminal write this command -
dart pub publish
And Done!!
Thanks for reading this whole bunch of things. &lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>flutter</category>
      <category>mobile</category>
      <category>dart</category>
    </item>
  </channel>
</rss>
