Notes from #DevSum13's #PreConf, featuring @shanselman & @TessFerrandez

As the session starts, Scott shows off his 1337 skills by showing us hackertyper.com.

There is one ASP.NET. Therefore, fights over whether to use WebForms or MVC is contra-productive - use what makes sense for your project! The web team is working on simplifying the File/New Project screen, by reducing the number of choices you have to make up-front. If you want to build a web project, you should be able to just pick that option, and then add features as you go - a Web Forms section for for your admin UI, a MVC section for your client-facing views and a WebAPI section for your API, for example.

Putting new project templates into Visual Studio should be as easy as creating NuGet packages. Furthermore, the team is juggling the idea of putting in favourites, so that your company can create custom templates (just like you can set up custom word templates), making in-house development even more straight-forward and streamlined.

The 2012.N releases are quarterly releases of Visual Studio.

Community templates lives side-by-side with the project templates, and that's great! Looks official! This means that Nancy (for example) is "competing" with ASP.NET on a even ground, something I think is great! To check out community templates and add-ons, just visit ASP.NET - click MVC and Open Source. Two clicks, and you have a bunch of new options to choose from, such as FubuMVC and Service Stack!

Everything Microsoft ships, is further supported (such as Microsoft's shipped version of jQuery). This is similar to the relationship between the Chromium project and the Chrome Browser. Google supports Chrome, whereas the Chromium browser is community driven and open-source.

Next batch of Visual Studio, is shipping with Twitter.Bootstrap, which makes it a lot easier to make professional-looking sites right out of the box.

Visual Studio 2012.2 supports Less with Split-screen (split screen with Web Essentials), letting you edit your .less file and see the .css changes update as you save the file (example.less becomes example.css and example.min.css). Use it. 

Web Essentials is crazy stuff Mads does on the week-end - it's their labs feature.

Visual Studio 2012 is the most full-featured CSS editor out there. As an example, of its awesomeness just type transform and hit and your rule immediately expands into all vendor prefixes. Editing the rule (non-prefixed, non-faded), automatically edits all dependent rules, making editing a lot easier. Use snippets.

We pulled out Windows Azure Tools and Microsoft Web Developer Tools into extensions so that we could update them more often. Our long-time goal, is to reduce the core package of Visual Studio as much as we can, so that you get a similar feel as with Node. It's core package is silly-small and all functionality is basically provided through its package manager, npm.

Recent releases have been slowly teasing away from the big bi-yearly shipping of Visual Studio.

WSR Web Stack Runtime is the open-source ASP.NET (aspnetwebstack.codeplex.com). There's Visual Studio and there's WSR. People not working for Microsoft can still get involved in ASP.NET - see Get involved in Open Source today - How to contribute a patch to a GitHub hosted Open Source project like Code 52.

Web Essentials lets you select several .css-files and create a bundle. The bundle (xml-file) keeps references to the .css files and updates itself on every save of the source files.

Nothing is hidden - enable Source Stepping in Visual Studio. Git clone ASP.NET and read the comments! .NET is available for you.

/Content/CSS renders a minified bundle of .css. In App_Start, there's a BundleConfig.cs with handlers.

"coffee script is what a rubyist wished javascript looked like". Readability, Wrist-friendliness, terseness.
if so, then
"typescript is what a C# person wished javascript looked like".

"JavaScript sucks, all agree on that - but it's what we have".

Compilation is the first unit test - it's like the spellchecker in word. Red squiggles. Not green though - I could write a document in word in Swedish - get rid of all red squiggles and it would still suck, because the words wouldn't make sense.

TS transpiles into pure JavaScript - no type information saved.

Web Essentials gives me Split Screen and automatic minification.


Nuget packages (everything is componentized!) makes up your ASP.NET projects, which means that you can choose the packages that makes you happy! File/New project, simply points to a bunch of Nuget packages!

.NET OpenAuth makes it silly-easy to integrate other login providers. All pluggable. Brought in a modular way.

ASP.NET WebApi inherits from ApiController, which makes it looks like MVC, but that's wrong - it's more like WCF. However, they're about to be hormonigized.

curl -X -POST to post json to your API controller from console.

public void Post([FromBody]dynamic value) {
}

What about dynamic? 

You can pick multiple browsers as F5-default!

In the More Browsers, you can download the Electric Plum for iOS, Windows Phone & Android development!

Visual Studio will give you a free 3 month subscription to Browser Stack, which is a virtual machine with VNC. You can even test your own stuff by setting up a Web Tunnel back to your machine!

For large scale multi-browser tests, check out jQuery test swarm.

learn these three: CTRL+, (navigate to) CTRL+; (search in/filter solution explorer) CTRL+Q (quicklaunch (such as fonts, nuGet and distributed search in the gallery (for example jQuery UI))

---

Responsive Design, Mobile Websites and/or Native clients by Tess Fernandez.

- Who are your users? Are they comfortable with web apps, Windows clients, mobile apps already?
- Different usage patterns on mobile devices (getting your boarding pass, checking in) vs. desktop apps (checking flight details .. ?)
Price runner: On the desktop, you're looking for things and comparing products; on the go, you want a barcode scanner to compare products you find.

Web is catching up, but will always be one step behind from Native. With Native, you're closer to your user.

Recipe idea where you manage your recipes on your desktop, planning food for a week, whereas you on your mobile client, has the ingredients available offline as a shopping list and the selected recipes themselves, for cooking purposes.

Also, keep in mind that more and more people are using mobile devices instead of computer in many scenarios, even if they're not on the go. So it's really about what fits in the form factor. How can you make the most use of the app in this particular form factor.

The Facebook app wins over the computer because of its defined work flows - such as check in or photo publishing.

A beautiful tablet app for a field sales person can help seal the deal by impressing on the flimsy customer, letting them participate in the registration work flow.

Notifications are a powerful way of communicating to your users, when used sparingly.

A native app is more of a commitment to the user to keep it fresh. People are expecting less from a responsive web design or a mobile app. Thus, it's worse having an old native app, than having an updated web app. Worth considering when you're outsourcing your development.

Pin individual products on your start screen to keep track of price changes, for example. (Prisjakt, pinna iPad), and pin to right-click as well (the top bar).

Talk to me to promote your app.

--- 

Scott Hanselman: Scaling Yourself.
hanselman.com/greatesthits ?

speakinghacks.com

Ultimately: You just need to do it. Stop getting distracted and start doing.

The less you do, the more of it you can do. If you do NOTHING, you can do INFINITE AMOUNTS of it.

Hope is not a strategy.

Saying "NO" is one of your best strategies.

Effectiveness is doing things right. Goal-oriented: Doing the "right" things and accomplishing goals
Efficiency is doing things right.

effectiveness: aiming, picking a direction
efficiency: shooting, running

Triage is important - on your life's inbox, you need to decide what to do with the tasks that arise. 

Pre-defined work
Work as it Appears
Defining Works

When did you last make an appointment with yourself to figure out what to do next?

Do it
Drop it (type a personalities have a hard time with this; I'm one ;-). Say No.)
Delegate it (also hard for type a personalities).
Defer it

TCP/IP works, because it doesn't do everything - it drops packets.

Write down three outcomes
- for the day
- for the week
- for the year

You can manage three things. If you've accomplished the three things, you can feel happy about yourself.

Being busy is a form of laziness - lazy thinking and indiscriminate action. - Timothy Ferriss.
That's being too lazy to figure out a direction.

If you sort your incoming data streams (phone, work email personal email, twitter, reader, tivo), you know what to drop when you get busy.

Inbox means "hasn't yet been triaged". Put archived items into Archived.

One e-mail rule - Inbox - CC - for "for your information" e-mails. Will keep you less distracted. Make a special box with a rule for stuff that you find important.

Don't check e-mail in the morning! If you respond, they ail respond. You teach people how to treat you. Don't put energy into things you don't want more of.

E-mail are not where knowledge is conveyed - post something on the internet and pass a link along. Have a meeting.

Run your life as a scrum - do daily scrums! Pomodoro as a unit of time (25 minutes). Then, you have to focus on one thing for 25 minutes. Be aware of your internal interruptions (alt+tab, checking your phone). Turn off your external interruptions. Keep track of them (tick on a piece of paper). 

If you want to read something, schedule a time to read! Don't build guilt piles, PLAN, FOLLOW-UP. Also, if you have time to have meetings, you have time to read.

Tools:
- Rescue Time

"If it's not helping me to XXXX , if it's not improving my life in some way, it's mental clutter and it's out."






Comments

Popular posts from this blog

Auto Mapper and Record Types - will they blend?

Unit testing your Azure functions - part 2: Queues and Blobs

Testing WCF services with user credentials and binary endpoints