<?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: Mustafif </title>
    <description>The latest articles on DEV Community by Mustafif  (@mustafif).</description>
    <link>https://dev.to/mustafif</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%2F801029%2F0eebf596-2d07-43ef-9c59-1874bdf994ff.png</url>
      <title>DEV Community: Mustafif </title>
      <link>https://dev.to/mustafif</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mustafif"/>
    <language>en</language>
    <item>
      <title>Microsoft Recall - EW...</title>
      <dc:creator>Mustafif </dc:creator>
      <pubDate>Wed, 29 May 2024 21:52:08 +0000</pubDate>
      <link>https://dev.to/mustafif/microsoft-recall-ew-4hi</link>
      <guid>https://dev.to/mustafif/microsoft-recall-ew-4hi</guid>
      <description>&lt;p&gt;I am not much of a privacy freak; I don't mind targeted ads and the idea of corporations selling our data (as long as there is proper transparency); however, my bones shivered hearing this new Windows feature coming to Copilot plus PCS - Windows Recall. &lt;/p&gt;

&lt;p&gt;Every 3 seconds, it will take a screenshot that can be used to learn how you use your PC and help you find things you previously went to. That's the paraphrasing of how it sort of works. The biggest issue is the screenshotting every 3 seconds—wtf!&lt;/p&gt;

&lt;p&gt;First, Windows is already horrible at indexing regular files to search for something, so now it's going to use machine learning to try and search for anything you previously went to.&lt;/p&gt;

&lt;p&gt;So for clarification, there is a blacklist of applications, and websites that you can configure, but what if a Windows update overrides it, or what if MOST Windows users aren't aware of it or don't configure anything! That's a huge privacy concern because if someone gains access to your PC, it makes their life so much easier; they don't even need your passwords anymore. &lt;/p&gt;

&lt;p&gt;So...am I going to tell you to switch to Linux...no&lt;/p&gt;

&lt;p&gt;The reason is that everyone uses their computer differently; as someone whose first application he opens up is a Terminal, Windows is already disgusting for me, and once I'm done school, it is dead to me; I already drive my desktop daily POP_OS!. However, it took me a while to become proficient in Linux's quirks, and not everyone's workflows will be able to perfectly translate to Linux. &lt;/p&gt;

&lt;p&gt;My recommendation is to become aware of this new feature, be aware of these new "copilot plus" PCs being marketed, and if you want to switch, be ready to be open-minded and patient. &lt;/p&gt;

</description>
    </item>
    <item>
      <title>Check out my new Portfolio Website!</title>
      <dc:creator>Mustafif </dc:creator>
      <pubDate>Tue, 09 Jan 2024 21:27:10 +0000</pubDate>
      <link>https://dev.to/mustafif/check-out-my-new-portfolio-website-57h5</link>
      <guid>https://dev.to/mustafif/check-out-my-new-portfolio-website-57h5</guid>
      <description>&lt;p&gt;I created my own portfolio website which will contain an about me section,  resume stuff (skills, experience), publications I've done, and a list of my articles from DevTo and my MoKa Reads Blog. &lt;/p&gt;

&lt;p&gt;I hope to expand it as I continue to create more projects, research and curriculum development. &lt;/p&gt;

&lt;p&gt;The website uses a custom web server created using the &lt;code&gt;rocket&lt;/code&gt; crate along with &lt;code&gt;tera&lt;/code&gt; templates for dynamic web pages. &lt;/p&gt;

&lt;p&gt;I followed a minimalist style so I could easily have it look well on desktop and mobile. &lt;/p&gt;

&lt;p&gt;You can check it all out at &lt;a href="https://mustafif.com"&gt;mustafif.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>portfolio</category>
      <category>rust</category>
    </item>
    <item>
      <title>MKProjects 2024 Shutdown</title>
      <dc:creator>Mustafif </dc:creator>
      <pubDate>Thu, 07 Dec 2023 17:08:08 +0000</pubDate>
      <link>https://dev.to/mustafif/mkprojects-2024-shutdown-422d</link>
      <guid>https://dev.to/mustafif/mkprojects-2024-shutdown-422d</guid>
      <description>&lt;p&gt;Starting this month I will begin working on migrating many of the MKProjects repositories to my personal account. The only repositories that will not be transferred, but instead will be managed under the MoKa Reads Foundation will be the following: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;texcreate&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;texcreate-deb&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;texcweb&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;texcore&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;texcgen&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;texcreate_repo&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;&lt;code&gt;texc_v3_sources&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;texc_v3_web&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;&lt;code&gt;texcreate_v3_compiler_conf&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The following repos will be deleted: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;demo-repository&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;
