<?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: Mikkel D.</title>
    <description>The latest articles on DEV Community by Mikkel D. (@mikkel1156).</description>
    <link>https://dev.to/mikkel1156</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%2F94728%2F0517aab6-45be-495f-8cd5-58ef5a8d30ba.png</url>
      <title>DEV Community: Mikkel D.</title>
      <link>https://dev.to/mikkel1156</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mikkel1156"/>
    <language>en</language>
    <item>
      <title>Shell Forum - bringing the traditional forum to the terminal</title>
      <dc:creator>Mikkel D.</dc:creator>
      <pubDate>Mon, 17 Sep 2018 08:15:04 +0000</pubDate>
      <link>https://dev.to/mikkel1156/shell-forum---bringing-the-traditional-forum-to-the-terminal-47b4</link>
      <guid>https://dev.to/mikkel1156/shell-forum---bringing-the-traditional-forum-to-the-terminal-47b4</guid>
      <description>&lt;p&gt;Sometimes you just want to try something new and different. If you have ever used a BBS (not that I have - not my time) it could be compared to that, but here you have a full Linux terminal. This project is me trying to create a new platform for sharing ideas with others, many people love the terminal and use it as much as they can. Shell-Forum is a project that aims at this interest at terminals by being a forum in complete terminal form.&lt;/p&gt;

&lt;h1&gt;
  
  
  Why?
&lt;/h1&gt;

&lt;p&gt;It was just a random thought I had, it started off from looking at how to make a shell, finding &lt;a href="https://brennan.io/2015/01/16/write-a-shell-in-c/"&gt;Stephen Brennan's tutorial&lt;/a&gt; on how to make one in C flipped a bit inside my head. So this project is here to satiate wanting to build something like that, it also helps me with learning C.&lt;/p&gt;

&lt;h1&gt;
  
  
  How it's &lt;em&gt;going&lt;/em&gt; to work
&lt;/h1&gt;

&lt;p&gt;There are no database but instead it simply uses file structures and directories for storing data in plaintext form.&lt;/p&gt;

&lt;p&gt;Each user has their own home directory where they can make and work on posts, other users can also go in there and personally see what this person has written, but of course can't make any changes.&lt;/p&gt;

&lt;p&gt;When a user is ready to put their post out into the forum they use the commit command. Doing commit ls will show a list of all the forums the user can commit to. When they've chosen they just go commit   and it will be copied into the forum and change them to the owner of that post.&lt;/p&gt;

&lt;p&gt;Using a search command users can also use keywords to look for posts in the forum.&lt;/p&gt;

&lt;p&gt;Additionally, two other commands will be created, &lt;code&gt;view&lt;/code&gt; and &lt;code&gt;comment&lt;/code&gt;. The &lt;em&gt;view&lt;/em&gt; command will give a more visual output of the post formatting it with markdown, as well as displaying any and all comments. The &lt;em&gt;comment&lt;/em&gt; command will just be used to create a command.&lt;/p&gt;

&lt;h1&gt;
  
  
  To-Do
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Add &lt;code&gt;view&lt;/code&gt; command that will display formatted posts in markdown format and show comments at the end.&lt;/li&gt;
&lt;li&gt;Add &lt;code&gt;coment&lt;/code&gt; command to respond to a post, comments will be in a directory named like so &lt;code&gt;.comments-&amp;lt;post_name&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Search "menu"&lt;/li&gt;
&lt;li&gt;Optimizations&lt;/li&gt;
&lt;li&gt;Other improvements and fixes&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>terminal</category>
      <category>shell</category>
      <category>forum</category>
      <category>platform</category>
    </item>
    <item>
      <title>KeeOff Android: My carry-on password manager</title>
      <dc:creator>Mikkel D.</dc:creator>
      <pubDate>Tue, 21 Aug 2018 19:21:44 +0000</pubDate>
      <link>https://dev.to/mikkel1156/keeoff-android-my-carry-on-password-manager-4id4</link>
      <guid>https://dev.to/mikkel1156/keeoff-android-my-carry-on-password-manager-4id4</guid>
      <description>&lt;h1&gt;
  
  
  What is &lt;em&gt;KeeOff Android&lt;/em&gt; and why am I making it?
&lt;/h1&gt;

&lt;p&gt;Like many others I use a password manager, the one I've chosen being &lt;a href="https://keepass.info/"&gt;&lt;em&gt;KeePass&lt;/em&gt;&lt;/a&gt;. My current setup is quite simple, have the database lie remotely on a server hosted by &lt;em&gt;Digital Ocean&lt;/em&gt; which I connect to from the client on my computer and phone, keeps it nice and synced. However, if I ever want to use my passwords on another device, I won't be able to get any of them without first getting a client onto the device. Sure, I can go around with a USB everywhere I go with a client or maybe just a SD card, but I'm &lt;em&gt;lazier&lt;/em&gt; than that.&lt;/p&gt;

