Quantcast
Channel: Scott Hanselman's Blog
Viewing all 1148 articles
Browse latest View live

Don't Check Your Email in the Morning

$
0
0

Hanselman's Productivity TipsIn my productivity talk "How to Scale Yourself and Get More Done Than You Thought Possible" I include a challenge to the listener. It's kind of insane, but it's actually proven very useful to me when I really need to get important work done.

Don't check your email in the morning.

Insane right? I believe that checking your email in the morning is the best way to time-travel to after lunch.

Why DO we check email first thing in the morning? Well, because something crucial might have happened overnight.

There's a few things wrong with that sentence, in my opinion. Words like "something" and "might" stick out. We check our email because of fear, a sense of disconnectedness, and (in some cases) a feeling of urgency addiction.

We often go to bed with our current project or work on our minds. It's THAT project that we should probably wake up and start working on. It's that project that we kind of left unfinished when we went to bed in the first place.

We SHOULD get up and start working on our project first thing. Instead we check our email, get sucked into it, answer a few, get stressed, answer a few more, threaten to delete the whole inbox, and then it's lunch time.

When I'm not really focused, sometimes the day just slips past me. I find my feet around 5pm when the day is winding down, not at 9am when it should be winding up.

If something really really important happened it won't be in your inbox. Your phone will be blowing up. Someone will be sitting in your seat when you show up at work. They will find you.

When they DO find you, you should be working. Go to work and resist the urge to check your email. Start working immediately, head down, sprinting. There's HOURS of time before lunch to be discovered.

Here's your homework. Go to work tomorrow and don't open email until afternoon. You might be staring at first, wondering what the heck you're supposed to do. Do that project. Write that code. Work on that book. Update that blog. Do literally ANYTHING except email.

When you open email for the first time after lunch, you'll have hours of amazing work already behind you and you'll feel amazing.

Try it.


Sponsor: Many thanks to Aspose for sponsoring the blog feed this week! Aspose.Total for .NET has all the APIs you need to create, manipulate and convert Microsoft Office documents and a host of other file formats in your applications. Curious? Start a free trial today.



© 2014 Scott Hanselman. All rights reserved.
     

"Simply terrible advice" - If the shoe pinches, don't wear it.

$
0
0
Photo by Ben Grey used under CC

There's few things that get me too riled up when it comes to advice. I love hearing about other people's lives and their life systems. From the mundane and familiar, like how they pack their kids lunches, how they manage their finances, or how they manage their email.

The only thing to do with good advice is to pass it on. It is never of any use to oneself. - Oscar Wilde

We are an amalgamation of all the advice we've ever been given. The first 18 years of my life I was trapped in my parents' house and subjected to their "advice." Most of which turned out to be spot on. I am currently forcing my children to take my advice until their brains full form (which I suspect will happen in about 25 years).

A word to the wise ain't necessary - it's the stupid ones that need the advice. - Bill Cosby

I did a post yesterday called "Don't Check Your Email in the Morning." It's not that controversial, I think. However, it's been characterized as "The singular most life-changing productivity tip I've received" as well as "Simply terrible advice."

Come on. This is simply an issue of self-reflection. Look at your personal habits, your routine, and how you go about your day. Do you go about your workday on auto-pilot, or with a sense of intentionality?

Don't check email in the morning is a rule of thumb. The essential point is "Don't get caught up in the minutiae of unimportant morning email checking if you're unknowingly using email checking as an way to procrastinate."

Maybe checking email every 5 min works for you. Perhaps that morning quick email sweet is essential to your business. Hey, more power to you. You check email 365 days a year. I wonder what would happen if you didn't check it in the morning for a day? Might be useful advice. Totally might not. You'll never know unless you try.

I like trying on shoes. But if the shoe pinches, I don't wear it.

Consider not checking your email in the morning, if you think it might help you. Enjoy the comments.

Related Links


Sponsor: Many thanks to Aspose for sponsoring the blog feed this week! Aspose.Total for .NET has all the APIs you need to create, manipulate and convert Microsoft Office documents and a host of other file formats in your applications. Curious? Start a free trial today.



© 2014 Scott Hanselman. All rights reserved.
     

Fear Driven Development - FDD

$
0
0
Photo by Stacy Brunner

I had an interesting chat recently at a conference in the "hallway track." The hallway track is all the great conversations that happen in the hallway between sessions.

What drives your development processes? Are you a TDD house, where your tests drive development? Or, perhaps there's a chief architect who isn't a very nice person. We call this ADD - Asshole Driven Development. However, this chat was about FDD - Fear Driven Development.

Organizational Fear

Organization fear can have developers worried about making mistakes, breaking the build, or causing bugs that the organization increases focus on making paper, creating excessive process, and effectively standing in the way of writing code.

This "analysis paralysis" slows the entire project down. Every one is so afraid of the process that forward motion stops. There's a great post called "10 ways to lose a team" that covers many negative behaviors that can affect a team. Things like

  • Forbidding one-on-one meetings
  • Don't share information
  • Implying that everyone can be replaced
  • Micromanaging

All of these behaviors increase ambient fear and can cause a cloud of anxiety to loom over the organization.

Losing Your Job Fear

Other kind of Fear Driven Development is when an organization tries to get developers to stay far too late, work unreasonably hard, by implying that they'll lose their job at the sign of any problems with the project. Threatening jobs will never create a more productive team. It only perpetuates negative feelings and will always lead to people quitting. This also can cause management to believe that heroic effort is a common and acceptable part of the software development. An occasional "work push" is one thing, but if EVERY RELEASE cycle means a heroic effort at the cost of your personal relationships, you've got problems.

Fear of Changing Code

Another kind of Fear Driven Development is when your development organization (or your entire organization) is afraid of the code. Perhaps the code is older (legacy code) but more likely it's just not fully understood. It mostly works, but folks are afraid that a small change to the code could cost unpredictable side-effects. Fear of bug regressions - a closed/fixed bug coming back to life also stresses developers out.

Can you think of other flavors of Fear Driven Development?

* Photo by Stacy Brunner, used under Creative Commons


Sponsor: Many thanks to Aspose for sponsoring the blog feed this week! Aspose.Total for .NET has all the APIs you need to create, manipulate and convert Microsoft Office documents and a host of other file formats in your applications. Curious? Start a free trial today.


© 2014 Scott Hanselman. All rights reserved.
     

How do you deal with anxiety when Live Coding in Technical Interviews?

$
0
0
Photo by Kevin Dooley used under Creative Commons

I received this question last week from a reader:

I've been a developer since 2005. I'm a solid developer with good experience. I've got a great opportunity for a new position coming up but I'm concerned about the tech interview. I seem to freeze like a deer in the headlights when asked to write code in front of people.

My resume is accurate and reflects my skills and experience but how do I prove I'm competent when I have this tendency to choke on tech questions when I'm put on the spot?

This is a great question. To level set, note that they aren't concerned that they don't have the skill. Their skills ARE up to the task. It's a case of anxiety around the live aspect of the tech interview

I would start with honesty. Talk to the hiring manager or the HR person. Offer to show them lots of code, your repos, examples. Offer to share more code than you'd ordinarily need to, as a way of making it clear you have nothing to hide. Everyone has something, be it anxiety, issues with public speaking, etc. Trying to hide an issue can make it worse.

Perhaps you could do a coding test where you *walk them through existing code* and explain. Explain to them that you have anxiety about whiteboard coding, BUT you want to make sure they get an accurate picture about your skill.

Also, practice! Talk to a friend and have them interview you and and have you code live. Folks don't ordinarily code live with an audience, so it's understandable why you might freeze or not perform at your best. If you don't do something often (like code live in front of an audience) then, darn it, do it often! Practice. 

Understand also that the interview may also want to see how you react under pressure. Do you get visibly angry? Wilt? Fall back on first principles? Denigrate yourself? Apologize? These reactions can be as important as your actual code. Usually interviewers are looking for thoughtfulness, analysis, patience, calm, and humility.

What do YOU think, Dear Reader? The comments on posts like this are usually better than my opinions!

* Photo by Kevin Dooley used under Creative Commons


© 2014 Scott Hanselman. All rights reserved.
     

iOS8 3rd Party Keyboards Reviews - SwiftKey and Swype

$
0
0

I've been running iOS8 for a while now in Beta, and today all my iDevices are running the released iOS 8. One of the most anticipated new features is the ability to create and add 3rd party keyboards. In the future I anticipate we'll see lots of interesting and creative keyboards, perhaps to draw an emoji with your finger, custom Chinese or Japanese IMEs (input method editors), and others.

