tag:blogger.com,1999:blog-46546971317441065712024-02-20T14:22:15.559-07:00Matthew NicholsMy thoughts on life and geekdom.Matthew Nicholshttp://www.blogger.com/profile/08675645203462568165noreply@blogger.comBlogger17125tag:blogger.com,1999:blog-4654697131744106571.post-77378579724783476052015-02-07T11:04:00.000-07:002015-02-07T11:04:27.443-07:00My Favorite Sources of Development Documentation There are far too many fine point details in day to day software development to keep only in my head. Here are the sources of documentation I use on a weekly basis. Note; given the majority of the work I do is WebDev using ASP.NET these sources are skewed in that direction.<br />
<br />
<b>DevDocs</b> <a href="http://devdocs.io/">http://devdocs.io/</a><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_R0dL0X_C7hd8px9O6Mqj7PaqpI40jRLhCI6rDOPAHU9R2fHlvamRCOTesXIGq6UtedjjYcdu3VqACEvwX8aGrYSufnk-67qzsTYXISMIzFuUT3R2RgIOIPx6tYWW-Gxd3GhmsoLUgWVb/s1600/devdocs.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img alt="Image of DevDocs search" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_R0dL0X_C7hd8px9O6Mqj7PaqpI40jRLhCI6rDOPAHU9R2fHlvamRCOTesXIGq6UtedjjYcdu3VqACEvwX8aGrYSufnk-67qzsTYXISMIzFuUT3R2RgIOIPx6tYWW-Gxd3GhmsoLUgWVb/s1600/devdocs.png" height="512" title="DevDocs" width="640" /></a></div>
In their own words: "DevDocs combines multiple API documentations in a fast, organized, and searchable interface." My words: DevDocs brings together the docs of over fifty (and growing) libraries and languages. You choose which you are interested in and you searches are limited to those topics. Your choice of interests are remembered the next time you use it. Wide ranging topics from HTML, CSS and JS to C, C++ and PostgreSQL to NodeJS, Knockout and jQuery. It also supports keyboard shortcuts and an offline mode which is handy for coding on planes. You can even vote on new topics; see their About page for details.<br />
<br />
<br />
<b>Mozilla Developer Network</b> <a href="https://developer.mozilla.org/en-US/">https://developer.mozilla.org/en-US/</a> or <a href="https://developer.mozilla.org/en-US/docs/Web">https://developer.mozilla.org/en-US/docs/Web</a> for general web technologies<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhX8xJl7ehCPmx-9uBIG6DGhR4fhpDOaihAJVvdGUf94dcMf4PEwG452nAcfJH8_u4D-mDBKiIQdwiNSY4ZV0U2s9eKQBcIq_m3BDqiGvLP4qYmwI0etNVqES2tG_Ryc04g1DSFY-gCGZzU/s1600/mdn.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhX8xJl7ehCPmx-9uBIG6DGhR4fhpDOaihAJVvdGUf94dcMf4PEwG452nAcfJH8_u4D-mDBKiIQdwiNSY4ZV0U2s9eKQBcIq_m3BDqiGvLP4qYmwI0etNVqES2tG_Ryc04g1DSFY-gCGZzU/s1600/mdn.png" height="520" width="640" /></a></div>
In their words: "The Mozilla Developer Network (MDN) is an evolving learning platform for Web technologies and the software that powers the Web" My words: While some of the Mozilla Developer Network, or more commonly the MDN, is about Mozilla specific technologies like Firefox OS, they mostly maintain an amazing body of in depth information on the open web technologies, i.e. anything that happens in a browser, and they cover the details for all the major browsers including what versions support what. For in depth info on the client-side this is my go to source.<br />
<br />
<b>Can I Use</b> <a href="http://caniuse.com/">http://caniuse.com/</a><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQGZaPT6lPSBbCUEyoNRQjO65QddPNuKAEwv_n1CWR9pkMHO_31pATnnEPW20EJCVnkoKdiInQBf7LDf459mhIarK0e3f2ufIsJvGRvfuoUFbdgd2VsuZfq0ra2i4oACZnw41_3d94YJ6O/s1600/caniuse.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQGZaPT6lPSBbCUEyoNRQjO65QddPNuKAEwv_n1CWR9pkMHO_31pATnnEPW20EJCVnkoKdiInQBf7LDf459mhIarK0e3f2ufIsJvGRvfuoUFbdgd2VsuZfq0ra2i4oACZnw41_3d94YJ6O/s1600/caniuse.png" height="520" width="640" /></a></div>
In their words: "Provides up-to-date browser support tables for support of
front-end web technologies on desktop and mobile web browsers." My words: If you just need to know which browsers (make and version) support which features, this is by far the quickest place to get that information. <br />
<br />
<b>StackOverflow</b> <a href="http://stackoverflow.com/">http://stackoverflow.com/</a><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVY8pXo34LDJaiJGGJNft5JUsFJH5CYJNdq7Yn1eQRQImkMujJE7u5RvcxnG1mQ0AHkXj70qs35o2AnQz7CInoH1Mh7XoNgZofB__XfJLH6ML3PIN1iTVW5lQT2Xaqy4z7iGPjJms-eE9h/s1600/so.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVY8pXo34LDJaiJGGJNft5JUsFJH5CYJNdq7Yn1eQRQImkMujJE7u5RvcxnG1mQ0AHkXj70qs35o2AnQz7CInoH1Mh7XoNgZofB__XfJLH6ML3PIN1iTVW5lQT2Xaqy4z7iGPjJms-eE9h/s1600/so.png" height="520" width="640" /> </a>Well duh. The ten thousand pound gorilla of software development question and answer sites. I think most people still get there from a search engine result, but never the less it is the Godzilla of dev answers. Here is a useful tip regarding StackOverflow: if you don't find the answer to your problem, slow down and go through the process of asking the question on the site in a careful way. 80% of the time when I do this I figure out the issue in the process. I also have a request; take a moment and create an account (most people use the site anonymously) and Up-Vote questions and answers you find useful. Personally I love the feeling of getting an Up-Vote.<br />
<br />Matthew Nicholshttp://www.blogger.com/profile/08675645203462568165noreply@blogger.com1tag:blogger.com,1999:blog-4654697131744106571.post-90185347831193912652014-12-21T19:04:00.000-07:002014-12-22T13:35:04.603-07:00 LET'S PLAY: OPERATION MARSOperation Mars is a cool, fun space exploration game that teaches you how to code as you support a variety of challenges for a team to land on Mars. Intended for kids and adults, this game starts with the very basics of code concepts and helps people learn how to think the way a software geek thinks. <br />
<br />
My spouse and business/creative/everything partner Mary <a href="https://twitter.com/marycamacho" target="_blank">@marycamacho</a> asked me some questions about it and it flowed so nicely I will post here to explain it.<br />
<br />
<b>Q</b>: Why do you want to build the project?<br />
<b>A</b>: A few reasons, but mostly I have a passion for teaching people about coding. I get really excited about the idea of more people learning to code. Well done games make things fun. There are starting to be some good games out there around coding but nothing like what I have in mind. And I have always wanted to write a game. And I want to play the game I have in my head also. Plus space is cool.<br />
<br />
<b>Q</b>: Why don't people learn how to code?<br />
<b>A</b>: I think that they don't get how fun and fulfilling software development is. I think it is the most challenging, fun thing you can do. But I think it can be hard to see that if you don't grow up around geeks.<br />
<br />
<b>Q</b>: Why should more people learn how to code?<br />
<b>A</b>: Software increasingly runs everything, I mean EVERYTHING, and what it doesn't run today it will tomorrow. Software development is going to touch all professions even if it is just in that people will have to talk to software developers about what they need software to do. I think understanding basic programming concepts, not necessarily how to develop professional software per se, will be a huge advantage to everyone going forward. And like math it is a great way to strengthen your mind. And some people will discover that this is something that they really love doing. I don't think you can figure out if you will love coding without trying it first hand.<br />
<br />
<b>Q</b>: So what exactly are the basics of code or programming?<br />
<b>A</b>: Some of it is just learning to think and state things really clearly; we say "computers do exactly what you tell them to, not what you want them to". Basic math is all that most geeks ever deal with but that is part of it. Then there are particular ideas that I think are particular to programming at least the way we use them: loops, if/then and other kinds of decisions, how variables work, functions. <br />
<br />
<b>Q</b>: Who will Operations Mars serve? <br />
<b>A</b>: It will be useful to anyone that wants to learn to code, but we are going to focus on young people. But it will be fun for anyone that likes challenging puzzles. Like I said I want to play it too. Plus I think that there are a lot of teachers that would like to include coding in their curriculum but they feel they lack the training to teach it. I think we can create some fun ways to empower them to learn and teach programming. <br />
<br />
<b>Q</b>: How can other people get involved with you?<br />
<b>A</b>: We are just getting started. We will need a lot of different talents involved; graphic artists, software developers, beta users, game designers and other people I am not thinking of yet. We will have a website up soon, but for now the best way is to follow us on twitter at <a href="https://twitter.com/OperationMars" target="_blank">@OperationMars</a>.Matthew Nicholshttp://www.blogger.com/profile/08675645203462568165noreply@blogger.com0tag:blogger.com,1999:blog-4654697131744106571.post-40801307842964739052014-12-21T17:16:00.000-07:002014-12-21T17:16:52.269-07:00What I am Learning Next (Part 1)I have a practice that has served me very well as a software developer. Every couple of years I sit down and figure out what technologies and/or languages I am going to train myself to a degree of expertise over the next 18 months. I pick 3-6 specific things that look promising, but typically have not reached mainstream prominence and participate in projects that will give me solid experience with them. As long as I guess well on one or two of these skillsets then it lets me list 1-2 years of experience with a hot new technology on my resume at a time when it is still hard to find people with any experience in it. <br />
<br />
This has worked out very well for me for the last 10+ years and allowed me to get positions and contracts using Javascript, AJAX, ASP.NET MVC, SignalR, MongoDB and MVVM just as they were becoming in demand skillsets. Because of this I have never, ever had a hard time finding positions/contracts that paid well and were interesting. <br /><br />There are only two downsides to this way of crafting your resume (assuming you actively enjoy learning); you will "waste" some percentage of your time on bad guesses, and in the long run you will get more calls from recruiters than you know what to do with (really).<br />
<br />
So it is that time again for me to figure out the next set of things to focus on. There is a lot of cool stuff happening in tech right now so I am going to list everything that is catching my eye right now and then will narrow it down to a doable list in a future post.<br /><ul>
<li>Azure: I have done some work in Azure already but Azure is a huge topic and I am committed to becoming masterful here. Some areas of specific interest are:</li>
<ul>
<li>DocumentDB</li>
<li>Queues</li>
<li>Scheduled Jobs/WebJobs</li>
</ul>
<li>ASP.NET "vNext" and C# 6: The ASP.NET framework is being rewritten from scratch with huge changes to their deployment and coding models. Perhaps not so earth shaking C# 6 has some nice new features, chief among them a more open compilation model that enables easier code analysis and using C# as a a scripting language (check out http://scriptcs.net/).</li>
<li>Along with the new versions of ASP.NET and C# is , unsurprisingly, a new version of Visual Studio.NET and now the equivalent of VS.NET Professional is free for small teams! <a href="http://www.visualstudio.com/en-us/products/visual-studio-community-vs">http://www.visualstudio.com/en-us/products/visual-studio-community-vs</a></li>
<li>SignalR: I have used SignalR a fair bit but the matured quite a bit in the last 2 years so I need a refresher.</li>
<li>NoSQL: I have used MongoDB a lot and I will continue to do so, but I think it would be a good idea to get some exposure to at least one other NoSQL database. The candidates that I am considering are CouchDB/CouchBase, RavenDB and DocumentDB (Microsoft's Azure NoSQL db, which I mentioned above)</li>
<li>JavaScript "transpiling" languages: I have used JavaScript for almost as long as it has existed so I am very familiar with what is beautiful about it and what is a pain in the neck. CoffeeScript and Typescript are two interesting open-source projects that try and make JS easier and safer to code, and they both "transpile" down to plain old JavaScript.</li>
<li>SVG (Structured Vector Graphics): SVG is a markup language for creating graphics. And it can be manipulated with JavaScript and CSS in the same way as HTML. It's use is not limited to the web, but that is where my interest is. SVG has been around a long time but it was not supported by Internet Explorer until version 9 so it wasn't a very practical option for the public web until recently. I have used <a href="http://raphaeljs.com/">http://raphaeljs.com/</a> quite a bit which sort of patched IE's shortcoming, but now is the time to dig into the real SVG world.</li>
<li>Knockout: I have been using Knockout for years and I love it. Why Knockout as opposed to something like AngularJS? Knockout is focused on just a very few things, mainly two way data binding. It is designed to be combined with other tools like RequireJs, SammyJs and jQuery to create a complete solution. Personally I like this method of composing an app from small focused tools, so Knockout suits me very well. It is mature, under active development, and the documentation is excellent. Why is it on my "what's next" list? The latest release has added support for creating self-contained Web Components and I am excited about that. And you can't know a tool too well. <a href="http://knockoutjs.com/">http://knockoutjs.com/</a></li>
<li>AngularJS: All that talk about what I like about Knockout as opposed to something like AngularJS you would think that Angular would not be on my list. The thing is that there is a huge amount of momentum around Angular and philosophical attitudes aside it is silly to ignore that. I make a lot of my living from contract work where the tools are specified by others so it would be dumb for me to not learn AngularJS. And by all accounts it is a very nice tool to work with so I am sure I will enjoy it (most things to do with computers are easy for me to enjoy).</li>
<li>Xamarin and mobile development: Xamarin is a tool for developing native mobile applications using C# and programming paradigms familiar to any .NET developer. The model allows a very large amount of code reuse across iOS and Android while still respecting the distinct aesthetics of each platform. Everyone I have spoken to that has used it loves the results. It also allows the creation of hybrid apps mixing native code and HTML/JS. <a href="http://xamarin.com/">http://xamarin.com</a></li>
<li>XAML/WPF: Xamarin uses XAML for some of its programming so I will be learning it there, but should I dig into XAML for desktop development as well? I have mostly been a Full-Stack WebDev for a long time. Is it worth the investment of time? I am pondering.</li>
<li>Client-side tools: There is a whole new generation of tools for developing HTML/JS apps like Grunt, Gulp and Bower. Plus lots of uses for Node.js even if you have no interest in Node per se.</li>
<li>ECMAScript 6: ECMAScript is the standard that is JavaScript is an implementation of. ECMAScript 6 is the next version of standard and includes things like classes, modules, and arrow functions (a terser syntax for functions/expressions). We will see these features start to be included in the everyday browsers over time. Projects like TypeScript and Traceur are very much steered by the ECMAScript 6 spec.</li>
<li>Python: I keep saying that I am going to learn Python…we will see if it makes the cut this year.</li>
<li>PostgreSQL JSON datatype: PostgreSQL is a great database engine with a lot of interesting features…and now it has JSON and JSONB datatypes with indexing. This would seem to open up some really interesting applications where you can use a hybrid relational/non-relational strategy in the same database. Very intriguing and needs investigation.</li>
</ul>
So that is a lot. Too much in fact. I have to narrow it down some…in part 2.<br />Matthew Nicholshttp://www.blogger.com/profile/08675645203462568165noreply@blogger.com0tag:blogger.com,1999:blog-4654697131744106571.post-30682503253566557272013-05-20T08:16:00.000-06:002013-05-20T08:16:16.106-06:00Blogs and Podcasts: How I stay on top of new stuff in the development worldI was asked the other day by a colleague how I keep up with everything going on in the software development world. A lot of people use Twitter for this but so far for me I still find podcasts via my iPod and blogs via Google Reader and more recently <a href="http://feedly.com/" target="_blank">Feedly</a> to fit really well in my life. Here is my list of each, edited down to just the techie items. I am mostly a .NET webdeveloper so except where I mention otherwise that is where most of these focus.<br />
<h3>
Podcasts (in no particular order)</h3>
<ul>
<li><a href="http://www.hanselminutes.com/" target="_blank">Hanselminutes</a>: Scott Haselman's excellent geek interview show. </li>
<li><a href="http://herdingcode.com/" target="_blank">Herding Code</a>: Four smart and funny devs talk about software development, typically with guests. </li>
<li><a href="http://thechangelog.com/podcast/" target="_blank">The Changelog</a>: Open source software discussion show. Mostly Linux focused but great show and entertaining.</li>
<li><a href="http://www.dotnetrocks.com/" target="_blank">.NET Rocks</a>: Perhaps the original .NET developers podcast. Still excellent.</li>
<li><a href="http://thisdeveloperslife.com/" target="_blank">This Developers Life</a>: More about the culture of Geek than about tech. I love this show.</li>
<li><a href="http://deepfriedbytes.com/" target="_blank">Deep Fried Bytes</a>: "Deep Fried Bytes is an audio talk show with a Southern flavor"</li>
<li><a href="http://blog.stackoverflow.com/?feed=podcast" target="_blank">The Stack Exchange Podcast</a>: Interesting discussion by the folks that run <a href="http://stackoverflow.com/">StackOverflow.com</a>..kind of rambling at times but entertaining and informative.</li>
<li><a href="http://jesseliberty.com/podcast/" target="_blank">Yet Another Podcast</a>: Hosted by Jesse Liberty (the guy who wrote the C# book with the big bird on it, so basically the guy who taught me how to code in C#).</li>
<li><a href="http://www.thetabletshow.com/" target="_blank">The Tablet Show</a>: Mobile developement show by the guys that do the .NET Rocks show.</li>
<li><a href="http://javascriptjabber.com/" target="_blank">JavaScript Jabber</a>: A small panel of javascript devs talking about modern WebDev. Has bit of a Rails slant but hey, javascript is javascript.</li>
<li><a href="http://javascriptshow.com/" target="_blank">The Javascript Show</a>: Jason Seifer and Peter Cooper discuss the latest news in Javascript development.</li>
</ul>
<h3>
Blogs</h3>
The ones I read consistently... <br />
<ul>
<li> <a href="http://www.irisclasson.com/">IrisClasson.com</a></li>
<li><a href="http://ayende.com/blog/">Ayende @ Rahien</a> </li>
<li><a href="http://www.codinghorror.com/blog/" target="_blank">Coding Horror</a></li>
<li><a href="http://www.johnpapa.net/">JohnPapa.net</a> </li>
<li><a href="http://weblogs.asp.net/jgalloway/default.aspx">Jon Galloway</a></li>
<li><a href="http://msmvps.com/blogs/jon_skeet/default.aspx" target="_blank">Jon Skeet: Coding Blog</a> </li>
<li><a href="http://odetocode.com/" target="_blank">OdeToCode.com</a> K. Scott Allen </li>
<li><a href="http://www.knockmeout.net/" target="_blank">Knock Me Out</a> </li>
<li><a href="http://wekeroad.com/" target="_blank">Rob Conerys Blog</a></li>
<li><a href="http://haacked.com/Default.aspx" target="_blank">you've been HAACKED</a> </li>
<li><a href="http://www.hanselman.com/blog/" target="_blank">Scott Hanselman</a> </li>
<li><a href="http://weblogs.asp.net/scottgu/default.aspx" target="_blank">ScottGu's Blog</a> </li>
</ul>
And the long list of blogs I read when I have time... <br /><ul>
<li><a href="http://blogs.msdn.com/b/dawright/">.dcw </a></li>
<li><a href="http://ajaxian.com/">Ajaxian</a> </li>
<li><a href="http://www.zdnet.com/blog/microsoft/">All about Microsoft Blog</a> </li>
<li><a href="http://www.amazedsaint.com/">amazedsaint's #tech journal</a> </li>
<li><a href="http://amitpatelit.com/">amitpatelit</a> </li>
<li><a href="http://bartjolling.blogspot.com/">Bart's Software Cookbook</a> </li>
<li><a href="http://www.beefycode.com/">beefycode</a> </li>
<li><a href="http://kamranicus.com/">Kamranicus</a> - The Virtual Home of Kamran Ayub </li>
<li><a href="http://www.sullivansoftdev.com/blog" target="_blank">Brian Sullivan</a> </li>
<li><a href="http://bugsquash.blogspot.com/" target="_blank">Bug squash</a> </li>
<li><a href="http://mikehadlow.blogspot.com/" target="_blank">Code rant</a></li>
<li><a href="http://crocusgirl.wordpress.com/" target="_blank">Daydreaming Crocus</a> </li>
<li><a href="http://denverdeveloper.wordpress.com/" target="_blank">Denver Developer</a> </li>
<li><a href="http://www.blogger.com/blog%20http://devproductivity.wordpress.com" target="_blank">Developer's productivity</a> </li>
<li><a href="http://devlicio.us/blogs/" target="_blank">Devlicio.us</a> </li>
<li><a href="http://elegantcode.com/" target="_blank">Elegant Code</a> </li>
<li><a href="http://www.elylucas.net/" target="_blank">ely.blog: { }</a> </li>
<li><a href="http://encosia.com/" target="_blank">Encosia</a> </li>
<li><a href="http://labs.enonic.com/" target="_blank">Enonic Labs</a> </li>
<li><a href="http://eventuallyconsistent.net/" target="_blank">Eventually Consistent</a> </li>
<li>Eric Lippert's Blog: <a href="http://blogs.msdn.com/b/ericlippert/" target="_blank">While at Microsoft</a> <a href="http://ericlippert.com/" target="_blank">After Microsoft</a></li>
<li><a href="http://blog.fiplab.com/" target="_blank">fiplab's blog</a> </li>
<li><a href="http://functionsource.com/" target="_blank">FunctionSource Posts</a> </li>
<li><a href="http://www.globalnerdy.com/" target="_blank">Global Nerdy</a> </li>
<li><a href="http://www.groovypost.com/" target="_blank">groovyPost</a> </li>
<li><a href="http://hadihariri.com/" target="_blank">Hadi Hariri's Blog</a> </li>
<li>Brendan Eich (you know...the guy who created javascript) <a href="https://brendaneich.com/" target="_blank">Harmony of Dreams Come True</a> </li>
<li><a href="http://blog.abodit.com/" target="_blank">Ian Mercer</a> </li>
<li><a href="http://www.infoq.com/" target="_blank">InfoQ</a> </li>
<li><a href="http://jasondentler.com/" target="_blank">Jason Dentler.com</a> </li>
<li><a href="http://jeffreypalermo.com/" target="_blank">Jeffrey Palermo</a> </li>
<li><a href="http://jenkinsheaven.blogspot.com/">Jenkins.NET</a> </li>
<li><a href="http://openmymind.net/" target="_blank">Karl Seguin</a> </li>
<li><a href="http://www.kashiif.com/" target="_blank">Kashif's Lab</a> </li>
<li><a href="http://rkeithhill.wordpress.com/" target="_blank">Keith Hill's Blog</a> </li>
<li><a href="http://www.aaron-powell.com/blog" target="_blank">LINQ to Fail</a> </li>
<li><a href="http://lostechies.com/" target="_blank">Los Techies</a> </li>
<li><a href="http://blog.maartenballiauw.be/" target="_blank">Maarten Balliauw {blog}</a> </li>
<li><a href="http://mabbled.wordpress.com/" target="_blank">mabbled</a> </li>
<li><a href="http://simpleprogrammer.com/" target="_blank">Making the Complex Simple</a> </li>
<li><a href="http://www.matthidinger.com/Default.aspx" target="_blank">Matt Hidinger</a> </li>
<li><a href="http://blog.mirajavora.com/" target="_blank">Mira Javora Blog</a> </li>
<li><a href="http://www.go-mono.com/monologue/" target="_blank">Monologue</a> </li>
<li><a href="https://hacks.mozilla.org/" target="_blank">Mozilla Hacks - the Web developer blog</a> </li>
<li><a href="http://nosql.mypopescu.com/" target="_blank">myNoSQL</a> </li>
<li><a href="http://www.palermo4.com/" target="_blank">Palermo4.com</a> </li>
<li><a href="http://sarahtaraporewalla.com/" target="_blank">Sarah Taraporewalla's Technical Ramblings</a> </li>
<li><a href="http://blogs.microsoft.co.il/blogs/scriptfanatic/" target="_blank">Shay Levy</a> </li>
<li><a href="http://therealkatie.net/blog/" target="_blank">She blogs! - The Real Katie</a> </li>
<li><a href="http://www.siimviikman.com/" target="_blank">Siim Viikman's blog</a> </li>
<li><a href="http://www.kchodorow.com/blog" target="_blank">Snail in a Turtleneck</a> </li>
<li><a href="http://blog.stevensanderson.com/" target="_blank">Steve Sanderson’s blog</a> </li>
<li><a href="http://weblogs.asp.net/bleroy/default.aspx" target="_blank">Tales from the Evil Empire</a> </li>
<li><a href="http://www.jeremyskinner.co.uk/" target="_blank">Technical Jargon</a> </li>
<li><a href="http://blog.monnet-usa.com/" target="_blank">The "Tech. Arch"</a> </li>
<li><a href="http://www.thecssninja.com/" target="_blank">The CSS Ninja</a> </li>
<li><a href="http://dalybytes.blogspot.com/" target="_blank">The Daly Bytes</a> </li>
<li><a href="http://datachix.com/" target="_blank">The Datachix Blog</a> </li>
<li><a href="http://blog.mongodb.org/" target="_blank">The MongoDB NoSQL Database Blog</a> </li>
<li><a href="http://blog.mozilla.org/" target="_blank">The Mozilla Blog</a> </li>
<li><a href="http://www.lorefnon.com/blog" target="_blank">Thoughts.Ramblings.Code</a> </li>
<li><a href="http://timbar.blogspot.com/" target="_blank">Tim Barrass</a> </li>
<li><a href="http://www.fsmpi.uni-bayreuth.de/~dun3" target="_blank">Tobi + C# = T#</a> </li>
<li><a href="http://www.fairnet.com/" target="_blank">Web 2.0</a> </li>
<li><a href="http://rachaelmoore.name/" target="_blank">Web Design by Rachael L Moore</a> </li>
<li><a href="http://whereslou.com/" target="_blank">Where's Lou</a> </li>
<li><a href="http://blogs.msdn.com/b/powershell/" target="_blank">Windows PowerShell Blog</a> </li>
<li><a href="http://www.xavierdecoster.com/blog" target="_blank">xavierdecoster.com</a> </li>
<li><a href="http://www.geekdave.com/" target="_blank">{ geekdave }</a> </li>
</ul>
Matthew Nicholshttp://www.blogger.com/profile/08675645203462568165noreply@blogger.com0tag:blogger.com,1999:blog-4654697131744106571.post-12864637278841671702013-02-03T19:09:00.001-07:002013-02-03T19:09:11.727-07:00Netflix' House of CardsJust watched the first two episodes of the new "House of Cards".....um Wow. It's like the Sith version of The West Wing. Soooooo good.Matthew Nicholshttp://www.blogger.com/profile/08675645203462568165noreply@blogger.com0tag:blogger.com,1999:blog-4654697131744106571.post-67132611087560270362013-02-03T10:15:00.003-07:002013-02-03T10:17:04.401-07:00Picking my battlesI am lead developer on several projects that use outside developers. While in theory maybe I should be able to say my projects use margin width of 2 not the default 4 and whatever other little particulars I have about formatting source. But as I have to review more code commits I think this is just another eaxample of what Jimmy Boggard was saying in <a href="http://lostechies.com/jimmybogard/2012/03/07/tabs-versus-spaces-spaces-won/" target="_blank">Tabs versus spaces: Spaces won</a>. It is just not worth my time to keep reviewing commits and try and figure out which changes are real and which are not...I have better things to worry about than horizontal whitespace differences or trying to get other people to change their settings.<br />
<br />
So today I will change my tab setting to 4 and move on to important issues like vertical whitespace and brace placement.Matthew Nicholshttp://www.blogger.com/profile/08675645203462568165noreply@blogger.com0tag:blogger.com,1999:blog-4654697131744106571.post-81245757873077109472012-12-30T08:57:00.002-07:002013-11-19T12:02:45.076-07:00Windows 8 and PostgreSQLI recently upgraded to Windows 8 Professional on my main development machine and was having trouble getting PostgreSQL installed. The official installer would pop up some very strange dialogs and just sit. Finally I tried the Chocolatey installer at <a href="http://chocolatey.org/packages/postgresql">http://chocolatey.org/packages/postgresql</a> and success! I hope that saves someone the headache I had yesterday.<br />
<br />
<b>Update: </b>This issue seems to have been handled now. Matthew Nicholshttp://www.blogger.com/profile/08675645203462568165noreply@blogger.com1tag:blogger.com,1999:blog-4654697131744106571.post-48567834202851885652012-03-07T09:49:00.000-07:002012-03-07T09:49:23.102-07:00ASP.NET MVC 4 Single Page Application PresentationASP.NET MVC 4 (now in beta), along with <a href="http://knockoutjs.com/" target="_blank">Knockout</a>, adds support for creating Single Page Applications more easily. Steven Sanderson, the creator of Knockout did a really great presentation on creating such an application and it is amazing how much of the typical boilerplate coding is removed from the process. He also goes into some great tips on making web apps have a more "Native" experience on the iPad. I highly recommend watching it (<a href="http://channel9.msdn.com/Events/TechDays/Techdays-2012-the-Netherlands/2159" target="_blank">link</a>)Matthew Nicholshttp://www.blogger.com/profile/08675645203462568165noreply@blogger.com0tag:blogger.com,1999:blog-4654697131744106571.post-38454134360647796352012-02-19T09:27:00.001-07:002012-02-19T09:27:47.881-07:00Tools Update: Ditto Clipboard ManagerOne of my favorite tools is the <a href="http://ditto-cp.sourceforge.net/" target="_blank">Ditto Clipboard Manager</a>. This is an open source tool that is basically copy/paste the way that it should have been done in Windows to begin with.<br />
<br />
The long and the short is that it keeps your clipboard contents back as many entries as you want (I store the last 500 entries). You access them by the key stroke <b>Ctrl+` </b>(this is configurable) and it looks like this:<br />
<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcPZ8mJtI-PcyU-qz6M_-33e7pinxzeye6mlGsSys1eCMO_R5MgtDw_UfQu3sxQ04qOVffgi3pliJN0pKYOWYZbq9VSziGYpyr9Ws1cLXd8fZlv9FIAMgjLq3AuTbiAdDgUr_ZXJRbzB88/s1600/Ditto.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcPZ8mJtI-PcyU-qz6M_-33e7pinxzeye6mlGsSys1eCMO_R5MgtDw_UfQu3sxQ04qOVffgi3pliJN0pKYOWYZbq9VSziGYpyr9Ws1cLXd8fZlv9FIAMgjLq3AuTbiAdDgUr_ZXJRbzB88/s1600/Ditto.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Ditto Clips dialog</td><td class="tr-caption" style="text-align: center;"></td><td class="tr-caption" style="text-align: center;"></td><td class="tr-caption" style="text-align: center;"><br /></td><td class="tr-caption" style="text-align: center;"><br /></td></tr>
</tbody></table>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
The team just released a new version. Get it <a href="http://ditto-cp.sourceforge.net/" target="_blank">here</a>Matthew Nicholshttp://www.blogger.com/profile/08675645203462568165noreply@blogger.com1tag:blogger.com,1999:blog-4654697131744106571.post-16721534290788751362012-02-18T13:15:00.000-07:002012-02-18T13:17:37.557-07:00MongoDB Webinar this week: Schema Design Principles & PracticeI saw a similar talk at MongoBoulder earlier this month and found it really useful.<br />
<br />
<a href="http://www.10gen.com/events/mongodb-schema-design?mkt_tok=3RkMMJWWfF9wsRokvqnPZKXonjHpfsX64uQpXaS/lMI/0ER3fOvrPUfGjI4DTMZlI/qLAzICFpZo2FEJSueQcg==">10gen - MongoDB Events - MongoDB Schema Design Principles & Practice</a>Matthew Nicholshttp://www.blogger.com/profile/08675645203462568165noreply@blogger.com0tag:blogger.com,1999:blog-4654697131744106571.post-9282523181815119332012-02-10T09:11:00.000-07:002012-02-10T09:14:35.763-07:00MongoDB and the .NET Developer, Part 1: Mongo what?I have found the whole NOSQL movement an interesting one. And the product that I am most intrigued about is MongoDB. I just went to their MongoDB Boulder event this week and was struck by how big a deal Mongo is in the PHP/Python/Node/etc... space but hasn't gotten much traction with .NET folk, so I am going to write a bit on getting started with it from a Visual Studio user's perspective.<br />
<br />
First what is NOSQL and particularly MongoDB? In general NOSQL is a growing set of technologies that are alternatives to the Relational Database. Why bother? We have so grown up with using the relational database that we assume it is the answer to every storage problem except few like file storage. NOSQL questions that. I will point out different benefits as I go, but for a more in depth treatment ask <a href="http://en.wikipedia.org/wiki/NoSQL" target="_blank">Wiki</a> or the <a href="https://duckduckgo.com/?q=NoSQL" target="_blank">Duck</a><br />
<br />
MongoDB is a fairly mature, open source NOSQL database produced by the company <a href="http://www.10gen.com/" target="_blank">10gen</a>. There are binary downloads for Windows, OSX, many flavors of Linux and others. It is easy to start it as a regular exe, but can also be run as a service. It manages data as collections of JSON/BSON documents.<br />
<br />
One of the coolest things about it is that you can store rich hierarchical data in a very simple manner, in .NET basically handing an object off to your repository, it is serialized and stored and you are done. Big deal you might say...we can do that pretty easily in a SQL table. First I promise it is much easier to do in Mongo than in SQL Server. But the real difference here is that all of that hierarchical data can be indexed by Mongo to make searches very efficient. For example, here is an simple example document of a person contact info:<br />
{<br />
_id: 3409d3008c8d35c816390000<br />
firstName: “Matthew”<br />
lastName: “Nichols”,<br />
addresses: [<br />
{streetAddress: “123 Smith St, Unit Q”, city: “Denver”, state: “CO”, postalCode: “80206”, type: “Home”},<br />
{streetAddress: “123 Barney St”, city: “Denver”, state: “CO”, postalCode: “80211”, type: “Office”}<br />
]<br />
}<br />
<br />
A collection in MongoDB could have many thousands of documents like these. With the right indexes set up on the addresses array you could search for all of the people that lived in Colorado.<br />
<br />
<span style="font-size: x-small;"><b>Features</b></span><br />
So why bother? There are a number of features that Mongo has that I find compelling:<br />
<ul>
<li>A simpler and more flexible programing model: In Mongo your documents are just the data that your application hands it. You are essentially just storing your domain model.</li>
<li>Replication is easy to setup. This allows for very high availability and data safety. I will walk through setting this up in a later post.</li>
<li>Scales horizontally: <a href="https://en.wikipedia.org/wiki/Shard_%28database_architecture%29">Database sharding</a> is made pretty easy in Mongo. This allows the system to scale across multiple cheap machines rather than scaling vertically on increasingly expensive hardware.</li>
<li>Unlike many cross-platform open source projects Windows is well supported. There is excellent documentation and a very competent driver.</li>
</ul>
Next post I will walk through setting up Mongo and some related tools on a development machine.Matthew Nicholshttp://www.blogger.com/profile/08675645203462568165noreply@blogger.com0tag:blogger.com,1999:blog-4654697131744106571.post-85182478181508297292012-01-10T13:42:00.000-07:002012-01-10T13:42:49.061-07:00Daniel Suarez & DaemonA couple of years ago my friend Mohan turned me on to the novel "Daemon" by Daniel Suarez which I thoroughly enjoyed. It and it's sequel "Freedom" are a tale of what sort of changes, good and bad, could be forced upon us by the software around us. While certainly there were a couple of exaggerated technologies, by and large I am convinced that it is a fairly realistic possibility. Entertaining and educational.<br />
<br />
Today I heard a podcast of the author speaking at one of my favorite lecture venues, the <a href="http://longnow.org/" target="_blank">Long Now Foundation</a> about the same subject matter. I recommend checking it out. <a href="http://longnow.org/seminars/02008/aug/08/daemon-bot-mediated-reality/" target="_blank">Link</a>Matthew Nicholshttp://www.blogger.com/profile/08675645203462568165noreply@blogger.com0tag:blogger.com,1999:blog-4654697131744106571.post-42709252355703414772012-01-10T06:56:00.001-07:002012-03-02T09:45:57.210-07:00Drawing a tree diagram with Raphaël and CoffeeScriptI recently had to create an interactive tree diagram displaying companies and their subsidiaries and the business requirements specified something "prettier" than I could achieve by styling a nested HTML list. Additionally I had to support Internet Explorer 8, which does not have Canvas or SVG support. Pondering the problem I remembered hearing on <a href="http://thechangelog.com/post/631899187/episode-0-2-5-rapha-ljs-with-dmitry-baranovskiy" target="_blank">The Changelog</a> of a client-side drawing library called <a href="http://raphaeljs.com/" target="_blank">Raphaël</a>. Raphaël provides an abstraction over SVG on browsers that support it and on IE does the same thing using VML and thus giving me the ability to draw pictures in the browser going all the way back to IE 6.<br />
<br />
So armed with the ability to draw I created my tree. Most of the new client-side code that I am writing today is in <a href="http://jashkenas.github.com/coffee-script/" target="_blank">CoffeeScript</a> so that is what I used here. The following is my main drawing routine:<br />
<br />
<script src="https://gist.github.com/1959479.js?file=tree.coffee">
</script>
And then some code to create some sample data and call it:<br />
<br />
<script src="https://gist.github.com/1959479.js?file=demo.coffee">
</script>
<a href="http://www.matthew-nichols.com/page/Tree" target="_blank">See it in action here</a><br />
<br />
I'll post the zipped code shortly.Matthew Nicholshttp://www.blogger.com/profile/08675645203462568165noreply@blogger.com3tag:blogger.com,1999:blog-4654697131744106571.post-43690429954725661462011-12-26T15:33:00.000-07:002011-12-26T15:33:18.850-07:00Charles Babbage's birthday: The computer age that didn't quite happenToday is the 220th birthday of <a href="http://en.wikipedia.org/wiki/Charles_Babbage" target="_blank">Charles Babbage</a>, the man who designed, but didn't implement, what would have been the first general purpose programmable computer <b>in the mid-1800's!! </b>Matthew Nicholshttp://www.blogger.com/profile/08675645203462568165noreply@blogger.com0tag:blogger.com,1999:blog-4654697131744106571.post-37134090729661980342011-10-11T21:08:00.000-06:002011-10-11T21:08:44.303-06:00On the client-sideI have been writing rich web applications for 5 plus years and have gotten pretty good at it (and getting better all the time I hope). I am entirely satisfied with the sort of interfaces and functionality that I can achieve combining server-side code with client-side javascript, HTML and CSS, except for one tiny little complaint; client-side code takes forever! Compared with the productivity that I can achieve writing the server-side code, the level of effort that goes into writing the client-side code is daunting. <br />
<br />
I am committed to changing that in a significant way. There are some very interesting tools emerging in this regard; some of the ones currently attracting my attention are:<br />
<ul><li><a href="http://jashkenas.github.com/coffee-script/">CoffeeScript</a>: a very interesting language that compiles down to readable and efficient javascript. </li>
<li><a href="http://lesscss.org/">LessCss</a>: Css with the basic programming structures that geeks expect. Again compiles down to CSS.</li>
</ul>and other similar stuff. More to come.Matthew Nicholshttp://www.blogger.com/profile/08675645203462568165noreply@blogger.com0tag:blogger.com,1999:blog-4654697131744106571.post-75685150393736992712011-06-14T07:24:00.000-06:002011-06-14T07:24:04.448-06:00The Internet PlanMary has written and published a book, "<a href="http://www.theinternetplan.com/">The Internet Plan</a>", which is a workbook for guiding business owners and managers to develop a plan for their online presence that is aligned with their goals. <br />
<br />
I got to assist with the technical editing and I think it is a really useful guide for non-geeks to make sense of what they need and want to do on the internet. Check it out!<br />
<br />
(I promise I will write about things other than books)Matthew Nicholshttp://www.blogger.com/profile/08675645203462568165noreply@blogger.com0tag:blogger.com,1999:blog-4654697131744106571.post-30773196955579846612011-06-13T06:16:00.001-06:002011-06-14T08:01:43.995-06:00C# in Depth, Second EditionI am slowly reading (I have it on my tablet which I carry everywhere) Jon Skeet's "<a href="http://www.manning.com/skeet2/">C# in Depth, Second Edition</a>" from <a href="http://www.manning.com/">Manning Press</a> and am oddly enough really enjoying it. Besides clearly being a master of the subject, Jon has a style that makes what could be a really dry subject engaging, like a good mental puzzle or a good popular press treatment of physics.<br />
<br />
He goes "In Depth" in to the ins and outs of the C# language and how it has evolved over the last 10 years and gives a very deep grounding into how lamdas and delegates, LINQ and much more work. <br />
<br />
I am not sure if every C# developer needs to know the language at the level that it is presented here, but I do know that a candidate I interviewed last week would have gotten a yes vote from me if she had a strong grasp of just this sort of material.Matthew Nicholshttp://www.blogger.com/profile/08675645203462568165noreply@blogger.com0