&lt;code&gt;texcreate-templates&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;&lt;code&gt;texcreate-backup&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;texcreate_old&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DocumentationCreator&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;texcreate-local-web&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;texcreate.com&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;MaTeX&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Tex-rs&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;&lt;code&gt;Package_Manager&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mkpm-rs&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;MKPM&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;
&lt;code&gt;MKProject_Books-CLI&lt;/code&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As my focus becomes more towards MoKa Reads, a nonprofit organization that is built towards open education, with research, course development, opensourced publication, I will no longer to put much work with MKProjects. &lt;/p&gt;

&lt;p&gt;I will replace it as a portfolio website with some domain with my name that will be aimed to have a personal touch. &lt;/p&gt;

&lt;p&gt;For anyone who has supported MKProjects, I thank you all, and with TexCreate moving towards the MoKa Reads Foundation, I will be able to continue its mission to have LaTeX project easier for developers and students. &lt;/p&gt;

</description>
    </item>
    <item>
      <title>TexCreate v3.3 Initial Plans</title>
      <dc:creator>Mustafif </dc:creator>
      <pubDate>Tue, 28 Nov 2023 01:53:51 +0000</pubDate>
      <link>https://dev.to/mustafif/texcreate-v33-3lf1</link>
      <guid>https://dev.to/mustafif/texcreate-v33-3lf1</guid>
      <description>&lt;p&gt;I admittedly haven't had the chance to do much work on the TexCreate project these last few months, but its not like I haven't been using it, and because of that I do see things I would like to improve. &lt;/p&gt;

&lt;p&gt;Firstly, I have not been able to work on adding extra templates to the MKProj first party templates. Next is changing the release system to Github releases and taking advantage of the &lt;code&gt;.texcreate&lt;/code&gt; folder to be able to manage different releases, update, and stuff like that. &lt;/p&gt;

&lt;p&gt;I do not have an exact timeline of when I'd be able to put this into reality, it will require abstractions to Github API, I'd have to also create a sort of package manager, and make changes to several crates. &lt;/p&gt;

&lt;p&gt;To help support the future of this project, consider becoming a member at my &lt;a href="https://store.mokareads.org/l/phfnnw"&gt;store&lt;/a&gt;&lt;/p&gt;

</description>
      <category>rust</category>
      <category>latex</category>
      <category>opensource</category>
      <category>news</category>
    </item>
    <item>
      <title>TexCreate 3.2 Out! No MongoDB Tho?</title>
      <dc:creator>Mustafif </dc:creator>
      <pubDate>Thu, 22 Jun 2023 02:56:49 +0000</pubDate>
      <link>https://dev.to/mustafif/texcreate-32-out-no-mongodb-tho-2j30</link>
      <guid>https://dev.to/mustafif/texcreate-32-out-no-mongodb-tho-2j30</guid>
      <description>&lt;p&gt;I released TexCreate 3.2 with a few minor improvements relating to the &lt;code&gt;alert&lt;/code&gt; that checks for new updates, which adds a timeout so you aren't checking forever and adding a &lt;code&gt;feedback&lt;/code&gt; and &lt;code&gt;donate&lt;/code&gt; commands to support the project better. However I also talked about 3.2 introducing a big overhaul of changes, why didn't it? &lt;/p&gt;

&lt;p&gt;Well after thinking about it extensively, its a lot bigger of a migration than I had first expected. Such that I have to consider how I would support TexCreate 3.0-3.2 that use the Github release system and how I would migrate to MongoDB, so the answer will be by adding some type of abstraction through a new library called &lt;code&gt;texcreate-db&lt;/code&gt; which will replace &lt;code&gt;texcreate-repo&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;The whole process will require a lot of planning and maybe won't be implemented until a few more TexCreate versions, so I decided I will implement it in a milestone fashion, as it will also work with my busy schedule where I'm finding it hard to give the project the much needed love it requires. &lt;/p&gt;