Until then, the primary thing folks have been waiting for is what Android and now Windows Phone have had for a while, the ability to type without lifting your thumb. You'll either love it or hate it, but you need to try it for a day. When done well, it's amazing and brilliant.

The Hassle of the Setup Process

3rd Party Keyboards install from the AppStore like any other app. When you run each for the first time they walk you through the process of installing their keyboard. This is easy for a techie, but for your non-Technical Relatives it might take a little coaching as you'll end up 3 or 4 deep inside Settings | General | Keyboards.

Multiple Keyboards

Swype - US$0.99

Swype worked great, exactly as advertised. I enjoyed using it very much and it's swiping feature works as advertised. I did feel its autocorrect somehow left something to be desired. Below you can see it getting confused as I swipe the word "autocorrect."

Swyping Adding new words

The deal breaker for me with Swype was two-fold. First, the spacebar is smaller than the default space bar. It's a small thing to be sure (as tiny keyboards are) but it had me adding periods . throughout . my text, as I hit that before I hit the space bar.

Secondly, the lower left corner of the iOS keyboard has always been the little 123 Icon. It lets you switch between ABC and 123, of course. Swype chose to move this over to the second spot. This flummoxed me all day. I'm sure I could train myself as it's just muscle memory, but it was an unusual choice, I thought, and this is just one place where Swype deviated their keyboard design from being "just a swiping solution."  They've moved other things as well.

Opening the proper Swype button in the lower corner with a press and hold brings up the Globe (usually not hidden in other keyboards) as well as the Dial Pad for numbers, and the Settings gear.

Swype has moved some things and this slowed me down quite a lot. This keyboard below moves all my symbols to new locations, with the Asterisk nowhere to be found!

Checking out the Swype menu What's with the random Emoji?

NOTE: One thing that ALL these keyboards thankfully fix is the "shift key problem" with the default iOS keyboard. They show lowercase letters when you're typing lowercase, and change the whole keyboard to uppercase when you press Shift. It's so painfully a problem with the default keyboard, it's really unfortunate that this wasn't changed in iOS8.

Swype also includes funky themes with background images if you're into that level of customization.

SwiftKey - Free, with registration and has optional $ IAPs

SwiftKey is free, but they intend to make money by selling us keyboard things. For now, I'm thrilled with the default, as seen below. It looks almost exactly like the default iOS keyboard, which is what I'm looking for. I don't want to relearn where things are when I just want swiping and a few other features.

SwiftKey keeps all the symbols and numbers exactly where they usually are, and adds a few nice touches like a gentle reminder than I can touch-and-hold on punctuation for additional choices.

SwiftKey Fantastic  swiping is amazing

One odd bug I saw with SwiftKey - If I turn off "Allow all Access," in Settings | General | Keyboards, SwiftKey ignored my white theme choice, showing me only a black keyboard with a reminder to turn on All Access. I presume this is a bug, as it's definitely wrong. Other than this one issue, I'm digging SwiftKey.

TouchPal

There is also a free Chinese keyboard called TouchPal that includes swiping input, keyboards, themes and a focus on Emoji. The Emoji are included in the keyboard, meaning your don't need to switch to the Emoji keyboard. That said, I installed it and my phone locked up. I rebooted and had no keyboard until I removed TouchPal. I think this experience speaks (IMHO) to the larger issue of stability with 3rd party keyboards on iOS, but this is only from my perspective as a user. I was unable to get TouchPal working.

Privacy Concerns

Here's the kicker for a lot of people. In order to make predictive text suggestions, sometimes these keyboards need to send what you're typing to their cloud engine. Be sure to read their privacy policies to make sure you're comfortable with how they use your data.

Here's part of SwiftKey's privacy policy. Note that you can opt out of their cloud service. They try not to collect passwords and payments, basing this on hints like "type=password" in HTML, I presume. They also allow you to delete all your cloud data at a later date if you like.

For users that opt in to SwiftKey Cloud, we will collect your email address, basic demographic information and information concerning the words and phrases that you use (“Language Modeling Data”) to enable services such as personalization, prediction synchronization and backup. We may use data provided by you to develop and improve our Products.

Where a field has been flagged by a website or app as denoting a password field or payment information, SwiftKey does not log, store or learn from this information.

Be educated, but I'm OK with using these keyboards for basic email. Of course, you can (and will) switch keyboards many times a day if you're like me.

Switching Keyboards

Bugs

If you type technical (or Medical, or Legal, or whatever) things a lot, you'll likely find some very odd predications with these keyboards. Here SwiftKey has clearly looked at my history and is suggesting something totally wrong...and offering to Capitalize it also! Autocorrect has always been a problem, but don't expect a 3rd party keyboard to fix it...although these ones aim to try! Theoretically they'll learn even more from what I type.

Random suggestion More autocomplete

A number of times I've found myself looking at a text box with a flashing insert point waiting for a keyboard to pop up. These keyboards need to LOAD and sometimes that causes a pause, or when things go wrong, they just never show up. In a word, there's bugs all around, in both the Keyboards, I suspect, and in iOS8's handling of them.

Here I am, keyboardless. I had to reboot at this point. Your mileage may vary.

Just Blank, no KeyboardStill no keyboard

Mark my words, I predict bug fixes for a the supporting APIs for 3rd Party Keyboards will be coming in the next minor update to iOS8.

NOTE: Neither of these keyboards includes a Microphone Button to start Siri's built-in dictation. As such, these keyboards won't work with my app, myEcho. This appears to be a limitation imposed by Apple, that won't allow us (developers) to invoke a dictation without using their button. If you want to dictate (which is almost a keyboard on its own...I'd like to see a giant "Dictate now" button, myself) then you'll need to switch to the built in iOS keyboard.
Press Microphone to Dictate to Siri

Final Recommendation

My recommendation? YOU should try them all and see which one makes you happy. If you are very much a touch typist and you want a swiping keyboard that doesn't deviate far from the default, I recommend SwiftKey.



© 2014 Scott Hanselman. All rights reserved.
     

Jump-Location - A Change Directory (CD) PowerShell Command that reads your mind

$
0
0

There's a lovely little utility called autojump for *nix consoles that makes the 'cd' command very smart. More that just auto-completion, it's a kind of "auto guessing." Hence, autojump. There is some beginning Windows support, but instead I turned to Tim Kellogg's open source PowerShell implementation "Jump-Location."

What a joy.

j this and j that

First, I was like "jump-location?" I'm not going to type that. But then, of course, duh. Aliases.

Jump-Location is aliased to just j, which means I can now do awesome stuff like this:

c:\> j sc
c:\users\scott> j g
c:\users\AppData\Local\GitHub> j des
c:\users\scott\Desktop>

But there's more. It's actually watching how long you are in a directory and keeping stats. You can see the weighted stats with "jumpstat" and the "database" is just a text file in ~\jump-location.txt.

If "j d" isn't enough to get me into C:\GitHub\DisProject then I can do "j g d" and I'm there. It's amazing.

Installation is easy, and I hope it gets on PsGet soon for even easier installation. Just unzip, unblock, ensure that your PowerShell execution policy allows scripts, and run ./install.ps1.

NOTE: Don't run install from your desktop, or a temp folder. Put the Jump-Location folder somewhere where it will live, and it's going to add a line like this to your user profile ("C:\Users\YOU\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1")  like this, so you'll want to install from a final path:

Import-Module 'C:\Users\Scott\Dropbox\utils\Jump-Location-0.5.1\Jump.Location.psd1'

I'm excited about this great little utility. Head over to https://github.com/tkellogg/Jump-Location and STAR it in GitHub, and give it a go! Tim, the author, is on Twitter at @kellogh. Other contributors include Sergey Vorobyev.



© 2014 Scott Hanselman. All rights reserved.
     

Towards a better console - PSReadLine for PowerShell command line editing

$
0
0

Sometimes textmode is where it's at. I've long blogged about tools and techniques that will make your Windows console experience better. Perhaps you're a *nix person who is using Windows in your day job, or you wish the Windows PowerShell prompt was more nix-y. Or perhaps you're a PowerShell person who wants to take your command-line to the next level.

Well, just as NuGet is how we get .NET libraries quickly, and Chocolately is a kind of apt-get for Windows, PsGet is a way to easily add PowerShell modules to your prompt.

To install PsGet you run this script (feel free to vet it):

(new-object Net.WebClient).DownloadString("http://psget.net/GetPsGet.ps1") | iex

Once you've got PsGet, the purpose of this post is to introduce you to PSReadLine.

To install PsReadLine with PsGet, just

