Let’s explore! I’m running the latest .NET 6 and you can run it on Windows, Mac, or Linux and I cloned it to a folder locally. There’s two versions of a complete Todo API in this sample, one using Entity Framework Core and one using Dapper for data access. Both are lightweight ORMs (object relational mappers). Let’s explore the Dapper example that uses SQLite. The opening of the code in this example doesn’t require a Main() which removes a nice bit of historically unneeded syntactic sodium. The Main is implied. using System.ComponentModel.DataAnnotations; At this point we’ve got a SQLite connection string ready to go scoped in the Services Dependency Injection Container (fancy words for “it’s in the pile of stuff we’ll be using later”) and we’ve told the system we want a nice UI for our Open API (Swagger) web services description. It’s WSDL for JSON, kids! Then a call to EnsureDb which, ahem, ensures there’s a database! await EnsureDb(app.Services, app.Logger); What’s it look like? Just a little make this table if it doesn’t exist action: async Task EnsureDb(IServiceProvider services, ILogger logger) Next we’ll “map” some paths for /error as well as paths for our API’s UI so when I hit /swagger with a web browser it looks nice: if (!app.Environment.IsDevelopment()) Then sprinkle in a little Hello World just to give folks a taste: app.MapGet("/", () => "Hello World!") You can see how /hello would return a JSON object of Hello: “World”
Now let’s get some Todos from this database, shall we? Here’s all of them and just the complete ones: app.MapGet("/todos", async (SqliteConnection db) => Lovely. But what’s this Todo object? We haven’t seen that. It’s just a object that’s shaped right. Perhaps one day that could be a record rather than a class but neither Dapper or EFCore support that yet it seems. Still, it’s minimal. public class Todo Let’s get a little fancier with an API that gets a Todo but it might not find the result! It may produce an HTTP 200 OK or an HTTP 404 NotFound. app.MapGet("/todos/{id}", async (int id, SqliteConnection db) => Don’t be sad if you don’t like SQL like this, it’s just a choice amongst many. You can use whatever ORM you want, worry not.
Go explore the code and check it out for yourself! Check out our Sponsor! YugabyteDB is a distributed SQL database designed for resilience and scale. It is 100% open source, PostgreSQL-compatible, enterprise-grade, and runs across all clouds. Sign up and get a free t-shirt! © 2021 Scott Hanselman. All rights reserved. A .NET 6 Minimal API Todo example Playground published first on http://7elementswd.tumblr.com/ via Tumblr A .NET 6 Minimal API Todo example Playground
0 Comments
I’ve long blogged about my love of setting up a nice terminal, getting the prompt just right, setting my colors, fonts, glyphs, and more. Here’s some of my posts.
I want to take a moment to update my pretty prompt post with a little more detail and a more complex PowerShell $PROFILE, due to some changes in Oh My Posh, PowerShell, and the Windows Terminal. I doubt that this post is perfect and I’m sure there’s stuff here that is a little extra. But I like it, and this post will serve as my “setting up a new machine” post until I get around to writing a script to do all this for me in one line. I love my prompt. ![]() Let’s get you set up! Get PowerShellI don’t mean Windows PowerShell (that’s “classic” now) I mean the .NET Core-powered cross-platform PowerShell. There’s a LOT of ways to get it but I’m a Store person usually so I can get PowerShell (and it’ll auto update) from the Microsoft Store or just “ Get Windows Terminal and set a default ShellGet Windows Terminal if you don’t already have it, you can get Windows Terminal free from the Store. If you don’t have access to the Microsoft Store, the builds are published on the GitHub releases page. It comes with a lovely font called Cascadia Code…but… Now that you have Windows Terminal, you’ll notice that it knows that you have PowerShell installed and will add it to your Windows Terminal dropdown menu! You can set PowerShell as your default Profile - that’s the one you’ll get by default when you make a new Tab - in settings: Upgrade your Terminal/Console FontsI like fonts with lots of Glyphs so I also download and Install Caskaydia Cove Nerd Font Complete. This is the same Cascadia Code font but MODIFIED to include hundreds of special characters that you can use to make your prompt cooler.
Remember that Windows Terminal has a lovely Settings UI but you can always click “open JSON file” to manage the settings.json as text if you prefer. Here’s mine. Yours will be different and you should customize it! The Windows Terminal documentation is fantastic. Again, see how PowerShell is in BOLD? That’s because it’s my default. Now, let’s add a little…spice… Add “Oh My Posh” to your ShellOh My Posh has amazing docs so check them out. Do note that some stuff has changed, especially from v2 to v3.
You can install Oh My Posh with with PowerShell’s “Install-Module” or with the platform-specific install instructions. I used the latter, which is somewhat new, but it’s tomato/tomato, so use what works for you. Again, read the docs but the idea on Windows is basically this (or get it from GitHub): winget install JanDeDobbeleer.OhMyPosh Then edit $PROFILE and add the following line, remembering at this point that oh-my-posh is an executable on the PATH. oh-my-posh --init --shell pwsh --config ~/jandedobbeleer.omp.json | Invoke-Expression I have changed my Oh My Posh from Jan’s default to include my own stuff, and I keep my latest up in a GitHub Gist and also in my DropBox/OneDrive so it’s always syncing to all my machines. Mine is this, after I download from my gist. oh-my-posh --init --shell pwsh --config D:/Dropbox/ohmyposhv3-2.json | Invoke-Expression Yours will vary. Again, read the docs and experiment! Once added, reload your profile for the changes to take effect, or restart your shell. . $PROFILE That .json file is filled with “segments” that are documented on the Oh My Posh site in a lot of detail. Overwhelming detail. You can add your computer’s battery, your Azure Subscription, the dotnet or node version of your current folder, really anything. Even your Spotify songs. I’m going to make one that show my Blood Sugar. Go explore Oh My Posh Themes and then modify them with your own additional Segments. Again, note that your fonts will need the right glyphs or it will look weird. Here’s a GOOD prompt: ![]() Here’s a BAD prompt with an issue! ![]() Why is it wrong? Either the .json file that is your config has been saved wrong or corrupted the Unicode Glyphs, or you’ve got a font that doesn’t have those glyphs. Re-assert your Git segment in Oh My PoshSome folks want full git info, status, added, modified, untracked, etc and others just want the current git branch. Check the Git segment and the Posh Git segment to make sure you are getting the performance AND information you need. I needed to turn on “display_stash_count” and “display_upstream_icon” in my config json, like this: { Again, this is all optional and affect performance slightly, but be aware of these properties. I believe I have these set the right way I want them in my public gist. Here is me moving around my source code with “z” in stead of cd, but note the prompt changes. ![]() Turn your PowerShell directories up to 11 with Terminal-IconsIs your prompt not extra enough? That’s because your directory listing needs color AND cool icons! Install-Module -Name Terminal-Icons -Repository PSGallery And then add one line to my $profile (edit with “code $profile”): Import-Module -Name Terminal-Icons Sweet! ![]() How far is too far?At this point you’re basically done, but I also LOVE PSReadLine. It’s great generally but also nice for bash and Emacs types who are moving to PowerShell or use PowerShell for work. I’ve added features like “ctrl shift b” at the command line will run “dotnet build.” Why? Because I can and because it’s muscle memory so I’m making my prompt work for me. You can also add Predictive Autocomplete to your prompt if you like but I’ll leave that as an exercise to the reader! My PowerShell profile is on a public gist, and while it’s not perfect and likely has issues, it works for me! ![]() Enjoy! Thanks to the Windows Terminal Team and the always lovely Jan De Dobbeleer from Oh My Posh, as well as Brandon Olin from Terminal Icons. Check out our Sponsor! YugabyteDB is a distributed SQL database designed for resilience and scale. It is 100% open source, PostgreSQL-compatible, enterprise-grade, and runs across all clouds. Sign up and get a free t-shirt! © 2021 Scott Hanselman. All rights reserved. My Ultimate PowerShell prompt with Oh My Posh and the Windows Terminal published first on http://7elementswd.tumblr.com/ via Tumblr My Ultimate PowerShell prompt with Oh My Posh and the Windows Terminal Hanselminutes is Fresh Air for Developers and has over 800 episodes of fresh tech from fresh faces8/22/2021
Seriously, though, this 30 minute long tech show has diverse topics and new faces you haven’t heard on other podcasts. If you check out over 800 episodes here https://www.hanselminutes.com/episodes you can search by Title, Guest, OR search all the Transcripts! There’s over 400 hours of shows and you can search for the topics you want. Subscribe with your favorite podcast app, the raw RSS is here. We’re also available on basically every podcast app out there, including, but not limited to: If you enjoy the show, the best thing you can do to help me is SPREAD THE WORD! Tell a friend, share and episode or favorite code, but above all GET FOLKS TO SUBSCRIBE. The world is littered with podcasts that gave up after 9 episodes. There’s a ton of average talks shows that ramble on. I’ve worked really hard - at night, as this is not my day job! - to not only bring you the best guests, but to read their papers, books, and thesis, and ask the questions that YOU would have if you were here with me! Sometimes I even put the Hanselminutes Podcast on YouTube and the results are truly special and heartbreakingly emotional. Thanks for listening, and thanks for sharing! Sponsor: YugabyteDB is a distributed SQL database designed for resilience and scale. It is 100% open source, PostgreSQL-compatible, enterprise-grade, and runs across all clouds. Sign up and get a free t-shirt © 2021 Scott Hanselman. All rights reserved. Hanselminutes is Fresh Air for Developers and has over 800 episodes of fresh tech from fresh faces published first on http://7elementswd.tumblr.com/ via Tumblr Hanselminutes is Fresh Air for Developers and has over 800 episodes of fresh tech from fresh faces I blogged about the open source Carter Community Project in 2019. Let’s check in and see what’s going on today in 2021! With .NET 6 on the near horizon, one notes that Carter has a net6 branch. Per their website, this is the goal of the Carter framework:
As of today you can bring Carter into your .NET 6 projects like this: dotnet add package Carter --version 6.0.0-pre2 And the .NET 6 samples are under active development! Let’s bring it down with a clone, switch to the net6 branch and give it a go. Here’s as simple Web API sample with Carter that returns a list of actors at localhost:5001/actors using Carter; Nice! This is using new .NET 6 features so there’s no Main(), it’s implied. The builder has an ActorProvider added as a Singleton. I bet we’ll use that when we ask for /actors in our browser or favorite HTTP API client. public class ActorsModule : ICarterModule This is nice and clean. Everything is using Dependency Injection so no one is “newing up” an Actor. You’ll note also that returning the Actors as JSON is implied when we return the IEmumerable<Actor> that comes from actorProvider.Get(). In fact, the whole Actor Module is just 80 lines so I’ll include it here: public class ActorsModule : ICarterModule Note the API example at /actors/download that shows how to return a file like an MP4. Nice and simple. This sample also includes thoughtful validation code with FluentValidation extension methods like ctx.Request.Validate(). Carter is opinionated but surprisingly flexible. You can use two different routing APIs, or clean and performant Endpoint routing: this.Get("/", (req, res) => res.WriteAsync("There's no place like 127.0.0.1")).RequireAuthorization(); It even supports OpenAPI out of the box! Carter has an active Slack as well as Templates you can add to make your next File | New Project easier! dotnet new -i CarterTemplate There’s a lot of great innovation happening in the .NET open source space right now. ![]() Carter is just one cool example. Go check out Carter on GitHub, give them a Star, try it out and get involved in open source! Sponsor: YugabyteDB is a distributed SQL database designed for resilience and scale. It is 100% open source, PostgreSQL-compatible, enterprise-grade, and runs across all clouds. Sign up and get a free t-shirt © 2021 Scott Hanselman. All rights reserved. Carter Community for ASP.NET Core means enjoyable Web APIs on the cutting edge published first on http://7elementswd.tumblr.com/ via Tumblr Carter Community for ASP.NET Core means enjoyable Web APIs on the cutting edge Hanselminutes is Fresh Air for Developers and has over 800 episodes of fresh tech from fresh faces8/22/2021
Seriously, though, this 30 minute long tech show has diverse topics and new faces you haven’t heard on other podcasts. If you check out over 800 episodes here https://www.hanselminutes.com/episodes you can search by Title, Guest, OR search all the Transcripts! There’s over 400 hours of shows and you can search for the topics you want. Subscribe with your favorite podcast app, the raw RSS is here. We’re also available on basically every podcast app out there, including, but not limited to: If you enjoy the show, the best thing you can do to help me is SPREAD THE WORD! Tell a friend, share and episode or favorite code, but above all GET FOLSK TO SUBSCRIBE. The world is littered with podcasts that gave up after 9 episodes. There’s a ton of average talks shows that ramble on. I’ve worked really hard - at night, as this is not my day job! - to not only bring you the best guests, but to read their papers, books, and thesis, and ask the questions that YOU would have if you were here with me! Sometimes I even put the Hanselminutes Podcast on YouTube and the results are truly special and heartbreakingly emotional. Thanks for listening, and thanks for sharing! Sponsor: YugabyteDB is a distributed SQL database designed for resilience and scale. It is 100% open source, PostgreSQL-compatible, enterprise-grade, and runs across all clouds. Sign up and get a free t-shirt © 2021 Scott Hanselman. All rights reserved. Hanselminutes is Fresh Air for Developers and has over 800 episodes of fresh tech from fresh faces published first on http://7elementswd.tumblr.com/ via Tumblr Hanselminutes is Fresh Air for Developers and has over 800 episodes of fresh tech from fresh faces I write about minimal Web APIs in 2016 and my goal has always been for “dotnet server.cs” to allow for a single file simple Web API. Fast forward to 2021 and there’s some great work happening again in the minimal API space! Let’s do a ’ We updated .NET SDK templates to use the latest C# language features and patterns. We hadn’t revisited the templates in terms of new language features in a while. It was time to do that and we’ll ensure that the templates use new and modern features going forward. The following language features are used in the new templates:
This is pretty cool. Perhaps initially a bit of a shock, but this a major version and a lot of work is being done to make C# and .NET more welcoming. All your favorite things are still there and will still work but we want to explore what can be done in this new space. Richard puts the reasoning very well:
This means you’ll see new things when you make something totally new from scratch but your existing stuff will mostly work just fine. I haven’t had any trouble with my sites. Let’s look at a super basic hello world that returns text/plain: var builder = WebApplication.CreateBuilder(args); Slick. Note that I made line 3 (which is optional) just be one line to be terse. Not needed, just trying on these new shoes. If we make this do more and support MVC, it’s just a little larger. I could add in var builder = WebApplication.CreateBuilder(args); Back to the original Web API one. I can add Open API support by adding a reference to var builder = WebApplication.CreateBuilder(args); Then I hit https://localhost:5001/swagger and I get the SwaggerUI and a little WebAPI Tester: Anuraj has a great blog where he goes deeper and pokes around David Fowlers GitHub and creates a minimal WebAPI with Entity Framework and an in-memory database with full OpenAPI support. He put the source at at https://github.com/anuraj/MinimalApi so check that out. Bipin Joshi did a post also earlier in June and explored in a bit more detail how to hook up to real data and noted how easy it was to return entities with JSON output as the default. For example: app.UseEndpoints(endpoints => { That’s it! Very clean. Dave Brock did a tour as well and did Hello World in just three lines, but of course, you’ll note he used var app = WebApplication.Create(args); Dave does point out how nice it is to work with simple models using the C# record keyword which removes a LOT of boilerplate cruft. Check this out! var app = WebApplication.Create(args); That’s it, and if you hit /person you’ll get back a nice JSON WebAPI with this result: { Dig even deeper by checking out Maria Naggaga’s presentation in June that’s on YouTube where she talks about the thinking and research behind Minimal APIs and shows off more complex apps. Maria also did another great talk in the same vein for the Microsoft Reactor so check that out as well. Is this just about number of lines of code? Have we moved your cheese? Will these scale to production? This is about enabling the creation of APIs that encapsulate best practices but can give you the “middleware-like” performance with the clarity and flexibility that was previous available with all the ceremony of MVC. Here’s some more resources:
Have fun! Lots of cool things happening this year, even in the middle of the panini. Stay safe, friends. Sponsor: Pluralsight helps teams build better tech skills through expert-led, hands-on practice and clear development paths. For a limited time, get 50% off your first month and start building stronger skills. © 2021 Scott Hanselman. All rights reserved. Exploring a minimal Web API with ASP.NET Core 6 published first on http://7elementswd.tumblr.com/ via Tumblr Exploring a minimal Web API with ASP.NET Core 6 I used to call this technique “type tunnelling” and noted its use in XML in 2005. When you are using a strongly typed language but instead your types are stringly typed, you are passing strings around when a better type exists. Here’s some examples of stringly typed method calls: Robot.Move("1","2"); //Should be int like 1 and 2
Inline SQL is another where one language (a proper language with Syntax) is tunneled as a string within another. There’s no good solution for this as most languages don’t have a way to express SQL such that a compiler could noticed a problem. Sometimes we’ll see Fluent APIs like LINQ try to solve this. RegEx is another example of a string language within a language. Sometimes one will see large switch statements that fundamentally change program flow via “magic strings.” One misspelling and your switch case will never fire. Again, these have valid reasons for existence but you won’t catch syntax issues until runtime. LinqPad has a great post on why strongly typed SQL via LINQ or other fluent syntaxes are often better than SQL. Here’s some LINQ in C# that will eventually turn into SQL. You get autocomplete and syntax warnings throughout the authoring process: from p in db.Purchases So why does it matter? Regex rx = new Regex(@"\b(?<word>\w+)\s+(\k<word>)\b"); This isn’t to say all Stringly Typed code is bad. It’s to say that you need to make sure it doesn’t just happen on its own. Be prepared to justify WHY it was written that way. Is string the only data type the app uses? Are there potential uses where something should be a Message or an Event or a Something and it was just easier or simpler to use a string? And here’s the rub - was this Stringly Typed data structure pass to another component or service? Did you intend for its semantic meaning to be retained across this logical (or physical) boundary? A great litmus test is “how would I catch a misspelling?” Compiler" Unit Test? Production ticket? What do you think about Stringly Typed code? Do we type Name and Surname? Is that too far? Do we string all the things? Sponsor: Pluralsight helps teams build better tech skills through expert-led, hands-on practice and clear development paths. For a limited time, get 50% off your first month and start building stronger skills. © 2021 Scott Hanselman. All rights reserved. Stringly Typed vs Strongly Typed published first on http://7elementswd.tumblr.com/ via Tumblr Stringly Typed vs Strongly Typed I’ve had a number of emails asking questions like
and while I’ve written things like
Mads: Last week I held a hybrid meeting! Which means that I was in the conference room with other people (ok, one other person), and the rest participated remotely via teams. The explicit purpose of the setup was to start gaining experience and learning the tricks for when there are folks back in the office on a more regular basis in phase 6. This is to share my initial experiences, and encourage any conversation or tips other people have picked up. Feel free to share. There is no formal follow-up, and I know there are conversations around this going on in multiple places; it just feels to me like [a good place to start a] conversation at this point. The conference room had the usual equipment of a projector and a room camera, ambient audio and a control panel in the middle of the table running a Teams client. Scott: While we are using Teams at work, much of these tips can be used with Zoom and other video conferencing software. First do no harm: Mads: The most important goal is to never go back to remote participation being a second-class experience! The remote experience in Teams needs to not deteriorate even one little bit when a conference room joins in. This means that everyone in the room should also be joined to the Teams meeting. Bring a laptop or other Teams-enabled device, turn off audio input and output on it (the room will take care of that) and use the Teams features as you would as a remote participant: Raise hands (Best. Feature. Ever!), participate in chat, send reactions. Scott: If you’re using Zoom or don’t have a TV or room system, you can have everyone with laptops in the room join the meeting so their faces are shared, then have just one central person have their mic and speakers on. The idea is to allow the folks who are remote to see the context of what’s happening and react to facial expresses as if they were in the room! Create the space: Mads: At the same time, once several participants are coming to the office again, I think we should be careful not to create a force away from the office, making people stay at home just so they can go to meetings. If you don’t include a room in your meeting, you are compelling people to disturb their team room mates, scramble for sparse focus rooms or give up on coming in. The meeting room isn’t just a nice way to get together (though that is nice!), it is simply the most efficient, realistic and best way for on-site folks to participate in a meeting. So: come phase 6, start adding those meeting rooms again! Scott: This suggestion won’t apply to every company, as not every Enterprise has the idea of ‘inviting a room.’ This is a good tip though if you have a physical shared space back in the office AND that room can be invited so that you’re not joining Teams/Zoom on laptops but with the Poly/TV or shared devices in the office room. Placement in the room: The meeting leader (or in-room designate) needs to sit next to the [main central] Teams panel, so as to use it actively during the meeting (see below). We experimented with where to face. There’s a conflict between looking at your screen and looking at the projected output, but there’s also an efficiency in being able to have those two screens show different things. Also, it’s distracting for remote participants to see in-the-room folks “from the side” on either the room feed or the individual cameras. We therefore landed on turning our laptops so we would face them in the same direction as the big screen and room camera. That way folks always see you from the front, you don’t have to turn your head between the shared and private screens. An odd downside (especially when more people are in the room) is that folks physically together don’t face each other! I’m still curious to see how this plays out with half-and-half or even majority in-room participants. But don’t forget to do no harm: Remote folks should not feel as if local folks are huddled in a circle and they are standing outside looking at people’s backs. Teams is the primary meeting venue and the physical room is secondary. A possible other downside to being turned somewhat sideways is ergonomic. This is the same as when someone is giving a presentation and you’re not optimally seated. The emerging social contract here should come with enough wiggle room for folks to be physically comfortable through long-haul meetings. Scott: What’s important here isn’t the implied prescription of what directions to face, but that Mads is making a conscious effort to be actively inclusive. He’s trying new things and mixing up camera angles so that folks who are remote are present and included in the meeting. Leading the meeting: Mads: Many of us have several screens at home, and it’s useful to keep track of all the moving parts across a lot of screen real estate. Having just your laptop can be quite limiting, but the Teams client [Scott: or shared TV] in the room can help a lot. First of all, if the room is not invited to your meeting (maybe you have the room invite separate like I do), it The panel lets you pick different screen layouts for what is projected, and you can use that to differentiate between what’s on the shared and private screens, clawing back real estate. What worked well for us was to project just the faces (“Gallery Mode”) on the big screen; when something was being shared you could read it better on your private screen anyway, and having remote folks’ faces bigger on the wall made for a much better sense of "connection” and reminder of their presence in the meeting. If you’re leading the meeting remotely, have someone in the room be the designated panel operator. The panel also shows the participant list in hands-raised order like your own Teams client does, and that frees up even more real estate for the meeting leader, if you’re in the room. Finally the panel has a spare "raise hand” button for the room, so if you end up with one or two in-room folks who for some reason can’t participate on Teams (maybe they don’t have a laptop), you can have them sit nearby and let them use that to raise their hand during the meeting. All in all this was a much better experience than I expected. I felt I had the tools I needed to run a good meeting for everyone involved, keeping the experience as good for remote folks, and making it pretty decent for those in the room. As more people get in, a lot is going to ride on good habits, so that remote people continue to be fully included and empowered. I hope that was useful! Any thoughts, additional or countervailing experiences etc, I’d love to hear them! Together we’re gonna nail this hybrid thing! Scott: What are your best tips and tricks for good hybrid meetings? Sponsor: Pluralsight helps teams build better tech skills through expert-led, hands-on practice and clear development paths. For a limited time, get 50% off your first month and start building stronger skills. © 2021 Scott Hanselman. All rights reserved. Tips and Tricks and Best Practices for Hybrid Meetings with Microsoft Teams and more published first on http://7elementswd.tumblr.com/ via Tumblr Tips and Tricks and Best Practices for Hybrid Meetings with Microsoft Teams and more I blogged about The quiet rise of E Ink Tablets and Infinite Paper Note Takers - reMarkable 2 vs Onyx Boox Note Air and my love for the Remarkable 2 e-Ink tablet. Now I see that Colby Newman is working on a .NET API for the Remarkable series of tablets. As you know, Dear Reader, I will install .NET on anything and everything so this is right up my alley. The NuGet Package is Remarkable.NET and the GitHub is at https://github.com/parzivail/ReMarkable.NET .NET Core is open source and cross platform and Remarkable.NET is build on .NET Core 3.1 which has binaries for ARM32 which sets us up nicely for use on the Remarkable tablet. I can download the build here https://dotnet.microsoft.com/download/dotnet/3.1 On my Remarkable I can go to Settings | Help | Copyright and Licenses to see my IP address and SSH root password. Now I can scp and ssh [email protected] and enter the password. Note that ssh and OpenSSH is built into Windows 10 so you don’t need to install putty or WinSCP but feel free if it makes you happy. Just a reminder though that Windows has OpenSSH or you can use WSL on Windows 10. After downloading .NET Core 3.1 to my local machine I use scp to copy to /home/root then I ssh into the Remarkable Tablet. Of course, your IP will be different. scp .\dotnet-sdk-3.1.411-linux-arm.tar.gz [email protected]:/home/root Sweet. ![]() Now, per their docs, from my ssh session on the Remarkable, I unzip dotnet and mark it as executable. mkdir dotnet Fantastic. This is an amazing project. There’s even an emulator that uses OpenTK to draw, so I can test locally. The docs sample code is very idiomatic .NET. Nice stuff. For example: // Create an image and // Exit when home button is pressed This is very easy to read. If your are ssh'ed into your Remarkable 2, you can start|stop the main Remarkable interface with systemctl start|stop xochitl You may want to do this when running apps ssh'ed in. There’s also a community repository of free software for the Remarkable called Toltec. It’s like homebrew or winget or apt get for Remarkable. And the dotnet runtime is already in the Toltec listing, which is cool. I’m still exploring but I’m enjoying the ride! (as always, no warranty express or implied!)
Have fun, be safe. Sponsor: Pluralsight helps teams build better tech skills through expert-led, hands-on practice and clear development paths. For a limited time, get 50% off your first month and start building stronger skills. © 2021 Scott Hanselman. All rights reserved. How to install .NET Core on your Remarkable 2 e-Ink tablet with Remarkable.NET published first on http://7elementswd.tumblr.com/ via Tumblr How to install .NET Core on your Remarkable 2 e-Ink tablet with Remarkable.NET Wonen in een chalet voorziet in een ultieme woonbeleving. Het is te zien als een vrijstaand huisje, waarin het aan niets hoeft te ontbreken. Zo is het uiteraard mogelijk om het interieur helemaal naar wens in te richten en bepaal je het comfortniveau helemaal zelf. Bij houten chalets om in te wonen zijn er natuurlijk wel een aantal aandachtspunten. Welke dat zijn, ontdek je hier, zodat je perfect voorbereid bent voor de aanschaf en inrichting van het interieur. Isolatie van het chaletEr is, als je in de lente of in de zomer in een houten chalet wilt wonen, niet direct extra isolatie nodig. Dat verandert als je er ook in de nazomer, herfst en winter gebruik van wilt maken. In dat geval is het aan te raden om het chalet te isoleren. Dan zit je er ook in de winter warm en comfortabel bij. Overigens bepaalt de wanddikte van woonchalets mede hoe het met de isolatie is gesteld. Een wanddikte vanaf 68 mm krijgt wat dat betreft de voorkeur, want daarmee is het chalet van zichzelf al goed geïsoleerd. Bij het voldoen aan het bouwbesluit geldt dat het ook mogelijk is om voor een wanddikte van 44 mm te kiezen. Als je in een houten chalet wilt wonen, is het verder mogelijk om de keuze voor gelamineerde wanden te maken. Dat is een optie vanaf een houtdikte van 88 mm en deze wanden voorzien in een optimale levensduur. Kwaliteit van ramen en deurenBij het wonen in een chalet van hout wordt het comfort mede bepaald door de kwaliteit van ramen en deuren. Dat heeft ook weer te maken met isolerende eigenschappen. Ramen en deuren die van dubbelglas zijn voorzien, zorgen ervoor dat de kou buiten blijft en de warmte binnen. Bij een houten chalet is het esthetisch fraaier als er sprake is van ramen en deuren die eveneens van hout zijn gemaakt. Overigens is de houtstructuur wat dat betreft ook te realiseren door voor kunststof ramen en deuren te kiezen die uitgevoerd zijn met houtlook. Die zijn haast niet van echt te onderscheiden. Inrichting van een chaletEen chalet is doorgaans kleiner dan een standaard woonhuis en daarom is het belangrijk om met de inrichting rekening te houden. Bijvoorbeeld door voldoende opbergruimte te creëren en daarbij slim gebruik te maken van de beschikbare ruimte. Denk aan bepaalde hoeken die leeg zijn, maar waar je opbergruimte kan maken. Daarnaast is het handig om bij de kleurtoepassing te letten op de sfeer die je wilt realiseren. Een kleine woonkamer lijkt optisch groter als je lichte kleuren toepast, dit past prima bij een moderne en strakke inrichting. Warme kleuren in een donkere tint zorgen echter voor een knusse uitstraling. Verder is het bij de inrichting van een chalet om in te wonen prettig om voor comfortabel en praktisch meubilair te kiezen. Bijvoorbeeld door een eettafel neer te zetten met een uitschuifbaar tafelblad. Zo is een poef niet alleen als een bijzettafeltje te gebruiken, maar kan deze eveneens dienst doen als extra zitplaats als er visite komt. Het bericht Alles wat je moet weten over het wonen in chalets verscheen eerst op Webshopblog. Alles wat je moet weten over het wonen in chalets published first on http://7elementswd.tumblr.com/ via Tumblr Alles wat je moet weten over het wonen in chalets |
About UsIf you want to keep up with the latest in web design, you have to be willing to study and learn on an ongoing basis. If you are a web developer or web designer, you’ll find a lot of useful tutorials and code snippets collection here. Furthermore, we also discuss more general topics of web design and how the role of a web designer has evolved over the years.
|