</description>
      <category>news</category>
      <category>rust</category>
      <category>opensource</category>
    </item>
    <item>
      <title>TexCreate 3.2 News</title>
      <dc:creator>Mustafif </dc:creator>
      <pubDate>Wed, 07 Jun 2023 17:40:34 +0000</pubDate>
      <link>https://dev.to/mustafif/texcreate-32-news-1515</link>
      <guid>https://dev.to/mustafif/texcreate-32-news-1515</guid>
      <description>&lt;p&gt;I haven't been working on TexCreate lately because the current 3.1 version works well without any significant issues with my daily writing. However, I have noticed a latency issue when finding updates, which causes me to use the &lt;code&gt;--ignore true&lt;/code&gt; flag frequently. The Github release strategy could be more scalable, and I could not create a working database model that was simple for me to maintain. &lt;/p&gt;

&lt;p&gt;While researching ways to centrally distribute my books, I came across MongoDB, and I was surprised at how easy it was to perform CRUD operations on a &lt;strong&gt;free&lt;/strong&gt; database cluster. I am considering making improvements to notify users if they are waiting for new updates, allowing them to try reconnecting or ignore it after a specific timeout. &lt;/p&gt;

&lt;p&gt;My next plan is to release TexCreate templates v4, which will include four more templates, and I plan on migrating my current release system to MongoDB. This will require a refactor; I don't expect this release to be ready for a few months. However, I am excited about the scalability and performance improvements this change promises to bring.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>news</category>
      <category>opensource</category>
      <category>rust</category>
    </item>
    <item>
      <title>A Little Panic in Zig</title>
      <dc:creator>Mustafif </dc:creator>
      <pubDate>Thu, 01 Jun 2023 22:21:03 +0000</pubDate>
      <link>https://dev.to/mustafif/a-little-panic-in-zig-5bo2</link>
      <guid>https://dev.to/mustafif/a-little-panic-in-zig-5bo2</guid>
      <description>&lt;p&gt;In Rust there are several ways to handle errors that come from the &lt;code&gt;Result&lt;/code&gt; and &lt;code&gt;Option&lt;/code&gt; types. A common way to get the inner value is using the &lt;code&gt;unwrap&lt;/code&gt; method that either returns the value or panics the program. So how would we implement this function in Zig? Well there are several methods of handling errors in Zig, to keep ours simple we will use an &lt;code&gt;if/else&lt;/code&gt; statement. &lt;/p&gt;

&lt;p&gt;Let's start with by creating a file called &lt;code&gt;unwrap.zig&lt;/code&gt;, and import the standard library and assign it to the constant &lt;code&gt;std&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight zig"&gt;&lt;code&gt;&lt;span class="c"&gt;// unwrap.zig &lt;/span&gt;
&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="n"&gt;std&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;@import&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"std"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We will be using compile time generics in our function, you may also use function type inference if you'd like. &lt;/p&gt;