install-module PsReadLine

If you want to install PsReadLine manually, you can from their readme. It does a LOT:

PsReadLine replaces the command line editing experience in PowerShell.exe. It provides:

  • Syntax coloring
  • Simple syntax error notification
  • A good multi-line experience (both editing and history)
  • Customizable key bindings
  • Cmd and emacs modes (neither are fully implemented yet, but both are usable)
  • Many configuration options
  • Bash style completion (optional in Cmd mode, default in Emacs mode)
  • Bash/zsh style interactive history search (CTRL-R)
  • Emacs yank/kill ring
  • PowerShell token based "word" movement and kill
  • Undo/redo
  • Automatic saving of history, including sharing history across live sessions
  • "Menu" completion (somewhat like Intellisense, select completion with arrows) via Ctrl+Space

But it doesn't replace it in a scary "moved my cheese" way, but in a comfortable familiar way, similar to how Bash works now. It will add things that you WILL miss when you move to another machine that doesn't have PsReadline. If you are already comfortable (or learning) PowerShell, this will feel comfortable immediately. It's not Dvorak. ;)

Some cool PsReadLine examples

Syntax coloring for things like keywords (cd) and common commands (git):

Syntax coloring with PSReadline

PowerShell often has you opening parentheses, brackets and things, and then you have to count them to close them. PsReadLine helps with that also:

Not only does it give you nice syntax-highlighting for things like function building, it also shows me with the red > that I haven't closed the block.

Forgot to close the block

When you are editing a multi-line script, you can also now backup to other lines!

multiline editing with PSReadline

If you are typing something like Get-Process and either want to autocomplete switches, or autocomplete results, you can press Ctrl-Space:

autocomplete

If you're advanced, check out get-PSReadlineKeyHandler and not only look at what functions are bound to which hotkeys, BUT also check out all the functions that AREN'T bound. You have a lot of power for customization here!

get-PSReadlineKeyHandler

You can even set Emacs keybindings!

Set-PSReadlineOption -EditMode Emacs

Go check out https://github.com/lzybkr/PSReadLine on GitHub and give it a star!

Related Links



© 2014 Scott Hanselman. All rights reserved.
     

How do I set different wallpapers for each monitor in Windows?

$
0
0

I wanted a different wallpaper (or "screensaver," for the non-technical relatives, because I know you call desktop wallpaper that) for each of my multiple monitors in Windows. To start changing your wallpaper, first right-click on the desktop on click Personalize.

Right click to Personalize

Click the words "Desktop Background" at the bottom of the Personalization dialog.

How to change your Desktop Background

Now, from here, if you LEFT-click a wallpaper you're selecting that wallpaper for ALL your monitors.

BUT, if you RIGHT-click on an image, you can set wallpapers individually.

Right click to set wallpaper individually

Enjoy!



© 2014 Scott Hanselman. All rights reserved.
     

Inception-Style Nested Data Formats

$
0
0

Dan Harper had a great tweet this week where he discovered and then called out a new format from IBM called "JSONx."

"JSONx is an IBM standard format to represent JSON as XML"

ByUETcKIIAELf7h

Oh my. JSONx is a real thing. Why would one inflict this upon the world?

Well, if you have an existing hardware product that is totally optimized (like wire-speed) for processing XML, and JSON as a data format snuck up on you, the last thing your customers want to hear is that, um, JSON what? So rather than updating your appliance with native wire-speed JSON, I suppose you could just serialize your JSON as XML. Send some JSON to an endpoint, switch to XML really quick, then back to JSON. And there we are.

Storing a BMW inside another

But still, yuck. Is THIS today's enterprise?

In 2003 I wrote a small Operating System/Virtual Machine in C#. This was for a class on operating systems and virtual CPUs. As a joke when I swapped out my memory to virtual memory pages on disk, I serialized the bytes with XML like this:

<byte>8</byte>

Hilarious, I thought. However, when I showed it to some folks they had no problem with it.

DTDD: Data Transformation Driven Development?

That's too close to Enterprise reality for my comfort. It's a good idea to hone your sense of Code Smell.

Mal Sharmon tweeted in response to the original IBM JSONx tweet and pointed out how bad this kind of Inception-like nested data shuttling can get, when one takes the semantics of a transport and envelope, ignores them, then creates their own meaning. He offers this nightmarish Gist.

--
Http Response Code: 200 OK
--
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">

<html>
<head>
<meta name="status" content="409"/>
</head>
<body class="X-LProd-API-Response">
{&quot;errorCode&quot;:&quot;ItemExists&quot;,&quot;errorMessage&quot;:&quot;EJPVJ9161E: Unable to add, edit or delete additional files for the media with the ID fc276024-918b-489d-9b51-33455ffb5ca3.&quot;}
</body>
</html>

Here we see an HTML document returned presumably is the result of an HTTP GET or POST. The response, as seen in headers, is an HTTP 200 OK.

Within this HTML document, is a META tag that says, no, in fact, nay nay, this is not a 200, it's really a 409. HTTP 409 means "conflict," and it usually means that in the context of a request. "Hey, I can't do this, it'll cause a conflict, try again, user."

Then, within the BODY OF THE HTML with a Body tag that includes a CSS class that itself includes some explicit semantic meaning, is some...wait for it....JSON. And, just for fun, the quotes are HTML entities. &quote;

What's in the JSON, you say?

{
"errorCode": "ItemExists",
"errorMessage": "EJPVJ9161E: Unable to add, edit or delete additional files for the media with the ID fc276024-918b-489d-9b51-ffff5ca3."
}

Error codes and error messages that include an unique error code that came from another XML document downstream. Oh yes.

But why?

Inception Nested Data FormatsIs there a reason to switch between two data formats? Sure, when you are fully aware of the reason, it's a good technical reason, and you do it with intention.

But if your system changes data formats a half-dozen times from the moment leaves it's authoritative source on its way to the user, you really have to ask yourself (a half-dozen times!) WHY ARE WE DOING THIS?

Are you converting between data formats because "but this is our preferred format?" Or, we had nowhere else to stick it!

Just because I can take a JSON document, HTML encode it, tunnel it with a SOAP envelope, BASE64 that into a Hidden HTML input, and and store it in a binary database column DOES NOT MEAN I SHOULD.

Sometimes there's whole teams who exist only as a data format transformation as they move data to the next team. 

Sound Off

What kinds of crazy "Data Format Inception" have you all seen at work? Share in the comments!

UPDATE: Here's an insane game online that converts from JSON to JSONx to JsonML until your browser crashes!

P.S. I can't find the owner of the BMW picture above, let me know so I can credit him or her and link back!



© 2014 Scott Hanselman. All rights reserved.
     

Windows 10 gets a fresh command prompt and lots of hotkeys

$
0
0
image

Much has been written and much will be written about the Windows 10 announcement.

I'm pretty stoked, and am playing with the Windows 10 Technical Preview now. I can see that there's lots of new enhancements to the shell, the Start Menu/ Screen, how Universal apps work, and so much more. But, let's focus on the "other shell." The console!

The console (conhost) that cmd.exe (often incorrectly but colloquially called the DOS Prompt) and PowerShell live within hasn't had much love in the last several years, IMHO. But then, suddenly, on stage at the Windows 10 announce we've got a VP showing folks that Ctrl-V (paste) works in the command prompt. Why would he do such a crazy thing?

Well, from what I can tell looking at the Preview, there's a LOT of cool Console goodness coming in Windows 10.

Here's a list of hotkeys in the Windows 10 Technical Preview console. This is just hotkeys! Be sure to explore the Properties dialog as well, resize, word wrapping, and more.

Text selection keys

These combinations interoperate with the mouse so you can start selecting with the mouse and continue with one of these commands, or vice versa. 

Selection Key Combination

Description

SHIFT + LEFT ARROW

Moves the cursor to the left one character, extending the selection.

SHIFT + RIGHT ARROW

Moves the cursor to the right one character, extending the selection.

SHIFT + UP ARROW

Selects text up line by line starting from the location of the insertion point.

SHIFT + DOWN ARROW

Extends text selection down one line, starting at the location of the insertion point.

SHIFT + END

If cursor is in current line being edited

* First time extends selection to the last character in the input line.

* Second consecutive press extends selection to the right margin.

Else

Selects text from the insertion point to the right margin.

SHIFT + HOME

If cursor is in current line being edited

* First time extends selection to the character immediately after the command prompt.

* Second consecutive press extends selection to the left margin.

Else

Extends selection to the left margin.

SHIFT + PAGE DOWN

Extends selection down one screen.

