Send mails to local folder

Just learned this today at work, you can configure .NET to send emails to a local folder.

<configuration>
  <system.net>
    <mailSettings>
      <smtp deliveryMethod="specifiedPickupDirectory">
        <specifiedPickupDirectory
          pickupDirectoryLocation="c:\maildrop"
        />
      </smtp>
    </mailSettings>
  </system.net>
</configuration>

From https://msdn.microsoft.com/en-us/library/ms164241(v=vs.110).aspx

Super useful on your development machine, where you most likely don’t actually want to send out mails but do want to view them during development.

Theme music for this blog post

Advertisements
Send mails to local folder

.NET Core – good time to switch?

Via a PluralSight course from Scott Hanselman, I heard he read Rob Ashton’s blog to stay up to date on technology back then. So I checked it out and via a post from Rob Ashton I then ended up on a post from Byte Rot titled: After all, it might not matter – A commentary on the status of .NET (if you are short on time, start reading from “After the big promise of web 1.0…”)

I have been getting a similar feeling lately, this is my take on the subject.

Sorry I’m late

When there was a (re)new(ed) hype around MVC, there was no answer from .NET. Interested to try this approach anyway, I played with django. Being inexperienced at programming and coming from the Windows world, it felt very alien to me and I didn’t get comfortable with it so I stuck with ASP .NET Web Forms until ASP.NET MVC was released.

When ORM’s were becoming the norm, LINQ to SQL and Entity Framework were not ready for prime time yet. Being inexperienced at programming and working in what felt like an app store curated by Microsoft where we only used what came in the box, betting on NHibernate which was available looked too risky. Remember, this was before nuget, there really wasn’t this culture of just including third party libraries, unless you absolutely had to (e.g. an OCR library). So I just came late to the ORM game.

Sorry I missed you

When we needed a sturdy caching solution, redis seemed like a perfect match. But running .NET, all our machines ran Windows so adding a Linux machine to host redis might be a small step for a proof of concept, but it was a giant leap for our existing skillset to operate in a production environment. So we tried to help ourselves out with Windows Server AppFabric’s Caching features instead.

Being stuck on IaaS environments, docker seemed like it could bring some opportunity to get more agility in firing up and tearing down applications. But since it doesn’t run on Windows yet and will only be supported from Windows Server 2016 as it looks, this won’t soon be an option for many existing systems. So I left containers for what they are at the moment.

Sorry my mistake

Silverlight promised a platform for rich Internet applications, which answered a lot your doubts whether to go desktop or web. We know how that ended.

Windows Phone promised a vibrant Marketplace, then Store for apps. There’s more life in an suburban dead end street on a Monday night.

And like Hanselman joked, Azure lost the cloud race to a book store ūüôā

Fork in the learning curve

So technology seemed to be constantly evolving and improving while .NET played catch up. Maybe a bit hyperbolic and I’m not saying this is a bad thing by definition, because it depends what it wants to be, a reliable solution or a cutting edge playground or both.

But with .NET Core opening to the outside world and connecting with Linux and Mac, I felt like I finally could also be early to the party for a change.

But, for understandable reasons, I can’t transparently migrate from .NET 4.6 to .NET Core. Both technically and skillswise, there is an investment to be made. Sure you can run .NET Core on Linux, but you’ll obviously have to find your way around that OS then. Just following the simple getting started steps for Ubuntu, show I need to learn more about some core concepts before I can transfer this to a production environment in a reliable way.

So .NET Core’s opportunity, mostly feels like a fork in the road for me.
As a Windows developer, even trying out an early (ASP.NET 5) ASP.NET Core on Windows felt like playing with Nodes.js and Bash with its project.json and command line tools.
So If I’m going to learn some fundamental new things that can run on Linux, why not put that energy towards the things that are already out and stable on Linux/Mac. I can use my existing .NET skills for Windows platforms, and grow my skillset to other platforms.

Microsoft has been welcoming Linux anyway (Linux VM’s on Azure, SQL Server on Linux, Bash on Ubuntu on Windows). I guess trying to run .NET on Linux while loosing some existing tooling and libraries, feels stubborn, embracing what’s there feels more natural.

