Introduction There are two files that contains all stories and comments posted at Hacker News from its start in 2006 to May 29, 2014 (exact dates are below). This was downloaded using simple program available I wrote Hacker News Downloader by making REST API calls to HN’s official APIs. The program used API parameters to paginate through created date of items to retrieve all posts and comments. The file contains entire sequence of JSON responses exactly as returned by API call in JSON array.
There are tons and tons of things to blog but here is a quick one.
Last Thanksgiving (a 4 days of holidays in USA) I wanted to work on something really cool that is absolutely worth doing and something I can spend my entire 4 days continuosly. I looked over my list of pending projects to find something extraordinarily cool, kept thinking about new ideas flowing around, looked over to other idea websites and realized that my mind was just keept going blank all the while.
About a year and half ago, the new version of Groove had came out and it still didn’t had an ability export IMs. It drove me nuts so I started to write my own Groove tool that would do it in excuse to explore its infamous internals. Ah! What a ride that was! Groove APIs have extremely huge surface area (which means there are thousands and thousands of them sprinkled all over in hard to find places).
I just finished my new article on CodeProject. The mission on MimeTeX was started about couple of months ago when in a weekend I just got attracted to MimeTeX’s C code like a magnet ;). Now I’ve built ASP.Net handler, caching, admin etc on the top of it and its looking great! Enabling scientific content on web seems to be my new obsession. So if you take pride in delighting your users with every new release, here’s your brand new feature!
If type’s constructor (i.e. static constructor) throws an exception, entire type becomes unusable. Any attempt to call any member of that type would result in TypeInitializationException. Operator overloading should never be the only way to use the functionality if your code targets 1.x versions of frameworks because VB.Net can’t access it without resorting to ugly calls such as op_Addition
There is universal symbol for money (a generic version of $, £, ¥ etc) and it’s ¤ (U+00A4).
The idea of wrapping calendar information in to the RSS feed may sound very appealing. Almost every website owned by some kind of group or organization has their event calendar. The thought that you can aggregate them in to your “Calendar Aggregator” is just so geekily cool. What if people started putting up their weekend plans through some kind of RSS-Calendar and you can subscribe to them in your calendar program!
I would be writing all New York City related stuff at Metblogs rather then my own blog. This makes sense because lot of people who aren’t in this region doesn’t need to get those NYC stories. On the other hand, my NYC related writing will now reach to much larger audience. Check out some of my entries there about cool New York events, restaurants and such stuff.
On the other site news, you might have noticed new skin and more FireFox friendly design.
When you copy lot of files in Explorer, you see the standard Windows progress dialog with “flying papers” animation and the calculation of estimated time remaining. This dialog is accessible to any Windows application through IProgressDialog interface. This source code provides you a managed .Net wrapper to easily and intuitively integrate Windows Progress Dialog in your own applications. You can read more details in my original article on CodeProject. Also see the comments in that article.
I don’t know how no one is bothered by this. May be because it affects Longhorn. But anyway, everybody would agree that while .Net solved the DLL Hell issue, it created its own which I affectionally call Assembly Hell and had my rants loud from the start. I’d high hopes when I heard Jeff Richter is on the team. But be hold, they come up with the statement that the problem is “mathematically” unsolvable and some fuzzy argument to back up that statement and then they reveal possibly the worst versioning scheme I’ve heard in a decade for anything: divide the assemblies in “platform” and “library” groups!
This is collection of several reusable components to use in your WinForms application. I’d been building it up and reusing in my own personal applications such as BrowserHistoryAnalyser and NotepadX and others. It contains editable drag-n-drop enabled TreeView, RichText editor control with toolbar, Worksheet editor control, Password Input Form, MRU, custom attributes you can use for your assemblies, more easily usable hidden property editor control, advanced About Dialog, Application Options management and Assembly Info Viewer Control.
X-Setup is perhaps the most comprehensive Windows tweaking utility. I always end up spending half a day enabling all the hidden advanced settings using this thing. Fortunately it provides Recording mode and creation of a REG file. This is really cool because now with just a click I can make any XP/2003 machine more geekier and end lots of “default” annoyances. If you are interested you too can use my final REG file.
I like to preserve logs of my browser history. Apart from recalling useful webpages I’d discovered, it helps to build kind of “journal” reflecting problems I was facing, things I was in to, things I was shopping and so on. An ability to look back and see what you were up to in any point of time is really important, not just useful. Unfortunately there is no easy way to export history from IE or Firefox, let alone query that data in an useful way.
I never liked being forced to use DataView just to speed up my searches. Why not DataTable.Select() have an overload to generate internal indexes and do some smart things? But anyway, most people searching DataSet eventually would realizes that performance really sucks and they have no choice but to use DataViews, sometime whole bunch of it prepared for all sorts of queries you want to fire. Here are two things you should watch out (MSDN docs aren’t clear about this):
If you need to store certain data in file, most of the time you will obviously think about storing it as XML file. Then soon you start drawing XML schemas and think about generating XSDs… Well, stop! You might be making same mistake as many other people. The better idea is to design XML schema which is loadable in DataSet rather then just XMLDocument. This has tremendous advantages then your custom schema:
If you installed .Net Framework 2.0 Beta and suddenly VS2K3.Net refuses to attach to your existing 1.1 apps with a very cool error message “Unable to attach to process”, don’t get panic! Looks like side-by-side promise of Framework versions doesn’t work in some rare cases (which somehow I always get in to). Unfortunately you can’t uninstall 2.0 (even though it gets installed in separate folder, core DLLs such as mscorlib.dll is already replaced by 2.
This Task Manager for Windows rocks. Besides doing everything that you ever wanted from a thing called Task Manager (even showing open files for every process), it has one of the sweetest option that your application should provide: Replace Windows native [equivalent thing]! I just keep wishing if there had been free and with-source Calculators and Explorers and everything else Windows that I can just replace with a click like this and move on rather then waiting for a decade on Microsoft to improve their age old featureless apps.
This innocent little puzzle formed from some of the recent code I was writing. Lets see if it gets you!
object p = 2; object q = p; p = 4; System.Diagnostics.Debug.WriteLine("Answer is " + q.ToString()); Meanwhile I’m having fun asking it to my colleagues 😉
This is an advanced progress dialog which can be shared among method calls which can call each other recursively. Each method call gets a portion of the total progress so we can see some continuous progress instead of only top level method progress.
This is implemented by singleton version of TaskProgress using static public member which each method can use without being aware of other methods. This component keeps tracks of call recursion in a Stack and allocates progress bar range to each of the calls.
The Fifth HOPE conference featuring talks, workshops, movies and other events from several well known hackers including Steve Wozniak, Cult of Dead Cow, John Draper and so on is already started at NYC today (July 9, 2004). I’d read lot about many of these people dedicated to pure hacking in early years in the book Hackers and now its a chance to actually hear them! The conference has 70+ talks which itself is pretty long list even to browse through.