&lt;p&gt;My solution? Making an Android app that launches a web server that is able to access my password database on the phone on the same local network. Simple right? Yeah I thought so at first too, I wanted to cheat a little and make it easy on myself, but ended up having to start from square two (because of some help).&lt;/p&gt;

&lt;h2&gt;
  
  
  Let down by &lt;em&gt;KeeWeb&lt;/em&gt;, but they &lt;em&gt;do&lt;/em&gt; have a nice library...
&lt;/h2&gt;

&lt;p&gt;What I wanted was just to use a web based password manager called &lt;a href="https://github.com/keeweb/keeweb"&gt;&lt;em&gt;KeeWeb&lt;/em&gt;&lt;/a&gt; and serve it with a server and then everything would be fine and dandy. &lt;strong&gt;But&lt;/strong&gt; I forgot some things...&lt;/p&gt;

&lt;p&gt;KeeWeb uses JavaScript so everything is run in the browser, it is intended for you to use it just as an interface, enter it, select and navigate to a database file on your local device or a remote service using something like WebDav or Dropbox. Not what I was looking for since I want the database file to be stored on my phone, loaded from it and saved to it. No FTP support. Darn.&lt;/p&gt;

&lt;p&gt;However other users wanted the same kind of feature as me, but the devs aren't interested in making such a feature, so one person took it upon himself to make a &lt;a href="https://github.com/vavrecan/keeweb-local-server"&gt;plugin&lt;/a&gt; for it. Great! &lt;strong&gt;But&lt;/strong&gt; it requires use of PHP for saving the database on the server, I even thought about making my own plugin but I couldn't find any documentation on how their structure work, only some basic infos and examples - not enough for me wanting to jump out into it.&lt;/p&gt;

&lt;p&gt;I could use the guys plugin, but I quickly found out that trying to run PHP code as a server in Java was big task on its own - tried a project called &lt;a href="http://quercus.caucho.com/"&gt;Resin/Quercus&lt;/a&gt; but couldn't get it to work. Scratch that then.&lt;/p&gt;

&lt;h1&gt;
  
  
  Starting from square-two
&lt;/h1&gt;

&lt;p&gt;Luckily I didn't have to start totally from the bottom, as mentioned in the other title, KeeWeb has a great JavaScript library for KeePass v2 databases. Thank &lt;em&gt;some unknown entity&lt;/em&gt; for that, I don't trust myself to being able to implement something that can work with KeePass's databases, I only know basic cryptography concepts so no way it would be secure if I made it.&lt;/p&gt;

&lt;p&gt;So I snatched that and then found a great web server in Java called &lt;a href="https://github.com/NanoHttpd/nanohttpd"&gt;&lt;em&gt;NanoHTTPD&lt;/em&gt;&lt;/a&gt; that is lightweight and easy to use.&lt;/p&gt;

&lt;p&gt;Awesome. Now all I had to do is make all of the UI myself and use KeeWeb's library to &lt;em&gt;communicate&lt;/em&gt; with the database, iterate over results, display them, make events for when items are clicked. All that fun JavaScript stuff.&lt;/p&gt;

&lt;h1&gt;
  
  
  Still Work-In-Progress
&lt;/h1&gt;

&lt;p&gt;All the basic features for managing the database is there, can create new groups and entries, can move, rename, and delete them, can edit and get data from entries.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Just one drawback...&lt;/strong&gt; It can't save. Yeah, pretty big core feature missing that makes the project useless without it. As far as my understanding of the problem goes, NanoHTTPD encodes the data, or at least does something to it, that messes up what the server receives. I've created an &lt;a href="https://github.com/NanoHttpd/nanohttpd/issues/507"&gt;&lt;em&gt;issue&lt;/em&gt;&lt;/a&gt; and still waiting an answer, I can see from the &lt;em&gt;Network Inspector&lt;/em&gt; tab in my browser that it is sending the send the correct data to the server, but it is not the same that it receives. Trying to encode it before sending doesn't help neither.&lt;/p&gt;

&lt;p&gt;The project will be published to my &lt;a href="https://github.com/mikkel1156"&gt;GitHub&lt;/a&gt; when I think it is suitable (maybe when save function finally works) or might do it if a number of people request it out of interest etc.&lt;/p&gt;

&lt;h2&gt;
  
  
  Things missing
&lt;/h2&gt;

&lt;p&gt;Apart from the saving function I also still need to implement:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SSL communication&lt;/li&gt;
&lt;li&gt;App can change master password&lt;/li&gt;
&lt;li&gt;A password generator for password fields&lt;/li&gt;
&lt;li&gt;Other small features and fixes&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>android</category>
      <category>javascript</category>
      <category>keepass</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