So that’s where I’m at, I uninstalled Windows 10 and installed Ubuntu on my home machine a couple of weeks ago. Setting it up and using it for pet projects, gives ample opportunity to learn more about finding my way around Linux. We’ll see where this goes, but becoming platform-ambidextrous in the long term would be a great plus.

Theme music for this blog post

.NET Core – good time to switch?

Zero to hundred

I didn’t completely abandon my original intention, but it did turn out a bit different.
I wanted to do short blogs about my progress, both as a way of motivating myself and creating a guide. But¬†I kept feeling like I didn’t have something worth reporting on.

Several weeks later, the app is in the Windows Store without a single post about it.

So a quick summary of where I am at is in order:

  1. I used GitHub Pages to host the product website
  2. I put the source code up on GitHub
  3. The app is named homebased
    1. It has an unlimited trial without any limitations, so don’t worry about the $0.99 ūüôā
      1. I didn’t make it free, because I want to keep the psychological option of sales and giving it away for free to promote it

What’s next

iwillmakebettermistakestomorr

As you can see, the app is the very bare minimum in all sense of the word.

I see it really needs to:

  1. Improve usability
    1. I¬†developed a first time user experience, that guides you through the setup, but I admit it’s not dummy-proof
    2. Because I wanted something generic that supports different services, it actually turned out a bit clumsy to use with the single service it does support
  2. Improve user interface
    1. although the app does its main job in the background, it could be a bit more inviting visually to set up
    2. I wanted to follow the default Windows Phone settings screens and style, but maybe that’s just an excuse ūüėČ
  3. Add features
    1. You can only connect to IFTTT, there’s more relevant API’s out there
    2. Support multiple users, because if there’s more than one person that lives in a household, you don’t want to lights get turned off just because you are out

Theme music for this blog post

Zero to hundred

File > New Project

Spare time is the best time

If you are a software developer and occasionally daydream of quitting¬†your day job with a bang¬†like Dave Chappelle, it makes sense to spend some time on a pet project. That’s how humanhuman started and now it’s a promising company.

Mark Heath from NAudio made a convincing argument on this topic, about why you should create a digital product and sell it online. Specifically the point about being able to do it in your spare time, takes away all the reasons not to do it.

So this is where I’m at right now, in my spare time and ready to journey from idea to pet project and if¬†the stars align,¬†to digital product.

Billions and billions ideas

Now when you share an idea for a digital product with a friend, they will very most likely point out that it has already been done. This used to be reason enough for me to abandon an idea, until I realized:

  • there are billions of people, having¬†a truly original idea is like winning the lottery
  • ideas are not even half the battle, it’s the execution that counts
  • there’s always room for a different take on an idea

If you are investing money in an idea, different rules might apply. But in your spare time, the stakes are so low that an abandoned idea is a missed opportunity.

App store or bust

I have had countless exciting ideas that quickly simmered down and then quietly fizzled out. So the number one priority is minimizing any hurdles of completing this endeavor.

That’s why I’m sticking to what I know, which is .NET development. As a result of this,¬†I’m picking the Windows Phone Store as the platform to sell my digital product.

I feel this sets the bar at a realistic height. The goal is to remove any excuses of not¬†completing it, making money in a store of which I haven’t heard many promising stories about is not the point.

Elevator pitch

This is the second unoriginal idea I pick, the first one turned out not to be technically possible on Windows Phone without a backend¬†(app that sends email or SMS in the background before you battery dies, for example to notify your significant other you can’t be reached in case of an emergency or for teens out for the night to give their parents a heads up so they don’t panic just yet)

Anyway, step in the elevator, going up:

  • Do you have your phone on you all the time?
  • Do you have any connected smart devices in your home?
  • You probably commute to work and back¬†five days a week following a pretty regular pattern
  • I’ll build you an app that upgrades your¬†comfort at home by¬†suggesting and letting you customize what your smart devices should automatically do when you leave and arrive at the house every day
  • Left for work? Any running devices¬†get turned off, the heating gets turned down and any other thing you configure
  • Back at home? Well, welcome,¬†we already saw you coming, the heating has already been turned up

*ding*

First floor, please step out.

Ideas on paper are harder than they appear

IMG_4438.JPG

On this journey from idea to app store, I will share sketches, mockups, technical diagrams, code and depending on how far I get, a working app.

Subscribe if you do not want to miss my upcoming irregular and infrequent updates.

Theme music for this blog post

File > New Project