&lt;p&gt;What we expect is a type for our generic &lt;code&gt;T&lt;/code&gt;, and an error set in the form &lt;code&gt;anyerror!T&lt;/code&gt; where we will return the value &lt;code&gt;T&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight zig"&gt;&lt;code&gt;&lt;span class="k"&gt;pub&lt;/span&gt; &lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="n"&gt;unwrap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;comptime&lt;/span&gt; &lt;span class="n"&gt;T&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;type&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;val&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;anyerror&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;T&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;T&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Inside of the function we will use an &lt;code&gt;if/else&lt;/code&gt; statement where the &lt;code&gt;if&lt;/code&gt; statement will handle a successful value and the &lt;code&gt;else&lt;/code&gt; statement handles the error. In these statements we will need to capture the values using the &lt;code&gt;| |&lt;/code&gt; syntax as shown:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight zig"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;val&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;|{&lt;/span&gt;
   &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="n"&gt;err&lt;/span&gt;&lt;span class="p"&gt;|{&lt;/span&gt;
   &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;debug&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;panic&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Panicked at Error: {any}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;err&lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As you can see in our &lt;code&gt;if&lt;/code&gt; block we return the successful value we capture as the variable &lt;code&gt;value&lt;/code&gt;, while in the &lt;code&gt;else&lt;/code&gt; block, we capture the error as the variable &lt;code&gt;err&lt;/code&gt; and print it using &lt;code&gt;std.debug.panic&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;To test out our function, I have create an error type called &lt;code&gt;MathError&lt;/code&gt; with one field called &lt;code&gt;DivideByZero&lt;/code&gt;. This is similar to an enum implementing the &lt;code&gt;Error&lt;/code&gt; trait in Rust.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight zig"&gt;&lt;code&gt;&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="n"&gt;MathError&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;error&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;DivideByZero&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now we can create a function called &lt;code&gt;divide&lt;/code&gt; which checks if the denominator is zero, and if it is we return the divide by zero error.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight zig"&gt;&lt;code&gt;&lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="n"&gt;divide&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;comptime&lt;/span&gt; &lt;span class="n"&gt;T&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;type&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;T&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;T&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;MathError&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;T&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;MathError&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;DivideByZero&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lastly we will create our &lt;code&gt;main&lt;/code&gt; function where we will try this with a successful result and a result doomed to panic. &lt;/p&gt;

&lt;p&gt;If we run our program we get the following result:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;zig build-exe unwrap.zig 
&lt;span class="nv"&gt;$ &lt;/span&gt;./unwrap
Result: 6.71641826e-01
thread 52729 panic: Panicked at Error: error.DivideByZero
...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This article was just a fun experiment to try something I use in Rust and try it in Zig. Like in Rust, panicking isn't a good way to handle errors, and in most cases the &lt;code&gt;try&lt;/code&gt; keyword in Zig is enough. &lt;/p&gt;

</description>
      <category>zig</category>
      <category>rust</category>
      <category>programming</category>
    </item>
    <item>
      <title>The Plan of an Opensource Education Platform!</title>
      <dc:creator>Mustafif </dc:creator>
      <pubDate>Fri, 26 May 2023 00:10:46 +0000</pubDate>
      <link>https://dev.to/mustafif/the-plan-of-an-opensource-education-platform-46fb</link>
      <guid>https://dev.to/mustafif/the-plan-of-an-opensource-education-platform-46fb</guid>
      <description>&lt;h2&gt;
  
  
  A Little History
&lt;/h2&gt;

&lt;p&gt;One of my first projects that I built in highschool was called MKhan Reference Library and its goal was to build a website that provides different kinds of school material for various grades. The project wasn't the best considering it had copyrighted material, and was abandoned as I further progressed past web development. &lt;/p&gt;

&lt;p&gt;But...considering it was my first project it did show what my underlying interest was, an educational platform. I love talking about programming, I love working on it and teaching it, so why not put all of those together into my first business. &lt;/p&gt;

&lt;h2&gt;
  
  
  Edu-Byte!
&lt;/h2&gt;

&lt;p&gt;The platform is called Edu-Byte and I don't expect it to be out of speculation until after a few years of development. My plan for this platform is to build an opensource, people focused educational website that will provide material and resources that will help someone learn any language they'd like. &lt;/p&gt;

&lt;p&gt;Well saying any language they'd like gives me anxiety considering I'm the only person working on it at the moment, but I hope to expand with others as the idea becomes more clear. &lt;/p&gt;

&lt;h2&gt;
  
  
  Content Plan
&lt;/h2&gt;

&lt;p&gt;In the early preview I plan on creating content on languages like Rust, Zig and C, which I am comfortable with, and I hope to get others to help me on different languages. At the moment I am writing &lt;code&gt;Zig Unleashed&lt;/code&gt; which will be the first book written for this platform. &lt;/p&gt;

&lt;p&gt;To explain the different content planned for this platform, it might make sense to look at a little diagram based on the code written for &lt;code&gt;edubyte-metadata&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Free =&amp;gt; Article Types/ 
           Topic 
           How to Guides 
           News 
           TrainLings 
Paid =&amp;gt; Paid Types/ 
           Udemy courses 
           Ebooks / Book (distr. Amazon) 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In terms of paid content I have planned for 5 different price tiers ($CAD) that a book could fall in, this depends on the type of content it covers and its length. (These are exclusive ranges)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tier 1: $19.99 - $35.99&lt;/li&gt;
&lt;li&gt;Tier 2: $35.99 - $40.99&lt;/li&gt;
&lt;li&gt;Tier 3: $40.99 - $49.99&lt;/li&gt;
&lt;li&gt;Tier 4: $49.99 - $69.99&lt;/li&gt;
&lt;li&gt;Tier 5: $69.99 - $99.99&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Licenses
&lt;/h2&gt;

&lt;p&gt;All tools and code written for this project are planned to be under the GPLv2 license, while books will be under the CC BY-NC-ND 4.0 license. I don't have problems with pirating my books, so this license will allow you to distribute them without adaptation and for noncommercial purposes.&lt;/p&gt;

&lt;p&gt;Comment below any features you'd like to see in this platform or any suggestions. &lt;/p&gt;

</description>
      <category>opensource</category>
      <category>rust</category>
      <category>programming</category>
      <category>news</category>
    </item>
    <item>
      <title>Using Zig in Rust!</title>
      <dc:creator>Mustafif </dc:creator>
      <pubDate>Tue, 18 Apr 2023 02:41:53 +0000</pubDate>
      <link>https://dev.to/mustafif/using-zig-in-rust-160p</link>
      <guid>https://dev.to/mustafif/using-zig-in-rust-160p</guid>
      <description>&lt;p&gt;In my head I thought hey how would I go about integrating Zig and Rust together in a sorta simple way, and then it came to me...they both use FFI for C interoperability. So if I would compile a Zig file as a dynamic library and link it to my Rust program treating is a C shared library, we're good to go right? I was happy to find out it does work...&lt;/p&gt;

&lt;p&gt;Let's create a simple zig file called &lt;code&gt;mylib.zig&lt;/code&gt; with the following &lt;code&gt;add&lt;/code&gt; function that's exported to C.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight zig"&gt;&lt;code&gt;&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="n"&gt;std&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;@import&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"std"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="n"&gt;zig_add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;i32&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;i32&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="kt"&gt;i32&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's now create a Rust file, &lt;code&gt;main.rs&lt;/code&gt; that will have an &lt;code&gt;extern&lt;/code&gt; block that will declare our &lt;code&gt;zig_add&lt;/code&gt; function and in our &lt;code&gt;main&lt;/code&gt; function we will use it, taking note that when using &lt;code&gt;zig_add&lt;/code&gt; we will have to wrap it in an unsafe block.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;&lt;span class="k"&gt;extern&lt;/span&gt; &lt;span class="s"&gt;"C"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;zig_add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;i32&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;i32&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;i32&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;unsafe&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nf"&gt;zig_add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="nd"&gt;println!&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"1 + 2 = {}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In our example we will be using a Linux system because of the ease with C development on it, and the fact that we will need environment variables to set our linker path. Now let's see how we can have these files work with eachother.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# compile zig file as dynamic library &lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;zig build-lib mylib.zig &lt;span class="nt"&gt;-dynamic&lt;/span&gt; 
&lt;span class="c"&gt;# compile rust file linking our library &lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;rustc main.rs &lt;span class="nt"&gt;-L&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt; mylib 
&lt;span class="c"&gt;# set the linker path &lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;LD_LIBRARY_PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;./
&lt;span class="nv"&gt;$ &lt;/span&gt;./main 
1 + 2 &lt;span class="o"&gt;=&lt;/span&gt; 3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For those wondering, if we didn't set the linker path, we would get the following error:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./main: error &lt;span class="k"&gt;while &lt;/span&gt;loading shared libraries: libmylib.so: cannot open shared object file: No such file or directory
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>Zig in MKProj?</title>
      <dc:creator>Mustafif </dc:creator>
      <pubDate>Mon, 20 Mar 2023 21:32:21 +0000</pubDate>
      <link>https://dev.to/mustafif/zig-in-mkproj-487k</link>
      <guid>https://dev.to/mustafif/zig-in-mkproj-487k</guid>
      <description>&lt;p&gt;When I first saw Rust, I honestly couldn't get my head to understand it, and I ignored it. But some time later, I found it again and started working with it, and after three years, I am still working with it and creating such complex programs with it. &lt;/p&gt;

&lt;p&gt;I've found myself interested in system programming languages focusing on memory safety. I am actively reading the updates in the Carbon language, but one language that's also having lots of progress is Zig. &lt;/p&gt;

&lt;p&gt;Zig sounds like one of those random variable names like foo and bar, but this isn't any arbitrary language. It's a brilliant one. It has got me so interested that I will be looking to try and have this language become the second official language in my portfolio project, MKProj. Although the start will be slow as I'll have to split my time to try and learn this while still maintaining my other priorities, I am committed to having this language be part of my portfolio project. &lt;/p&gt;

&lt;p&gt;Why am I so interested in this language, however? First is that it can easily be placed into a C/C++ project. Secondly, it is robust, &lt;br&gt;
an optimal language that can be used to build reusable, maintainable projects, and I am fascinated by how it chooses to handle edge memory cases, such as running out of memory or how values are allocated and deallocated. &lt;/p&gt;

&lt;p&gt;One usage I see myself having this be part of is my toy language, Mufi-Lang. If my progress in this language goes well, I'll look into maintaining my version of Zig. But this is all speculation. For now, the first thing is to start learning...&lt;/p&gt;

&lt;p&gt;If you're interested in Zig, I recommend looking at the &lt;a href="https://ziglang.org/"&gt;official site&lt;/a&gt; for more information. &lt;/p&gt;

</description>
      <category>zig</category>
      <category>programming</category>
    </item>
    <item>
      <title>Rust For C++ Programmers</title>
      <dc:creator>Mustafif </dc:creator>
      <pubDate>Mon, 06 Mar 2023 22:33:04 +0000</pubDate>
      <link>https://dev.to/mustafif/rust-for-c-programmers-2obm</link>
      <guid>https://dev.to/mustafif/rust-for-c-programmers-2obm</guid>
      <description>&lt;p&gt;I would like to make an article about my recent publication Rust For C++ Programmers. This is a book I had started writing in May 2022, and after months of work I am able to show my hard work. &lt;/p&gt;

&lt;p&gt;This book is published under BPB Online and I would like to thank the team for giving me this opportunity and the amazing support throughout the publication process. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwh57pfr0ho51nxcelcxb.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwh57pfr0ho51nxcelcxb.jpg" alt="Rust For C++ Programmers Cover" width="749" height="984"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Who's the Audience?
&lt;/h2&gt;

&lt;p&gt;The audience for this book is mainly C++ programmers looking to broaden their horizons or looking for a memory safety alternative. This book uses C++ semantics better to understand Rust in the beginning/intermediate sections and teaches how to use Rust alongside C/C++ projects in the advanced chapters. An excellent addition I added in this book that isn't particularly found in other books is having a few chapters dedicated to building projects, as listed below: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Building a CLI App 

&lt;ul&gt;
&lt;li&gt;Gives experience using the &lt;code&gt;structopts&lt;/code&gt; crate &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;GTK App 

&lt;ul&gt;
&lt;li&gt;Build desktop apps using the GTK framework &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;StdLib for Mufi 

&lt;ul&gt;
&lt;li&gt;Integrate Rust into a C project by developing a standard library for a toy language. &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;App in Tauri

&lt;ul&gt;
&lt;li&gt;Learn how to develop cross-platform desktop applications using Tauri (Rust backend, Svelte frontend)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Along with the project, each chapter will contain exercises to help enforce the content each chapter goes through. &lt;/p&gt;

&lt;h2&gt;
  
  
  Why Rust and C++?
&lt;/h2&gt;

&lt;p&gt;C and C++ are systems programming languages that dominate many different aspects of our systems, such as operating systems, desktop applications, and microservices. Still, they come with their fair share of problems. &lt;/p&gt;

&lt;p&gt;The biggest con of using languages like C/C++ is the memory-related bugs they go through, which is the most common kind of exploitation in a program. &lt;/p&gt;

&lt;p&gt;The advantage of using a language like Rust is that it was built from the ground up to provide memory and thread safety so that you won't see any segmentation faults, double frees, or data races. &lt;/p&gt;

&lt;p&gt;We portrayed this book to provide C++ developers with a way to learn how to integrate Rust into a C++ project so newer features or different components can be written with higher levels of memory safety. This use case can happen in the Linux kernel, which has Rust as its second official language and is already being used for graphics drivers in the &lt;a href="https://asahilinux.org/"&gt;Asahi Linux&lt;/a&gt; project that aims to bring Linux to Apple silicon. &lt;/p&gt;

&lt;h2&gt;
  
  
  Where to Purchase?
&lt;/h2&gt;

&lt;p&gt;The book is listed as the following: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kindle: $9.95 USD&lt;/li&gt;
&lt;li&gt;Paperback: $29.95 USD &lt;/li&gt;
&lt;li&gt;Paperback + Kindle: $34.95 USD &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://bpbonline.com/products/rust-for-c-programmers?_pos=1&amp;amp;_sid=dad438bb6&amp;amp;_ss=r"&gt;View BPB Online&lt;/a&gt;  &lt;/p&gt;

</description>
      <category>rust</category>
      <category>programming</category>
      <category>cpp</category>
      <category>writing</category>
    </item>
    <item>
      <title>TexCreate v3 Betas!!!</title>
      <dc:creator>Mustafif </dc:creator>
      <pubDate>Thu, 16 Feb 2023 00:49:35 +0000</pubDate>
      <link>https://dev.to/mustafif/texcreate-v3-betas-4d43</link>
      <guid>https://dev.to/mustafif/texcreate-v3-betas-4d43</guid>
      <description>&lt;p&gt;I would like to announce that a few days ago I had published the first beta of TexCreate version 3. I had written a guide on getting started in the &lt;a href="https://github.com/MKProj/texcreate" rel="noopener noreferrer"&gt;TexCreate Github repo&lt;/a&gt; and instead I will dedicate this post to cover what's been implemented and what needs to be worked on before v3.0.0 is considered stable for me. &lt;/p&gt;

&lt;p&gt;To view the other projects that are related to TexCreate v3, take a view at the &lt;a href="https://github.com/MKProj/texc_v3_sources" rel="noopener noreferrer"&gt;&lt;code&gt;texc_v3_sources&lt;/code&gt; repo&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What's been implemented
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;TexCreate repo template system 

&lt;ul&gt;
&lt;li&gt;Storing latest repos in the &lt;code&gt;$HOME/.texcreate&lt;/code&gt; directory &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Custom template support &lt;/li&gt;

&lt;li&gt;Proper project structure creation 

&lt;ul&gt;
&lt;li&gt;An issue with version 2 was input paths that would cause compile errors &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  What needs to be worked on
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;TexCreate.com proper front end to show latest and older releases &lt;/li&gt;
&lt;li&gt;Documentation for ...

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;texcreate&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;
&lt;code&gt;texcore&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;
&lt;code&gt;texcreate_gen&lt;/code&gt; &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Figuring out how to compile LaTeX asynchronously &lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Features to be implemented
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;extra&lt;/code&gt; feature: 

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;make&lt;/code&gt; command 

&lt;ul&gt;
&lt;li&gt;Would add &lt;code&gt;makefile&lt;/code&gt; option to config &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;
&lt;code&gt;compile&lt;/code&gt; command 

&lt;ul&gt;
&lt;li&gt;Would add &lt;code&gt;compiler&lt;/code&gt; option to config&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;li&gt;Considerations 

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;web&lt;/code&gt; command for local web interface &lt;/li&gt;
&lt;li&gt;
&lt;code&gt;generate&lt;/code&gt; command for interaction with &lt;code&gt;texc_gen&lt;/code&gt; &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Templates to be added from v2
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Note currently v0 only contains the &lt;code&gt;basic&lt;/code&gt; template &lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;code&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;
&lt;code&gt;dictionary&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;
&lt;code&gt;lachaise&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;
&lt;code&gt;lachaise_modified&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;
&lt;code&gt;news&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;
&lt;code&gt;novel&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;
&lt;code&gt;theatre&lt;/code&gt; &lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>trading</category>
      <category>algorithms</category>
      <category>productivity</category>
      <category>discuss</category>
    </item>
  </channel>
</rss>
