I reworked the primary NVG510 page. It's not much more informative and should be considered the one stop page for everything contained on this blog about the NVG510 that is useful for people without soldering irons.
Also, this will be the last time I touch that content probably. I don't have U-Verse anymore, and thus don't have to put up with that crappy modem anymore. I still have a modem to test things out on, so if someone manages to make an alternative ROM or something for it, I might try it.. But, otherwise, those pages aren't going to be touched.
Also, of course, if you find out something useful not documented here about the NVG510, I'd love to either link to your site or publish it with credit to you. the DNS problem is the most pesky thing. If someone can fix that and tell me about it, you'd earn 20 internet cookies, from me personally.
If you know anything about the NVG510, shoot me a tweet, comment here, or send me an email (my email address is in the about me
So, I use MarkdownSharp on this website for translating my posts from markdown to HTML. During a profiling session, I found that MarkdownSharp is horribly HORRIBLY slow. It was the bottle neck of my entire website. On my personal machine, requests per second went from 325 (or ~22ms per request) to 720 (or ~9ms per request) when I cached the markdown translated text.
Personally, I find it pitiful that Markdown was more of a bottleneck than my database. Getting of my post data from my database: ~5 ms. Translating all of the text in the posts to HTML: ~15ms. What the hell is wrong with this!?
I'm sure Markdown isn't trivial to translate of course, and mono generally sucks at string operations anyway. But still, I find this absolutely ridiculous that the only thing so far I've had to cache is markdown translations.
Anyway, this website is updated now and should be capable of handling about 100 requests per second. I suspect the primary reason I can't achieve anything higher than that is a combination of Apache having a lot of overhead and my VPS being rather weak anyway. But, this should be plenty for this low traffic blog.
Well, I shutdown my old server this morning and removed it. Everything is now migrated to working on this new clean server :)
Also, hopefully, I'll get around to finally setting up IPv6 access to this site as well.
Note that things like http://fscauth-demo.lastyearswishes.com still work. I decided to keep those subdomains on lastyearswishes.com and not migrate them. The eventual course of action though will be that those subdomains are just removed, along with their content from my server
So, I tagged the v2.0 release candidate for this site in mercurial. Heres what you can expect:
- URL formats will change. I'll redirect the old URLs to the new ones though, so no worries
- Rebranding to Earlz.Net (including redirecting Lastyearswishes.com to it)
- Titles of pages will change for better SEO
And of course, this includes an ungodly amount of internal changes:
- Comment counts are now denormalized with posts, meaning a good speed increase
- Updated to the latest version of BarelyMVC, while also doing a massive refactor to be as idiomatic as possible. (though it still needs work)
- A private-draft tag was added for my amusement.
- I'll finally have a logo instead of just text
- This will be the first release using mercurial for version control, rather than SVN
Now, why is it 2.0 RC and not already uploaded? Well, Arch Linux decided that systemd should be forced down everyone's throat. I don't like it, but I don't think this decision will be getting reversed. So, because this is a fairly major change, I'm going to create a new Linode instance (so no downtime) and recreate this server from scratch. I don't have much installed on it, so it should be fairly routine.
Some improvements I'll make:
- I'll know what I'm doing (ie, I won't be experimenting for 5 hours to get mod_mono and Apache and MVC working properly)
- General cleanup of course
- I'll have a deployment process that doesn't suck balls. (svn update/xbuild` is so lame it's not even funny)
- Hopefully, I'll pick up some systemd knowledge along the way. My work computer uses it since it's a fresh install, but I still haven't upgraded my home computer
I'll be doing this over the weekend unless major problems arise. You shouldn't see any downtime, but if you do, that's why.
Finally got this place updated! I forgot a post though back on the other server. I'll get that put on here soon enough.
Also still have to do a few other maintenance things like copy over links and whatnot
So, as most of you know, I have an ASP.Net MVC framework: BarelyMVC. What some of you may not realize is that the big way I "test" both the design and actual implementation of BarelMVC though is by upgrading this blog to use the latest version. Recently, BarelyMVC has seen some very drastic breaking changes that are finally starting to calm down. Technically, I could keep my blog working how it is as most changes aren't truly breaking. However, the changes I've made have been to make things infinitely easier. To migrate this blog over to use the new way though is nearly a rewrite excluding the data-model.
So, what's so awesome about creating my own framework and using it in my blog in semi-real-time?
- Something inconvenient comes along. Instead of googling for workarounds, you can fix the core problem then and there
- See an example of unexpected behavior. See above
- My blog is basically a live example of the features of BarelyMVC and how to write code with it idiomatically
Now what sucks of course:
- Breaking changes are common in pre-1.0 releases. Sometimes it can be as drastic as requiring major rewriting of my blog (such as the recent changes)
- You have no support forum. You are your support
- Performance can be fun. You have no one to blame but yourself if your site is slow
- Managing constantly changing binaries in source control sucks
All that said, I'm finally to the point with BarelyMVC that it's actually getting close to v1.0 status. The API has come from "hey use bare ASP.Net stuff for most stuff" to "heres a one line function to do that WITH static typing". Big improvements since I've decided my blog will nearly have to be rewritten are these:
- Route and POST Form models. Fill in classes from route parameters and form values to access them in a statically typed manner
- The view engine now includes unit tests and is much less "shakey" (along with a few features and bug fixes)
- FSCAuth got a "ProbablyLoggedIn" property for use in views. For instance, I'll use it here to display things such as delete links for comments. This prevents having to round-trip to the database for stuff that is only aesthetic and not really a secret
- Individual methods possible now for each route(rather than one big
Get). (note: still no attribute magic and still statically typed)
- Simplistic constraints on SimplePattern's route parameters (such as must be alphanumeric)
So basically, in the end, my blog's code quality will improve by approximately 20000%. Some examples that have already happened:
- Significantly less code duplication
- I can use ONE model for both MongoDB's database and the Form values posted from the edit page. No more
So in essence, it's taking much longer than I expected to make it all happen, but when it's done it'll be awesome.
Well, I guess you know you're getting big when you finally get your first few bits of comment spam. This particular bit of spam appears to have been human generated though (ie, copy and paste into the comment field and such).. This means it will be relatively uncommon because I can delete comments easier than they can post them.
This means that bots so far haven't been able to crack my honey-pot though. If the human spam increases though, I'll end up having to put in some kind of way to slow down spammers. So far comments are still enabled, but if I get much more spam I'll disable them until I get an update to alleviate this problem
So, as you can tell, I have a small ad space by Project Wonderful. Here is a bit of a "review" from a publisher's stand point:
- Project wonderful is.. wonderful! At least in theory. It's such a breeze to work with and I don't worry a single bit about it now that it's set up.
- It's very easy to create an advertising account. This gives the opportunity to viewers to post their own ads quite easily
- I personally think the auction-like system is genius
- It's based on how much advertisers think your ad-space is worth, not how many click you get. No click fraud and all that crap
- Nothing annoying about the ad spaces
- Built-in easy to use basic analytics
Now the cons:
- It heavily depends on what kind of content you host. About 90% of the advertisers seem to be small-time comic authors.. That's fine if you're also a comic-author, but if you're not, then the advertisers value your ad-space at a much lower value
- Somehow, it doesn't seem to react to spikes in traffic. I had 2,000 views in one day and my ad space was sitting there at $0. This may be caused by my first con
- Returns seem extremely small, even for a small blog like mine. I've had an ad-space for 2 months and have 15 cents in my account.
I'll elaborate more on the first con some more. I click through to an advertiser on this site and noticed that their ad-space was going at 6 cents. Relatively high for a small comic. I looked at their stats and noticed they had for the past week 200-400 views depending on how you look at it(Project Wonderful seems to be inconsistent?). That's not very much traffic at all. But yet, 6 cents. In comparison to this blog where I get 300-400 views per week. My ads are usually free with my biggest spike I can remember was 5 cents for like an hour. I average less than 1 cent/hour over most days.
What's the difference? Between this site and some guy's comic? Content. The key is in the content. Honestly, comics really lend themselves to being marketable. I mean, if you're reading a comic, chances are, you might like reading another comic that's advertised.
Compare this to my blog. Most people who come to my blog come to see one thing. Some of my popular queries:
- root NVG510 modem
- Arch Linux MongoDB
- openbsd usb drive
Unlike a comic, people don't usually stay on my blog a while. They get their solution and leave. Probably very few actually look at more than 1 article. (I really need to analyze my data more to figure out if this is true)
What else? Blogs are very differentiating. People who might like food blogs, probably won't be interested in this programming blog.
So, with that said. in the near future(with this big update coming), I'll probably either remove the project wonderful ads, or switch to another ad provider. I really love the idea, but it suffers from the chicken and egg problem.
Note I'm not complaining about Project Wonderful. It's just that their "audience" doesn't fit mine. If I had a comic blog, you could bet that I'd have project wonderful ads plastered everywhere.. but since this isn't about comics, it has such diminishing returns that it's not worth it to me.
So as you can tell, this site is good enough for right now.. However, I'm currently working on a major planned update. Included in this update will be:
- Rebranding to
http://earlz.net (I already own that domain, don't try to extort me)
- Site layout and style will be updated in minor ways to do with the rebranding
- The redirect for http://earlz.biz.tm will be dropped (pretty sure no one is using it anyway)
- URL format will change It will look more like
- Possibly a config-ish page for configuring miscellaneous things such as the code for the project wonderful ads (you'll never see this :P )
- Remove Facebook like buttons
- Self promotion -- Add a link to my new twitter :)
- Possibly replace facebook like buttons with twitter and google+ buttons since facebook wrecks my layout and is overly slow
These changes won't take place for probably a month, and there might be a release between there. Also, don't worry, no action will be needed for updating bookmarks and such. I know how to use permanent redirects :P
So this weekend I decided to work on BarelyMVC more. I've decided it's nowhere near done(though it is usable). So far I've implemented:
- Caching for Route group lists(hint: fairly expensive to generate all of them on each request)
- XML documentation so now Intellisense works on most everything
- Testing (and fixing) for running under Visual Studio 2010/Cassini
- Reworked ViewEngine a bit so now the core code for it is in a separate file(hint: updating is much easier now)
Hopefully tomorrow, I'll have time to implement maybe "type matching" on route variables with regular expressions, and test it under Visual Studio 2012 and maybe Windows Server 2012.
Haven't got this site updated to use the new features yet, but after I do get it updated, I suspect my requests/second capacity will go up by quite a bit.