All Feeds

UX Movement 5 Rules for Choosing the Right Words on Button Labels What your buttons say is just as important as how they look. Using the wrong words on your button labels cause users confusion, more work, and slower task times. May 21 Digital Photography School Godox TT350 Flash Review – the Little Flash that Can The post Godox TT350 Flash Review – the Little Flash that Can appeared first on Digital Photography School. It was authored by Sean McCormack. Godox – the mighty Chinese brand that’s sweeping the lighting world, bringing fear to long-established premium brands. And their quality has reached the point where they can now be trusted. One thing they’ve done well to push the brand forward is their system integration. Any of their X-series triggers will fire any light in the […] The post Godox TT350 Flash Review – the Little Flash that Can appeared first on Digital Photography School. It was authored by Sean McCormack. May 21 SitePoint Why the Highest Paid Developers “Fight” Their Coworkers You're going to be asked to do it. At some point, if it hasn't happened already, your coworkers or your boss will ask you to do something foolish. Something you know will make things worse for you, your coworkers, maybe even the business itself. If you're like most developers, you do it anyway. That's what most will do, right? It's better to keep your head down, avoid making waves and simply do what you're told. Job security isn't a thing anymore, but that's one of the best things you can do to keep your job, for a while at least. This Common Mistake Creates a Career Handicap This is the problem. Most employees want to keep their jobs and their clients. They don't have the leverage or control they want over their own careers. They need their job. In fact, most people are terrified of losing their jobs. This has a cascading effect. Research shows the fear of losing your job creates job dissatisfaction and a lack of commitment at work. This, in turn, affects job performance, negatively increasing the likelihood that you will lose your job. It's a vicious cycle that seems to repeat itself over and over. But there's something worse than the fear of a job loss. It's the misplaced confidence or expectation of job security, the kind of confidence that crushes you when you're actually let go. Both of these issues are a problem, and both of these issues are continually ignored. Why is it a problem? Because 78 percent of employees live paycheque-to-paycheque. This includes workers making $100,000+ per year. This is the real reason why most employees have no leverage, no ability to say no. This is the reason most developers won't fight with their coworkers. Why Developers Need to Fight Their Coworkers What do I mean by "fight?" The post Why the Highest Paid Developers “Fight” Their Coworkers appeared first on SitePoint. May 21 Digital Photography School How to Add Functionality to Photoshop CC with Free Extensions The post How to Add Functionality to Photoshop CC with Free Extensions appeared first on Digital Photography School. It was authored by Glenn Harper. Using extensions in Photoshop is like putting scaffolding on Mount Everest. The program already has more features than you probably need. But you can add more functionality by using free extensions. Photoshop CC even invites you to “Find Extensions on Exchange…” on the Windows menu. Finding Photoshop extensions When browsing the Adobe Exchange site for […] The post How to Add Functionality to Photoshop CC with Free Extensions appeared first on Digital Photography School. It was authored by Glenn Harper. May 21 Premier Developer How Microsoft Tracks Santa In this post, Add Dev Manager Casey Kriutzfield shed some light on the NORAD Tracks Santa Azure architecture allowing for some impressive page view metrics. I’m Casey Kriutzfield. One of the leads for NORAD Tracks Santa. For the past several years, The post How Microsoft Tracks Santa appeared first on Premier Developer. May 21 Digital Photography School How to Pose Grooms and Groomsmen Effectively The post How to Pose Grooms and Groomsmen Effectively appeared first on Digital Photography School. It was authored by Jackie Lamas. Wedding days aren’t just about the bride, even though it might seem that way. As photographers we must also take photos of the groom by himself and with his groomsman buddies – whether they like it or not. Posing the groom alone When posing the groom alone you often see stiffness and shifting eyes because […] The post How to Pose Grooms and Groomsmen Effectively appeared first on Digital Photography School. It was authored by Jackie Lamas. May 20 Digital Photography School Advising Clients What to Wear for a Photo Shoot The post Advising Clients What to Wear for a Photo Shoot appeared first on Digital Photography School. It was authored by Lily Sawyer. Outfits can make or break a photo shoot. No matter how beautiful your photos are, if the outfits aren’t right it can affect the look and feel of the photographs. I wouldn’t have said this before, but now I know from experience. Before each photo shoot, I send my client an article and encourage them […] The post Advising Clients What to Wear for a Photo Shoot appeared first on Digital Photography School. It was authored by Lily Sawyer. May 20 Designmodo 9 Tips for Design Job Applicants to Get that Interview You're reading 9 Tips for Design Job Applicants to Get that Interview, originally posted on Designmodo. If you've enjoyed this post, be sure to follow on Twitter, Facebook! Applying for a design job, like any job, can be stressful. Whether it’s your first role or your fifth one, it’s always a good idea to read up on the best tips and advice out there to make sure your … May 20 Premier Developer Conflicting Principles; DevOps VS ITIL. In this post, Add Dev Managers John Tran and Dipanjan Ghanti compare DevOps vs. ITIL while offering useful guidance for a successful DevOps transformation. Introduction If you work in a large enterprise organization, works such as DevOps and Agile can be met with a certain level of skepticism. The post Conflicting Principles; DevOps VS ITIL. appeared first on Premier Developer. May 20 Digital Photography School 5 Tips for Stunning Macro Photography The post 5 Tips for Stunning Macro Photography appeared first on Digital Photography School. It was authored by Jaymes Dempsey. Do you want to capture gorgeous macro photography? Macro photography might feel like a struggle. But it doesn’t have to be. By using a few simple tricks you can capture amazing macro photos consistently. So if you’re interested in taking your macro images to the next level, follow these five tips. 1. Simplify your macro […] The post 5 Tips for Stunning Macro Photography appeared first on Digital Photography School. It was authored by Jaymes Dempsey. May 19 Harold Davis The Scallop Shell Symbol on the Camino If you’ve walked the Camino de Santiago, you’ll have followed a route marked with scallop shell symbols. Along with many other pilgrims, I have a scallop shell hanging from my pack to let others know I am walking a Camino. Walking along, I keep my eye out for the scallop shell symbol, and note cafes, […] May 19 Rick Strahl's Web Log Live Reloading Server And Client Side ASP.NET Core Apps Client side in-browser hot reloading is one of the most compelling features of client side development. If you're using any client side framework like Angular, Vue or React they all come with integrated CLIs that provide instant live reloading of content as soon as you make a change. If you've never used live reload functionality before it's quite a game changer for productivity, while working on iterative code - especially HTML and CSS Layout tweaks that often go through the “make a tiny change, see what it looks like and then tweak it some more” phase. Live Reload is like WYSIWYG on steroids That's all nice and neat for client side code where live reload is common, but on the server side there isn't really an easy comprehensive solution that provides similar functionality. Microsoft sort of added some tooling into Visual Studio called Browser Link a long time ago with Visual Studio tooling, but this originally promising project died a quiet death and never really took off. It's still there, neglected and there are options on the debug toolbar, but other than for CSS Browser Link it never really worked reliably for me. That's too bad because it looked really promising. It also only works in Visual Studio so if you're not on Windows or use another tool like Rider or VS Code it's not useful. Server Side Live Reloading There are however other, better solutions and in this post I'll talk about using a couple of tools in combination to provide pretty good Live Reload functionality for: Static HTML, CSS, JavaScript Files (client side) Razor Pages (server side) Compiled Code Changes in your ASP.NET Core App (server side) To do this I'll use: dotnet watch - a built-in .NET SDK tool Browser-Sync - a client side live reload server/proxy You also need to run 2 terminal windows for this particular solution to work. Here's what the end result looks like: The process I describe deals with two distinct scenarios: Server side code change detection and restarting, that require recompilation and re-running of your server app, followed by a refresh of client pages. Client side refresh for static content like HTML, CSS, JavaScript/TypeScript as well as for Razor pages/views which update client side using Browser Sync. Let's take a look. ASP.NET Core Application Execution Server side ASP.NET Core applications are command line Console applications that are compiled and executed via dotnet.exe. It's compiled code, so if you make a code change the server has to be restarted because your project is one or more compiled assemblies that are running inside the launched dotnet.exe process. There are other ways .NET Core can be ‘hosted’, but for this article I only deal with dotnet.exe. The execution process for ASP.NET Core is very different than the way it worked in classic ASP.NET where any time you updated your DLL the ASP.NET Runtime and the application that knew about .NET Application would automatically ‘hot swap’ the code and then immediately run the new application. It also required restarting, but the logistics for that process were part of the ASP.NET runtime itself that would detect changes to binaries and configuration and would automatically shut down the application's AppDomain and start a new one with the updated code - it was all built-in. Because this happened in-process it also tended to be relatively quick. With classic ASP.NET you recompile your code and on the next request the new code is running. .NET Core is Different Not so with .NET Core applications which run as a standalone application launched via dotnet.exe. If you make a change to your source and recompile your project, you're not actually updating the running application but shutting down the currently running application and starting a new one. .NET Core applications also don't run ‘in place’ like ASP.NET did, but they need to be published to an output folder and then run from there after the original EXE was shut down. Long story short, restarting a .NET Core application requires a few external steps. For deployed applications this is usually just what you want - a stable process that can be automated and configured consistently without any black box logic that handles administration tasks. However, for development this makes things more complicated when you make a change to your code and you want to see that change. dotnet watch run To make this process easier Microsoft provided some tooling - specifically a tool called dotnet watch which is now included as part of the .NET SDK. You use dotnet watch to watch for file changes and then execute a specific dotnet.exe command - typically run: dotnet watch run You run this command in your Web project folder. It works the same as plain dotnet run, except it also watches files and restarts when a change is detected. watch is just a pass-through command, so all the dotnet run (or whatever other command you use) command line parameters work with dotnet watch run. dotnet watch run monitors source files and if a file changes, shuts down the application that it started, rebuilds and publishes the project, and then restarts the application. It's a simple, single focus tool, but it's one of the most useful dotnet tools that ship in the box. Personally, I use almost explicitly for running my .NET application during development with the exception when I'm explicitly debugging code. IIS Express and Auto Restart IIS Express can also manage automatically updating a compiled application without a full restart, but only in non-debug mode. You can start IIS Express from Visual Studio with Ctrl-F5 and make a change in code and keep running. Unlike dotnet watch run you have to manually re-compile your project though. In a way dotnet watch run is nicer than the old ASP.NET behavior because it takes out the extra compilation step. You go straight from file change to the updated application running. The process for using dotnet watch run looks like this: Open a command Window in your Web project's folder Type dotnet watch run Open your browser and navigate to an API or Page Make a change to source code Save the file Go back to the browser and refresh manually You should see the change reflected Notice that these steps don't include any explicit compilation step - dotnet watch run handles that process for you transparently. Figure 1 - dotnet watch run runs, watches and restarts your app when a file change is made Browser Sync dotnet watch handles the server side reloading of code and Browser Sync provides the second piece in this setup that refreshes the browser when either server side or ‘client side’ code and markup is changed. Browser Sync is an easy to use web server/proxy that provides a very easy and totally generic way to provide simple browser page reloading. It's a Node component and it installs as a global NPM tool: npm install -g browser-sync After that you can just use browser-sync from your terminal as it's available on your Path. Proxying ASP.NET Core for Code Injection Browser-sync can run as a Web server to serve static files directly out of a folder, or - more useful for server side scenarios - it can act as a proxy for an already running Web site - like say… an ASP.NET Core Web site. The proxy intercepts each request via a different site port (localhost:3000 by default), injects some web socket script code into each HTML page it renders, and then routes the request to the original site URL (localhost:5000 typically for ASP.NET Core). Once running any changes made to files in the folder cause the browser to refresh the currently active page and remember its scroll position. You can run Browser Sync from the command line like this: browser-sync start ` --proxy http://localhost:5000/ ` --files '**/*.cshtml, **/*.css, **/*.js, **/*.htm*' which detects changes for all of the different files you want to monitor. You can add add folders, files or wild cards as I've done here. The above only handles client side files, plus Razor pages - I'll come back how we can also detect and refresh on server side application changes. I put the above into a browsersync.ps1 script file in my project folder so it's easier to launch. Once you do this you can now navigate to your proxy URL at: http://localhost:3000 Note that the URL is now pointing to port 3000 instead of the ASP.NET Core port of 5000. 5000 still works, but the live reload functionality is only available on port 3000. Nice. Use Other Live Reload Servers? I should point out that Browser Sync isn't the only live reload solution. There are quite a few others and most client side bundling/packaging solutions like WebPack also include live reload servers. I prefer Browser-Sync for the simple reason that it's easy to use with a single lightweight focus and simple command line interface that's easy to automate. Not quite There Yet - Server Side Code Change Refreshing So with dotnet watch run and Browser Sync running as I've shown above we can now live reload client pages as well as Razor pages/views since those are dynamically compiled at runtime in dev mode. We can also automatically reload our server when a code change is made. But if a code change is made in server side code in say a controller or business object, that code is not updating yet. While it's possible to add server side file extensions to browser sync like **/*.cs or even ../**/*.cs the reality is that while the change might be detected a browser refresh at the time of the change isn't going to work. That's because restarting a .NET Core application is relatively slow. Making changes to a CSS, HTML or JavaScript file, and even a Razor page or view is very quick and nearly instant. But making a code change, recompiling, then restarting the application can take a bit and it will vary with the size of the application. For one of my medium sized applications the process takes about 10 seconds locally. The problem is that Browser Sync doesn't wait for 10 seconds to refresh but rather it starts refreshing immediately which then results in a hanging operation because the server is in the middle of restarting. Browser Sync does have a --reload-delay option you can use to delay reloading but that's not really practical because you do want static client files to refresh as quickly as possible. Writing out a File Browser Sync can check for To solve this problem is actually pretty simple. We know when our project is restarting because we are executing start up code, and in that startup sequence we can simply write out a file to disk in the project folder (or anywhere really) with changed content that can then be detected by Browser Sync. I put the following at the bottom of my Startup.Configure() method: #if DEBUG try { File.WriteAllText("browsersync-update.txt", DateTime.Now.ToString()); } catch { // ignore } #endif I can then change the Browser Sync command line to include the browsersync-update.txt file: browser-sync start ` --proxy http://localhost:5000/ ` --files '**/*.cshtml, **/*.css, **/*.js, */*.ts, browsersync-update.txt' And voila - now when you make a server change anywhere in your application, Browser Sync is notified and can reload your the active page. Note that server side restarts will be slow - it can take some time so it's not anywhere as fast refreshing as client side files. My medium'ish app takes nearly 10 seconds to refresh, so maybe live reload in that case is more like delayed reload. Even so this is still much quicker than manually recompiling, restarting, and then refreshing the browser and the browser does refresh as soon as the server is done restarting, which is pretty damn nice. To finish this off, here's a video capture of what this looks like: Note that in order to use this solution you need to run 2 command window Terminals for dotnet watch and Browser Sync. However, you can also cut out dotnet watch if you want to just run from your IDE. it also works in Debug mode, but if you do you will have to manually restart - but the startup output file will still be detected by browser sync and refresh the active browser page when you restart. Summary The concepts I'm describing here aren't new. I've been using this solution for some time now yet every time I show it to someone they go “how does that work”? Well here you go - this post is for you 😃. But for me it's been quite a while since I've built an application that uses MVC (even this app is a MVC/Vue Hybrid). In recent years, I've been mostly building client side applications and APIs and have gotten so used to live reload, so much so that I missed it immediately when I started working on the server side MVC code and I went back to my old solution from some time back. I also like the fact that Browser Sync is totally generic and easy to set up without any custom configuration or downloading half a disk drive's worth of NPM dependencies. I can also use Browser Sync with other tools and pretty much just plug it into any Web project however small, which is very cool. If I had the time I would love to build something more integrated for this like directly build ASP.NET Core middleware that would essentially combine what browser sync with dotnet watch does: Monitor for file changes and then automatically inject Web Socket code into each request to send the refresh message into the browser. Heck it might even exist already… For now this solution works well enough - even with the two command windows that need to keep running it's not a big deal. Using a multi-tabbed terminal like ConEmu or inside for Rider or Visual Studio Code is a big help. Lock and load… Resources Browser Sync dotnet watch this post created and published with Markdown Monster © Rick Strahl, West Wind Technologies, 2005-2019Posted in ASP.NET Core  HTML   May 18 Digital Photography School 3 Fun Backgrounds for Portraits and Photo Booths You Can Create at Home The post 3 Fun Backgrounds for Portraits and Photo Booths You Can Create at Home appeared first on Digital Photography School. It was authored by Erin Fitzgibbon. Bring out your Creativity With our phones becoming an essential tool in our lives, we’ve started integrating them into our daily routines. We use them to document events and milestones, and then share them on social media. One trend that seems set to continue is having photo booths at events and even gatherings. Guests are […] The post 3 Fun Backgrounds for Portraits and Photo Booths You Can Create at Home appeared first on Digital Photography School. It was authored by Erin Fitzgibbon. May 18 Harold Davis Cathedral of Santiago de Compostela at Sunrise For well over a millennia, the Cathedral of Saint James has been the goal of a tireless—and tired and footsore—stream of pilgrims toiling along the various Caminos that lead to Santiago de Compostela. The Cathedral is shown here in the distance by the first light of dawn. It is “brought closer” since I used a […] May 18 Digital Photography School How to Create and Use a Light Skin Smoothing Action in Photoshop The post How to Create and Use a Light Skin Smoothing Action in Photoshop appeared first on Digital Photography School. It was authored by Jackie Lamas. When you photograph portraits, you’ll spend time editing the photos so your clients look their very best. A lot of that time is often spent smoothing out the skin. But while some smoothing is okay, doing it too much can change the look of the person. Here’s how to create a simple and easy Photoshop […] The post How to Create and Use a Light Skin Smoothing Action in Photoshop appeared first on Digital Photography School. It was authored by Jackie Lamas. May 18 Premier Developer Setting Up Permissions at the ListItem Level in SharePoint 2010 Using CSOM In his latest post, App Dev Manager Dennis Kim discusses an approach to set up permissions at a ListItem level in SharePoint 2010 using the Client-Side Object Model (CSOM). He also discusses ways to mitigate performance issues associated with ListItem management. The post Setting Up Permissions at the ListItem Level in SharePoint 2010 Using CSOM appeared first on Premier Developer. May 17 SitePoint 9 Helpful Tools for React Development This article was created in partnership with Sencha. Thank you for supporting the partners who make SitePoint possible. React is a collection of tools and libraries that are independent of each other, which can be daunting for React developers with a job to do. The many tools grants plenty of freedom because you can shop around for the best ones for the job at hand. In React, there are many ways to solve a problem so knowing more than a few tools is a good idea. There are tools that are better at certain problems than others, it all depends on the context. Below is a list of tools I find useful in a good sized React project, some are newer than others and some solve a specific problem when working with React - but all of them I've found helpful. For each React tool, I’ll provide a short summary with basic information before diving a bit deeper with cool things it can do and my thoughts. Keep in mind all these tools are subject to change. The post 9 Helpful Tools for React Development appeared first on SitePoint. Apr 15