SHIFT + PAGE UP

Extends selection up one screen.

CTRL + SHIFT + RIGHT ARROW

Extends the selection one word to the right.

CTRL + SHIFT + LEFT ARROW

Extends the selection one word to the left.

CTRL + SHIFT + HOME

Extend selection to the beginning of the screen buffer.

CTRL + SHIFT + END

Extend selection to the end of the screen buffer.

CTRL + A

If cursor is in current line being edited (from first typed char to last type char) and line is not empty and any selection cursor is also within the line being edited

Selects all text after the prompt.  (phase 1)

Else

Selects the entire buffer.  (phase 2)

Extra Fun with CTRL + A

CTRL + A behavior is interesting. Regardless of the state of mark mode and quick edit mode, one of two things should happen. Either the entire buffer is selected, or (only in a single case) '2-Phase select' starts.  2-Phase select is the process where the first CTRL-A selects the characters to the right of the edit line prompt, and the second press selects the entire buffer.

Editing keys

As I mentioned above you can copy and paste text with the keyboard. When copying text, you might worry that CTRL + C has always been the BREAK command. This is a nice touch, it will still send the break signal to the running application when no text is selected. The first CTRL-C copies the text and clears the selection, and the second one signals the break. Nice attention to detail, IMHO.

Editing Key Combination

Description

CTRL + V

Paste text into the command line.

SHIFT + INS

Paste text into the command line.

CTRL + C

Copy selected text to the clipboard.

CTRL + INS

Copy selected text to the clipboard.

Mark mode keys

These keys function in mark mode. You can enter this mode by right-clicking anywhere in the console title bar and choosing Edit->Mark from the context menu as before, or via the new shortcut combination, CTRL-M. In the original console, mark mode resulted in block mode text selection. While in mark mode, you can hold down the ALT key at the start of a text selection command to use block mode in the new console. The selection key combinations above are all available in mark mode. CTRL + SHIFT + ARROW operations select by character and not by word while in mark mode.

Mark Mode Key Combination

Description

CTRL + M

Enter "Mark Mode" to move cursor within window.

ALT

In conjunction with one of the selection key combinations, begins selection in block mode.

ARROW KEYS

Move cursor in the direction specified.

PAGE KEYS

Move cursor by one page in the direction specified.

CTRL + HOME

Move cursor to beginning of buffer.

CTRL + END

Move cursor to end of buffer.

History navigation keys

Navigation  Key Combination

Description

CTRL + UP ARROW

Moves up one line in the output history.

CTRL + DOWN ARROW

Moves down one line in the output history.

CTRL + PAGE UP

Moves up one page in the output history.

CTRL + PAGE DOWN

Moves down one page in the output history.

Other keys

Other Key Combination

Description

CTRL + F

Opens "Find" in console dialog.

ALT + F4

Close the console window, of course!

If you are like me and also love the console and want it to get even better, head over to the Windows Command Prompt Uservoice and be heard!



© 2014 Scott Hanselman. All rights reserved.
     

Can you trust your browser extensions? Exploring an ad-injecting chrome extension

$
0
0

My perspective on JavaScript-based browser extensions has been far too naïve until this point. We were all burned by bad toolbars or evil ActiveX add-ons in the past, so when I run IE I run it with no add-ons enabled, or very few. However, with Google Chrome and it's sync feature, as well as its rich extension store, it's easy to add a bunch of add-ons and get them synced to other machines.

I wanted to download a YouTube video recently so I installed a "U-Tube Downloader" extension. It is highly rated, seemed legit, so I added it. It puts a nice Download button next to any YouTube video. Like greasemonkey script it was there when I needed and it, and out of sight otherwise.

I installed it and forgot about it. So, put a pin in that and read on...

image

Today I was on my own site and this happened. A video slid onto my page from the right side and started playing. I was gobsmacked. I know this site, I know its code. I know my advertisers. WTH. Where is this coming from?

It's the surfing video there in the lower right corner.

newevil

First I knee-jerk emailed my advertiser asking if they were injecting this, then I pulled back and started to Inspect Element.

Looks like there's a supporting iframe, along with an injected div. That div includes JS from "vidible.tv" and the ads are picked from "panoramatech." But that's not all.

image

There's references to literally a half-dozen other ad-networks and then this, something called RevJet.

image

Search around and here's the first description of what RevJet is.

image

Whoa, ok, it's an extension. But which one? Grep for "Rev" in this folder C:\Users\Scott\AppData\Local\Google\Chrome\User Data\Default\Extensions and I my U-Tube one.

Nicest Ad Ever

I particularly like the comment "nicest ad ever."

image

This extension also injects ads from "Yllix" when I'm on YouTube, and RevJet when elsewhere. Apparently if I set revjetoptout in my local storage, I can get around this. Very NOT intuitive. I saw no options for this extension exposing this.

image

Worse yet, every once in a while, Kim Kardashian shows up in my New Tab page. Again, there's no way for non-technical relative to figure this out. And it's pretty hard for technical me to figure it out. This is deceptive at best.

BxmVMpICUAA6lZq

Ugh.

Yes, I realize someone put work into this extension, and yes, I realize it was free. However, it wasn't clear that it was going to randomly inject ads into any website without asking. It wasn't clear that the ads were injected by this extension. There was/is no clear way for anyone without the ability to debug this to make it stop. Charge me a $1, but don't reach into webpages I visit and mess with my content without telling me.

I recommend you check out chrome://extensions/ and give each enabled one a good hard look. Consider disabling or uninstalling extensions you may have forgotten about or ones you don't explicitly trust. If you're a dev, consider reading the code within the extensions and make sure you're getting what you expect.



© 2014 Scott Hanselman. All rights reserved.
     

Automating the tedious parts of open source on Azure

$
0
0

Contributing to Open Source is a great way to get involved in community. Usually it's as simple as making your contribution, but when you start getting involved with larger projects at larger companies, legal gets involved. Projects need to have a "CLA" or Contributor License Agreement. For example, AngularJS has a form to fill out before sending a pull request. For individuals, it's a small form, but for companies, it's scanning, emailing, and/or faxing time.

As more and more of Azure goes open source with Azure SDK for .NET, PowerShell CmdLets, Mobile Services all on GitHub, as well as all the documentation available on GitHub as Markdown it needs to be easier to accept pull requests (PRs).

In fact, at the bottom of all the Azure Documentation is now a "Contribute to this article" where you can send PRs to help improve the docs or fix technical errors.

Contribute to Azure Articles

In order to make Contributing easier, the Azure folks made an Azure Pull Request Bot. It will automatically look at a PR, figure out if a contributor needs a CLA, setup the online form, even accept digital signatures and more! Even better, the way you start the bot's process is that you send a PR.

I'm going to submit a PR for Azure Documentation, specifically the article on Creating a Virtual Machine.

First, I'll fork the Azure Docs Repo from the GitHub site.

Forking a Repo

Next, I'll work on the article from my fork. I could do this locally, or on the GitHub site directly depending on the size of what I'm doing. The CLA only needs to be signed if you're changing more than about 15 lines.

Forking

The article on GitHub is here but I'll work on my fork here. It's Markdown, so I can either use an editor like MarkdownPad or edit online. I made a number of changes, some corrections, some additions to this article. Next I create a Pull Request.

Making a Pull Request

After making the pull request - instantly - the GitHub PR gets a comment from the Azure Pull Request Bot!

The Azure PR Bot

And the PR gets a label showing the status of my PR as requiring a CLA.

CLA Required

I click the link and can sign in with my GitHub account.

DocuSign at work

I fill out a quick form...

Who's my boss?

In a couple of minutes a verified email shows up from Docusign.

Signing the Document

I sign it, and I'm all set! The PR and CLA will get evaluated and merged. I'm hoping this process might be used by other teams at Microsoft as we continue to Open Source All The Things.


Sponsor: Big thanks to Octopus Deploy for sponsoring the feed this week. They are FANTASTIC. Truly, check it out, the NuGet team uses them. Using NuGet and powerful conventions, Octopus Deploy makes it easy to automate releases of ASP.NET applications and Windows Services. Say goodbye to remote desktop and start automating today!



© 2014 Scott Hanselman. All rights reserved.
     

Hanselman's Newsletter of Wonderful Things: September 5th, 2014

$
0
0

I have a "whenever I get around to doing it" Newsletter of Wonderful Things. Why a newsletter? I dunno. It seems more personal somehow. Fight me.

