Episode 57 – How We Badly Built Stuff
- Bootstrap Studio – Mentioned by Joe Riedly and Paul Seal
- Use Chrome’s Screenshot feature within the Network tab – Mentioned by Edward Lichtman
- Use Visual Studio Team Services free tier … free Git repos
- https://regex101.com/ – A fiddle for your regex – Mentioned by Jamie Taylor
Episode 56 – Clean Code – How to Build Maintainable Systems
- Use Snippets in your IDE to save time writing boiler plate templates. Curiosity of Sebastian Greenholtz.
- Atom
- IntelliJ
- Sublime
- Visual Studio (or via Snippet Designer plugin)
- Debug your SQL query inside SQL Management Studio like a boss instead of using PRINT.
- Paste without any formatting in MacOS by using CMD+SHIFT+OPTION+V to paste. (Although, Michael had success with just CMD+SHIFT+V.)
Episode 55 – Clean Code – How to Write Classes the Right Way
- Trade in your old tech books (or other stuff). Check out this link at Amazon for the details.
- GUID Performance in SQL Server as a Primary Key. See this popular answer on StackOverflow.
- Use
git archive
to Git the files, not the repository. See the git-archive documentation and this popular answer on StackOverflow.
Episode 54 – Clean Code – How to Write Amazing Unit Tests
- Joe: Glyphfriend from Rion (intellisense previews of icons) and https://github.com/workshopper/learnyounode”>Learn You Node from ju66ernaut
- Allen: Visual Studio – Increase / Decrease Font Size with
ctrl + shift > < - Michael: Structuring unit tests. A combination of Roy Osherove’s and Phil Haack’s recommendation
123456789101112131415161718192021222324252627282930313233343536373839404142[TestFixture]public class CustomerTests{[TestFixture]public class GetFullName{[Test]public void GetFullName_WhenMiddleNameIsBlank_ReturnsNameAsFirstSpaceLast(){// Arrange...// Act...// Assert...}}[TestFixture]public class GetLastName{[TestCase("Outlaw", "Outlaw")][TestCase("Underwood", "Underwood")][TestCase("Zack", "Zack")]public void GetLastName_WhenLastNameHasBeenSet_ReturnsTheLastName(string testcase, string expect){// Arrangevar customer = new Customer{lastname = testcase};// Actvar result = customer.GetLastName();// AssertAssert.AreEqual(expect, result);}}}
- http://osherove.com/blog/2005/4/3/naming-standards-for-unit-tests.html
- http://haacked.com/archive/2012/01/02/structuring-unit-tests.aspx/
- https://github.com/nunit/docs/wiki/TestCase-Attribute
- https://github.com/nunit/docs/wiki/TestCaseSource-Attribute
Episode 53 – Clean Code – Integrating with Third Party Libraries the Right Way
- Joe: Hide your own selection of code in Visual Studio
Ctrl M, Ctrl H – Hide Selection: https://www.gofightnguyen.com/blog/visual-studio-shortcut-hide-selection (stolen from @Go_Fight_Nguyen and @msdevshow) - Allen: Want to create excellent reports with extreme levels of data flexibility?
PowerBI
https://powerbi.microsoft.com/en-us/ - Michael: A more efficient way of deleting those pesky “orig” files from a merge conflict
find . -name “.orig” -delete vs find . -name “.orig” –exec rm {} \;
Cmd equivalent: del /s *.orig - Bonus!
“Git Aliases
https://git-scm.com/book/en/v2/Git-Basics-Git-Aliases”
Episode 52 – Clean Code – Error Handling
- “Filter messages like these”
in Gmail
- Azure Functions
- Use CTRL+, to navigate to a file in VS2013 and VS2015
Episode 51 – Clean Code – Objects vs Data Structures
- Atom – Sync tree to file – CTRL+SHIFT+\
- Table Valued Parameter from C# – jbelina in slack
https://msdn.microsoft.com/en-us/library/bb675163(v=vs.110).aspx - OpenAI videos! https://www.youtube.com/watch?v=mGYU5t8MO7s
https://www.youtube.com/watch?v=mGYU5t8MO7s
Episode 50 – Clean Code – Formatting Matters
- Michael: Chrome Debugging – Break on Attribute Modification
https://developers.google.com/web/tools/chrome-devtools/javascript/add-breakpoints - Allen: Enforce code formatting amongst many editors for people on a team – from Gustav in our Slack community
http://editorconfig.org/ - Joe: Coding Math on Youtube:
https://www.youtube.com/user/codingmath
Episode 49 – Clean Code – Comments Are Lies
- Add a path to your Git commands to narrow their scope:
- git status [path]
- git diff [path]
- git add [path]
- http://hyperdev.com – Focus on building your MVP. Not the infrastructure.
- http://www.codemaid.net/documentation/ – Don’t just read about clean code. Use some tools to keep it clean!
Episode 48 – Clean Code – How to Write Amazing Functions
- Conditional break points with actions. And labels.
- “Show names of files currently staged: git diff –name-only –cached”
- MsDevShow Episode on Refactoring with Katrina Owen: https://www.youtube.com/watch?v=LyU3Pk6Wt4
Episode 47 – Clean Code – Writing Meaningful Names
- Implementing OAuth in ASP.NET for a number of providers
http://www.oauthforaspnet.com/
- Get out there! Go to conferences, meetups, do it all!
http://www.connect.tech/
https://www.atlantacodecamp.com/2016
Episode 39 – How to be an Intermediate Programmer
- Get the Execution plan for a running query in Microsoft SQL Server
1 2 3 4 5 6 7 8 |
EXEC sp_who2 'active' -- Find the SPID of the query you're running DECLARE @spid INT = 123 -- From above SELECT EQP.query_plan, * FROM sys.dm_exec_requests AS ER CROSS APPLY sys.dm_exec_query_plan(ER.plan_handle) AS EQP WHERE ER.session_id = @spid |
- Have Git ignore changes you make to a specific file like you didn’t make the changes, but still have it be part of the tracked files in Git.
Preface: Let’s say you have a connection string configuration file that you change to point to your local database. That config file needs to be tracked in Git, but you don’t want your changes to accidentally get committed and pushed up to the remote repo, then this command is for you.
1 |
git update-index /path/to/file --assume-unchanged |
- Pay attention to the warnings in your IDE. It’s easy to get used to seeing several warnings and ignoring them because they’re not errors. Eventually a new one that actually matters will show up and by ignoring it, you could be creating heartache for yourself. If you can, resolve the warnings that are currently showing up so that if a new one surfaces, it’ll jump out at you like a sore thumb.
Episode 36 – The Twelve Factor App: Dev/Prod Parity, Logs, and Admin Processes
- Git checkout specific branch: git clone [clone-url] –branch [branch-name] –single-branch
- Use npm to setup your packages for other devs: npm install –save or npm install –save-dev
- SQL Sentry Plan Explorer – thanks Jeff Belina!
- Finding/Replacing text in WebStorm
- Having problems with similar routes in multiple controllers in WebAPI?
Attribute routing to the rescue!
For example:
[Route(“api/customers/getName”)] in CustomerController.cs and [Route(“api/employees/getName”)] in EmployeeController.cs - Don’t forget to add swagger to your WebAPI projects with Swashbuckle!
Episode 35 – The Twelve-Factor App: Port Binding, Concurrency, and Disposability
- Sometimes you want to modify a collection, i.e. a List<T> or Dictionary<TKey, TValue> for example, that you are currently iterating over in a loop. However, in .NET, you’ll get a “Collection was modified; enumeration operation may not execute” runtime exception if you modify the collection you’re iterating over. So what to do? One way is to use a new collection object that can either represent the desired end state, i.e. only contains the items you want in the collection, or a list of items to be added or removed, however, this may be inefficient depending on the items to be added or removed. It’s a common question on Stack Overflow. Here’s an example where Allen illustrates maintaining a separate list of modifications to be swapped in later.
- Efficiently processing multidimensional arrays requires processing the inner arrays first before moving onto the next array element. So if X is an array of arrays, where each Y is an array at some index of X, your pseudocode to process this might look like for each array in X, process each element in Y. This works great for row-major order array arrangements. If, however, you’re working with a , the idea is the same, however, because X and Y represent coordinates, we want to iterate over each X element first before moving on to the next Y. Therefore, your pseudocode would be for each Y array, process each element in X.
- Create a task with a reminder(s) for the exact date/time your password is going to expire. On a Windows box connected to an Active Directory domain controller, type net user yourid /domain where yourid is your domain id, which are commonly in the form of firstname.lastname or flastname but may vary for your organization. Find ;the Password expires value and use that to create a task to change your password at that exact time. Then set a reminder (or reminders) ahead of time, to remind you that your password is expiring soon, such as a 7 day reminder. That should give you plenty of advanced notice to change your password before it’s too late, and if it’s not convenient to do so at the time of the reminder goes off, you can always snooze the alarm until it is.
Episode 34 – Toys for Developers
- Baoding Balls – Exercise your hands for better blood circulation and relax the muscles and joints. Maybe then you won’t need one of the above wrist guards.
- Up For Grabs – Get involved with Open Source Software. This is an easy way to see a list of projects that have tasks specifically intended for new contributors.
- Bluebird – We spoke about JavaScript Promises in episode 31, but didn’t mention this cool library. Want to work with Promises but your current library doesn’t have it? No worries, check out the promisify API call. But who has time to do that for each method? Even better, check out the promisifyAll API call.
Episode 33 – The Twelve-Factor App: Backing Services, Building and Releasing, Stateless Processes
- Find problematic queries that are killing your SQL Server…replace 123 with the spid from sp_who2.
sp_who2 ‘active’
DBCC INPUTBUFFER(123)If you want to be mean….replace 123 with the spid from sp_who2KILL 123Additionally, if there’s high CPU and low I/O, it’s likely either a missing or a fragmented index. - Tortoise Git
https://tortoisegit.org/ - Tip of the week is the Pseudocode podcast
http://pseudocode.fm/
Episode 32 – The Twelve-Factor App: Codebase, Dependencies, and Config
Episode 31 – Javascript Promises and Beyond
- Copy and Paste XML or JSON into Visual Studio and have it auto-generate classes to represent the data
1. Copy the XML or JSON
2. In Visual Studio 2012 & up, click the Edit menu, then Paste Special and choose XML as Classes or JSON as Classes - git grep -e ‘TEXT-TO-SEARCH-FOR’ $(git rev-list –all –max-count=500)
-e is necessary for strings that begin with a dash and should be used for scripts where input is passed to git grep.Quoting the pattern string is optional, but a good practice.–max-count is necessary if you get errors like “argument list too long” or “bad file number”. Both mean that the rev-list is too large. - Templates / Themes built for easy integration with ASP.NET websites. Buy a design that’s ready to open up in Visual Studio.
http://www.wiwet.com - from Matthew Watkins:
Ability to assign macros to any keys you designate in Windows.
http://ahkscript.org/
Episode 30 – Design Patterns Part 4 – Adapter, Facade, and Memento
- CodeFormatter in Sublime
- Slack > Google Hangouts
- Atom / Code – keyboard shortcut cheat sheet
Episode 29 – Hierarchical Data cont’d – Path Enumeration and Closure Tables
- Launch a browser in Incognito Mode directly from Visual Studio
- Need lots of data to play with? Amazon has you covered with Public Data Sets.
- Be nice to your co-workers and provide smaller merge bubbles. Use git pull‘s rebase option. WARNING: Not recommended for history that has already been published.
Episode 28 – Hierarchical Data – Adjacency Lists and Nested Set Models
- Talked about two common ways of storing hierarchical data in a relational system: Adjacency Model and Nested Sets
- Stay tuned for more!
- Let us know what you think about some shorter episodes
- Allen’s blog post, the post that kicked this all off!
Episode 27 – Your Questions Our Answers SYN-ACK with Packet Loss
- use a “WHERE” clause – if you’re writing a SQL UPDATE or DELETE, put the WHERE CLAUSE!!!
- http://www.apiary.io – build server side API’s without any code
- “When you’re online, no one knows you’re dead” – Have directions for your significant other or family members in case you pass away. How to get into emails, get backups, etc. We take things for granted as techies and there are a LOT of people who don’t know how to do what we do. Do we need a Wiki for our life?!
Episode 26 – Algorithms, Puzzles and the Technical Interview
- Git tab completion for commands – turns out this is for Git Bash and not the Git runtime…so it’s kind of a tip, if you’re using Git Bash!
Revised his tip to use one of Allen’s previous – ConEmu!
https://github.com/Maximus5/ConEmu - tip via Andy Joiner – @tekkiesuk
Using a database transaction to test out your queries before you actually run the statement (helpful for updates / deletes) – this helps you do a sanity check before pulling the trigger - Allen’s – Video speed controller – Chrome plugin – tip via Mike Barlow – @bardev
https://chrome.google.com/webstore/detail/video-speed-controller/nffaoalbilbmmfgbnbgppjihopabppdk?utm_source=chrome-app-launcher-info-dialog
Episode 25 – ASP.NET 5 – It’s Basically Java
- Tilt 3D – View your code like a cityscape. Or use it to see how your divs stack up, it’s up to you.
- MacBook Retina causing you to have DPI issues with your 2nd monitor when booted to Windows? #FirstWorldProblems. Use the Windows key + the plus key to zoom in. Or the minus key to zoom out. Or the ESC key to exit. Now you can see those tiny letters.
- SqlPin – Have some SQL statement that you’d like to have repeatedly ran? Thanks to @leeenglestone now you can.
Episode 24 – Delegate all the things!
- dotnetfiddle.net
- gitignore
- Generic Unit of Work and Repositories
- Reply All Podcast! – Message App, New to the Internet, Swatting, Interview w/ Wiki Grammar Enforcer
Episode 23 – Back to Basics – Encapsulation for Object Oriented Programming
- Find out if you can do something in a browser: http://caniuse.com/
- RogueSharp – a starting point for creating your very own Rogue-like video game using C# and .NET:
https://bitbucket.org/FaronBracy/roguesharp/ - You can’t uninstall a program in Windows because the option isn’t there? Oh…when there’s a will, there’s a way:
https://msdn.microsoft.com/en-us/library/aa372105%28v=vs.85%29.aspx
Episode 22 – Silverlighting through your College Enumeration
- git add -p [FILE] or git reset -p [FILE] — Interactively decide which changes to a file to add to a commit.
- Ionicframework.com, Pluralsight – use Silverlight rather than HTML 5 video player
- Great books!
Episode 21 – Our Favorite Tools
- People lie except in the mornings.
- Igal Tabachnik demonstrates the beauty of ReSharper’s “greedy brace” operation. Ctrl+Alt+Shift+Up (or +Down)
- Use a List<T>’s Sort() method to sort in place vs Linq’s OrderBy() that creates a sorted copy.
- NOTE: In this episode, Allen mistakenly referred to a Linq Sort() method but meant List. As he mentioned, while there may be a memory benefit between the two operations, Linq’s OrderBy method has been demonstrated to be faster overall. The Quicksort algorithm is one of the default algorithms used depending on the size of the list.
Episode 20 – We’re Testing Your Patience…
Episode 19 – Design Patterns Part 3 – Iterators, Observers, and Chains, Oh My
- Rextester Share code Snippets in the browser
- The Postman – Test REST in Chrome
- jsPerf – Performance testing for Javascript
- Layouts O Rama – Configure your own layouts for Visual Studio that you can easily switch between with the click on a button.
- Remote Desktop Connection Manager – Do not right click on the server name and select Logoff. You have been warned.
- Windows Phone 8.1 – Allen might have been a little late updating his phone but hey, now the podcast app has variable speed playback.
Episode 17 – Got Any Hot Stacks?!
- Delete a line in Visual Studio: SHIFT + DEL
- Programming music: Aphex Twin – Syro
- SQL Server Query Hints – WITH NOLOCK, WITH ROWLOCK
Episode 16 – Design Patterns Part 2 – Oh behave!
- Go listen to the MSDev Show!
- ObjectQuery.Include Method
- SELECT * INTO newTableName from tableName WHERE 1=0
- Follow @sqlkris!
Episode 15 – NDepends on How Good Your Code Is
- Fill out forms automatically
- conemu – command shell replacement
- Chrome – Move multiple tabs at once with control or shift keys
Episode 14 – Databases the SQL [see-kwuhl]
- Joe’s tip – SQL Fiddle
http://sqlfiddle.com/ - Allen’s tip – Object initializers in C#
http://msdn.microsoft.com/en-us/library/bb384062.aspx - Michael’s tips – Notepad++
http://notepad-plus-plus.org/ - Poor Man’s T-SQL formatter
http://architectshack.com/PoorMansTSqlFormatter.ashx - SQL Server Profiler
http://msdn.microsoft.com/en-us/library/ff650699.aspx
Episode 13 – All Your Database Are Belong to Us
- Joe’s tip – SQL Search Redgate’s SQL Search
- Allen’s tip – Ctrl + , for Navigate To http://visualstudiomagazine.com/articles/2014/02/01/6-top-tips-for-visual-studio-2013.aspx
- Michael’s tip – HTML 5 game creator https://www.scirra.com/construct2
Episode 12 – What do you want to be when you grow up? – #define ME
- Gliffy – Flowcharts,UML, Diagrams, Wireframes, Network, Org Charts, Sitemaps
- SpecFlow
- Alt + F1 in SQL Server
Episode 11 – Design Patterns Part 1 – You Create Me!
- Bookmarks in Visual Studio
- Debugging Object Initializers (again, oops!)
- Click a word in your Visual Studio editor window, once the word highlights, use Ctrl + F3 to find the next instance of the word in the file
- Clean Code recommended using static methods instead of constructor overloads: static methods instead of constructor overloads Color.FromHex(“#ffff00”) instead of Color(“#ffff00”)
Episode 10 – C# 6 and Roslyn – Pour Some Sugar On Me
- Nice theme views for JetBrains products
- Debugging Object Initializers
- 2 insightful, intelligent coding podcasts: Full Stack Podcast and The John Morris Show
Episode 9 – Aspectacular with Vlad Hrybok – You down with AOP?
- Bulk URL Opener
- Web Essentials Visual Studio Plugin
- Don’t worry about uints, ints
- Use AOP, would ya!?
- Visual Studio 2013 – 64 bit code editing while debugging
- CTRL Shift S – Save All in VS…including sln/csproj files!
- Linq2Twitter
Episode 6 – There’s Something About LINQ
Episode 5 – We Still Don’t Understand Open Source Licensing
- Alt+F1 in Sql Server used to quickly describe a table in the selected database(sp_help)
- Awesome Windows File Search Utility: Agent Ransack
- Attach to process w/ Visual Studio Debugger to save time
- cloudcracker.com
- Ctrl F10 – Run to Cursor, Drag the cursor around
- Mailinator
Episode 3 – Source Control Etiquette
- Square Selections
- Source Control Plugins Slow
- Learn Git Branching:
http://pcottle.github.io/learnGitBranching
Episode 2 – Boxing and Unboxing in .NET
- Assign labels to your breakpoints
- Visual Studio Multi Display
- dotPeek – Free .NET decompiler
Episode 1 – I is for Interface
- Right click the using section to alphabetically sort and remove unused “using” directives
- Ctrl-Period shortcut adds required “using” directives or auto-generate interface stubs on classes
- Route Debugger and WebApi Route Debugger provides tons of information about routes