I gave an overview talk at the South Dakota Codecamp designed as a bird’s eye view of developing Android apps. Here is some follow up: The repository for the app we walked through is on bitbucket. For those who asked about learning resources here are a few options: If you want to approach android on a “slow burn,” Coursera has a great Android developer track. I went through the track as a part of my journey to working fulltime with Android....
Just a hello from the world of Hugo....
I once read a book 12 times. By the 8th repeat it had become an overlap of entertainment and sport; I began to wonder just how many times could I get through from start to finish. Context is important here: the book was Cannibal Adventure by Willard Price, I was 10 or 11, and we were stuck on a long road trip from Nairobi, Kenya to visit family in the hinterland of Uganda....
My colleague Staxmanade is building a podcast app for XBox. You should check it out, he’s good at what he does. Based on our conversations I’ve decided to catalog my habits around listening to podcasts. Not to navel gaze for its own sake, more because I’m curious about what YOUR habits are and what the more broader trends are beyond my sample size of 1. I use Pocket Casts for just about everything because it’s on my phone and I take my phone everywhere (even jogging)....
So you want to be a better developer? My colleague has a blog series on the topic that should be well worth your tme. Start here....
It’s very hard to go through a web browsing session without having a modal dialog popup to ask for your email address. Or how about this: you go to a website and in the margins there is an offer: enter your email address to receive The Completely Free Guide to X or some other PDF document, usually written by the author of the site. The playbook, from bloggers1 to marketing agencies to big companies is simple: harvest email addresses, constantly engage through email marketing newsletters2....
The nice thing about a blog is that you can trace decisions you blogged about to the exact date. It was July 18, 2013 when I wrote about using a desktop pc rather than a laptop. It’s been an interesting journey but it came crashing (pun intended) to a halt when my desktop died a few weeks ago. It’s lazy writing but I’ll bullet point a few random thoughts about 2+ years on a desktop:...
Over the last few weeks I’ve been looking into client side frameworks for the web. Almost everyone I know laments the proliferation of frameworks and “noun.js” modules in existence and yet we can’t help ourselves. The snowball keeps rolling forward with new layers of granularity and complexity - language transpilers, package managers, browser adoption… Then I ran into the following paragraph which explained it all: why frameworks grow like mushrooms and why most of the complex web based software I use runs on what is considered boring (asp....
The first developer conference I ever attended was VBITS (“Visual Basic Insider’s Technical Summit” - now defunct) in San Francisco. I won’t forget that experience or the keynote from Paul Saffo, a futurist who exhorted us to look beyond our technological present and to try to anticipate and respond to trends. It was not completely my own efforts but something must have stuck: learning about vtable binding and COM was useful but I also realized that I needed to do everything I could to get involved with web development....
I visited New York for the first time when I was still based in a Southern California exurb. It was overwhelming, beginning with the clear memory of a man yelling at me to get out of his way upon exiting an elevator. I’d been to many cities but New York is a singular experience: dense, difficult, and beautiful. When I got a new Mac earlier this year, my first reaction was to its beauty....
Although I switched to Octopress via inspiration from Staxmanade’s blog series on exporting content from Blogger, my current blogging has been with BlogEngine.net. Here is how I migrated the content over. *Export to BlogML* The first task was to export my current blog entries. You can generate a BlogML file with all of your posts with the following steps: Log into the administration portal then choose Settings. On the subnavigation select the “Import & Export” option....
I’ve been through a lot of blogging engines. My first blog was built on the Radio Userland platform, created by Dave Winer who technorati know as the guy (controversially) behind RSS. I’ve used Das Blog, Blogger, and BlogEngine.net. I’ve used Tumblr. I’ve even implemented my own lightweight blogging platform in the past. It’s interesting how the concept of blogging is so simple but the platforms and tools are anything but. Perhaps it has to do with what I will call the “Todo List Software Principle” - the more generalized a problem set, the more variety and churn will exist for technical solutions....
{ It may be easy to miss amidst all the hoopla around Windows 8 but the Norwegian Developers Conference just released all their session vidoes on the site. It’s been a while since I’ve gotten to go to a conference but the last few I have attended were put on by Microsoft. Although this has advantages in the sense that it coalesces the “experts” of specific Microsoft technologies, many of the presenters work at Microsoft and therefore don’t have a similar problem set that you or I might slogging our way through building products, often with older (read: more “boring”) software....
{ Many moons ago I got about 0.25 seconds of fame when nRegex, a tool I wrote for evaluating regular expressions of the .NET flavor, got a bit of acclaim. It was one of the better days of my life, an encouragement that sometimes struggling alone in a South Dakota basement can lead to a little bit of notice. One of the tricks that keeps me going back to nRegex is being able to generate code by using a regular expressions....
{ “More features isn’t [sic] better. More features is unfocused. More features means you’ll do them worse. More features means you probably don’t have any differentiation. If you’re doing a startup, you should have less [sic] features than your competitors. If you have more features, you’re probably doing it wrong.” Nugget from Peter Van Dijck. So the question is: when do you add a new feature? Joel Spolsky (who has written about most interesting things already, way back in the day (although it would be interesting to hear if things are still done the same in the present day FogCreek) ) wrote about how they decided on new features by prioritizing and voting as a group....
{ I’ve taken knocks in the past because of my penchant for closures and lambdas. Syntactically they never looked that strange to me and most of the time when I used them it was because it made more sense to get a sense of the flow of how things were assigned. I thought: this feels so natural, what makes it so different from some of the people I’m around using C#?...
{ The 5 second version of this, should you arrive via search, is that to get random rows, simply use an TOP query with ORDER BY NewId() expression. It’s really that simple! Take a look: -- SAMPLE TABLE CREATE TABLE Keywords( KeywordId INT IDENTITY(1,1) PRIMARY KEY, KeywordValue VARCHAR(50) ) GO -- SAMPLE DATA DECLARE @N INT SET @N = 1 WHILE @N < 101 BEGIN INSERT INTO Keywords(KeywordValue) VALUES('key word ' + CONVERT(VARCHAR(5), @N))...
{ … a title which I hope brings massive attention to this blog and to this rant against those that are rabid in their attacks on Microsoft and the Silverlight platform. First and foremost: Silverlight 5 has yet to be released. How can the platform be “dead” if we’re on the verge of a new version? Secondly: Spend some time listening to MVPs and Microsoft people. Even though there is this awkward gag order until //Build/ it seems quite obvious that the platform will continue to be a viable option for developers....
{ class Program { static double PI(int i, int limit) { return (i > limit)? 1 : (1 + i / (2.0 * i + 1) * PI(i + 1, limit)); } static void Main(string[] args) { double pi = 2 * PI(1, 2011); Console.WriteLine(pi); Console.WriteLine("Happy pi day!"); Console.ReadLine(); } } } ...
{ I had no idea: 2011 = 157 + 163 + 167 + 173 + 179 + 181 + 191 + 193 + 197 + 199 + 211 After learning that not only was 2011 was prime, but that it was the sum of consecutive primes, I sought to write some C# code that would demonstrate this. I wrote it in a functional style, meaning at some point to port it to F# – you'll recognize my in a forthcoming post on computing primes with F# which is actually an implementation of the algorithm I first worked through in the below C#....
{ I ran across this blog entry which is an unofficial attempt by somoene to glean the internal workings of Facebook’s product and software development processes. There are some very interesting things to be noted, most of which I’ll just quote from the article directly: “resourcing for projects is purely voluntary” It’s interesting from this unofficial post that project dynamics are organic and based on what engineers want to work on....
{ I had previously done a solution for FizzBuzz in F# (from a long time ago) but now that I’m more familiar with the idioms of F# I tend more towards pattern matching instead of if/else logic for quite a few scenarios. Here is an example of my rewriting what could otherwise been a conditional if/else checking for factors of 3 and 5, but using a pattern match instead. #light let fizz num = match (num % 3 = 0) with | true -> "fizz"...
{ “If you want to build a ship, don’t drum up people to gather wood, divide the work, and give them orders. Instead, teach them to yearn for the vast and endless sea” - Antoine De Saint-Exupery, author of "The Little Prince" Originally posted on Chris Sells’s blog but worth some thought. } Comments David Seruyange Awesome you're still out there! I'd thought my soliloquy here was all but forgotten....
{ I’ve been having a problem that warrants looking at the source which can be downloaded right here. } ...
{ Eons ago I'd posted on how I’d rewritten how I would solve FizzBuzz to have a more functional style (here is an imperative version), inspired by Tomas Petricek and John Skeet’s Functional Programming for the Real World. Shortly thereafter I had written a version in F#, I’m not sure what prevented me from posting it but here it is: let numbers = [1..100] let fizz num = let res = if (num % 3 = 0) then "fizz" else ""...
{ Given the amount of information that is out there it’s difficult to throttle back and actually digest it. A quick look at any web page will set that context; hit StackOverflow and you’ve got several dozens of links to follow, each a rabbit hole on its own. The same can be said for Hacker News, Channel 9, and just about every other popular developer site that is out there. What tools exist to process this more efficiently?...
{ Goal Setting I’ve let it slip that one personal goal for 2011 is a more regimented information diet. I’m becoming increasingly convinced that the concepts we apply to diets on the body can be applied with some parallel applications in the world of information. Calorie Counting The first thing that applies to physical diets is the concept of tracking intake. Our bodies can utilize up to a certain amount of food after which, no matter how good it is, the food is going to be stored up as fat....
{ “ Imagine that you are standing on a street, and you are in America, and a Japanese guy comes up to you and says “Excuse me… what is the name of this block?” And you say “well, I don’t understand… there’s Oak street and there’s Elm street, this is 27th street and that’s 26th…” And he says: “Yes but what is the name of this block?” You say: “I don’t understand what you mean; blocks don’t have names, streets have names....
{ “I like HTML5, but I think you're duct taping a horn on a horse and hoping it will become a unicorn.” Shawn Wildermuth hit the nail on the head with a recent analysis entitled “The Next Application Platform? All of them... ” It would be interesting to see how many more hits the article would have gotten with a title like “XYZ is dead” or “The Death of XYZ,” perhaps something along the lines of “The Death of the One Stop platform....
{ Since my days trying to hack up some Perl1 I was charmed by the idea of a developer’s advent calendar: a day by day lead up to Christmas with articles pertaining to a specific topic. I’m otherwise a scrooge during the holiday time; not given to commercialism, Christmas music, and other seasonal rituals. But I am up for the both the Perl Advent Calendar and the RJBS (Perl) Advent Calendar....
{ Although it’s been mentioned before here, it bears repeating that before you find yourself making a reference to the DataContractJsonSerializer, you ought to consider and indeed are more likely better off with the NewtonSoft library Json.NET. Whereas the DataContractJsonSerializer relies on giving you the flexibility of creating types and using the DataContract and DataMember attributes on them for a lot of granular control, this is burdensome with types that should naturally find themselves serializable and JSON friendly....
{ I always struggled with a singular identity. Maybe that had something to do with going back and forth from East Africa and the United States, maybe it is because my father had a lot of books and it gave me a curious nature. Whatever it is, I am the kind of person who, when I find myself in a bookstore, picks up a magazine on a topic I know nothing about and enjoys trying to discover the nuances of a not yet explored world of information....
{ I recently ran across a two part series from Dave Winer related to failure. Essentially Winer asserts the following: “The only way to succeed in my opinion is if you cannot visualize failure.” In the first post he describes a personal experience where failure was imminent and he pushed on despite it because he realized his back was to the wall. In the second he keeps the theme by emphasizing the special level of determination necessary for success....
{ Over the weekend I took the time to watch Stan Lee’s Mutants, Monsters and Marvels, a film that consists entirely of an interview between film maker Kevin Smith and Stan Lee. As a kid who grew up loving comics, I loved the unveiling of the world behind the worlds I spent as much time as I could with my imagination: Spiderman, Fantastic Four, Hulk, Iron Man, and the list goes on though I’ll stop before daunting anyone without appreciation for such comic book geekdome....
{ I have been having a lot of fun lately using Adobe Illustrator and symbol icons to build icons in XAML. Although the typical icon libraries provide very compact image files, the advantage of XAML comes not just in space, but in the ability to manipulate the graphic that you are leveraging. Here is a brief example of what I mean: 1. There is no shortage of good symbol fonts (or fonts in general, for that matter)....
{ Tonight I ran across the excellent albeit unimaginatively called excellibrary project on Google Code and leveraged it in one of my personal projects. It’s nice to be able to get the Excel file format without having to do it in either CSV or with COM Interop. Reference: Stackoverflow Question / Answer } Comments 佳瑩佳瑩 道歉是人類一定必要的禮節.................................................. ...
{ Ran into this issue recently after upgrading my TortoiseSVN shell extensions. To fix, simply run the installer again using the Repair option. Reference: StackOverflow Question / Answer. } ...
{ From an old Raganwald interview, I derived some inspiration this morning: “Quite often we see something and we're very tempted to say "oh! this is a special case of a more general thing." and then we solve the general thing. However that is an infinite recursion: it's always a special case of a something more general and if you're always climbing up the tree on to the more general thing you'll eventually wind up with a PhD in computer science....
{ SharpZipLib has been around in various forms for some time but via this port to Silverlight we have the benefit of leveraging it for compression and decompression in our Silverlight based web applications. Doing a search on sample code gives back a lot of examples (the best of which, IMHO, is from The Codecruncher) of how to use the library but there’s an important difference when it’s used in the Silverlight space: many members of the FileStream are marked as SECURITY CRITICAL and are therefore out of reach in your application....
{ Just a quick test from Windows 7. } ...
{ While there are a slew of cryptographic hashing algorithms a programmer finds at their disposal, and despite the documented vulnerabilities accompanying it, MD5 remains a popular approach to generating hashes. Hashes, as you know, are useful for a variety of things – verifying file integrity and password storage being just a few. I discovered the Silverlight MD5 implementation because a project I work on leveraged MD5 for file integrity. I was a bit curious about this since it’s long been a recommendation to skip MD5 and use hashing algorithms like SHA-1 and SHA-2 which are proven to be more robust....
{ I’ll admit I have a Man Crush on Robbie Ingebretsen that began when I discovered his work at MIX earlier this year. To expound a bit: Microsoft has worked hard to try to draw a line in the sand between “developer” and “designer” – a line I always had a visceral dislike for because it’s always been people like Robbie Ingebretsen who I’ve always tried to pattern myself after: people who can write code AND produce beautiful designs....
{ I’m not exactly sure of the reasoning, but Silverlight does not have support for either GIF or BMP file formats. This is to say that if you use the Image control, you will be unsuccessful setting the source property to a GIF/BMP file. It’s heresay from nearly a year ago but a member of the Silverlight team, Ashish Thapliyal, posted on (his|her) blog the following: “We don’t want to take the hit for another codec....
{ In the Christian Bible there’s a story of 10 lepers miraculously healed by Jesus. Even if you don’t believe in Christianity, imagine a leper living in the dregs of society, totally dejected until one day a man shows up and heals him and nine other fellow outcasts. Imagine how happy they should be. They’d say thank you, right? In the Bible story, only one of the men returns to say thank you and the other nine are so busy getting back to the lives they wished they had that they forget about the reason they were healed in the first place....
{ There’s probably a name for this specific approach but in a personal project of late I’ve found a useful pattern for generalizing my exception handling. I write a ExceptionHelper class that takes a variety of high order function style methods to handle my exceptions in a single spot. Here is a somewhat simple form of what I've been doing: public class ExceptionHelper { public static void ExecuteWithSuppress(Action code) {...
{ I’ve been reading Tomas Petricek and John Skeet’s Functional Programming for the Real World. I’m hoping I can, as Steve McConnel says, program into1 my C# projects some elements of functional problem solving. As I was working to grok the beginning portions of the book I thought I’d rewrite FizzBuzz since I’ve aleady posted a few versions of a solution. Here is my solution: Func<int, int[], bool> isMultiple = (n, n2) => n2....
{ I’ll admit that I spent an inordinate amount of time last week thinking about dialog boxes. Silvelright’s canned prompt comes courtesy of a call to MessageBox.Show which displays the browser’s native modal dialog. I think you get the same thing from HtmlPage.Window.Alert too. Needless to say, these should leave you wanting. A good place to start, rather than wasting the better part of a day playing around like me, is to begin with a really good convention rather than making something “original....
{ Via a good friend, this post confirms that many of us are in the same situation: corporate IT people force users to stay in IE6 which forces, in turn, all of us developers to suffer by having to support it. The post, written from an inside Digg perspective doesn't tell the whole story so I’d like to add one dimension. Many corporate environments are in this unfortunate cycle based on the inability to project abstract costs, that is to say that often (always?...
{ Several years ago, in a land of Visual Studio 2005 and no CodeRush, I made a tool called Proper to automate the monotony of creating properties. You just type something like “int Foo;string Bar;” and you’d get basic property generation. You can use shortcuts to types by typing an undercore “_” character. For example, “i_” will pop up int, “dt_” would pop up DateTime (You can also create your own)....
{ Tim Heuer has a great intro post on Silverlight data binding and value converters. The concept is a really nice one but I’m not wild about having to write a class that implements the IValueConverter interface every time I need some ad-hoc tweaking of the values I get from being data bound and how I’d like to use them within XAML. What set me off this track was a case where I simply needed to invert a boolean – what should just be “not myvalue” ended up requiring a class, an interface, and so on....
{ Yours truly, looking embarrassed in the middle. Here is the link to Phil's write up. } ...
{ Michael Foord, aka Voidspace, is on a Dot Net Rocks episode talking about IronPython. } Comments fengfk2008 桃園搬家的搬家流程台北搬家的搬家流程石門搬家,三芝搬家,八里搬家,林口搬家,五股搬家,蘆洲搬家,,泰山搬家,新莊搬家,鶯歌搬家,樹林搬家,板橋搬家,土城搬家,三峽搬家,烏來搬家,石碇搬家,深坑搬家,汐止搬家,萬里搬家,金山搬家,平溪搬家,雙溪搬家,貢寮搬家,桃園搬家,新屋搬家,淡水搬家,中和搬家,永和搬家,三重搬家,新店搬家 ...
{ Friend and coworker Algotron just posted an intro and sample of currying with C#. I decided to try out currying with the idea of successive regular expressions on a string array - I found it easy to approach first with anonymous delegate syntax and then use lambda expressions. Once this was in place it was easy to understand the use of an extension method to curry any binary function. Func<string, string[], Func<string, string[]>> fil = delegate(string pattern, string[] lines){...
{ SilverlightFX is an interesting library for declaratively attaching behaviors to objects in XAML. People new to the Silverlight world will like how they can use it to get simple animations out of simple code. Here's a step by step: 1. If you don't have it done already, set up an IronPython / Silverlight project. 2. Download SilverlightFX 3. Copy SilverlightFX binaries into your /app directory. 3. Edit the AppManifest.xaml to include the SilverlightFX binaries....
{ A simple step by step1. 1. Download the Silverlight DLR SDK 2. Map the binaries (the folder with Chiron2 et. al.) in your PATH Environment variable. 3. Download this starter template. 4. Run chiron /w from the command line in the directory of the starter. a) Make sure you're in the correct folder b) The command is chiron /w c) You'll get a message that Chiron is serving at http://localhost:2060a...
{ I've been getting up to speed with Silverlight and decided to rewrite nRegex to leverage it as a client side processor for what the original nRegex shipped to the server with AJAX calls. In the original nRegex this worked fine until you had to deal with large documents but once you were in the large document space things began to go awry. My solution was to allow for a "manual" evalution of the regular expression (rather than a time interval based evaluation) but I'm hoping that Silverlight will prove an elegant solution since not only can it harness the power of the client but it also has features to run code asynchronously....
{ Not to be confused with D&D... Domain Driven Design for those of us who don't keep up with all the acronyms. I'm seeing this more and more in places I lurk. DDD is the next buzz like Agile? Next steps: relisten to Hanselminutes, ALT.NET Podcast, lurk on DDD site, and pay more attention on the ALT.NET mailing list. } ...
{ Both. } ...
{ SOA is Dead? } ...
{ I was browsing to Elliote Rusty Harold's blog to see if he had any predictions for XML in 2009 and to my surprise I found his post: "Java is Dead. Long Live Python!" My familiarity with Harold comes from a time in my life where I worked heavily with XML and later Java and it was his books on both subjects that proved invaluable when I hit my rather frequent roadblocks....
{ Mark Pilgrim's excellent Dive Into Python has a section on using SGMLParser and having seen nothing similar (and imagining its many uses!) I thought I'd give it a whirl in IronPython. I thought a good proof of concept would be creating a database out of link heavy sites. Since I visit Arts & Letters Daily every so often and the closet intellectual in me likes to hang onto what I find there, I thought I'd target it: import urllib2...
{ I haven't listened to the podcast yet but saw a cool trick from Joel Spolsky on approaching parameterized IN queries. Purists will bemoan its lack of premature optimization but I think it's novel enough to study because of the approach: using the SQL LIKE operator on your parameter rather than a field, which is what people like me are used to. There's code on the StackOverflow post but I thought I'd paste some of the poking around I did in Sql Management Studio: -- setup...
{ The 8th annual New York Times magazine Year in Ideas featured a section on Goalkeeper Science profiling this paper by some Israeli scientists called Action bias among elite soccer goalkeepers: The case of penalty kicks. In looking at the approach of keepers in some 286 penalty kicks they found that though 94 percent of the time they dived to the right or left, the chances of stopping the kick were highest when the goalie stayed in the center....
{ A while back I made the case for applications that put together the strengths of Windows Forms and Web technologies (I thought of the catchy "WIB" as a name for this approach). The example I’d given then was a Windows Forms hosted Web Browser for local images that one could use for annotation that leveraged Windows for local file storage and a Web technology like jQuery for doing transitions in the user interface....
{ Kevin Dangoor recorded an interesting screencast on some of the essentials of getting an open source project more widely circulated. Essentially Dangoor explains that having a successful open source project is not just about code, it's about good product management. I wanted to title this post with Dangoor's most quotable quote: "Rails is not where it is because of great code." But there are a lot of people who would take that as an opener for a religious war without seeing his real intent of highlighting marketing and management of a project....
{ It escaped my notice but Eckel's been writing a new Python book. Should be worth digging into sometime in the future. } Comments gefilte His _Thinking in Java_ taught me Java all those years ago. Didn't teach me to /like/ it though... But I did like Eckel's style. gefilte This comment has been removed by the author. ...
{ It's been alluded to but here it is neither shaken nor stirred: I became a father exactly on month ago. While it hasn't been without challenges the joy of being a father is something I understand now firsthand after being told or observing it in others. Even though I first was quite seduced by a "mystique" in programming - a nocturnal person drinking jolt with binary being reflected from mirror shades - I now realize not only that nearly every programmer and professional person I admire is a parent, but that they find their core of happiness in that well beyond the realm of work....
{ Got this a few weeks ago from a friend but didn't have a chance to sit down and digest the entry until tonight. Pretty cool and although premature optimization gets a bad rap, it's a reminder that sometimes what seems intuitive and quick could actually be costing a lot - } Comments depola Unsure when I linked to that article before (perhaps from you?), the methodology is fascinating even though I don't understand the code....
{ Not sure where I saw this one first but it's a great article. I wonder if the Lake Wobegon distribution applies as well to programmers... } Comments depola Good article but I'm not sure the thinking is complete (I'd have to think about it!). There's a big hole, MLB-quality pitchers are mentioned therefore the first baseline graph isn't appropriate. Regarding your musing about whether it applies to programmers, don't forget the curve depends alot on whether they're being "...
{ I think it all started with this post from Tim Mallalieu reporting some directions for LINQ to SQL and the ADO.NET Entity Framework. Ayende and others have had some strong reactions (LINQ to SQL is dead) and there's now a StackOverflow thread you can use to follow the discussion. It will be interesting to track over the next few days what other responses pop up. A few things that come to my mind: 1....
{ Scott Hanselman did a survey of .NET usage and posted results on his blog. A few interesting notes: 1. Heavy use of older stuff: ASMX, DataSet, WebForms, Windows Forms You'd be hard pressed to find new blog entries on it but it shows that older (tried) technologies don't sync up with what's popular. The last few projects I've worked on have had development cycles that far exceed the excitement of their underpinning technology....
{ Tonight I needed to copy a bunch of images, no matter their level in the hierarchy to a single folder. Cake walk with C# and LINQ, I'll post the Python equivalent tomorrow. string sourceDir = @"C:\thesource"; string targDir = @"c:\thetarget"; var files = new DirectoryInfo(sourceDir).GetFiles("*", SearchOption.AllDirectories) .Where(p=> !p.Extension.Contains("db")) // exclude the pesky windows db file .Select(p => p.FullName); foreach (string path in files) { File.Copy(path, Path.Combine(targDir, Path.GetFileName(path))); } ...
{ Making a single archive out of multiple files in .NET is easy once you know where to look but I spent far too long realizing there is a System.IO.Packaging namespace (not in the mscorlib, but you need to reference WindowsBase assembly). // target file string fileName = @"C:\temp\myZip.zip"; // point to some files, say JPEG - did I say I love LINQ? var filesToZip = new DirectoryInfo(@"c:\temp\").GetFiles("*.jpg").Select(p => p.FullName);...
{ A lot of people are down on Windows Forms as something passe. I have a feeling there are a lot of people like me who not only must use it for practical reasons but also think there are advantages to fat clients that sit on the Windows platform. I'm getting to a point where I will start doing more than poking around with WPF but at present two factors hold me at bay: the control library is not robust enough (another tutorial of how to make a custom button in blend isn't incentive enough) and XAML is still a bit daunting for what usually end up being rather involved UIs....
{ I got a little help yesterday from Dav Glass and Eric Miraglia for my issue on selection of YUI javascript files. What I'd had distributed over a bunch of files is now: <script type="text/javascript" src="http://yui.yahooapis.com/combo?2.5.2/build/yahoo-dom-event/yahoo-dom-event.js&2.5.2/build/animation/animation-min.js&2.5.2/build/element/element-beta-min.js&2.5.2/build/container/container_core-min.js&2.5.2/build/menu/menu-min.js&2.5.2/build/button/button-min.js&2.5.2/build/connection/connection-min.js&2.5.2/build/datasource/datasource-beta-min.js&2.5.2/build/datatable/datatable-beta-min.js&2.5.2/build/tabview/tabview-min.js"></script> Hm... a bit better. Both Dav and Eric confirm that the canonical solution to this problem is to spend some quality time at the YUI Configuration Site which will allow you to pick the widgets and utilities you've leveraged in order to combine it into a more simplified call....
{ So here's what has been getting my goat for a while with YUI and a very smple application I've been using it to build. So for said application, I have to reference 12 separate Javascript files along with 5 separate CSS files. All for this simple interface (datatable, tabs, button, ajax (connection), events and maybe a few more things I am not remembering): This type of complexity is what makes YUI daunting for many developers and difficult to maintain; over at nRegex I'm referencing a bunch of older versions of YUI and if/when I do decide to update there will be quite a few places in which compatibility and errors have the potential in manifesting themselves....
{ As my reading of Minima source code continues I wanted next to comment upon the database interaction which is novel (to me at least) in that it is exclusively a LINQ implementation with no stored procedure or ADO.NET implementation. I've seen LINQ quite a bit, but many using it seem to stick to using the query syntax rather than using raw lambda expressions. All the LINQ in Minima that I've seen uses lambda expressions and I've come to appreciate it as a clean, sparse syntax....
{ A quick note that Twining isn't dead and that I actually have been working on it. Some work I've done in the past few months has involved a lot of databases I don't have more than an ISPs user/password level of access to so it's been quite handy to copy data in and out with brief pieces of code. Here's one feature I've used, exporting a table definition and all of its contents to a scripted insert statement in a file: database(cn)....
{ Yesterday I wrote that my next stop was the use of Generics with WCF. Sometimes, it seems, a lot of experience is a handicap to learning new things - such was definitely the case when it comes to the full use of Generics with C#. Most of my usage, I admit, has been limited to Generic Collections such as List<T> or Dictionary<T, K>. But there is a beautiful leveraging of Generics I see with WCF that can be applied all over the place....
{ I'm interested in the notion of deliberate practice as it relates to software developers. How do we "practice" effectively? One of the things I've been wanting to be more serious and deliberate about was reading source code. Hanselman has inspired me with his "weekly source code" posts and since good ideas are worth copying I'll start to document some of the projects I download and look into for examples of good code....
{ Of late there seem to be a lot of the well knowns of blogging bowing out (at least in volume) because of how much work it takes to qualify and disclaim the topics they take upon themselves. I find it sad because even the essays I find myself disagreeing with usually provide the same thought provoking effect as the ones I enjoy in agreement. It's strange to think that people like Paul Graham and Joel Spolsky would be exasperated by the barbs people toss their way and yet, it seems, they are....
{ The Herding Code podcast took up the topic: "Why don't startups run on Microsoft?" which I thought was interesting - it crossed paths with comments in a spat I've followed between Atwood (who chose .NET as a platform for Stackoverflow) and Marco Arment (of tumblr fame (side note: I actually have a tumblr)). Had you asked me before Friday for an opinion I would have probably attributed it to the Byzantine licensing schemes for Microsoft products as well as marketing oriented decisions like making IIS 7 unavailable on XP....
{ Steve posted a coding challenge a few days ago - a change dispenser. I thought it would be a nice exercise for my fledgling Python skills and implemented it with just a small variation on pluralizing coin denominations. def make_change(amt): output = "Change is " coins = (['quarte|r|rs', 25], ['dim|e|es', 10], ['nicke|l|ls', 5], ['penn|y|ies',1]) for i in coins: r = amt // i[1] if(r > 0): coinout = re.split('\|', i[0])...
{ Found a good podcast today, "Deep Fried Bytes." Skip the first episode but the second on interviewing is a gem. Although it was posted on May 29, it ties in quite well with thoughts delivered (not simply written, but delivered) by Steve Yegge in his recent post on finding good people, Done and Gets Things Smart. Not only is it entertaining to hear Ayende Rahein take nonusers of using blocks to task, but later Scott Belware seems to be on the same page as Yegge on how you can know if people are "good....
{ A couple of nights ago I blogged about an implementation of a technique to replace multiple patterns in a string on a single pass. Steve Levithan had an entry on the approach (not mine in specific, just the approach and commenting on a few weaknesses). It inspired a few things out of me: first, making the multiple replace an extension method of the string class, and second to duplicate Steve's approach which enables a more robust model because you can use metasequences etc....
{ I wish I could say I was the clever one to think of this but I ran into it in my copy of the Python Cookbook (the original author is Xavier Defrang, the Python implementation here). It's cool enough that I ported it today - I'll know I'll use the C# implementation of it quite often: static string MultipleReplace(string text, Dictionaryreplacements) { return Regex.Replace(text, "(" + String.Join("|", adict.Keys.ToArray()) + ")",...
{ I'm approaching the end to a rough week and should be coding but the virus scanner on my office machine is slowing development to a point where it's not bearable for me. I'll pass the time with a quick thought about how programming languages affect thinking and why it makes me both picky about languages I use and also curious to see how the different languages solve problems. I will confess that the project I've been working on is written in VB....
{ If you haven't and you do Microsoft development, give an ear to John Galloway, K. Scott Allen, Scott Koon, and Keven Dente in their "Technology Roundtable" podcast. There are a lot of podcasts I find entertaining, (like Joel and Jeff's discussions) but these guys seem to do what I do - and to contextualize that since it may sound presumptuous, they deal with Microsoft development tools building "real world" software....
{ I've been having a good time listening to the StackOverflow podcasts. Joel's a great curmudgeon and Atwood is as opinionated as ever. An ongoing disagreement between the two has been the usefulness of knowing C. Joel's adamant about its importance and Atwood thinks there is much else a developer can spend their time in understanding. Eric Sink has since chimed in with a post called C and Morse Code wherein he reveals his cards: like Joel, he thinks it's of vital importance if you want to reach past mediocrity:...
{ I've been recently needing to generate sql scripts from large Excel spreadsheets. But once the script is finished I've had issues getting SQL Management Studio to execute as large a script in a single run. The solution? Split up the file with a little Python that takes it's arguments like this: ipy Splitter.py LargeFile.sql 3 #import clr #pass arguments like so: # THISSCRIPT.PY FILE NUM_PARTS # ipy Ringil.py LargeFile....
{ I usually don't talk about hardware because I don't pay too much attention to it unless something is bothering me. However I've discovered something interesting about myself in the last week. I've done a lot of my development over the last few years on an enormous HP zd8000. I jokingly called it "the 747" because of its size and girth - 10 lbs and a 17" screen. For a guy like me who's usually also carrying a few books in his bag it's quite a load as evidenced by my going through at least one laptop bag (my current one is also in poor shape)....
{ Steven mentions Nregex in a list of regular expression testers online. Nregex is still up and still useful especially if you need to work with .NET's implementation of regular expressions. A coworker of mine just used it to build a parser for Sql Reporting Services RDL files. Steven's own RegexPal is a fairly intense implementation of regular expressions in javascript, complete with syntax highlighting. } Comments Steve "Nregex is still up and still useful especially if you need to work with ....
{ Matt from 37Signals blogs about workaholics with the following assertions: they don't get as much done (most of the time) and they focus on inconsequential details. Many leapt to the defense of workaholics - people who, it seems, are workaholics themselves. Because I'm often labeled a workaholic I'm trying to see past my emotions and yet it still doesn't smell like the truth to me. And even more so because this weekend I watched Triumph of the Nerds, Cringley's chronicling of the personal computer industry from it's humble roots in what would become Silicon Valley....
{ I was recently feeling ashamed of myself after reading Atwood's Programmers Don't Read Books... post for what he called Programming book pornography: "The idea that having a pile of thick, important-looking programming books sitting on your shelf, largely unread, will somehow make you a better programmer." To clarify, I actually do read the books I have bought but I'm guilty of keeping a full shelf for the sake of showing off my long and continuing struggle to be a good programmer....
{ John Resig of jQuery fame has released a library called Processing.js for javascript graphics. Yes, you read that right: Javascript graphics. Earlier this week I was in some training and the instructor asked what future we saw for Silverlight. My response was that I can't drink the koolaid just yet; while there are certainly applications in streaming media in which Silverlight will compete to the death with Flash, for web applications I see people taking Javascript to the level where its maturity with the browser makes most applications feasible....
{ Tinkering a bit with extension methods tonight, inspired in part by Scott Hanselman to write something I've frequently needed with generic collections: to spit them out in some delimited format. Here are the extension class and method: static class EnumerableExtensions { public static string AsDelimited<T>(this List<T> obj, string delimiter) { List<string> items = new List<string>(); foreach (T data in obj) { items.Add(data.ToString()); } return String.Join(delimiter, items.ToArray()); } } .csharpcode, ....
{ I'm still trying different things with Twining. I'd thought about writing some "front end" type experience for usage but it really crystallized as a need when I showed it to a person I know and there seemed to be a disconnect in how it could be used. For me it's natural to set my path environment variable, launch favorite text editor X and then run things from the command line or a script, but it's a nuisance if you're used to a one stop shop for being able to use some tool....
{ Some excerpts from a great post from Ola Bini, one of the JRuby core developers: In short, I believe that being able to abstract and understand what goes on in a programming language is one way to become more proficient in that language, but not only that - by changing your thinking to see this part of your environment you generally end up programming differently in all languages......
{ Generics, as it were, are passe to talk about these days. However, I found myself dealing with enumerations on Friday and was a little surprised there wasn't an approach to parsing these out in a more generic fashion. I scribbled the following, perhaps it will be of value to someone: enum Test { v1, v2, v3 }public static T EnumParser<T>(string givenValue) { return (T)Enum.Parse(typeof(T), givenValue, true); }//usage: Test val = EnumParser<Test>("...
{ One thing I’ve come to realize is that urgency is overrated. In fact, I’ve come to believe urgency is poisonous. Urgency may get things done a few days sooner, but what does it cost in morale? Few things burn morale like urgency. Urgency is acidic. - read the whole post Jason Fried of 37Signals neglects to mention one aspect that seems to come back over and over to haunt those of us who live with "...
{ My project at work added some remote developers and it was decided that rather than try to figure out TFS, which we use for everything internally, we'd use SVN. I'm not used to SVN since we used Team Foundation Server for source control and Visual SourceSafe before that - I've used TortoiseSVN quite a bit to get source code from projects online, but never as a primary source control environment for a big project....
{ Now has a its own location. I'll still post of goings on, but will keep the external site as a source of updates and documentation. There's a form there for feedback as well. } ...
{ I started my IronPython musings with Notepad++ since it's my usual text editor (after being enamored with Textpad for many years, I moved on - lots of reasons, perhaps I'll blog them later). As time passed and my scripts grew in size I started using an old version of Komodo I've got which has decent support for Python. I used Komodo (3.5) when I was writing a lot of Perl and it worked pretty well for that, especially since it had a good enough debugger and CGI emulator for me to dig myself out of holes....
{ DDJ (the print edition at least) has an interesting interview with Paul Jansen, managing director of TIOBE on languages. Some interesting points: Direct quote: "I expect in five years time there will be two main languages: Java and C#, followed closely by good old Visual Basic." While not much has changed over the last 10 years, COBOL is now out of the top 10 list and Python is moving in....
{ Via Raganwald, there's now a Reddit for JavaScript. } ...
{ What if you had a client who has a big product catalog you're integrating with the web. You work out a convention for how data is displayed and want to generate some test images for yourself... First, just some basics on generating a single image: import clr clr.AddReference("System.Drawing") from System import * from System.Drawing import * def GenerateImage(text): starter = Bitmap(1,1) g = Graphics.FromImage(starter) f = Font("Arial", 14) theImage = Bitmap(starter, Size(200,200))...
{ I've been quiet but still working on Twining. Unfortunately lots of distractions at work have slowed me down. Most of what I've done of late is adding unit tests for the functionality that already exists. I twittered that adding unit tests a posteriori is not fun and tends to have the effect of one simply verifying what they've done with pasted code. Now that most of that is done I'd like to add a few things: 1....
{ What data access strategy do you use in your .NET work? The question has been on the mind of Scott Hanselman it seems because the last few podcasts have covered two different strategies - LINQ and CLSA. Tonight I noticed that the ADO guy has a poll of his own with some interesting results: Web Poll Powered By MicroPoll I will admit that I'm pretty consistently using ADO....
{ Hanselman's 7 Blogging Statistics Rules... post was good medicine for a haphazard blogger like me. There was one portion to which I had comment: I feel like we've (that means me and you, Dear Reader) have a little community here. When you comment, I am happy because I feel more connected to the conversation as this blog is my 3rd place. I blog to be social, not to have a soapbox....
{ simplejson is a JSON library for Python 2.3+, courtesy of here. A while back I goofed off with IronPython and Prototype writing a web based "shell" inerface. I may have to return to that project although my problem wasn't really with encoding, it was with keeping context while using multiple commands (like cd .. and then dir with the new directory as your location) in a session with cmd.exe. I've been meaning to write the PoshConsole guy to ask specifically about this....
{ The interview is here, it's good stuff. Imagine a half billion users. That's a humbling thought... } ...
{ Joel's got a big enough voice that I'm sure most people didn't miss his Martian Headphones essay which explained the futility of standards. Jeff Zeldman, who I've always been aware of in my time lurking on the web chimes in on web standards on Craig Shoemaker's new gig, "Pixel 8." The podcast sound is very rough but it's a good context builder for the notion of standards and what they mean....
{ "Testing is the engineering rigor of software development" - Neal Ford Got a little tip from fuzzyman on using unittest for Unit Testing with Iron Python. Because I'm a slouch I had an old IronPython 1.1 release and kept getting a BaseException error when my tests failed. The class has since been implemented and should work with the latest version of IronPython that you can download (I'm using a beta release of 2....
{ What's the big picture and why are you doing it? A comment from my last post got me thinking I need to get back to the big picture. Robert wrote: Wow. That looks like a hard way to solve your problem. If you absolutely have to mangle Excel data through Python and into a database... can I recommend Resolver? It won't cost you anything and it might just solve your problem....
{ I'm still at it with Twining. A few projects and events have distracted me temporarily but I had a few moments last night to do a few things that I've intended to for some time. First a summary of functionality with what's new in red. cn = "Data Source=.\\sqlexpress;Initial Catalog=MyDB1;Integrated Security=SSPI;" cn2 = "Data Source=.\\sqlexpress;Initial Catalog=MyDB2;Integrated Security=SSPI;" # dest, source (you can use the same source column over and over)...
{ When I read the article on 37 Signals in Wired, I admit I alternated between shaking my head, laughing, and sighing. When Hanson commented upon the term arrogance, I laughed: "Arrogant is usually something you hurl at somebody as an insult," Hansson said. "But when I actually looked it up — having an aggravated sense of one's own importance or abilities' — I thought, sure." When the article describes him as a "...
{ Paul Vick posts on some design considerations for future versions of VB.NET and hits upon something I was complaining about just this week - the fact that one has to speckle their code with line continuation characters in places where they should be implicit. This seems to happen for me in two spots, assigning parameters and string concatenation. It's reassuring that not only does the VB.NET team listen, but they are looking for solutions as well....
{ Just watched it while working on some stuff tonight. Good things seem to be happening although much of it is in CTP or Beta form right now. I'll need to resurrect my VPC images to install and play when I have the time. What's baking that's cool? IE 8 - the integrated Firebug like debugging is what's got me excited for now. Silverlight 2.0 - Dino Esposito joked about how Silverlight 1....
{ Harry "DevHawk" Pierson comments (emphasis mine): My opinion, since you asked Nick, is that EA (Enterprise Architecture) fails to deliver value because it tries to control the uncontrollable. Trying to gain efficiency thru establishing standards and eliminating overlap via reuse are pipe dreams, though literally millions of $$$ have been poured into those sink-holes. There are a few areas where centrally funded infrastructure projects can solve big problems that individual projects can't effectively tackle on their own....
{ I go back and forth on the very thing Larry calls "Lead-Developer Compression Ratios." Two things happen over the long haul that affect my thinking: first, even though it's time consuming communicating needs to a junior developer, it seems to pay off when it comes to fine tuning and bug fixing - it's not something you have to worry about since it's delegated. "Finished" in my world means it's been through a few cycles of testing, cycles that take a lot of time....
{ long entry because it was written at an airport, just back from celebrating 3 years with my beautiful wife in Monterey, CA... A few interesting things, but first just a summary of what can be done with what's new in red: #connection strings cn = "Data Source=.\\sqlexpress;Initial Catalog=DB_SOURCE;Integrated Security=SSPI;" cn2 = "Data Source=.\\sqlexpress;Initial Catalog=DB_DESTINATION;Integrated Security=SSPI;" #back up the database to a file database(cn).backupto("C:\\temp\\loungin.bak") #copy/export basic database(cn).table("MY_TABLE").copyto.csv("c:\\spam.csv") database(cn).table("MY_TABLE").copyto.xmlFieldsAsAttributes("c:\\spam.xml") database(cn).table("MY_TABLE").copyto.xmlFieldsAsElements("c:\\spam.xml") #pick your delimiter...
{ My thoughts as exhibited in a little Python script now have a name: Twining. Unplanned illness slowed me down over the weekend, but the beauty of lambda expressions make transformations a breeze. I'll let the code document what I added. cn = "Data Source=.\\sqlexpress;Initial Catalog=MVCBaby;Integrated Security=SSPI;" mytrans = {"Field1":"upper","Field1": lambda x: x.upper(),"Field3": lambda x: x[::-1]} database(cn).table("Photos").transform(mytrans).copyto.csv("c:\\foo.csv") As you can see, "mytrans" is a dictionary containing a matching of column names to both a keyword string, "...
{ Attepting releasing early & often - here are a few new features to the ideas I'm putting together for the Database specific DSL. I'll summarize all that's possible with it now with the new stuff highlighted in red. #some connection strings cn = "Data Source=.\\sqlexpress;Initial Catalog=MVCBaby;Integrated Security=SSPI;" cn2 = "Data Source=.\\sqlexpress;Initial Catalog=Irvine;Integrated Security=SSPI;" #some things to do database(cn).table("MyTable").copyto.csv("c:\\foo.csv") database(cn).table("MyTable").copyto.database(cn2) database(cn).table("MyTable").copyto.xmlFieldsAsAttributes("c:\\spam\\eggs.xml") database(cn).table("MyTable").copyto.xmlFieldsAsElements("c:\\spam\\eggs.xml") database(cn).backupto("C:\\spam\\eggs.bak") The overall idea is to build a language centric, developer oriented implementation of what is done in a tool like SSIS or its predecessor DTS - I'm using SQL Server for a start but there's no reason this can't include other database platforms....
{ Hanselman wrote about "fluent" interfaces recently which confirmed something I'd been thinking for a while. What if rather than massive tools we just had a language to express ourselves when we wanted to move data around? What if we could say something like: database("connection string").table("table").copyto.csv("C:\\spam\\eggs.csv") or database("connetion string").table("table").copyto.database("connection string 2") In the spirit of releasing early and often, here's an implementation of the above language for sql server with Python....
{ Paul Buchheit (who we can thank for Gmail) comments on a post by Marc Andreessen: For web based products at least, there's another very powerful technique: release early and iterate. The sooner you can start testing your ideas, the sooner you can start fixing them. I wrote the first version of Gmail in one day. It was not very impressive. All I did was stuff my own email into the Google Groups (Usenet) indexing engine....
{ If you're like me, you spend a lot of time using System.IO and can easily check for the existence of a file on the filesystem with a File.Exists(@"C:\spam\eggs.file") It's a little surprising that I hadn't run into it before but a few weeks ago I needed that same functionality with javascript. I found a few things online and what works best is using AJAX to make a request and check the HTTP status for whether or not the request failed....
{ Some good things to repeat to yourself from Dormando. I've a long way to go on so many of these and was geeky enough to give myself a scorecard. I'll spare you that (after just deleting a lot of babble that would only be interesting to me) but there are two areas that I can do with some serious improvement: 1. Relentless automation It's shameful how often I'm doing things I could easily automate (repeated FTP sessions?...
{ I started changing my Visual Studio settings after seeing Hanselman's post and thought I'd be able to spit fire like John Lam once I'd downloaded his settings (it's gotta be the shoes!). The contrast was a bit much (though working in low light helped) and after a night's worth of being like JLam I wanted to go back to (dare I admit?) VS default settings. That didn't work out too well (even using the "...
{ On Saturday I needed to grab some blob data and create files out of it. The following was some Python I used, inspired very much by this code. The biggest point of interest is the strongly typed array, which in IronPython is simple once you know how: using Array.CreateInstance. #GET IMAGES FROM IMAGE BINARY FIELD # 02/02/2008 - David - @THE COMMAND CENTRE import clr clr.AddReference("System.Data") from System import *...
{ Oliver Steele has a new essay entitled Adding the Easy Piece; or, The Metaphor of the Rock. Insightful as usual, and I love the visualizations. Personally, I'm experiencing the effects of pushing a rather large rock around a room. } ...
{ Last year I was fortunate to catch Scott McCloud here in Sioux Falls. It's doubtful that he'd ever find his way here under normal circumstances but he was doing a 50 state tour in support of his book, "Making Comics." I believe a dual aim was to provide his two young daughters, who travelled and presented with him, an experience of a lifetime. I was particularly struck with a classification he had for comic (and indeed all types) artists....
{ Randomly: worked with the CheckedListBox tonight. It's interesting to run into "getter/setter" type methods in the .NET universe. One would assume a collection that specifically supported setting constituent objects as "selected" or "checked" but instead there are methods like: GetItemCheckedState and SetItemCheckedState. It would be interesting to have the Windows Forms equivalent to the annotated base class library reference. Perhaps tomorrow I'll try to peak at the source code....
{ "I am going to tell you something that will disturb you. You might laugh, but it will be a cold uncertain laugh that will haunt you as you read on, because somewhere deep down you'll know it to be true. You might brush it off, get on with your day, yet sometime later, a week or a year, it will seep back in and unsettle you to the core....
{ Ravi Mohan makes the provocative, if not new claim (with follow up) that programmers are not engineers. I take the majority of his quibble to be the title some flaunt: "software engineer." I've never felt able to use "engineer" for myself, but I don't perceive this badly. My official title is "software architect" though most of my day is not spent on architecture. It's a bit postmodern of me but does anyone's title mean much?...
{ I did the switch back for a project that a VBA enlightened client requested but I kept finding myself asking how to syntactically do what I usually do in C# (especially inheritance-wise) in VB.NET. Terry Smith has a handy online book that has a comparison so that you can easily figure out what the VB.NET syntax is for what you know how to do in C#. I'm not sure when it was written; no word on Generics but that's an easy enough syntax to duplicate with (Of T) rather than angle brackets....
{ A while back I had a phone call from a woman with an eastern European accent wondering if I would be willing to take a survey. I'm usually an instant no to queries like this but she knew my Achilles heel: "Participants get $50 Amazon Gift Certificate" So a few days ago my inbox chimed with an email with the gift certificate in tow. I didn't hesitate with my purchase of David Flanagan's Ruby book....
{ I just looked at Oliver Steele's programmer's food pyramid and did a self evaluation of sorts. I know that I err too much on the reading of "blogs" versus reading long prose about programming. That's something to change this year. As well I use libraries a lot without digging into anything once my problem solving is done. I think there's a form of mental stamina in digging deeper into a problem once you've apparently solved it - my instinct is to simply move on and try to tackle what's next....
{ In the wake of all the plastic surgery and body augmentation going on around, a developer like myself can feel a little out of place - out of century to be more exact. And yet, whether he's joking or not, I'm half tempted by Wesner's admission to "performance enhancers." But the thing I know with certainty is that being productive will only beget the desire to be more productive. Instead of learning and implementing 4 technologies, it will be 8....
{ I earned the reputation as "the guy from South Dakota" at CodeMash; many people were amazed that I took it upon myself to drive just under 14 hours both there and back for the conference. What would they have done if I told them I also: a) took time off from work b) paid for it out of pocket c) drove my own car But I think it's not *that* strange....
{ I usually try not to be an echo chamber, especially when posts show up on Coding Horror or Steve Yegge's blog. But what's interesting is a rebuttle to a notion that Yegge started, namely that size is an enemy in code base. Franz Bouma has an interesting post to follow up that is worth a counter balance of views. Conventions: I commented once about LoC in one of our projects, not so much with an interest in maintainability, but as a comparison with how much code was being "...
{ The short version: I'm releasing xPathFinder, a tool I wrote for doing XPATH expressions against xml files on the file system. You can get information about it as a tool by going to the website. Here are some screenshots: The long version: Not too long ago I ran into a problem that I thought would be common but didn't seem to have a canned solution. We use a webservice to store some data in a database but we also store the xml files transmitted on the file system as a defensive maneuver in case the database is unavailable or the xml is invalid....
{ Code Climber has this great list of what you need to download and the order in which you must install it. I just completed my installation and have begun to poke around. } ...
{ There's a lot to learn these days (whenever isn't there a lot?) and one thing I will do for 2008 is make a list of technologies I'd like to dive into with some sense of priorities. Among the ASP.NET MVC, Powershell 2.0, and Iron Python (for starters) I've been interested in F#. First as a topic on Hanselminutes but I lurk on Harry Pierson's blog and he's been posting about it quite a bit....
{ Mads Kristensen has a listing of his code samples. One thing I like about Mads' samples is that they are all very straightforward without unnecessary layers of abstraction. } ...
{ Once or twice people have confused what I'm doing with sales. Some time back I met with a prospective client and kept having to explain that I actually do write code and would probably be a lead developer on any work they gave us. The reaction I had for even the mere perception that I was "sales" was a little surprising to myself although with some reflection I realized it was because I conflated most of what I disliked about salesmen into an image I couldn't deal with for myself: Style over substance Shallow understanding Pandering for a quick buck But once in my life I was a happy salesman....
{ I maintain a few personal websites, one of the closest to my heart is phoDak, a photoblog. I wrote the site using ASP.NET about two years ago and intended it to be a low key, personal area to post pictures. I had absolutely no validation on comments and my "what will be" attitude worked for a long time until about a week ago when I saw a comment spam link to porn right off the most recent picture....
{ On a whim I've signed up to be at CodeMash 2008. After learning about the conference when Hanselman posted he'd keynote, I mapped out that Sandusky, OH (Whiskey, Tango, Foxtrot!) is none too far (an audio book's worth of distance). I'm really looking forward to the opportunity to walk among Elvis and Einstein, hopefully gleaning some direction along the way. The session list is impressive, I'm thinking it will be hard to choose a particular direction....
{ Don't get me wrong, I love Christmas too, but I really like the Advent Calendars that wind up the year. 24 ways Drew McLellan and his crew have been putting together web development tricks to round out the year for the last few years. Perl Advent Calendar None too late and looking like it was designed by a Perl programmer. Two advent calendars I'd love to see: 1. Microsoft ....
{ LifeHacker has a first look at the forthcoming Firefox 3. It's interesting to see lots of improvements to the storage and management of places visited online - I'm sure this will provide inspiration for the Internet Explorer team at Microsoft to implement cool new features too. A feature I asked for (and got a skeptical response) was the ability to do what Firefox seems to aim for but in a Google-ish way....
{ I've been experimenting with IronPython of late trying to get the gestalt of Python as a language. It occurred to me that something I had been thinking about for a while as a web project would make sense as an Iron Python project so I dabbled a bit. The idea I had was a command line type application that approximated commands going to a windows shell and sent the results back to the user....
{ There are some great videos at the Business Innovation Factory - Jason Freid (37 Signals) - I've been watching these guys for a long time. Although I'm a little resistant to some of the accolades associated with them, the 37 Signals crew thinks clearly and has a clear identity with which they seem overwhelmingly successful. My favorite comment is Jason saying that they (37 Signals) want to be "...
{ A few projects ago a control was created (who exactly did it I'm not sure) for displaying dialog "popups" without new browser windows. The technique was fairly straightforward: an IFRAME with an opacity filter and a div with the popup values. I wasn't a huge fan of the infamous "popup" which managed to come up in project after project, but the idea of using opacity on an IFRAME for an overlay of helpful information struck me about a week ago....
{ I remember my first conference well: I was 24, it was February of the year 2000 and I was in San Francisco. I'd bartered my way there: I turned down a raise from my employer and instead asked for a "personal budget" for professional development. In a bookstore I'd seen an ad in the Visual Basic Programmer's Journal and thought it was an opportunity to develop skills and visit my favorite city at the time....
{ A new boast puts perspective on the original New York Times tagline: "All the News That's Fit to Print." Now we have "All the Code That's Fit to printf()". On a serious note, OPEN is a new blog written by and for developers. I'll subscribe for the moment even if all the code I'm interested in is usually in a language that doesn't support printf natively. Courtesy of Aaron....
{ I hope I can call him a friend - I was fortunate enough to sit a class with him and then ran into him at TechEd - but Tim Rayburn has an excellent screencast overview of C# 3.0 new language features. For 46 minutes of your time, you'll not only be up to speed, but hopefully a little excited at the future. The first few items have more to do with improving the syntactial approach to things we're already familiar with:...
{ Derek Sivers writes about switching back to PHP from Ruby on Rails after attempting to rewrite cdbaby. Raganwald references an intersting series from Chad Fowler on "Rewrites" and why they are so difficult. } ...
{ Although it seems to be a little disagreement over the existence of beautiful code, a refactor I did today was pleasant to my eye. Starting with: string result; if (parameterLessCommands.Contains(commandName)) { result = RunArglessCommand(user, commandName); } else { string commandArg = RetrievePairCommandArg(commandData); result = RunArgCommand(user, commandName, commandArg); } return result; Ending with: return (parameterLessCommands.Contains(commandName)) ? RunArglessCommand(user, commandName) : RunArgCommand(user, commandName, RetrievePairCommandArg(commandName)); I'll take it. ()?...
{ I've always wanted to work for Microsoft. My first chance was right out of college when a professor of mine passed my resume to his friend up there. I had some embarrasing crap about how I'd always wanted to work for "the company." It was all true but I can imagine the HR person directing anything that sappy to the trash. Instantly. But it's just as well - Steve McConnell has an interesting comment about how much time at Microsoft may be spent in meetings - for developers: When I was at Microsoft in 1990-91 I probably spent less than 5 hours a week in meetings....
{ As I hit "publish" from my previous post on pivot tables, a thought struck me on another most excellent use for them. No, really - for the next job interview: SELECT CASE WHEN I % 5 = 0 AND I % 3 = 0 THEN 'FizzBuzz' WHEN I % 3 = 0 THEN 'Fizz' WHEN I % 5 = 0 THEN 'Buzz' ELSE CONVERT(VARCHAR(2), I) END...
{ I taught a T-SQL Programming class this week and in the process looked over some old books on the subject. One in particular I've enjoyed was the Transact-SQL Cookbook from O'Reilly - I have yet to find as novel an approach to SQL, coming from the ideas of set theory rather than tutorials on querying. I'm biased too, my best friend in highschool was Slovenian and one of the authors, Aleš Špetič, hails from that fine country....
{ Kaizen is all about small improvements that never stop coming. With respect to Nregex, I plan to keep it moving as a project by spending small amounts of time on new features that will hopefully make it more useful. Tonight's new feature, though it was really something I did on Saturday morning, is a bookmarklet that should make it a little easier to get into the site from elsewhere (like your favorite IDE)....
{ I was just missing the old Paul Graham, the one who would write wisdom for the type of programmer that I imagined myself to be. The most recent essay, Holding A Program In One's Head, is that treat I've been waiting for. } Comments depola Sorry, I meant #4 not #5. "Test Often" could be along the lines of "Keep rewriting..." depola I would also add "Test Often". If perhaps you consider that's the same as #5....
{ Scott Hanselman was noting that many people who'd updated the locations of their tools on his 2007 Ultimate Developers Tools List had emailed or contacted him asking him to update his reference. He lamented the fact that they didn't simply use HTTP 301 redirects (Moved Permanently) which tools can easily use to update referenced links. I must confess, I was one of those people. I just lazily made a default.asp that had one line: Response....
{ I embarrassed myself today (yelling at the work desk, telling everyone I'd take them to McDonalds) but with good cause: a tool I wrote some time back made it to Scott Hanselman's 2007 Ultimate Developer/Power User Tools List. The goal of the tool was simple: to do browser based evaluation of regular expressions using the .NET engine. Prior to writing it I would frequent Rexv.org but because the engines supported there were different, I'd usually have to do some conversion to get things to the ....
{ Although it's an older essay (November, 2004), The IDE Divide made for some good Sunday reading. Not only is the author, Oliver Steele, engaging but his visualizations are exceptional. I'd like to think of myself as a "language maven" - that is a person who puts the emphasis on language capabilities before tools - but I know that growing up in the Microsoft world as I did, I understand how big of a difference good tools can be....
{ Some time ago Jason Kottke posted an entry for which quite a few people bashed him about unnecessary database normalization. I've thought a lot about it since it represents some of my own internal sentiments and instincts. The two things I observe on a regular basis that I find annoying are bad naming conventions within databases and unnecessary complexity because of overzealous normalization. It's hard to have an argument discussion on the topic with people lacking experience because the penalties for bad normalization are usually paid in the long term whereas the "...
{ For the longest time, my approach to update/insert logic has been the following: IF EXISTS(SELECT...) BEGIN UPDATE... END ELSE BEGIN INSERT... END So courtesy of .NET Kicks this gem was very informative which is the same logic but with a cleaner approach. Instead of selecting records first, you attempt to do an update and check afterwards if the @@rowcount is greater than zero - if not the record doesn't exist so you can move logically to an insert....
{ I was looking over Justice Gray's post on becoming a better developer in 6 months and noticed that he had listed Freidl's Mastering Regular Expressions as a one week reading project. I'll preface my comments by admitting I am not the quickest read - unless I'm reading something I don't particularly care about I tend to go it slow no matter what the subject matter. However. Not really thinking of connecting the dots I checked in on Jeff Freidl's blog and digging around saw it took him 2....
{ I had posted about the set operator in Python with some questions. All that changed today when I wrote a little script to remove duplicate lines from a file. The set operator takes a list and automatically gets rid of duplicate items. Very useful for situations like this: #!/usr/bin/env python f = open("c:\\temp\\Original.txt") f2 = open("c:\\temp\\Unique.txt", "w") uniquelines = set(f.read().split("\n")) f2.write("".join([line + "\n" for line in uniquelines])) f2.close()...
{ One of my weaknesses is that I love puzzles. And once I'm puzzle solving, I usually dwell on the problem beyond its worth. I recently saw a job ad - I'll leave this post disconnected - that had a quiz associated with it. The quiz amounts, basically, to shuffling items in an array (javascript). My first stab was intuitive, but I wonder if it's the most optimal because it relies on a lot of discarded data....
{ I'm taking a serious look at CodePress. Very, very, very cool. } ...
{ I pretty much broke down after TechEd. I thought I'd be patient enough to wait for Ruby but because Python is most mature I have started to learn it, whitespaces or no. The first thing I did was check out Guido van Rossum's tutorial for programmers, which was an excellent first step. I've followed that up with some random programming - a lot of fun so far. I was wondering about the set operations in python and how that made a difference in programming since there aren't syntactical equivalents in ....
{ I probably won't be officially "tagged" but a meme is going around about what one would do in the next 6 months to become better. Hanselman, in his podcast, spoke of a few things and the responses seem to be going up around the blogs. How will I be better? Most of the things people mentioned are things I already try to do: reading technical books, working on my software, looking at open source, training others....
{ I never mind a long drive with a podcast. A few days ago I listened to John Lam on Dot Net Rocks. I'll admit that sometimes the DNR people can be annoying to me (think Richard Campbell saying over and over like it's a joke "Managed JavaScript??") but it was all worth it to hear some of the internal goings on with the Iron Ruby project. Gleaning: Iron Ruby is a ways off....
{ A security issue prompted my ISP to change passwords for all users. Normally, this wouldn't be a problem - I'd go to my repository of code, divided at present by year in a "Code05," "Code06," "Code07" format and update a constant in my Constants class and *presto* the connectivity would be back. Problem is, what if I have to go back more than 3 years? I'm usually not that irresponsible....
{ It's strange that I've had a long relationship to Apple's products - or perhaps not if you're a believer and consider their reach unremarkable... Growing up in Nairobi, a missionary's kid next door had an Apple IIc he'd occasion to let me use (more often I'd simply watch him using it). A few years later, I spent time in my high school computer classes using Apple IIe computers - for the most part it was typing but I had moments of the extracurricular....
{ John Lam reports that Steve Yegge revealed a Javascript implementation of the Rails framework at this weekend's "Foocamp." Having just finished Yegge's most recent post Rich Programmer Food this weekend, and following his NBL (Next Big Language) post from a while back, the dots seem to be connected. It seems early even among technical blogs but I suspect information will start to seep out in the short future. } ...
{ I didn't manage a blog post during TechEd but I'll take a stab at a few things that have swilled in my mind since then. The first thing I've been working on is understanding NDepend, the tool for static analysis. I went to a "Birds of a Feather" spearheaded by some folks from Corillian and had to keep my mouth shut tight so as not to look a fool. Luckily many of the folks there were like me: they knew about static analysis as a concept but were trying to figure out how they could make good use of it....
{ After a weekend with a virus, and a horrible waste of time, I've got a clean installation of XP. The upside was that it forced me back to the iBook G4 that's been a little lonely without me. } ...
{ This programming personality test was interesting. Your programmer personality type is: PLSC You're a Planner.You may be slow, but you'll usually find the best solution. If something's worth doing, it's worth doing right. You like coding at a Low level.You're from the old school of programming and believe that you should have an intimate relationship with the computer. You don't mind juggling registers around and spending hours getting a 5%...
{ All I can say is that I'm loving powershell right now. Hopefully some more goodies will ensue upon this blog but if you're learning like me you can get a free book by leveraging the full length help that is offered on objects. You can print in the following steps: Get the cmdlets and send the documentation of each to its own file: get-command % {man $_ -full >"C:/Power/$_.txt"}...
{ Going to Party with Palermo tonight. Looking forward to meeting the jedi and getting TechEd started right! } ...
{ Via Mads I watched Douglas Crockford present on quality in software development. I posted before on some of his excellent javascript tutorials, this is on par with them. While he's done a good job of granting some ideas in making software quality better, my train of thought goes towards my own workplace and how we can make information like that actionable. } ...
{ Who are the alpha geeks out there? According to many, there are none outside of Microsoft using Microsoft tools. Ergo, I must be excluded unless my night sessions with perl in Komodo somehow grant me reprieve... very doubtful... but rather than bristle and come up with examples of people who are accomplished and effective while not being on Microsoft's payroll I'm prompted on a different question: how do we define "...
{ Catching up on my aggregator yesterday I saw that Dare had posted about Sun's response to Silverlight: their own rich internet application (RIA) framework to supplant (though the politically correct answer is not that it would, it's just a "new opportunity") some of the Web 2.0/AJAXish things that have been popular of late. Mary Joe Foley presents a noncommittal analysis and Sam Ruby points to a few resources. I went to Sun's page and although it seems like a real enough project the fact that it's applet based right now (and far slower than the Silverlight beta in installing) seems to point to it as an unfinished thought....
{ It wasn't until this morning that I had a chance to look at John Lam and Jim Hugunin present onthe DLR at Mix. My response is a mixture of giddiness and shock - appropriate I hope for a programming language geek like me. Lam begins the presentation by writing a "simple" application with a mixture of C# (an onscreen button), with its click event handled in Ruby, obtaining parameters from Visual Basic and making a call to a Javascript function....
{ Yeah, there felt like a little impedence mismatch in Scott Hanselman and the Mike Harsh describing Silverlight - ironically Scott being more excited than Mike who actually worked on the project. Let's allow for Mike just not being a visibly enthused sort of person - Microsoft posted a graphic that is meant to be a resource on understanding what we're dealing with - sans (screen|pod|video)cast it's still not quite the nuts and bolts....
{ I'll catch up with the keynotes later, but I'm monitoring the blog which seems to have a lot of good stuff. } ...
{ Dreaming in Code author, Scott Rosenberg is interviewd on IT Conversations here. You can impress your friends that you "read" his book even if you've only heard a few ideas. A recurring theme is just how hard it is to write software - a good reminder for me since I have frequent bouts of self doubt that is unwarranted. It's not just hard for me, it's hard for everyone....
{ John Lam has let part of the cat out of the bag - the "new" thing he alluded to a while back appears to be linked to Microsoft Silverlight, what seems on the face of things to be a rebrand of WPF/E, an attempt at a Flash killer. The programming details will have to wait for Mix 07, but for now the buzz should start. It's ironic that a matter of days after Paul Graham declared Microsoft "...
{ I've previously identified perl as my "night language." In other words, I'm hacking away at it in the off hours trying to get better. Maybe, just maybe, I will find a way to get paid for writing perl code. As of now, however, I write C#/.NET code to put food on the table. As an exercise in perl, in order to demonstrate how fast it is, I wrote a small script that would count the number of lines of code I was responsible for last year....
{ A while back I made a property code generator I called t3rse::proper. It was an exercise to solve a problem I'd had as well as write something useful entirely in javascript. I've added a few new features to it that will hopefully make it even more useful in future: 1. Custom Shortcuts Proper allows shortcuts for common datatypes - for int you simly type i_ and the same is true for bool (b_), string (s_), datetime (dt_), as well as a few others....
{ For a while now I've been a subscriber to Simple Talk, an excellent magazine/website put out by the folks at red-gate Software. They are offering two incredibly dense PDFs with the best stuff from the SQL Server Central website for FREE. If you use SQL Server in any form, it's a great value for nothing. red-gate makes excellent tools as well - we use SqlCompare to synchronize development and test databases regularly....
{ PingMag again with something very interesting for all of us. } ...
{ I read Paul Graham's essays out of habit these days; I loved the earlier gems concerning matters of being a Great Hacker and even though less and less of what he says is designed for people like me, I still read them hoping for something special. Something inspirational. The current essay, Why To Not Not Start A Startup, is geared towards people considering as much. Among Graham's many ideals for the person starting a company, a recurring theme revolves around youth and freedom....
{ Tim posted about trying to explain Yagni on Twitter and after looking it up I realized it's something I've tended towards without having a vocabulary for it - you know that sense when something is so familiar that you think there's got to be a technical term for it. And a person need not be an "Extreme Programming" proponent to see the truth; I have a Yagni moment almost each day when a person asks a question about how to do something and I'm more bothered with the question (why on earth would you do that?...
{ Just a quick note from a late night's coding session, something that I sort of knew but finally got fed up enough to begin implementing everywhere. I'm working on a fairly large Windows Forms application and one library devoted to safe type conversion is filled with methods like this (yes, could've used Int32.TryParse, I'm not the original author though... ): private int ToInt32(object val){ int ret = 0; try{...
{ This spot about medieval tech support is hilarious. } ...
{ I recently finished Moneyball, Michael Lewis's tale about general manager Billy Beane, the Oakland As, and the sport of professional baseball (note: I'm African and knew nothing about baseball for a long time - but after a few years playing fantasy online, I'm a major addict; it's hard to love math and hate baseball). What's special about the Oakland As is that as a small market team with nowhere near the financial resources of a team like the Yankees or the Red Sox, they do quite well in the major leagues - better than many of the money-rich competitors the play....
{ Derek Slager, whose background sounds a lot like mine, makes a case for using Emacs as an editor. It makes me think of two occasions: first, when I guffawed at James Gosling saying that his favorite IDE was Emacs, and then later on when I was teaching a .NET development class at Countrywide and a person sitting the class (graduate of UPenn) sneered at using Visual Studio .NET and instead opted for Textpad (he hadn't used it before but still leaned towards a simple text editor and his ability with the command line)....
{ People I work with are always amused by my excessive use of "foo" in naming things while I do examples or sketch out ideas. I was equally amused with Hanselminutes 55 which I can roughly quote here: ... so once you've got your foo class accepting a bar class and more likely it's going to be accepting a IBar interface... foo depends on bar which depends on blah and yada ....
{ Here's something for the radar: Greg Wilson and Andy Oram have a forthcoming release (wow, I sound like a radio DJ) from O'Reilly entitled Beautiful Code: Leading Programmers Explain How They Think. If the title isn't seductive enough, a look at the essay authors should be - including Charles Petzhold, Yukihiro Matsumoto, Douglas Crockford, and Elliotte Rusty Harold amongst others. } ...
{ Josh McAdams, the guy behind Perlcast, is interviewed over at ClearBlogging. Buried in the interview is the answer to something I've always wondered: his mellow southern accent is from Arkansas. } ...
{ Creating shortcuts on textboxes is none too difficult in Javascript, but (and don't get me wrong - I love Mr. Flanagan) the Rhino book is a bit abstruse. I was adding this functionality to my night project and pared it down to: function handleKeyCommand(event){ var e = event window.event; // Key event object var kCode = e.keyCode ¦¦ e.which; // What key was pressed // I am trapping Ctrl+e (69) here...
{ Imran observed not too long ago that one proof of the difficulty of finding "quality" developers was that he (or she) was encountering a shocking amount of failure among applicants to write code that solved even simple problems. This was picked up for comment by Raganwald, Atwood, and even Hanselman. I resisted the urge to write up a solution but after that much buzz I thought there's got to be a catch....
{ Royal Pingdom did an analysis of what "popular" sites are running beneath the hood (as easy as a query at Netcraft). Royal Pingdom reveal themselves as a certain "persona" (yeah, I'll overgeneralize for now) by their choice of sites: Technorati, Meebo, Feedburner and so on. It probably isn't surprising that most of these sites run on Linux with Apache and MySQL involved somewhere on the back end. I'm surprised (of course I'm not in the LAMP game though) to see a bit of a surge in the use of Lighttpd - a more lightweight serving engine than Apache....
{ A few weeks ago our client began to report errors with our Windows Forms (.NET 2.0) application when she'd retrieve certain records. It was a strange bug that would hang the program for about 60 seconds and then crash without reporting errors. We could reproduce it on the test machine, but in development even while pointing to the same database, everything worked. Perfectly. I looked in the Event Log and noticed the following error:...
{ // get calling assembly settings classstring assemblyName = System.Reflection.Assembly.GetCallingAssembly().FullName; I had used the above in my previous code sample to retrieve the assembly name before obtaining settings from the config file. It works only if you are attempting to obtain configuration information from a library that is called by an *.exe. But what if you are in a library (*.dll) and you are using another library to read configuration information as I'd planned?...
{ A while back I complained about configuration within Windows Forms applications, mostly because I lacked an understanding of the API. I hacked a simple xml file together wherein I could store simple name value pairs that we'd utilize for the application and surprisingly it's been the approach for quite some time. I've been studying for the Microsoft 70-552 exam which would update my "MCAD" certification to "MCPD." I know, I know, certification is frown upon by so many people who think I should really be reading The Little Schemer to do cool parlor tricks....
{ Hilarious. } ...
{ Jakob Nielsen just updated his list of top ten mistakes a web designer can make. I've got no clout like he does but my number one annoyance in web design is when people work against the browser. The best example of this in my mind is the back button. On so many projects I've had "issues" submitted related to the use of the back button and had to write code to try to cheat the browser into not allowing its use....
{ I'm fortunate enough to be sitting in on some training and the ice breaker at the beginning was to say which language one liked the most. Most in the room went with what they use for work, C#, but of course I had to break the flow and say I prefer Perl and Javascript in terms of raw language more than anything at the moment. Talking about it later I brought up the old Sapir Whorf notion of language affecting thinking and problem solving and it's funny how you have a thought and seems to start jumping out at you all over the place....
{ Microsoft's Vista Ad - quite a contrast to the Apple commercials. To the degree that commercials evoke a sense of a company's ideals, it's telling of something I've always thought of when comparing Microsoft to others - they are trying to solve harder problems than the home movie or virtual greeting card. Of course, they could just be playing to my ideals and trying to make money out of it....
{ I'm just echoing the words of Chris Sells's post to vote for Hanselminutes on Podcast Alley. It's my personal favorite among technical podcasts. } ...
{ I recently had to set this up and didn't find all too many resources online. I don't have time for a full commentary but suffices to say this: SQL Server 2005 has some excellent reliable messaging capabilities through what's called Service Broker. If you, like me, are a complete skeptic when it comes to new products, this is what I think of as a compelling feature. In the following example, I'm setting up a queue for FileIDs - assume these are identifiers for files that need to be processed asynchronously....
{ Imagine being able to pull Anders Hejlsberg, Chief Architect of C#, Herb Sutter, Architect in the C++ language design group, Erik Meijer, Architect in both VB.NET and C# language design, and a programmer's programmer, Brian Beckman into a conference room and have an hour's worth of conversation on programming languages - to hear about composability and functional programming and abstraction from people whose decisions literally shake our world from the top....
{ Some time back I read Charles Petzold's essay Does Visual Studio Rot the Mind which concerned itself with some of the negative aspects of how our tools drive us rather than us driving our tools. It's not just a handful of occasions where I've been called over to "troubleshoot" when a person's intellisense (or autocompletion) isn't popping up what they are expecting. But Visual Studio does impress upon you the wrong ideas sometimes....
{ I'm looking forward to reading Jessica Livingstone's book, Founders At Work, which consists of interviews with various techie entrepreneurs. Joel Spolsky's interview, however, is available as a freebie and makes for some interesting reading. I've been a Joel "fanboy" for a while but it still impresses me how each time he writes (or comments) at length there's so much truth from which to learn. There are several other interviews I'm looking forward to reading, particularly Philip Greenspun's on the making (and possibly breaking) of Ars Digita....
{ A good way to get attention in the programming blogs is to draw a distinction between "good" and "mediocre" programmers and allow developers to question whether they can consider themselves "good." Atwood posts that you're either good or mediocre at programming despite the amount of practice or effort you may decide to put in: "A mediocre developer can program his or her heart out for four years, but that...
{ Mads Kristensen posted about retrieving items from the querystring by a series of checks against nullness (is that a word?) and type values. His starts with: if(!Request.QueryString["foo"] == null){ // do interesting things } Continues with a little more elegance: if(String.IsNullOrEmpty(Request.QueryString["foo"])){ // do interesting things } Finishes with a check on type integrity during the querystring check: if(!String.IsNullOrEmpty(Request.QueryString["foo"]) && Request.QueryString["foo"].length == 5){ // do interesting things } I like seeing things like this because it's interesting to look at how someone does something I do all the time with a different twist....
{ Just finished a Wired piece by Fred Vogelstein on how Yahoo fell behind Google. There's more detail in the tell but in a nutshell it boils down to a comment Joel Spolsky had made on his Venture Voice podcast: non-technical managers and CEOs are the doom of technology companies. Or, in the closing paragraph of Vogelstein's article: "At Yahoo, the marketers rule, and at Google the engineers rule. And for that,...
{ A while back Aaron offhandedly shows me a slick trick with Firefox when I'm complaining about how it doesn't show namespaces on xml documents: you can use view-source as a protocol to look a website's source code. If you've got Firefox, check it out. I've been making my way through the 5th edition of the Rhino book and Flanagan shows another technique of using your address bar with a protocol....
{ Jeff Atwood posted recently about certification, coming to the following conclusion: "I don't believe in certifications. The certification alphabet is no substitute for a solid portfolio; you should be spending your time building stuff, not studying for multiple choice tests. But that doesn't mean they're worthless, either. I don't think certifications get in the way, as long as you can demonstrate an impressive body of work along with them. "...
{ Because I'm in C# all the time, my Java is passable with effort, but not pristine - like a Norwegian's use of Swedish or a Portuguese person required to use Spanish. But there's good reasons to hang onto that Java; it seems like Google interviews may require rapid prototyping in the language. Most algorithms are language agnostic (save the ones that leverage language features (think functional)) but it's also interesting to see that quick deployment of those with optimizations seems to be a part of the process....
{ I'm excited that next week I'll be in Los Angeles. I got the opportunity, along with some other people from Daktronics, to attend Developmentor training on Biztalk. Tonight I was going to watch a Biztalk presentation from TechEd but got a little sidetracked watching Douglas Crockford's excellent javascript presentation on the DOM. Although the presentation is about the DOM which a lot of people think they know and understand, Crockford adds a lot of historical and insider information about how browsers work and what implications that has for writing DHTML....
{ I've been between libraries... did I post this before? Probably... anyway I've tinkered with Yahoo!, Prototype, and jQuery thus far and have yet to decide which poison is best or whether I roll my sleeves and reinvent the wheel a bit. Anyhow, today I learned that Adobe Labs has released Spry - Yet Another Javascript Library out for public consumption. No time to dive in tonight but the documentation looks pretty good....
{ I'm working on t3rse::proper to allow custom shortcuts but discovered a bug with IE 7 when using the appendChild method of an element. It will take a bit more time to nail down specifics but try the following: var tr = document.createElement("tr"); var tdchar = document.createElement("td"); var tdtext = document.createElement("td"); tdchar.appendChild(document.createTextNode('foo')); tdtext.appendChild(document.createTextNode('bar')); tr.appendChild(tdchar); tr.appendChild(tdtext); // you need some table with the id as testTable document.getElementById("testTable").appendChild(tr); Pretty straight forward and does _not_ work in IE 7....
{ ... which means in Swahili to "be excited." It's interesting to me how Apple is so good at generating a buzz and feeding the frenzy of their users. My boss is using Vista right now on a brand new shiny laptop but no one is gathering around the machine to say "ooh" - but I guarantee if I had an iPhone in the cub area people would be crawling over each other to have a look....
{ Perhaps not war, but there seems to be an upswell in the JSON versus XML discussion. JSON as many describe much better than I do is a javascript object literal you can return directly to a page along the lines of: {"name": "David Seruyange", "age":31, "preferredLanguages": ["C#","perl", "javascript","ruby"]} If you type a lot, you can do the same thing with an xml style of notation, something along the lines of an element person, nested element name, nested element or attribute for "...
{ One thing that gives me delight to no end is making tools that help people around me. I guess that's why I'm a software developer. Or, I guess, that's why I enjoy being a software developer. I've worked on a few types of code generators to date, the idea of course being to save time when people have to do repetitious or monotonous tasks. Another big idea I've had was inspired by David Heinemeier Hansson's talk at Carson Workshops where he talked of the notion of convention over configuration (linked here in the context of spring, but a general enough design pattern)....
{ Time magazine selected "you" as person of the year with their definition of "you" encompassing people who posted user-generated content on the web. I wanted to pay tribute to all of the "you" out there who inform, motivate, and inspire me. My list is limited since I usually hit dozens of websites each week, but this is a list of the people who regularly reeled me in during the last year:...
{ Steve Yegge's last post couldn't have come at a better time for me; I've been having a lingering feeling that I'm stuck in the mud, working too hard and having bad ideas. So how do you make yourself a superstar? Never stop learning. I've heard people say they think this position is a crock, that it's ludicrous, that you couldn't possibly spend your whole career learning new things. But I think differently....
{ Don't get me wrong, it's not a jihad I have against the foreach in C#, it's just the fact that if I had a nickel (okay, a quarter to be realistic) for each time I changed a foreach to a normal for loop because I needed to track my position as I iterated through a collection and no underlying index was provided, I'd have enough money for coffee each week....
{ I am feeling my way around with CGI using perl so I took Alan Perlis's epigrams on programming and randomized them. I think it will be my new homepage. } ...
{ I'm quite fond of the different calendars with tutorials this season. From my first glances at this year's 24ways I should learn as much as I did last year. I also was delighted to discover the perl advent calendar. Any other decent holiday calendar/tutorials? } ...
{ Usually what Joel says is treated like gold by many developers, myself included. In a recent post he berated Om Malik for using a lego metaphor in describing how easy it was for startups to create software while paying homage to Fred Brooks's essay No Silver Bullet: Essence and Accidents of Software Engineering. Joel cleverly adds context to his comments by referencing a Business Week article from the early 1990s that uses the lego analogy with the idea of object oriented programming....
{ Daring Fireball had me in stitches with the following paragraph on his colophon: "If Daring Fireball looks like shit in your browser, you’re using a shitty browser that doesn’t support web standards. Netscape 4 and Internet Explorer 5, I’m looking in your direction. If you complain about this, I will laugh at you, because I do not care. If, however, you are using a modern, standards-compliant browser and have trouble viewing or reading Daring Fireball, please do let me...
{ Dan Appleman, best known to me for his exhaustive book Dan Appleman's Visual Basic Programmer's Guide to the Wind32 API has had a sputtering blog over the last few years. But recently it caught my eye because Appleman has created SearchDotNet which is a customized Google search engine for .NET sites. It's nice to search for something like "Dictionary" or "Parallelism" and get relevant code despite the concept crossing language and platform barriers....
{ It's been around for a while but this powerpoint (linked directly as a *.ppt) is a presentation from Marc Lucovsky about the development process of the early iterations of Windows NT to Windows 2000. Interesting things: + NT 3.1 was ~3 years late (I'm not feeling so bad about being behind on my current project) + The original team was only 6 people from DEC. That's astonishing. The eventual development team size was 200 with 140 people on the test team....
{ Comparison notes here. } ...
{ Joel Spolsky is so popular that I'm sure upon his mention of "Compilers: Principles, Techniques, and Tools" - the so called "Dragon Book" - interest and sales must have shifted a little. In this week's Software Development Times Larry O'Brien clarifies with a few resources including Modern Compiler Design, and Programming Language Pragmatics. Because I'm not classically trained, I find myself with significant gaps in areas like this (compiler construction, algorithms, etc....
{ Did I ever post that unit testing is hard? It's hard. I'd love to see it in action at other shops since we've got so much to learn. But let's tally the score of the moment: It's about 10 minutes to midnight and I've been working my way through someone else's code. This code is a piece of a separate assembly that does validation of a whole bunch of business rules before a person can process a loan application....
{ The beauty of blogs, in particular this one: I can flaunt my ignorance on any given area. A few nights ago I thought I'd update my current development project to have its connection string maintained in a config file so that it could be changed without a recompile in a single location. I knew this was the approach we'd eventually take having used it like breathing on all of my previous ....
{ I'm having an evening when I can't believe what is wrong with me because something that should be trivial is giving me hell. Our application has had connection strings littered all over the place - okay, 8 to be exact and I know this because of my frequent usage of "replace in files" to toggle connection strings. But we're at a point when this needs to be centralized and mutable without doing a new build....
{ Larry O'Brien, well known Jedi Master of many things development posts: "I have to wire up a ColdFusion to an Axis Web Service. I've spent the past 3 hours trying to figure out freaking classpath issues: something about a ClassCastException from a org.apache.commons.logging.LogFactory. I'm giving up for the day. Stupid freaking classpaths." I can remember sitting in my one room apartment above a garage in Whittier fighting with classpaths, trying to wrangle them into my understanding of Java....
{ Reading Joel Spolsky and others on the hring process is always interesting. One aspect of their writing that has always intrigued me has been the "quiz questions" used to get a feel for the interviewee's level of intelligence. Lately I've been interviewing people regularly and am slowly coming up with a format that gets me closest to a person's technical level as it pertains to our company. I usually ask a person to rate themselves on a scale of one to ten in three areas:...
{ I clash with people occasionally over my approach to SQL Server. My approach to SQL Server is quite simple: Transact SQL. Never one for layers of abstraction and always seduced by speed, I prefer to keep my management activity in Query Analyzer. SQL Management Studio seems a bit slower than its older cousin, so quite often I prefer Query Analyzer even with the brand new SQL Server 2005. Often times for me preferences like this develop after bad experiences but today was a reminder of what kinds of things a layer of abstraction is capable of doing behind your back if you don't monitor it....
{ Chris Sells answers a few questions in public but one comment got my attention: How are you able to keep up with the changes? What books do you read? [csells] I keep up with changes by a) a broad familiarity with as much technology as possible and then b) committing to using it because it feels like it’ll be the right thing and c) using fear to motivate me (recognize a pattern?...
{ My current project at work is a Windows Forms application. Even though I've been programming .NET almost daily since it's introduction, just about all of what I've done is web based programming using ASP.NET. The non-web code I've written has been for the most part libraries (DLLs) to use in web apps. Most of what I know about thick clients comes from doing work in Visual Basic 6 so while I usually know where I'd like to go with something, I find myself hitting a wall with how to do it in VS 2005....
{ I got David Flanagan's new Javascript Reference earlier this week. My fourth edition is nice and worn, but it will be nice to have the updated perspective since so much has happened in internet time since the fourth edition was published. It's the third edition of the book that I've owned and while buying the same book more than once has a big psychological drawback, I'm especially looking forward to reading the sections on the XmlHttp (AJAX) side of javascript....
{ For a while I've had people ask me how I did my photoblog and because I wrote it from scratch it's not really useful (and it's definitely "Me-ware": unusable to just about anyone but me). I always direct people towards Flickr but it doesn't have the photoblog experience quite like mine and other photoblogs. This weekend I've been writing a tool called Flickr-Fu that grabs the RSS feed from Flickr and attempts to simulate the photoblog experience allowing a user to navigate forward and backward one photograph at a time....
{ I had posted about Yegge's Agile/agile essay, trying to follow some of the interesting comments that ensued on the web. I made the following comment about Raganwald's response: "Raganwald has the most interesting response I've seen so far: that it all comes down to people over process and a good team will succeed despite methodological strategy. " He has since posted an elaboration in response on his blog - I was a little off in my reading:...
{ Here was an interesting issue we ran into this week. I haven't run into this before and thought I should share - a friend was using a subquery to filter and because of NULL results in the field his result was an empty set. My approach to things like this is usually to use a join rather than a subquery and ultimately that's how we saw how Microsoft SQL Server was processing things....
{ Steve Yegge has a post about the agile software development process. Gifted in wit and sarcasm, Yegge doesn't spare many punches in basically saying that "Agile" as is known as a process is basically about marketing and making money for consultants. He contrasts this with a lower cased "agile" which is what he believes Google (his employer) practices and others should. A lot of comments seem to be coming back - resistance to Yegge's comments over at The Mindset because (and I agree with this) some of the things that are true for Google (working without deadlines) just can't be true for the rest of us....
{ Most places I've been people would nod and look at you with disdain. But I can't think of a person I've met that is as rigorous as this. (Courtesy of CodingHorror) Testing seems to have less to do with technical proficiency (what gets you the initial result) and more to do with tenacity. I'm hoping it's like a muscle too - the more it is exercised, the more anal retentive I'll become about the lengths I go to check my work....
{ A good essay I finally got to last weekend is Eric Sink advocating code coverage. Code coverage is simply understanding how much of your code is executed within your application. For people like me who start off by sketching, revising, and honing their work, I'm sure an analysis of parts of dead code would be quite revealing. But there were two other peripheral things about this essay that were very interesting to me....
{ First it was Scott talking about his Visual Studio environment and then it was Jeff posting some of his own settings and a website to download customized VS.NET Environment settings. I'm usually a bit boring when it comes to things like this - I used to like the courier font at 10 or 8pt since I'm used to laptops with next to nothing in coding real estate. Otherwise everything was default....
{ I've worked on lots of projects but never been in a position to push everyone to have a unit test for all the important pieces of the application. Pushing for unit tests makes me feel like the resident nag, especially when it goes beyond making the proclaimation that we'll approach the project in this way and leads into my sitting down with people pointing out code that seems to work but isn't covered by any unit tests....
{ After spending a long time without having the ability to impose "testing" in the projects I was working on, I'm now in the position as lead developer to make testing a part of our development process. Last week I went back and forth with either using NUnit, which I'd be more inclined to do on my own versus Visual Studio Team's built in testing capability. I chose Visual Studio just because it would be easier for team members to get to; I can't look over everyone's shoulder and force them to write tests but I can make it as easy as possible to encourage the behavior....
{ Joel Spolsky has a new job board. } ...
{ When I was teaching I'd love to ask a person to give me an explanation of a technical concept as though I was a 13 year old. It's easy to memorize the acronyms but it's much harder to unpack them, especially with enough understanding to simplify them for people that have no assumptions with respect to the concept. Ryan Tomayko, in this case, has done an amazing thing: read along as he explains REST to his wife (who we may assume as an intelligent but non-technical person)....
{ There is a saying among Africans: "When two elephants fight, it's the grass the suffers most." But fortunately this doesn't apply to the web; when two giants go at it, we get to tune in and watch the blow for blow, entertained. On Friday Joel Spolsky published The Language Wars, in which he discussed an approach to picking a language/platform for application development. I believe his point had more to do with picking a well trodden path for a development project, as well as having an architect with lots of experience with your chosen platform/language....
{ David Pogue, tech writer for the New York Times claims (follow up here) that perhaps the reason that there are so many Wintel vs Mac computers in corporate America are because IT folks just want to keep their jobs and the viruses, spyware, and a defective Microsoft operating system help them. A corporate environment with Macs and fewer issues would, according to his logic, result in less work, a smaller budget, and a smaller IT staff....
{ On and off I've been messing around trying to get Watir to work on my machine. The gem installed properly based on the instructions given to simple go to the command line and use the following: gem install watir But when I tried to execute a simple test I got the following: uninitialized constant Watir ./watir.rb:6 c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:21:in `require' C:/CODE06/RubyStart/WatirTest.rb:7 ./watir.rb:6: uninitialized constant Watir (NameError) from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:21:in `require' from C:/CODE06/RubyStart/WatirTest.rb:7...
{ I love a good podcast. I started as a very regular listener on IT Conversations and have since drifted around looking for quality material. IT Conversations started with a lot of good content but it seems as though of late its drifted into MBA type material which is a bit vague for me; I prefer good technical podcasts. Some places I've found myself consistently happy: 1. Hanselminutes - great coverage of the ....
{ I posted yesterday about the speculation going on about their folding. Here it is from the proverbial horse's mouth. } ...
{ Via Raganwald, there is a small post on how smaller teams make better software. There is a nice balance between the need for methodology and the idea that people matter most. Agile thinking indeed. } ...
{ ... will they get up? Buzz is all around since the Y-Combinated Kiko is folding and being auctioned off. I was interested in what looked like a blog post retrospective of the whole thing until I realized it was just someone speculating, not the kids from Kiko writing about what happened. Truth be told even though web calendars are interesting software, I really don't use them. I used Kiko a few times just to see how it worked and was impressed with what it seemed to take programmatically....
{ I'm late to the party once again; I discovered Steve Yegge just recently and ran across his essay "Execution in the Kingdom of Noungs." Yegge is a great writer and I can see why the essay recieved a lot of attention. Yegge basically asserts that Java is a kingdom of nouns; a language which focuses on things (objects) which he parallels as "nouns" over actions which he parallels as "...
{ Older news is that Joel posted an excellent essay called Can Your Language Do This? where he walks through some of the basics of passing function references around in Javascript. I'll beat my old drum and say that Javascript is an intricate, powerful language. The timing for the article is great because I'd just recently used function references as an approach to handling some client side script that needed to be synchronous....
{ I've been wanting over the last few days to post Scott Hanselman's step by step tutorial on how to contribute to the DasBlog open source project. This weekend I had a chance to go over it, albeit without duplicating the steps - I'll do that soon enough. It's always seemed a little sad to me that those of us working primarily with Microsoft development tools aren't as given to collaborating on anything that is either outside the scope of normal work or commercial effort....
{ Posted by Snowball. I'm posting it for some future date when I have time to poke around... } ...
{ Comparison is made here. The use of Subversion on Google Code makes it appealing to me since I was planning to use Subversion for my home brewed projects anyway. } ...
{ Courtesy of John Lam - some of the greater fish in the sea of programming answered some questions on Sztywny Blog: Sometimes you don't know whether a compliment is a compliment. Linus Torvalds says Visual Basic did more for programming than object orientation. For example, I personally believe that "Visual Basic" did more for programming than "Object-Oriented Languages" did. Yet people laugh at VB and say it’s a bad language, and they’ve been talking about OO languages for decades....
{ Via a friend of mine, White African, InstantDomainSearch. } ...
{ An excellent online book covering the software. } ...
{ Wow, this is an interesting development: Google Code is an online project hosting/collaboration site. I'm sure they wouldn't describe it as an "answer" to Microsoft's own new project hosting/collaboration site, Codeplex, but the timing is interesting. The question that begs itself is "whatever was wrong with our old friend, Sourceforge?" } Comments best4chance This site is one of the best I have ever seen, wish I had one like this....
{ I can't get the Bad Idea Jeans SNL sketch out of my head, but I'm not sure I trust myself. At the request of a coworker, I wrote the following to show how a generic Dictionary could be returned from a method with underlying types for key/value stated ahead of time: public static Dictionary<X, G> BuildDictionary<X, G>(string cmd, string keyColumn, string valColumn) { Dictionary<X, G> myDictionary = new Dictionary<X, G>();...
{ Scott Hanselman just posted an example of a password generator in powershell. Very cool, and reminding me of Hobbitwerk:::pwd. His script, however, is 7 lines of clean code. Speaking of Hobbitwerk:::pwd, I'm surprised by how useful it's become not only for myself but for a lot of the people I showed it to. It's nice when a guy who's used to writing Me-ware makes something that other people leverage too....
{ I'm cheering for Paul Graham's Reddit minions. The Reddit concept is brilliant, and now it's spawning into some really interesting variations (have I got them all?): Reddit RedditJoel on Software RedditSlate RedditNY Times Reddit All of which are now subscribed now on my aggregator. It would be interesting to see the original Reddit code, which was written in LISP. } Comments kn0thing Thanks, David! Our master (PG) will be pleased....
{ After listening to the .NET Rocks podcast he was on covering Test Driven Development, I glanced at his blog and saw this post/rant against declarative databinding. Since the Visual Basic 5 Form Data Wizard, a lot of this automated stuff has remained beyond my liking. Well, actually that VB 5 Form Data wizard did work out really well once: I had a meeting with a client and nothing to show so it bailed me out that time....
{ bdos equ 0005H ; BDOS entry point start: mvi c,9 ; BDOS function: output string lxi d,msg$ ; address of msg call bdos ret ; return to CCP msg$: db 'Hello, world!$' end start Oh, that's just me saying "Hello World" in assembler. There's a massive list of the program to begin programs over at Wikipedia. } ...
{ Leander Kahney gushes about the little things that are so well designed in Mac software. I agree in the sense that it's small things you'd have never thought of that clinch software. I disagree that this can be applied to all Mac software; I am just now coming back from a session with ProTools, powerful software to be sure, but filled with lots of hidden menus, features, and quirks....
{ Thought of the day from the work desk: I'd rather be at OSCON in Portland. } ...
{ First spotted on the Scott Guthrie blog, there's a library of database schema models here. The world owes you, Barry Williams. Of course, most of the schemas are more like design sketches; I seem to live in a world where strange business rules seem to retard any design of elegance when it comes to data. } ...
{ The secret's already been partially out that I'm attempting to return to school to study Computer Science. Part of the requirements for the school I'm trying to attend is a program of some sort written in Java along with a personal statement. I submitted a ported variation of a program I wrote a while back in C# as a response to this blog entry. My program applies a Haar transform on an image file....
{ An interesting post from the Monad folks (make sure you read the comments) on a look at syntactical differences between Monad vs. Korn Shell. } Comments robbinshood Looks nice! Awesome content. Good job guys.» ...
{ The latest Perlcast features Andy Hunt, one of the Pragmatic Programmers, talking about Agile Programming. Although my use of perl in a professional context is limited, Perlcast is one of my favorite developer podcasts in no small part to its host, Josh McAdams - The following are discussed: 1. Pair programming Andy gives an analogy of a driver and navigator. Interesting, but I have to admit the whole pair thing has never quite had appeal for me....
{ The most recent Hanselminutes podcast is the second in discussing MONAD, or the new windows command shell. I decided to listen to the first one, published in late March during the commute and got my quote of the day: Scott: "comparing Monad to ... bash or any of the Unix shells is the difference between shooting a bullet and throwing it." Tomorrow I'll listen to part two. } ...
{ I'm not one for exhibit halls; even the "swag" is sometimes not worth having to talk to the sales people. At TechEd, I did happen upon the Sparx Systems booth and after a brief exchange with the Australian guy who was manning the booth and who was definitely a developer (takes one to know one), I became interested in their Enterprise Architect software. UML modelling for $200? Most of the tools I know of are the Rational "...
{ According to this article from "Anonymous Monk." I'd remain anonymous too if I made the claim since people tend to get passionate when it comes to Perl. My personal reaction is this: I like Perl, and I'd love to use it more, but I've only experienced evidence that supports his arguments as I've been dinking around in Perl over the last few years. Update: Interestingly enough, the direct link is now dishing out 403 errors....
{ "Functional Programming" is a term I've been long accustomed to hearing and generalizing about, but whoever is at the end of defmarco has done a great job in this essay of unpacking the basics of Functional Programming for those of us who never encountered it in an academic setting. I found it referenced via John Lam. The essay sweeps through the logic and ideas of Plato, the geniuses at Princeton who started thinking in lambda expressions, and John McCarthy's innovation at MIT of LISP....
{ I shouldn't have glossed over those "new features" ReadMe files for .NET 2.0. Today I found the ?? operator which is probably going to get me into even more trouble than my use of ?: with other developers. In short, you can test for a null and return an alternative like so: string test = (myObject ?? ""); Fritz Onion posted about its use with the ViewState some months ago....
{ His level of productivity is frightening; every time I try to relax and watch TV I get a mental picture of him furiously spitting code, or working on his next book, or presentation, or whatever. But he exposes at least one secret an online presentation: know your tools and customize to avoid wasting time. This presentation is about tools to enhance developer productivity. On his site he's got a great list here....
{ Retaliatory commercials via YouTube. } ...
{ You can watch the entire keynote here, many a good thought. Some interesting thoughts: 1. Ruby on Rails, as an opinionated framework with limited focus is good. 2. Fast development cycles are good, better than Big Design Up Front. 3. People think in the mistaken trade off of quick & dirty (VB, PHP) and "enterprise." Just because something was done quickly doesn't mean it's dirty. 4. Keep programmers and customers in close quarters, combine with quick release cycles and allow for observation of how software is used....
{ The Saturday night before TechEd I noticed a gathering online - the "Party with Palermo" - organized by C# MVP Jeffrey Palermo. This was courtesy of Google so I didn't have a personal connection with any of the players there other than knowing they were some of the higher profile attendees. The first person I got to meet was Sahil Malik; I have his ADO.NET 2.0 book from Apress but didn't make the connection at the time....
{ Everyone knows they should be flossing as well as writing their tests first. They've heard of the tools like NUnit, but they just don't do it. Take it from a guy who got drilled for several hours recently because of cavities between the teeth: it's not worth it. On a serious note, I'm spending most of my time in my current project on bug fixing. I know that leveraging unit tests and a tool like NUnit will not only make me more productive, but also trim the amount of time I spend like today fixing bugs (all day long)....
{ Caught sight of a post over at Jeff Atwood's Coding Horror blog in which he demonstrates some of the clunkiness of using object libraries while coding. His example is as follows: Let's say you wanted to generate and render this XML fragment: <status code="1"><data><usergroup id="usr"></data> He then shows the 17 or so lines of code it takes to do it with System.Xml objects and shows an alternative with Response.Write and a String formatter:...
{ Apparently it's older news - a security feature from ASP.NET 1.1 that protects the webserver from "dangerous" querystrings that throws exceptions for illegal characters like angle brackets and so on. We happened upon it when trying to pass information from a VB6 application to a web app by putting together a querystring and appending it to the target page like so: http://foo/bar.aspx?id=29oeiu&0209&wweoi9239 The garbled bit after the ? was assembled by doing a little bit of shifting of character codes....
{ John Lam's RubyCLR project piqued my interest even before I saw him at TechEd. Today was my first step to getting started, here were my steps. 1. Played a bit with a free online Ruby interpreter. 2. Got the single click installer for my own machine. 3. Read a bit of documentation. 4. Then discovered Komodo, the IDE I originally bought for Perl stuff supports Ruby and has an interpreter....
{ Seth Stevenson at Slate on Apple's new ad campaign writes: "Mr. Mac comes off as a smug little twit, who just happens to carry around a newspaper that has a great review of himself inside." } ...
{ I'm a rabid Safari user. I think they built their whole business plan for me personally... okay, that might be a bit arrogant but at least I know I'm not alone in my rampant desire for technical books and my need to constantly keep an updated library for the problems/platforms at hand. Initial thoughts: 1. They've done a great job segmenting the pages to load in pieces so browsing through books is much faster....
{ I'm not sure what day I'm on as far as TechEd coverage (a lot to swallow!) but the next session I see notes for was called "Location Solutions with Virtual Earth." It was a tour of Virtual Earth and how to write applications using the javascript library they expose in the Virtual Earth SDK. You can get an idea of what Virtual Earth looks like by going to the site: http://local....
{ Joel Spolsky writes about being reviewed by Bill Gates himself. Self congratulatory, but good nevertheless... } ...
{ Cathi Gero and Ted Neward had a session on what they call "pragmatic architecture" - the fuzzy definition of which was architecture that maintains ideals until the consequences outweigh them. It was interesting to get this high level at TechEd; most of the sessions I went to were very technical where this was a balance between philosophy and a general approach to developing software. One of the first thing they went after was the recent infatuation people on the architectural level have had with "...
{ My Tuesday morning session was with Luca Bolognese, lead program manager on LINQ, covering a slightly different flavor than what Pablo Castro was demonstrating with ADO.NET vNext on Monday morning.Luca’s Italian accent was charming, but it was even more exciting to see what LINQ does on a deeper level. He started by showing a classical problem that LINQ solves. Imagine a collection of integers which you need to filter out based on a certain criteria, something like: int[] nums = {2,3,5,7,11};...
{ An amazing session with Mahesh Prakriya and John Lam came on Monday night. Mahesh was covering the IronPython efforts for .NET and John came to talk about Ruby. It was refreshing to see the smaller number of developers practically using .NET but for whom language mattered. Mahesh gave a history of Python support in the CLR and made a case for dynamic languages within .NET. His examples were pretty cool, especially when he started with a few examples of Python:...
{ One of the best talks of this week was Pablo Castro's Monday session covering some of the new features of ADO.NET. Having used some form of data access library from Microsoft for a while, the changes he showed were fairly dramatic, and they will really impact on a fundamental level how programmers think about data access when it becomes widely available. The general direction from Microsoft seems to be giving more modelling capabilities to developers to manage in an application space....
{ The timelag on posts is due to several 4 hour nights in succession while partaking in the festivities at TechEd.Here is a quick recap of Monday. First session was WPF presented by Rob Reylea.WPF seems to be coming together more and more; Rob demonstrated new controls and old controls with new features: the listbox is quite a standout – textboxes that support spellchecking, controls having the ability to embed any other controls (button in a button)....
{ I’d been looking forward to the keynote for a while since I found out that Ray Ozzie was going to be speaking. Unfortunately his piece of things was quite small – I imagine I wasn’t the only person disappointed by this. The meaning of the keynote was the general direction and strategy of Microsoft and how we “IT people” fit into that. It made me think a lot of Macintosh ads and how differentiated the corporate strategies of Microsoft and Apple differ....
{ One thing I'm very interested in hearing about at TechEd is going to be the Microsoft Atlas framework. Ajax is haute couture and Atlas seems to be at the center of Microsoft's strategy. On my current project I took a look at using Atlas but never really "got" the benefits of the technology. The declarative side of things seems to be designed for the IDE, and without the IDE here it's a bit of a non-intuitive hassle to hand code things out....
{ I've just got to Jack W. Reeves thoughts on Code as Design in his seminal article originally in the now defunct C++ Journal, and now republished on developer.*. I really liked his thoughts and although I can't necessarily say it's been something intuitively sitting in the back of my mind, its implications are definitely something I've thought for a very long time. The basic premise of his article is stated early: final source code is the real software design....
{ I'm very, very excited to be going to Microsoft's TechEd conference this year with my boss. Now I'm counting down the days - we leave for Boston on June 10, and the conference runs from June 11 - 16. The first conference I was able to talk my way into going to was VBITS 2000, and as I think back upon my years training and consulting for my previous employer, that was among the best....
{ I think it was a bit of a rub off from me liking Francesco Balena after being very impressed with him at my first tech conference, VBITS 2000 in San Francisco, but Dino Esposito is another of those intensly smart Italian programmers living right on the edge of that Microsoft technology curve. Anyhow, Dino, in response to lots of developers like myself, wanting to get better wrote the following:...
{ In my teaching years I'd often run into people who thought they understood things that they really didn't. Today, spreading like a fire I found a series of "do you know" posts that measured levels of understanding in three technologies most people think they understand: HTML, Javascript, and CSS. Of course a personal evaluation leaves one open to questions but I think I'm doing okay level-wise. I wasn't at the top in any of the posts, but just a notch below....
{ I recently was trying to write some javascript that interacted with the ASP.NET 2.0 RadioButtonList. My first attempts at obtaining a handle to the control via document.getElementById were successful but unsuccessful. Successful in that they weren't giving me a "null" reference back, but unsuccessful in that I was not getting the selected value of the radio buttons. It turns out the RadioButtonList is rendered as an HTML Table element, with the table getting the corresponding id of the server control and the radio buttons getting id values that had an increment on the end....
{ My reading of Schneier has continued. He still proves to be a very accomodating writer; consider the following on the "One-Time Pad," a encryption scheme that can be literally unbreakable: "Many Soviet spy messages to agents were encrypted using one-time pads. These messages are still secure today and will remain that way forever. It doesn't matter how long the supercomputers work on the problem. Even after the aliens from Andromeda land with their massive spaceships and undreamed-of computing power, they will not be able to read the Soviet spy messages encrypted with one-time pads (unless they can also go back in time and get the one-time pads)....
{ One of my jedi masters, Darren Neimke, posted the following about having personal projects: "One of the questions that I always ask is for the applicant to tell me about their favorite personal project that they have going right now. It's a bit of a loaded question I suppose because of how it assumes that they do have a personal project - but that's almost my point. Having a personal project (or more than one) is a trait that is shared by every developer that I respect and so I rate it rather highly....
{ It's easy to reset a page to it's initial state in ASP.NET by redirecting to itself. Here are 3 ways you can do it: 1. Response.Redirect(Request.Path); In which the path to the request is presented in the following form: /MyApp/MyFile.aspx 2. Response.Redirect(Request.RawUrl); In which not only is the path exposed, but also any querystring parameters like: /MyApp/MyFile.aspx?foo=bar 3. Response.Redirect(Request.Url.ToString()); In which not only is the path and querystring parameters exposed, but made available as an absolute reference in the form:...
{ A coworker loaned me Bruce Schneier's Applied Cryptography. So far it's a very interesting book, and surprisingly readable. I may see if I can work my way through various forms of encryption but translate his samples to C#. Here's a version of a substitution cipher that uses XOR operations in C# (make sure you're using System.Text): private static string Cipher(byte key, string plainText) { byte[] plain = ASCIIEncoding.ASCII.GetBytes(plainText); byte[] ciph = new byte[plain....
{ Can you spot the mistake? string where = PathContext.Value += "\\" + subfolder; Another night of programming my little mistakes away... } ...
{ The most recent Mac advertisements have two guys, side by side: a chubby guy that looks like a dishevled Bill Gates and a young hipster. You can guess who represents the PC and who represents the Mac. But truth is a little bit more boring than fiction: Macs are vulnerable too. They are expensive too - I was salivating over a MacBook until I priced one out. Luckily I have an iBook courtesy of the company that I can use....
{ In our case it was a control that needed to be placed in a GridView column, but this could be used anywhere: System.Type t = AnyControl.GetType(); // the control or class of your choice object o = System.Activator.CreateInstance(t); System.Web.UI.Control newControlOfType = o as System.Web.UI.Control; } Comments megandenton38921805 Get any Desired College Degree, In less then 2 weeks.Call this number now 24 hours a day 7 days a week (413) 208-3069Get these Degrees NOW!...
{ Joel is at it again. In his most recent essay, The Development Abstraction Layer, he asserts that management at a software company should build an "abstraction layer" that eliminates all distractions from the programmers except programming. Programmers are to be cushioned in the best environment possible to think: A programmer is most productive with a quiet private office, a great computer, unlimited beverages, an ambient temperature between 68 and 72 degrees (F), no glare on the screen, a chair that's so comfortable you don't feel it, an administrator that....
{ Toby Segaran, of Lazybase and tasktoy fame, recently emitted the following on motivation: "The truth is that I don't make any money from these applications. They were never intended to be a business. I wrote them because I wanted them, it was an opportunity to learn something new, and like most people I love creating things. I determined that for less than I spend on coffee, I could put them online and share them with everyone....
{ It's a strange thought but these databases are like old friends. If you, like me, are disappointed not finding them with SQL Server 2005, and you have Visual Studio 2005 installed, navigate to: C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Samples\Setup\ You'll find scripts to generate your old friends for another round of programming. } ...
{ -- --% --% } ...
{ -- remove carriage return, line feed, and tab from a field in tsql REPLACE(REPLACE(REPLACE(MyField, CHAR(10), ''), CHAR(13), ''), CHAR(9), '') } Comments GuitarSam7 Superb!! Thank yoU!!! New blogger Life saver, thanks!! ramakrishna thanks u very much this exactly im looking for.. Deepak Giri Thanks, was looking for exactly this! :) Chad Renstrom Thanks! raj TQ very much Brent Thanks! Chad That was exactly what I have been after....
{ I first got this vibe from Jason Freid of 37 Signals while listening to a podcast from Venture Voice (I'm not that into VV; it's a bit too "MBA" for my more technical tastes - I found msyelf there only because Joel Spolsky was interviewed). This is by recollection but he spoke of simple tools designed to do a single thing well. Now, a few months out from that I see the following on Noise Between Stations:...
{ Apparently there is an RFC on naming conventions! Here is the thread is on JoS. Gadgetopia also had a thread concerning the naming of things. I've always liked more creative naming conventions, even though an argument can be made for the sensible but boring "Computer01"... type approach. My machines were named after places in Middle Earth, like Minas Tirith and Isengard. Pretty soon I'm going to have to clean things up and the new names will probably have some vague reference to Neal Stephenson (Raven, Hiro, Ng, ....
{ Eric Sink of SourceGear has an article, Yours, Mine, and Ours, about writing software that other people use. Over the years I've noticed that massive chasm in the "personal" software developers write for themselves and the software that people actually find useful. I've written lots of simple utilities for myself but it's been ever so rare that I've made something that other people find useful. Perhaps my biggest flop in this was an online link database that I had hoped my friends would jump in on and use to spread and keep those funny, cool, and useful snippets of the web that we are constantly emailing and instant messaging to each other....
{ Joel Spolsky, software pundit of Joel On Software is writing a series of articles on "Great Design." In his most recent article draft he talks about "star" products - his examples include Brad Pitt, the iPod, and the Herman Miller Aeron. Here is my short rebuttle, not because I think he's wrong, but because I think sometimes good design is boring as ever: It's interesting how iPods and Aerons always come up when it comes to "...
{ Joel Spolsky has begun a new series on design. I'm looking forward to it because I find myself having to refocus on the discipline of good design quite often. The one thing I have begun to understand about design is that in order to do a good job you've got to be absolutely tenacious. If it means *exactly* 172 pixels, you use every means necessary to use 172 pixels. Not 171, nor 175, exactly 172....
{ Most programmers hope they are smart, myself included. Especially at the chastisement of Joel, or some other pundit, we bristle defensively or let it go to our heads whether we meet the criteria of "smart" for the day. What's even more taboo is to say "I don't know" or "I don't understand." To avoid this many people broaden their exposure so that they can claim they know something of HTML because they've written a tag in notepad, or they claim they "...
{ Raganwald has an excellent essay on failure in software development. In a world where everyone seems to be talking about how programmers ought to be smart, this is a dose of reality in which we realize that the line between success and failure depends on so much more. I've been on two failed projects. Each time there's a bit of painful growing. I know I'm not alone; there's that statistic of the majority of software projects failing; but I like honesty and candor with the attempt to become better....
{ In his latest essay, Joel Spolsky has taken the gloves off for a rant against what he calls "Java Schools"; schools that use Java as the implementation language for various Computer Science courses. Joel's always been a point of love/hate for me: I love his writing style, his lack of fear in pointing out what's wrong, and how he's been a good model of the loud programmer that pisses people off, but who is, more often than not, right....
{ Each year, as many people gear up for their New Year's resolution that they will ultimately fail, I make my own doomed promise that this will be the year that I become proficient in perl. As the year wears on I get more engrossed in project work and "lose" time. Or I work on my own pet projects which I can prototype and finish so much more quickly in C#, or whatever else I know well....
{ 24 ways is a new way to countdown to Christmas: web development tricks to impress your friends. This is worth a little application. Now the trick is just to apply some of these techniques instead of just linking to it. The gnome behind it all is Drew McLellan. His blog is phat too. } Comments shawnerickson78567954 I read over your blog, and i found it inquisitive, you may find My Blog interesting....
{ I'm used to the align attribute, but my recent CSS conversion has me doing things a bit different. Instead of table align="center" I've discovered the same affect with: margin-left: auto; margin-right: auto; } ...
{ What does WinFX bode for smallfolk like me? At this point I'm given to think of Visual Studio 2005 and what sort of placement it will have in the product. I haven't done deep digging, but something tells me a WinFX designer is not going to be a part of Visual Studio 2005. It goes back to my wariness of the concept of a "release cycle." Microsoft will reap another set of good earnings from a forthcoming release of a Visual Studio 2006 (or whatever) that has a WinFX designer for Vista's windowing system....
{ What directory am I in again? string dir = System.IO.Path.GetDirectoryName(Application.ExecutablePath); } ...
{ DECLARE @DOUT DATETIME SET @DOUT = CONVERT(DATETIME, CONVERT(CHAR(10), GETDATE(), 101)) PRINT CONVERT(DATETIME, @DOUT) } Comments Kiran Hi Please check this out. It suggested a similar way to strip the time part from date time. http://cherupally.blogspot.com/2009/09/easy-way-to-strip-time-part-in-sql-date.html Thanks, Kiran http://cherupally.blogspot.com ...
{ The big release is upon us. But it begs a question that I think those of us who use commercial development tools have to ask ourselves, something our Open Source brothers and sisters do not to the same degree. The question is whether we are driven by technology first, or whether we are led by tools. Microsoft is driven to release products on a cycle that will earn them a consistent amount of revenue; sometimes the "...
{ Debugging a problem today I wrote this, which may be useful to someone. It displays all the controls on an ASP.NET Page in a tree structure. You can actually call it from any control, it will recursively traverse the heirarchy below it. I tested it on ASP.NET 2.0, and it works fine: Call it with the following: DisplayControlTree(this.Controls, 1, 30); Incidentally, the problem I had (and still have) comes from dynamically loading User Controls....
{ Ruby on Rails is getting more and more buzz each time I open my browser. This time it was Bruce Tate claimingthat Java is dead ("like COBOL, not Elvis") and that he was turning to Ruby on Rails as his framework for application development. A few days ago I also noticed a define/tutorialon Ruby on Rails over at O'Reilly. More and more of these seem to be popping up of late....
{ I've been doing web development for a long time. Long enough to have developed lots of patterns and habits for how I'd approach putting together a website. Because most of my work is done with server side code, I've also yielded most layout thinking to the Panels, Grids, and User Controls I create in ASP.NET. So it's a bit of a surprise now that I find that my habits are wrong, horrid even when it comes to web development....
{ One of our clients has a Microsoft SQL Server table with 284 fields. So when I'm given a spec that references the "OrigLoanAmount" field, it's sometimes difficult to ascertain where that field lives. On some systems, especially if you've got familiarity where data are likely to be stored, you can make an educated guess. But if you're interested in some quick digging, try these queries from the Information Schema views:...
{ Glad I found about Chris Pederick's Web Developer Extension. It's a set of tools that will run inside Firefox or Mozilla revealing the underlying structure of any site you pull up in your browser. Some of my favorite things: Displaying borders on table structure Displaying borders on frame and iframe elements Showing dimmensions of images on screen Adding your own user stylesheetDisplaying stylesheets for a site within your browser...
{ Are you still doing VBA with Office even though you know you should be doing your coding with the .NET Framework? Probably like many I did things the old way rather than dealing with COM Interop, especially since this was particularly daunting with Office. It isn't as of a while ago, but you, like me, may have been a bit too busy to notice. First, you must download the Office Interop Libraries from here....
{ After months of neglect, I'm going to try this again. No more epics, just short snippets of developer talk. } ...
{ Here are the examples from the last piece of the course when we explored the .NET Framework's implementation of XML related parsers and techniques. You can download the sample in this zip file which you can extract to its project form to look at the code. Most examples are "methods" implemented off of Module1.vb1. Read and Write The BasicReader() method shows an example of parsing an XML document with a XmlReader....
{ Generated during class with South Dakota State employees but hopefully useful to anyone who wanders this way. [NOTE: My web host doesn't serve the *.java files, so download the zipfile at the end of this post instead. I'll rename with *.txt later.] We began things with a Hello World program in Hello.java. Soon after we talked about defining classes, the basic building block of any java program. Clerk.java shows an example of a class with fields, methods, getters and setters (accessor methods), and a constructor....
{ So I am still coming to terms with how iTunes works, and trying to get the "philosophy" behind its organization system. My understanding is this: iTunes can scour the hard drive, if you allow it, and maintain a nice library of tracks, no matter where on your physical disk they are located. You can then sift through by artist, etc... In my case I have ~30 GB of music and much of it isn't in mp3 files with ID3 tags - I've got a pot pourri of mixes and a ton of podcasts I've been listening to while I work....
{ I posted a bit ago about Microsoft's MVP revolt with regards to supporting VB6. They've responded in kind with VBrun, "Visual Basic 6.0 Resource Center." The product manager for Visual Basic, Jay Roxe, responded to the petition on his blog and, most importantly, has acknowledged support for VB6 in Longhorn: "However, I want to highlight to you that Microsoft is still supporting Visual Basic 6 and will continue to for quite some time....
{ A small time ago I admitted that SOA is still a bit elusive to me as this ubiquitous need we were all unaware of having. Multiple marketing machines are in full swing with it, however, and it's hard to separate useful and useless facts, much less fact and fiction. I found a lengthy article on java.sun.com which should prove to be more technical (and therefore more useful) but meanwhile I'm also beginning to find some other questions similar to my own....
{ In my previous article on delegates in C#, I gave the syntactical basics of delegates as well as a very rough idea of how they could be used in a callback scenario. This time I'd like to revisit the concept of delegates but take it a step further and show you how the .NET Framework wraps the ability to make asynchronous calls right into the capabilities of delegates. In short, once an instance of a delegate is obtained, it comes with BeginInvoke(....
{ For the most part, I work with web based applications, in which a combo box works as you would expect. The class System.Web.UI.WebControls.DropDownList has an ListItemsCollection which consists of ListItem types. So you can dump data into it using the ListItem class which accepts, in the constructor, arguments for text/value pairs. Your code would look something like this: ListItem li = new ListItem("MyText", "MyValue"); MyDropDownList.Items.Add(li); You can shorten it with an anonymous instance of the ListItem:...
{ Delegates are one of the mind benders of the .NET framework. Not once have I been teaching the concept without feeling a bit of inadequacy at drawing up a clear and concise explanation. Unless a developer has worked with function pointers in C, they are a new concept. I'll start off with the most basic example of delegate usage, after which I'll write some posts with some more novel ways to leverage them....
{ Yesterday I found a link toa petition of VB developers, many of whom are MVPs, demanding that Microsoft not abandon the language/tools that served them well for so many years. I thought it was interesting because it went along much of the thread of "why not a better COM?" which I'd started on earlier. Today I found Appleman's comments on it; it appears that his take is that of Don Box - VB and COM are done not dead....
{ XUL is good. } ...
{ Things are astir: Microsoft has boughtGroove and with it, acquired Ray Ozzie as CTO. I always liked the idea of Groove; I've been the child of groupware since my alma mater is a huge customer of Centrinity, the maker of FirstClass software. Biola runs, in large part, through its version of FirstClass which is known as BUBBS (Biola University Bulletin Board System). Everything from homework assignments, class communication, and student carousing starts on BUBBS....
{ Microsoft has a new article (you need it!) concerning SOA (Service Oriented Architecture). Interesting responses on my Joel On Software post: Service Oriented Architecture is really a tool more focused on enterprise IT. It's for exposing a companies "business logic" through software. It's not really a concept for applying to a stand alone application like fogbugz or Word or whatever. Service Oriented Architecture is really a tool more focused on enterprise IT....
{ I was flipping through magazines at Barnes and Noblesand found a reference to an old blog post He basically says that that Jim Fawcette wrote about Sun and their blunders with Java.Suncreated the initiative for C# and the .NET Framework when they sued Microsoft for trying to put extensions in their Java implementation, J++. Otherwise Microsoft was on the path to making Java the de facto standard for development on Windows....
{ I'm on my way to try and understand what Microsoft and others intend with the so called "Service Oriented" software strategy. Last week I read a whitepaper on SOA and Indigo as well as a short article by Charles Petzold on XAML. I probably won't have many responses to my questions here but I posted on Joel On Software about some frustrations. I guess my question for Microsoft is "...
{ Hello, My name is David. I live in Sioux Falls, SD as a recent transplant from southern California. I'm a programmer of sorts. "Of sorts" means that right now I'm between many things... A long time ago I started bloggingabout technical stuff but it soon became obvious that the people who read my blog were my friends, not my technie cohorts. So things evolved into an open letter which has never ended....
I’ve always admired Tim O’Reilly, first as a fan of anything O’Reilly in the world of technical publishing[1] but later on as I became exposed to his writing on the O’Reilly sites and elsewhere. Last week he posted an essay called Value Creation vs. Value Capture: Musings on the New Economy. Although you should read the full length in order to understand his perspective perhaps a short summary is his contrast of the difference between those who focus on creating value, using basic research and open source as examples, and those who focus on capturing value using “Wall Street” and Patent Trolls as representative....
How to use Google+ as a light weight bookmarks service. 1. Create an empty circle on Google+ 2. Use the Google +1 feature to share items in that circle 3. View posts to that circle Next up: some NodeJS code to generate RSS from it. ...
My last post dealt with emitting CSV files from an IEnumerable<T>. I thought I’d extend the idea a bit by using an extension method on IEnumerable<T> as a means of making the functionality portable without the use of a “helper method.” Here is the extension method: public static byte[] GenerateCSVDownload<T>(this IEnumerable<T> data, string[] headers, Dictionary<int, Func<T, object>> columnData) { Func<object, string> csvFormatter = (field) => String.Format("\"{0}\"", field); Action<IEnumerable<object>, StringBuilder> rowBuilder = (rowData, fileStringBuilder) => { fileStringBuilder....
A part of the universal appeal of sport is our ability to see an overlap of beauty and reality within the games we play. The beauty comes from the ideal form, motion, and skill. The reality is the humans at play, the unfortunate circumstance and the ineffables, things like “momentum” or “heart” or “luck.” While a sport like football (the American variety) is about the goal of perfection, its idealistic opposite is baseball which is consumed with the battle and nuances of failure....
“Ever tried. Ever failed. No matter. Try again. Fail again. Fail better.” - Samuel Beckett I’ve had a blog of some sort for more than a decade. I started on Userland. I’ve been through most blogging platforms in the .NET space. At some point I started to want to do things my own way, to customize the look, feel, and process of blogging. It culminated in my own attempt at a blog engine....
Those of us in the C# realm have become so used to LINQ it’s difficult to remember the problems of yesteryear and how we used to solve them. The reason is that almost all of the time, LINQ takes that work we used to do and abstracts a lot of the pain into a query syntax. But there are some problems things that used to be more intuitive. The dinosaurs among us remember writing code like this:...
For there exists a great chasm between those, on one side, who relate everything to a single central vision, one system, less or more coherent or articulate, in terms of which they understand, think and feel – a single, universal, organizing principle in terms of which alone all that they are and say has significance – and, on the other side, those who pursue many ends, often unrelated and even contradictory, connected, if at all, only in some de facto way, for some psychological or physiological cause, related by no moral or aesthetic principle....
If I had a nickel for every time I had to export data in CSV format… I would be pretty poor since as often as it does happen it is my fulltime job to get it done. One of my claims to fame longevity is an old post on the joel on software discussion boards asking about a standard for the CSV format (there is none). Anyway, here is a recent incarnation that is a bit more flexible since I can pass any IEnumerable<T> to it: protected byte[] GenerateCSVDownload<T> ( IEnumerable<T> linqSource, string[] headers, Dictionary<int, Func<T, object>> columnData ) { Func<object, string> csvFormatter = (field) => String....
First and foremost the full disclosure: I’m new to Git. Although I’d used Github for a few of my errant thoughts/projects, it was for the most part just copying commands without a deep understanding of the benefits of distributed source control. Today a light clicked on when I was finally able to set up a Dropbox repository and share it out with some collaborators. First, here are the steps I followed, adapted from an old post by Roger Stringer....
Are Vim and Emacs as powerful as their legend would have it or do the “lesser” developers, the “Morts” of the world, spend less time focused on learning their tools at the expense of learning their problem domain? I read an old blog post from Brian Carper about learning Emacs recently: Emacs isn't difficult to learn. Not in the sense of requiring skill or cleverness. It is however extremely painful to learn....
Hanselman has been on a tear of late with his podcasts but one series in particular I’ve enjoyed is a series of folks who in some way are connected with NASA or the space program. Even though I was a kid who was geek enough to want to become an astronomer, often fondling worn out pages of a Space Atlas, I think just about anyone will enjoy these conversations. Holly Griffith – former space shuttle and current space station worker (Space Tweep Society)....
Perl turned 25 a few days ago. What makes that a remarkable achievement is that the language remains cutting edge, pervasive, and useful in the present day. While there are many detractors to the language and its philosophy[1] that I’ve encountered in my experiences as a programmer, I continue to like the language and perhaps one day I will even find a way for someone to pay me to use Perl....
Today while digging up an old podcast of a talk by Clayton Christensen I discovered IT Conversations will be no more as of year’s end. Doug Kaye writes: We’re proud of what we’ve accomplished. Much of what we’ve pioneered in the past ten years is now commonplace. Our goal was to make it easy for others to produce audio recordings of events and make them available to the world for free....
Quigley is really simple: it’s a notepad. Here’s a two minute overview (watch full screen for the best experience): Quigley in action! Why another notepad? Isn’t there one that comes free with my operating system? Quigley runs in your browser Quigley automatically saves what you type Quigley let’s you create tabbed notes Wait, aren’t there cool products like Evernote that are better? Trust me: I love Evernote and use it regularly....
Mark Dow wrote a little market forecast some months ago in August. His opening paragraph is a keeper, on why it’s not as much fun to be bullish. “It’s not as fun to be bullish. Bears are smart. Bulls are wide-eyed optimists. Bears have data. Bulls tell stories. Bears make money when everyone else is in pain. Bulls make money when everyone else already claims to be a genius. In short, many of us get more satisfaction being bearish because the psychic payoff is greater: we calibrate our own self esteem not by our victories in absolute terms, but in our victories relative to others....
There’s An App For That Thousands of apps, native and web based, litter the consumer facing stores of big platform vendors, each with some story about how they will make your life better. Even if your problem domain is something as obscure as surviving an earthquake, someone has written a simple app with the singular purpose of keeping you alive. What’s interesting to me in a world proliferated by apps is how we are conditioned now to look for boxes to fill, buttons to push, and single domain user interfaces in order to get things done....
I’m one of those strange birds (is it really so strange?[1]) who loved not just learning but school itself. I’m sure a large part of this were the schools I got to go to – a small private elementary school in Nairobi with kids from all walks of life, an equally small high school in the middle of some coffee fields on the outskirts of Nairobi, and my alma mater where I made most of my life long friendships....
I never thought I’d find myself saying it but my next computer is going to be a classic desktop machine; a “tower” as some of the gray bearded veterans of the “Build Your Own PC” era used to say. Although some people have preferred this type of machine my last 15 years (20 if you want to throw in college) have been spent on laptops. It’s been a practical decision: as a student I needed mobility to work in the library or in a class room, as a newly minted professional I had jobs that involved a lot of travel....
One of the difficulties I have in writing blog posts is feeling as though I lack the ability to say something conclusive, some wit or wisdom that can wrap up my thoughts in a clever, prosaic bow. Perhaps it was all those years of papers that needed to be written with an intro, body, and conclusion. But on the question of Next Big Language[1] (in a personal sense) I admit I’ve been tossed to and fro over the years in my attempts to improve as a programmer....
There was a time in my life when I daydreamed about being at a startup, eating pizza, and writing code while I worked the kind of hours that would be daunting for a Foxconn factory worker. Although this period of my life predates the Paul Graham / YCombinator era (it all started with Accidental Empires), PG and the YCombinator stories are a part of internet lore much in the same way that the stories of Apple captured an earlier generation’s imagination....
In the wake of the death of Google Reader I was planning to write an ode to RSS and how important it is for the web but Dieter Bohn has done the job in his article on The Verge, “Why RSS still matters.” In short I’m hopeful because something that valuable and so passionately used won’t just disappear. This represents an opportunity for all of us who consider ourselves innovators to build something to fill the gap without Google Reader....
Here’s a nice quick solution. Let’s say you have some List<T> and you need to separate it into chunks of some number N or less, for example taking 100 numbers and separating them into batches of 25. List<int> myListOfNumbers = Enumerable.Range(1, 100).ToList(); var parted = Enumerable.Range(0, myListOfNumbers.Count) .GroupBy(n => n / 25) // <-- clever sleight of hand here .Select(n => n.Select(index => myListOfNumbers[index]).ToList()); // prints 1-24, 25-49, 50-74, 75-100 foreach (var part in parted) { Debug....
I’ve been enjoying my current class, Startup Engineering, from Coursera. My own fascination for startup culture preceded the “Dot Com” era; I always admired people like Nolan Bushnell[1], Steve Jobs[2], and Bill Gates[3]. But I came of age during “The Bubble” and hearing all of the sensational stories made me excited with what I might be able to become a part of as a young technologist. Even after the party ended and it seemed so obvious that most startup emperors had no clothes, I was still under the spell of people like Paul Graham whose essays and work at YCombinator[4] have influenced so many of us in our thinking about building businesses....
Many moons ago, when I was growing up on the potholed streets of Nairobi, I discovered Rodney Mullen through a friend who was a skater. My friend had a quarter pipe and lots of issues of Thrasher magazine he’d either bring back or have sent to him from Canada. We watched skate videos at his house whenever I was over. I even talked him into giving me a few skateboarder t-shirts....
Last Saturday I had the great privilege of gathering with other developers and enthusiasts in the area for Code Camp; a series of sessions and information sharing for area peers. Once upon a time I used to get to conferences fairly often but the mixture of life married with children as well as the availability of content online has made that type of event rare. Here is a brief recap of the sessions I attended from my notes....
There was a footpath leading across fields to New Southgate, and I used to go there alone to watch the sunset and contemplate suicide. I did not, however, commit suicide because I wished to know more of mathematics. – Bertrand Russell I just ran across Newton’s approach to calculating square roots and thought it was fantastic. It’s interesting that our history of knowledge seems to get catapulted every few generations by individuals (Euclid, Archimedes, … Newton)....
I just completed Startup Engineering, a Stanford MOOC offered through Coursera. There are two broad themes in the course: one that is technical and another that is philosophical. Technical Although the course assumes limited technical knowledge, it would be difficult for a person without at least moderate technical skills to complete this portion with any depth of understanding. A brief summary of topics covered demonstrates this: Ubuntu Linux AWS Heroku Bash Emacs Git Github Javascript Coffeescript Node....
There’s always a big rush when someone you’ve respected and admired for a long time writes a specific response to your question. I’ve still got an email from 2004 when the author Greg Egan took a moment to reply to an email I sent him. Ritholtz, for the small number of friends and my parents who take time to read this blog, is a well known in the world of finance, whose blog The Big Picture I’ve followed for many years now....
This is a personal account in The Tablet Wars. Mine is not the voice of the powerful insider; I don’t represent any company and have no major stakes from which my opinion will yield major benefit. If you want professional reviews I would recommend The Verge. Instead imagine me as a common soldier of the American civil war… a certain David Snow, the baseborn son of a wandering freed slave and Sioux woman who took up arms in a Minnesota regiment based out of Fort Snelling with the hopes that my personal journal of the war would be meaningful to me at some point in the future when all the emotions of war were distant even if the fog never lifted....
I grew up on fantastic fiction. Even before a kid named Scott regaled the tales of The Lord of the Rings to me on our trips down Elgeyo Marakwet, I remember things like a nicely illustrated version of Hans Christian Anderson’s stories and a predilection to tales read by The Superscope Story Teller. It may have been a blind choice on my end but I remember stumbling upon a character named Drizzt Do’Urden and the world of Faerun in books by R....
In my previous post I gave an overview of TypeScript from my perspective and my premise for kicking the tires: to avoid emotion and quick judgement in order to see what the language is really about. I walked through my setup in Visual Studio and how I use a post build event to have the TypeScript compiler generate my JavaScript. I had originally wanted to do it in a single post but thought it would be better to separate more of the TypeScript code I wrote to get a feel for the language....
I am a language geek so I was more than intrigued with the announcement and release of TypeScript about a month ago from Microsoft. I found out via twitter where almost immediately there were knee jerk reactions by many. It would be false to say the reactions were equally positive and negative; many of the people who have found their way to my twitter list tended to be really cynical in one of two ways: either by saying TypeScript was not CoffeeScript or by claiming that JavaScript was fine and the language invasion was not necessary....
I had a conversation over the holidays with a person who rejected the idea of fiction or writing about things that “didn’t exist.” Although the origin of the discussion was superheroes I thought a good bridge for said person might be Iron Man since his brand of hero more closely resembles Science Fiction than mythology[1]. Unfortunately Science Fiction fell under the umbrella of “things that don’t exist” and was therefore a subject to be ignored....
... it wasn't magic, it was hard work, thoughtful design, and constant iteration. Glenn Reid, who worked on iMovie and iPhoto recollects. ...
There is something tragic in reading about early 20th century butlers, especially the ones so devoted to their work that they put a lot of time and effort into the question of what it took to be a good butler. It’s not just that the profession, with a few edge cases, is all but gone – it’s that we see through the modern eye how so much of the work is contrived....
It’s remarkable how when one takes into account all the resources that are available for free on the internet, no one has an excuse to make regarding opportunity. I was just recently overwhelmed with a list of free physics books that are available on the web. I wondered if that could be combined with something like the physics courses available at MIT Open Courseware for a self driven undergraduate program. Along the way for a little help in snippets, one could watch Khan Academy physics videos....
At the local developer meetup someone was jokingly talking about “developer years” as an analog to “dog years.” It is kind of fun to think about – I didn’t get started until I had already finished school but there are a lot of people who already have years under their belts by the time they finish high school. I probably toyed with the idea longer than it’s usefulness but came up with the following methodology for determining developer years: “How many data access frameworks from Microsoft have you lived through?...