You can view all the previous newsletters here. You can sign up here to the Newsletter of Wonderful Things or just wait and get them some weeks later on the blog, which hopefully you have subscribed to. If you're signed up via email, you'll get all the goodness FIRST. I also encourage you to subscribe to my blog. You can also have all my blog posts delivered via email if you like.

Scott Hanselman

(BTW, since you *love* email you can subscribe to my blog via email here: http://feeds.hanselman.com/ScottHanselman DO IT!)

P.P.S. You know you can forward this to your friends, right?


Sponsor: Big thanks to Octopus Deploy for sponsoring the feed this week. They are FANTASTIC. Truly, check it out, the NuGet team uses them. Using NuGet and powerful conventions, Octopus Deploy makes it easy to automate releases of ASP.NET applications and Windows Services. Say goodbye to remote desktop and start automating today!



© 2014 Scott Hanselman. All rights reserved.
     

Plex for Xbox One is here and my life is complete - Plus Synology setup how-to

$
0
0

Plex on a SynologyI love my Synology NAS, and I love Plex. I also love my Xbox One. Finally, today these three things are working together to give me a lovely unified view of my media library.

I have a Synology 1511 (the Synology 1513 is today's model). It's a 5 bay Intel-based NAS. I put four 2TB 7200 Seagate drives in it. In the few years since I've had the Synology I've had 2 drives fail and in each case the Synology emailed me, I pulled the drive and replaced them (I now keep two spares around) and rebuilt without incident.

I run Plex on this Synology as it also hosts all my family photos, family videos, and DVD backups. The Synology (since I upgraded the RAM cheaply) also runs Surveillance Station monitoring 4 IP cameras posted around my house, as well as  VPN Server, *and* CrashPlan cloud backup. I used to run most of this stuff on my desktop, but I'm convinced more and more that every connected home needs a Home Server. I've even added a Git Server, iTunes Server, and a "Cloud Station" which is basically "Personal DropBox." Glorious.

I use Plex extensively on my iPad and Surface Pro 3. One of the best features (there's a million) is being able to seamlessly mark a file as "offline" and sync it to a portable device. Makes airplane travel a lot nicer.

The one missing part has always been watching Plex on my big screen. While I do have a Chromecast and we enjoy it, the Xbox One is our set-top box. We changed an option on the Xbox under Settings so it "Boots to TV." The Xbox controls our DirectTV and my wife uses a Logitech Harmony One Remote that we still love. From the Xbox we can "Xbox Watch Netflix" or "Xbox Watch HBO" and it just does the right thing. But switching inputs to the Chromecast, getting a tablet out, starting Plex on the tablet and throwing it to the TV requires more tech than my wife is willing to give.

Until now. Plex is out on Xbox One (and Xbox 360) and there was much rejoicing. A Plex Pass is required, but it's SO worth it, and not expensive.

What you'll need

  • Plex Server running somewhere - You can run it on any decent NAS, your desktop machine, or any machine you have laying around.
  • A Plex Pass - A monthly or yearly subscription. It's a fantastic value. You CAN use Plex free, but with the Pass you get the offline sync, Xbox support, Movie Trailers, Cloud Storage Sync, and Camera Upload.

One note for Synology people like me, you’ll need to install the latest Plex Pass preview release of the server (v0.9.10.3). Not a huge deal, go to Plex Downloads and get the right version for your Nas. I downloaded, then logged into Synology and did a manual install.

PLEX ALL THE THINGS

Now, go to the Xbox One App Store and download it and sign in. If you'd signed in before and got a warning that your Plex Server was the wrong version, you'll want to shut down the Plex app completely or reboot the Xbox to get a proper retry going.

Plex on Xbox One

The app looks fantastic, supports both Kinect AND Voice and really fits in with the other apps I use like Hulu and Netflix.

Plex Home Screen

Movies, TV, whatever.

Plex Home Screen

Plex is epic because it's your media EVERYWHERE. Here's a picture of the devices that my family have used to talk to Plex this year.

Plex Devices

Anyway, enough gushing. I couldn't be more thrilled. If you are already a Plex user, you're gonna love this. I'll do a full video and walkthrough of my setup soon, but Plex on Xbox One has finally turned my Xbox One into the ultimate media server. When the Media Player with DLNA support releases in a few weeks on Xbox One, it'll just be gravy.

Related Links


Sponsor: Big thanks to Octopus Deploy for sponsoring the feed this week. They are FANTASTIC. Truly, check it out, the NuGet team uses them. Using NuGet and powerful conventions, Octopus Deploy makes it easy to automate releases of ASP.NET applications and Windows Services. Say goodbye to remote desktop and start automating today!



© 2014 Scott Hanselman. All rights reserved.
     

Using a Surface Pro 3 full time for two months

$
0
0

en-INTL-PDP-Surface-Cover-Black-RD2-00080-LargeBack in August I posted my initial impressions of a Surface Pro 3 after using it for a week or so. I paid for the Surface Pro 3 with my own money and have been using it as my primary machine ever since. I've been using it now for two months full time and figured it was time to break down the good, the bad, and the weird.

I won't waste your time telling you specs and details you can search for. Instead, I'll tell you what has worked and what hasn't the last few months.

The Good

  • It's very fast. I haven't had any issues or concerns about performance. I've given talks internationally this last few months and used this Surface Pro 3 for demos involving multiple instances of Visual Studio without concern.
  • I always want more memory, but 8 gigs has been fine. I can run Hyper-V or VirtualBox and run at least one VM without concern. Even better is running the VM off a USB3 hard drive. However, 12 gigs of RAM would have been a nice option.
  • Running two monitors with the Surface Pro 3 Dock is pretty perfect. I'm having no major issues with my 24" monitors. A little more on some subtle video card things below under "The Weird."
  • It's far more usable in your lap than previous Surface versions. I'm sitting on my front porch right now, in fact, typing this post while the kids run around. It's actually kind of nicer than a laptop in that the screen part doesn't flop as I type.
  • The Dock is exceptional. It adds 3 USB 3 ports and 2 USB 2 ports, for a system-wide total of 6 ports. It adds a second Mini DisplayPort as well as Gigabit Ethernet and an audio jack. Drop in, go. It also works nicely with Mouse Without Borders.
  • The kick stand is brilliant. Having a continuous kickstand is perfect and useful. Every tablet should have one.
  • It's really an everything/everywhere machine. I use it for work, then remove the keyboard and use it on the treadmill for movies.
  • I added a 64 gig MicroSD card and put movies on it. Works great on a plane and everyone loves the kickstand and comments on it.
  • The pen is fantastic, but I don't really use it for anything other than OneNote.

The Bad

  • I'm underwhelmed by the battery life. I have been generally underwhelmed with batteries in general in the last year. From my iPhone 5S to my Lenovo to this Surface Pro, all batteries seem to last about 5 hours for me. This is "fine." But it's not awesome. I never take any device anywhere without some subconscious concern about the battery. It's not an all-day battery. From what I can tell the number one thing you can do to get it to last longer is to lower the screen brightness. Unfortunately for me, I like a bright screen.
  • I almost point this under the Weird, but I just don't like the Touchpad on the Surface Pro 3. It's OK, but it's not epic. A MacBook Pro is a universally loved touch surface. No one knows why, but it just feels right. The Surface Pro 3 touchpad is one of the best I've used, but it's very small and you'll want to at least adjust the pointer speed under Motion without Mouse Properties. While I don't use it as a mouse, it's gesture support for pinch to zoom and scrolling is excellent. That said, you'll end up using the touchscreen for that naturally.
  • With every Surface I've ever used there's been this weird thing where it would stop seeing the keyboard. It happens maybe once in 30 attaches, but it's annoying. Just detach and reattach, but it's clearly a flaky bug and I've seen it maybe 8 times in the last two months.
  • I spend a lot of time in Google Chrome and while it's great on my desktop, I must say that using Google Chrome on a hybrid like the Surface that has both touch and high-dpi really makes Chrome feel unpolished. Touch support in Chrome is there, scrolling and pinch to zoom work, but with newer betas there are weird zoom effects they appear to be bringing over from Android.
  • In recent Chrome builds it started popping up the Virtual Keyboard. Unfortunately, that's not Chrome's job to pop up the keyboard. ;) The keyboard pops up when a physical keyboard isn't attached. However, Chrome pops it up whenever a text box is touched, and even worse, resizes the window to half height. It's REALLY annoying. I just can't use Chrome or recommend it on a touch screen. I'd love it if someone from the Chrome team would get in touch with me or someone at Microsoft because this kind of thing makes everyone look bad. Here's an eight month old thread that continues filled with folks with this issue.

The Weird and The Subtle

  • Early on, before the first firmware update that came over Windows Update, I was seeing some concerning heat coming off the the back right side. I had one "thermal shutdown" while sitting in my car. I haven't seen any heat issues since the most recent firmware updates, but it was initially concerning. Ultimately I did have to come to terms with the fact that mine is an i7 processor, not an iPad Air. It does have a fan and it will use it if you are running Handbrake and compressing video.
  • Hotkeys and the keyboard take a week or so to get used to. One feature I'd like to see (can you hear me Surface Team?) is to be able to have F1-F8 be function keys and F9-F12 stay as Home/End/Page Up and Page Down. It took me a while to figure out some of the more subtle hotkeys on a Surface Pro 3 keyboard, for example:
    • Toggle Fn lock - Pressing Fn-CapsLock will toggle the top row to stay as Function Keys.
    • Fn+Spacebar - Printscreen
    • Fn+Del and Fn+Backspace - Brightness up and down
    • Fn+Up and Fn+Down - Page up and Page Down (in addition to the other PgUp/PgDn keys.
    • Windows Key + Vol Down - Screenshot to screenshots folder
  • I think Windows on a tablet should be more aggressive about what it does in the background on a tablet. Every once in a while there's some indexing service or malware service that slows everything down. It's no more on a Surface than it is on my other devices, but somehow I'm more aware of it with this device. When I'm not plugged in or have my keyboard removed, Windows needs to CHILL OUT.

I recommend the Surface. It's an amazing, fast, thin device. It's got some quirks, but I've had two firmware updates in as many months, and Microsoft has publically said it would support it (as well it should) with Windows 10. I think the Surface Pro 3 will likely get more useful updates, as driver updates, pen updates, and firmware updates that will make it better.

Finally, Windows 10 and the "Continuum" concept cannot come fast enough. It's exactly the behavior I want on this device.


Sponsor: Thanks for my friends at Octopus Deploy for sponsoring the feed this week. Their product is fantastic. Using NuGet and powerful conventions, Octopus Deploy makes it easy to automate releases of ASP.NET applications and Windows Services. Say goodbye to remote desktop and start automating today!



© 2014 Scott Hanselman. All rights reserved.
     

100 Technical Things Non-Technical People Can Learn To Make Their Lives Easier

$
0
0

My lovely wife has an MBA, speaks 5 languages, and is currently in school to get a third (fourth?) degree. Point is, she's smarter than me (I? See?) and I'm lucky she even speaks to me.

It seems to run on some sort of electricity

However, she's in a class right now and wanted to record the hour long lectures. After trying on her Windows Phone, her iPad, her Laptop with OneNote she got very frustrated. I gave her a portable handheld recorder and she returned from class with 800 megs of wav files then asked me how to share them with the rest of the class.

This started a long talk about WAV files vs. mp3s, DropBox vs. email, megabytes vs. gigabytes and developing a sense of "digital scale." We talked about pixels and dpi, about 40 megapixel vs a 400x400 picture.

She said to me "there's all this stuff that techies know that makes normals feel bad. Where does one learn all this?"

  • Why does this picture print out blurry?
  • Why is that file too big to email?
  • I deleted Angry Birds but my computer is still slow!

"Knowing computers" today is more than just knowing Office, or knowing how to attach a file. Today's connected world is way more complex than any of us realize. If you're a techie, you're very likely forgetting how far you've come!

The #1 thing you can do when working with a non-techie is to be empathetic. Put yourself in their shoes. Give them the tools and the base of knowledge they need.

I honestly don't know HOW we learn these things. But, I figured I could help. If you've ever answered questions like this from your non-technical-partner or relative, then here's a list of

100 Technical Things Non-Technical People Can Learn To Make Their Lives Easier

Ok, perhaps not 100 exactly. I will add more good tips if you suggest them in the comments!

Size

  • A gigabyte is big. It's not something that is easily emailed.

  • A gigabyte might be a whole movie! If you want to get a gigabyte to someone you could either compress/squish it with some software and send a smaller version of the file, or put it on a USB drive and snail mail (post) it.

  • One to five megabytes are reasonable sizes. You can have pictures this size, documents, and small videos.

  • MB means Megabyte. GB means Gigabyte. Note that the abbreviation 1GB means 1000MB, so always double check and look closely.

  • Backup everything. Is your entire company on your 10 year old computer’s desktop? Look for Backup options like CrashPlan, DropBox, OneDrive, etc. Literally ANYTHING is better than leaving documents on your computer’s desktop.

Files

  • Think about where your files are. Are they in a folder on your Desktop? Are they in a folder called My Documents? Keep your files collected in one location (and below) so that you can easily make backups.

  • Learn to use search to find your files. Press the Windows key and just start typing on Windows, or use Spotlight (Command-Spacebar) on Mac.

  • Don’t forget to hover over things and right-mouse-click on things. It may not be initially intuitive, but right clicking often answers all your questions.

  • If you double click a file and it doesn’t do what you want, in Windows, right click the file, choose Open With, then Choose Default Program to pick a new program.

Privacy

Email

  • Assume that your email isn't private.

  • Don’t try to email more than 10 megabytes. Or 5 even. Many of your recipients won’t get the files. They will “bounce back.”

  • Don’t CC more than 10 of your friends or neighbors. At that point, consider another way to talk to them. Some of your friends may not want their email given to the world. Perhaps this is a time to use BCC (Blind Carbon Copy) so you don't expose everyone's email address to each other?

  • Always think twice when replying. Did you want to Reply To All?

  • It’s a good idea to check for hoaxes before forwarding bulk emails. For instance, look at snopes.com if you think Bill Gates may send you money.

  • If you get an email out of the blue that’s telling you to click on a link to “verify”
    your password, credit card, or other information, it’s a good idea not to click on the link. Instead, open a browser and navigate to your account on the site in question.

  • Never ever send your private credit card number, social security number, or anything personal in email. Ever. Really. Never.

Searching

  • If you put your search term - or parts of it - in quotes, you’ll get more specific results. For instance, “mark hamill”“star wars” would probably get better results than mark hamill star wars.

  • Your search term should sound like the answer you’re looking for rather than the question. So search for “2000 academy award winner” instead of “who was that guy who won that film award in 2000”?

  • If you want to google within a single site, try “site:thatsite.com mysearch” to search ONLY thatsite.com.

  • If you get an error message or code when a program stops working, just search for that number, like “0x8000abcd”

  • Be LESS specific. Every new word you add is narrowing your results!

  • You can search for the original source of a picture using Google Image search and uploading the image. It will find other places on the internet that picture lives!

  • If you don’t want someone to know that you’re searching for something that’s either secret or naughty, use your browser’s “Incognito Mode” or “Private Browsing Mode.” Note that while this may hide your browsing from a specific computer, that computer still has to talk to other computers to talk to the internet. Incognito Mode won’t hide your surfing from your boss.

Sound Files

  • MP3s are squished audio files. Remember the rules of thumb around file sizes when emailing.

  • WAV files are big audio files. You can use a program like Audacity to take a uncompressed WAV and “Save As” it into a Compressed MP3.

Documents

  • PDFs are Portable Documents. They are made by Adobe and work pretty much everywhere. This is a good format for Resumes. You can often Save As your document and create a PDF. Also, note that PDFs are almost always considered read-only.

  • Word has doc files and newer docx files. When working with a group, select a format that is common to everyone’s version of Word. Some folks may have old versions!

  • Big documents are hard to move around the internet. Rather than emailing that giant document, instead put it in a shared location like Dropbox, OneDrive or Google Drive, then using the Sharing feature of your chosen service, email a LINK to the document.

  • Collaborating with others by e-mailing documents around doesn’t work very well. If you’re sharing a document as recommended above, you can take advantage of their realtime collaboration features.

  • Don’t use a document when you need something bigger. Your small business’ records should probably go in a database rather than an Excel file.

  • In Windows, files end with a file extension like “.docx”, “.mp3” or “.jpg” that determines what program it’s associated with. If you save a file with the wrong extension, it might open with another program or not at all.

  • Sometimes you can’t see file extensions. In Windows Explorer, in the View Menu, pick File Extension to show them if they’re hidden.

Scanning and Faxing

  • An easy way to scan documents without a scanner is to use a scanning app on your phone. This means you’ll take a picture of the document. There are apps that can make your camera like a scanner.

  • If you need to fax but don’t have a fax machine, there are apps online that can take a photo from your phone and fax it. You can also received faxes as photos or PDFs.

USB Keys

  • Never put a random USB key in your computer. You have no idea where it’s been.

  • USB keys can do all kinds of things to your computer the second you plug it in without your even opening a file. Only use trusted USB keys.

My computer is slow

  • Think about what specifically is slow. Often the thing that’s slow is your internet. Are you on wireless? Is the signal weak?

  • Running a lot of programs at once can slow things down.

  • When your hard drive is almost completely full, your computer can slow down. Watch for warnings!

  • The cheapest, simplest way to speed up a slow computer is usually by adding more RAM (memory).

Bandwidth

  • Not everyone has super fast internet. Some people have a quota for the month. For example, my brother can download only 5 gigabytes (remember that’s 5,000 megabytes) every month. I avoid sending him big files and YouTube links.

Security and The Evil Internet

  • Most of the internet is out to get you. If a website looks wrong, it’s likely not somewhere you want to me. The more ads and popups the worse the neighborhood.

  • If you go looking for things you shouldn’t, like bootleg movies, you’ll be more likely to end up in a bad part of the internet.

  • Bad parts of the Internet will always try to trick you.

  • Be aware of advertisements that are actually pictures of download buttons. These download buttons might literally be next to the actual download button you need to press.

  • Always think three times before clicking on a link that’s been emailed to you. If you have to install something or a message tells you that your computer is missing something, it may be a trick.

  • Consider if a web site’s domain ends with a far away country code you weren’t expecting. Did I mean to be looking for a link in China (.cn) or Kazakhstan (.kz)?

  • Microsoft and Apple will never call your house to tell you personally that you have a virus.

  • Consider turning on “Two Factor Authentication.” That means that in addition to your password you’ll also need your phone with you to login in. That might sound like a hassle, but it stops the bad guys in their tracks.

"Space" - Disks and Memory

  • Memory is like the top of your desk - it’s what you’re working on right now. Disk space is like your filing cabinet, where you store things for later. When you turn off your computer, your memory is cleared but your hard drive isn’t.

  • If you computer is “just slow” there could be a few things going on. Are a lot of things running right now this moment? Close running programs, just like taking things off your desk and clear your mind.

  • Rarely will uninstalling applications “free up space.” If you computer is filling up, it’s likely with photos, videos or movies. Uninstalling Angry Birds from either your computer or phone likely won’t free up the large amounts of space you want.

Pictures

  • JPGs are image files that are great for photos. They are squished pictures, and the compression is optimized for pictures of people and nature.

  • PNGs are image files that are great for diagrams and screenshots.

  • Learn how to take screenshots.

    • Press the PrintScreen key to put a screenshot of the current screen in your clipboard on a Windows PC.

    • On a Windows 8 machine, press the Windows Key and the PrintScreen key to capture the screen to a Folder in your Pictures folder called Screenshots.

    • Press Command-Shift-3 to capture your screen to the desktop on ac Mac

  • Resizing images can be hard and frustrating. On Windows, try the Image Resizer Utility to make large images smaller.

  • The funny pictures you find on the internet are usually small in “dimension” - they have a small number of total dots or “pixels.”

  • A picture that is 400x400 in pixel dimension will look really blurry when it’s printed out on a full piece of paper.

  • For a photo to look nice when printed, it should ideally have more than 200 dots per inch. So for a 4 inch by 6 in photo, you’ll want a picture that’s at LEAST 800x1200, and even larger is better.

  • Megapixels are not megabytes. One megapixel is one million pixels. A “3.1 megapixel” camera will actually make a photoi that is 2048x1536 in dimension. This is nice size for printing in small sizes! A photo like this will be about one megabyte and suitable for emailing.

  • Photos matter. Back them all up.

Surfing and Links

  • Often you’ll search for something on a site, then end up on a page called “searchresults.asp.” You’ll want to share that link with your friend so you copy paste it and send them somesite.com/searchresults.asp. But you need to look at that URL (URL is a link). Does the link contain the thing you searched for? If not, your friend won’t see anything. Look for links like somesite.com/searchresults.asp?q=baby%20groot%20doll when emailing.

  • Search results often have a “share” link that will either get you a good sharing link or send via e-mail for you.

  • Always check for the lock in your browser address bar when you’re about to enter your password. Are you where you think you are? Does the address bar look correct? Is it green? The green address bar gives you more information about the company you’re talking to.

  • Is your password “Password”? Consider getting a password manager like 1Password or LastPass. Don’t put your password on a post-it note on your monitor. Try not to reuse passwords between sites. Don’t share your password with others.

  • Don’t reuse your passwords. If you give a tech support person a password and it's also the password you use for your bank, it’s like giving a parking attendant the keys to your house!

Big thanks to Jon Galloway for his help with this list!

tech_support_cheat_sheet

What did we miss?


Sponsor: Thanks for my friends at Octopus Deploy for sponsoring the feed this week. Their product is fantastic. Using NuGet and powerful conventions, Octopus Deploy makes it easy to automate releases ofASP.NET applications and Windows Services. Say goodbye to remote desktop and start automating today!



© 2014 Scott Hanselman. All rights reserved.
     

Put yourself out there and publish that Open Source project today

$
0
0

I helped write FoolProof Software for WindowsIt's a leap of faith to put your code out there. You have to have tough skin sometimes. Mean people will say it's crap. Many years ago (93-94?) I worked on a piece of software called FoolProof Desktop Security. I was just a few years in the industry full time and working on this cool new project that would keep kids in schools from breaking into Windows machines. I was pretty proud of the work. I did the 16 bit Windows, 32-bit Windows, and DOS Clients (in Turbovision!).

A new employee arrived on the project and a week later, perhaps as a way to prove themselves, they sent email to the whole team with the subject "Top 10 FOOLISH Code Mistakes in FoolProof."

And 7 of the 10 mistakes were in my code.

It's gonna happen, and while it's not OK when folks are cruel, I am accountable for how I take the feedback. I decided to double my efforts and take the valid technical feedback (a lot of my code was poor, I was new) and ignore the tackiness of the message itself.

When you write code you're putting yourself out there, even if no one sees your code, they see the result. It's hard to be a creative, to write, to sing, to act, to code. Coding and producing is a declarative statement and as they say:

He or she who is most likely to make declarative statements is most likely to be called a fool in retrospect.

The code I wrote today was AWESOME. The code I wrote yesterday was CRAP! ;) If it wasn't, I wouldn't be growing.

You likely have some code on your machine you're holding off to publish. Perhaps a private or hidden repository somewhere. I hear several times a week things like "I'm not ready for people to see my code." But let me tell you, while it may be painful, it will make you better.

Books are made better by editors. Coders are made better by pair programming and code reviews. If you love it, let it go.

Yes, some people will be unkind, but not the people that matter. Publish your project!

If you're a more senior person, be kind and coach. Share your wisdom.

Related Links


Sponsor: Thanks for my friends at Octopus Deploy for sponsoring the feed this week. Their product is fantastic. Using NuGet and powerful conventions, Octopus Deploy makes it easy to automate releases ofASP.NET applications and Windows Services. Say goodbye to remote desktop and start automating today!



© 2014 Scott Hanselman. All rights reserved.
     

Video: My non-technical partner tries Windows 10 for the first time

$
0
0

You may have watch my YouTube series on being an effective user of Windows 8 and 8.1. I've made a short URL for you to give to your friends and family http://hanselman.com/windows8. It'll take you to a YouTube Playlist that includes all my best tips and tricks on using Windows. The most popular is "Learning Windows 8 in 3 minutes" but if you're looking to get yourself, or perhaps non-technical Dad and Mom up to date on Windows 8, I recommend they check out "Windows 8: The Missing Instruction Manual." It's calmly paced and explains everything they'll need to know.

A lot of people say "Windows 8 isn't intuitive." That's up for debate, I think, as there's a big difference between unfamiliar and unintuitive. A few minutes of your time and you'll feel a lot more "intuitively" about Windows.

That said, Windows 10 is coming. If you have an extra machine you can sign up for the Preview here. It's very early and I would not put this on your primary machine.

I thought it would be interesting to show my very smart, but rather non-technical wife Windows 10 for the first time. Here's an uncut video of her experience running the first build of the Windows 10 Technical Preview.

I encourage you to watch it, it's rather interesting the way that she discovers "new" features, but also learns about existing features from as far back as Windows 7. If you've ever do a usability test you'll find the interactions fascinating.

And again, do check out and share http://hanselman.com/windows8


Sponsor: Big thanks to my friends at Octopus Deploy. They are the deployment secret that everyone is talking about. Using NuGet and powerful conventions, Octopus Deploy makes it easy to automate releases of ASP.NET applications and Windows Services. Say goodbye to remote desktop and start automating today!



© 2014 Scott Hanselman. All rights reserved.
     

I'm stuck in someone's for loop

$
0
0

This is a rant. More and more I'm finding myself using mobile devices, often on my iPhone, but also desktop applications in Windows and I'll push a button and find myself, as user, stuck inside your for loop.

Not Responding

Have you felt like this? The application locks up and you're stuck. Maybe it's Outlook saying Not Responding as the Curtain of Patience (tm) comes down, or perhaps it's Facebook on your iPhone updating Contact photos. Regardless, it's a for loop over a thousand or a million, or perhaps just one more data item than the developer tested, and you're stuck. Do you shut down and corrupt the data store? Do you wait? How long DO you wait?

Asynchronous programming can be hard, but the tools and languages support it, my friends.

Please don't block the UI.

Have you seen this? Why does it happen? What are you doing to avoid blocking calls? Perhaps it's a better UX pattern, or perhaps it's Reactive Programming?

Sound off in the comments!

Related Links


Sponsor: Big thanks to my friends at Octopus Deploy. They are the deployment secret that everyone is talking about. Using NuGet and powerful conventions, Octopus Deploy makes it easy to automate releases of ASP.NET applications and Windows Services. Say goodbye to remote desktop and start automating today!



© 2014 Scott Hanselman. All rights reserved.
     

Building a working Robot controlled by a C#, an iPhone, and Monkey.Robotics

$
0
0

Robot_TinyThis year at Xamarin's Evolve there was a Robot Building area that introduced a new beta platform called Monkey.Robotics (GitHub). There is a disclaimer on the GitHub: "Monkey.Robotics is still a beta/work in progress and is not officially supported by Xamarin" but I can say that I was able to successfully build this robot with my 6 year old and we've had a blast driving it around the house! He was thrilled to solder (but not too much) and setup all the wires on the breadboard.

This robot is a great showcase for the larger Monkey.Robotics stack PLUS a great way to learn how to use Xamarin tools AND the .NET Micro Framework. And the end you'll have not just a robot with code running on a Netduino, but also have deployed C# code using Xamarin onto (in my case) an iPhone.

The resulting stuff you get to build and use are:

  • iPhone/Android app using Xamarin.Forms and controls or a gyroscope talking over your phone's Bluetooth radio to some code running on an...
  • Netduino running the open source .NET Micro Framework. This Netduino will receive communications via a Bluetooth radio on a chip. This BT LE board is connected to the GPIO (general purpose input output) pins on the Netduino. The board then controls...
  • Motors and wheels on a nice base, powered by 4 AA batteries.

The authors are some of my favorite people, including Bryan Costanich, Frank Krueger, Craig Dunn, David Karlas, and Oleg Rakhmatulin.

There's a deceptively large amount of code here and it's whole job is to hide the yucky parts of a project that connects mobile devices to wearables, sensors, peripherals, and low-level communication. They include a cross-platform API for talking with BLE (Bluetooth Low-Energy) devices, as well as the beginnings of a similar API over Wifi. Even more important is a higher level messaging framework sitting on top of these lower=level APIs. The net result is that talking Bluetooth between your phone and a device isn't very hard.

On the device side (in my case with .NET Micro Framework) they make things more compose-able with "blocks and scopes" style abstractions, allowing one to fairly easily connect output pins (LEDs, motors) to input pins (buttons, sensors).

Here is one of their basic examples. This makes an LED blink when a button is pressed.

public class Program
{
static H.Cpu.Pin buttonHardware = Pins.ONBOARD_BTN;
static H.Cpu.Pin ledHardware = Pins.ONBOARD_LED;

public static void Main()
{
var button = new DigitalInputPin (buttonHardware);
var led = new DigitalOutputPin (ledHardware);

button.Output.ConnectTo (led.Input);

// keep the program alive
while (true) {
System.Threading.Thread.Sleep (1000);
}
}
}

I went through the very excellent Project Walkthrough on building a Robot. Note that all this is on GitHub so if you have any issues, you can fix them and submit a pull request. I'm sure the project would appreciate it!

Architectural_Overview

Here's what you need to buy/or have (I took from their GitHub site) if you want to build this same robot.

  • bot Chassis w/Motors - Just about any 2 wheeled robot chassis with motors and gears will work, but we like these. They're only $11 and they work well. Spark Fun also makes a similar robot chassis for $15, but the battery holder is difficult to access, otherwise, it's also very nice.
  • Netduino 2 - From Secret Labs, the Netduino is a programmable micro controller that runs the .NET Micro Framework.
  • BLE Mini - From Redbear Labs. Used to communicate with the robot from Xamarin.iOS and Xamarin.Android.
  • 400 Point Breadboard - The breadboard is where our electronics will all get connected. It has holes in it to put chips, sensors, wires, etc., into.
  • Breadboard Wiring Kit - Any wiring kit will work, but we especially like these. You may also want to get some male-to-male flexible jumper wires.
  • Dual H-Bridge Chip - Used to power the motors, H-bridges are simple chips that allow you to control motors with external power, so you don't burn out your Netduino trying to drive them with that. :) You can also build an H-bridge with some simple components, but buying a chip is easier and will likely cost about the same.
  • iOS or Android Device w/BLE Support - If using an iOS device, you'll need an iPhone 4 or later. If using an Android Device, you'll want to make sure that it has BLE support and is running at least Android v4.3.

Make sure you have you development and build environment setup, and then follow the guides below to get this thing up and running!

Basically you'll need Xamarin Studio or Visual Studio with Xamarin Tools. You'll also need the .NET Micro Framework bits, which are free for Visual Studio 2013, as well as the Netduino 4.3.1 SDK. There's a thread over at the Netduino Forums if you have trouble getting your device ready. I had no issues at all.

The Robot code is in a larger solution called Robotroller that's pretty nicely factored. You've got the Core functionality for the phone and the Core for the Robot.

The Phone code makes great use of databinding. The Car code is a little messy (it's beta and looks like Tests that turned into a working Robot! ) but it worked out of the box! It's surprisingly simple, in fact, due to the next abstraction layer provided by Monkey.Robotics.

How cool is this. That's basically it. Love it.

public class TestRCCar
{
public static void Run ()
{
// initialize the serial port for COM1 (using D0 & D1)
// initialize the serial port for COM3 (using D7 & D8)
var serialPort = new SerialPort (SerialPorts.COM3, 57600, Parity.None, 8, StopBits.One);
serialPort.Open ();
var server = new ControlServer (serialPort);

// Just some diagnostic stuff
var uptimeVar = server.RegisterVariable ("Uptime (s)", 0);

var lv = false;
var led = new Microsoft.SPOT.Hardware.OutputPort (Pins.ONBOARD_LED, lv);

// Make the robot
var leftMotor = HBridgeMotor.CreateForNetduino (PWMChannels.PWM_PIN_D3, Pins.GPIO_PIN_D1, Pins.GPIO_PIN_D2);
var rightMotor = HBridgeMotor.CreateForNetduino (PWMChannels.PWM_PIN_D6, Pins.GPIO_PIN_D4, Pins.GPIO_PIN_D5);

var robot = new TwoWheeledRobot (leftMotor, rightMotor);

// Expose some variables to control it
robot.SpeedInput.ConnectTo (server, writeable: true, name: "Speed");
robot.DirectionInput.ConnectTo (server, writeable: true, name: "Turn");

leftMotor.SpeedInput.ConnectTo (server);
rightMotor.SpeedInput.ConnectTo (server);

// Show diagnostics
for (var i = 0; true; i++) {
uptimeVar.Value = i;

led.Write (lv);
lv = !lv;
Thread.Sleep (1000);
}
}
}

Here's a video (don't play it too loud, my kids are yelling in the background) of me controlling the robot using my iPhone. Note I'm using the gyroscope control so I twist my hand to steer.

Robot via iPhone over BT LE. It's @Xamarin on phone plus @SecretLabs and @Xamarin on robot!

A video posted by Scott Hanselman (@shanselman) on

All in all, I'm enjoying Monkey.Robotics and I hope it takes off with more projects, more ideas, more things to build. If you've got interest or expertise in this area, go star their project and get involved! There's a LOT of stuff going on over there, so explore all the docs and diagrams.


Sponsor: Big thanks to my friends at Octopus Deploy. They are the deployment secret that everyone is talking about. Using NuGet and powerful conventions, Octopus Deploy makes it easy to automate releases of ASP.NET applications and Windows Services. Say goodbye to remote desktop and start automating today!



© 2014 Scott Hanselman. All rights reserved.
     
Viewing all 1148 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>