Music, Guitar, And Songwriting

So, this place has been quiet a while. I happen to have picked up a new hobby in the past few months of trying to write terrible songs using terrible guitar and bass skills, and composing and all that fun stuff. Songwriting has been something that's interested me since high school, but lack of recording ability, instruments (bass, drums) etc has prevented me from realizing the complex sound I want to make. Also, lack of basic music theory to even know the basics of how to decompose a song and what makes things sound good. I'm beginning to rectify all this and I'm mainly using VST plugins and amp simulations. They solve a lot of problems like being automatically easy to record, and giving you variety for cheap.

I mainly started this cause I wanted to play guitar but didn't want to waste money on a cheap and usable, but probably terrible sounding amp. So, I used headphones and amp simulation software to make due until I could save for a real amp... Still waiting for that ;). If I ever have a surplus of money, I got a lot of stuff I'd like to buy, but at the same time, the struggle to not compensate for lack of skill with expensive equipment is very real.

Anyway, I wanted to write down here some of my recommendations and "tips".. I may eventually even write a series of blog posts about what I try, what works, what doesn't work, and other things as I attempt to learn guitar, bass, drums(MIDI), composing, songwriting, mixing, and mastering all at once. Don't take my word for fact on any of this. I'm definitely still learning, and just trying to write down something that might help someone who tries the same thing in the future. Also, apparently guitar players that don't play blues, country, or metal is apparently pretty rare on the internet. Why is that, anyway?

And because all of this will vary depending on playstyle, I like Brand New, the whole "pop punk" genre (yea, that's a terrible genre name like "emo") apparently like The Wonder Years, old school Green Day, Death Cab For Cutie, some R&B like Black Keys, and quite a lot in between.. Oh, and of course some some high school classics like old school Fall Out Boy and Panic!. So, I strive for rock but not metal, and acoustic but not country, eccentric but not "indie", complicated, but not overly processed. Just perfectly in-between.

So, assuming you have a guitar and want to get started without an actual amp, here's what you'll need. First off you need at least 2 pieces of hardware. A USB interface and something to monitor with. You can monitor with non-monitor headphones/speakers, but you'll get colored sound and trust me, it's a headache to try and correct for that. Buy some cheap studio monitor speakers or headphones. It's extremely helpful to have both.. but you'll strive for as many different sources as possible. You know a master is good when it sounds good in every source you throw at it, from your cheap bass-heavy headphones, to your car's cheap stereo system.

I haven't found pair of studio monitor speakers I can highly recommend. The ones I have don't really have enough bass, but they work good enough. My headphones (which I do recommend) is Audio-Technica ATH-M30X. My USB interface is a Focusrite Solo (make sure it has a instrument level input!). You can find them for a bit cheaper on ebay for some reason, though they appear to be brand new and factory shrink wrapped.

You should be easily able to get a decent USB interface and some kind of monitor for less than $200. Maybe less than $150 if you catch a sale like I did.

My DAW is Reaper, because it's cheap, has an unlimited trial/evaluation, and is very easy to use, despite having tons of features. It's trivial to get started with, but anytime you want to do something more complicated, you're just a google away from finding where the appropriate feature is located.

Now, the tough part. There are a literal shit ton of amp simulations out there. I'm pretty sure I've tried at least 50% of them that had free trials. Here I will try to sum up my thoughts on them.


This is what I currently use. Bias has tons of different amp models but the core piece of the amp puzzle is it's "tonestack". I've found the built in speaker simulation isn't the best, but it's good enough. Don't turn up the amp volume all the way. You'll get this really annoying hiss at around 3khz that will kill your ears. Instead, increase the output level if required and for most amps leave volume at 60% or less. There are quite a few good tones hiding in here, and everything is quite easy to tweak. It also has a nice trial system of no time limit, but giving you occasional silence. I think the super heavy amp sims sound pretty weak, but that's not the sound I'm going for anyway so I don't care much.


This is from Peavey, and having heard and experienced a nice Peavey growing up (my dad had one), I would definitely say ReValver gets pretty close to that mark. That being said, I couldn't get a tone that I personally liked out of it. This sounded pretty nice for classic rock and metal, but that's not the tone I was going for. I tried this for probably a weak before giving up. I just couldn't get the right kind of tone out of it. I might revisit it in the future however. It also can at least load external IR response libraries for speaker emulation and I like it's microtransaction payment model, since many times it seems like I'm only interested in 1 or 2 amp and cab models. Though there is a significant amount of things you just have to buy with no opportunity to try it out first. That's not cool. The circuit tweaking appears more powerful than Bias, but it is complicated to know what will even make a significant impact on sound since nearly everything is tweakable (and I have some electronics experience!). Swapping out tubes is simple enough, but changing resistors and caps seems like a bit of overkill.

POD Farm X2

This is one I was surprised to see missing from a lot of reviews. It's not great by any means, but I felt like it was definitely the easiest thing to get a usable, even if a bit mediocre, tone out of. I still use it for bass amp/cab simulation since apparently no other amp sim actually cares about bass and sticks with the typical "bass/middle/treble" setup, where "bass/low-mid/high-mid/treble" tends to work MUCH better. That being said, Line 6 is... Well, I'm a gamer and the first thing that comes to mind with them is EA (Electronic Arts). They'll nickle and dime you to death, and nothing that they do is super great, but it is at least passable. I upgraded to the paid version intending to get the DR-102 amp.. So, I plopped down $100. Now, I look for the amp sim... Hmm.. Not here, strange. Go look on the store. Oh, well I have to buy it separate. Hmm, All these amp sim packs seem to be $100... Wait, this one with all the other amps I'm interested in is a $200 package instead!? ok, fuck that. Refund time. (fun fact: I got a refund but for some reason their servers still think I'm licensed). The only other useful thing I found POD Farm had in their licensed $100 version is a not terrible bass overdrive pedal. All the other stuff that is in the base $100 version that isn't in the free version seems to be just not good.


I thought this would have great potential, but I never could get out of it what I wanted. I'll have to revisit it in the future to see if my better level of experience can let me tweak things better..

S-Gear 2

I really wanted to like this, I mean REALLY. The concept of just a few great amps rather than a huge variety is something I can get behind. However, I just couldn't get anything out of it. Every amp I tried seem to just have that "kinda metal really trebbly raw sound". I couldn't get anything that would be of use to me. It always just sounded too raw and required stupid amounts of EQ and notching to get it to sit in the mix without sounding terrible. I'm sure people will tell me I like things too "processed", but this is from a computer.. You don't have a chance to let the room absorb the noise, and I'd much rather the amp sim producer tame that for me with some processing rather than me, since I probably won't do as good of a job.

VST Plugins

Molot (compressor)

This is a great compressor that I still haven't quite got all the options mastered for yet. Use a compressor for everything! But don't use it too much! heh. But seriously, this compressor has a nice subtle color to it and the UI despite being confusing, actually makes a bit of sense after a while.

Other than Molot, I mainly use the Rea suite of plugins that comes with Reaper, they meet my modest needs thus far

MIDI Instruments

Drum Mic'a (drums)

You have to wade through a German website to get this downloaded, but once it's downloaded, the actual program has an English option. This is the most realistic and nice sounding drumkit I've discovered to date. Get it into Reaper with Kontact, insert new MIDI item, select the time range for the MIDI item, solo the drumkit, make sure the playback is looped, and push play.. Now compose a drum loop. Coming from Hydrogen, an easy to use but terrible sounding drum machine, this thing is miles ahead, but you have to fiddle with your DAW a bit more.

I'll try to update this post when I find something new or discover something

Tips and tricks

Don't do the typical thing you'd do when playing guitar alone, turning middle down, and turning bass way up, and treble at 75%. It won't sound good in a mix. In a way, a lone guitar kinda should sound a bit harsh, but when it's in the mix it'll be what provides that nice upper end.


This may have to be it's own article one day, but this is my impression of the strings I've tried thus far (and YES, strings are important, don't skimp on them!)

DR Tite-Fit Medium (guitar/electric)

I tried these on a whim from a guitar center recommendation. I actually thought something was wrong with my guitar's pickups after this time. No brightness at all, just dead tinny bass on all strings. Absolutely garbage. Changing these out was the best thing that ever happened to my tone. I do intend to try these again since I do have an extra pack, but I'm really not hoping for much

Ernie Ball Regular Slinky (guitar/electric)

These are my typical goto strings. They sound good, though they don't seem to last a long time even with my light playing (I need to change every 2-4 weeks). They have a good low-end with that kinda "stringy" sound, but without being overly bright.

Ernie Ball Super Slinky (guitar/electric)

These are the lighter gauge version of the regulars. They are definitely easier to play, but tend to be more tinny and with more string buzz. Unless you're doing lots of solos and bending, I wouldn't recommend them much.

Ernie Ball Regular Slinky Cobalt (guitar/electric)

These are the new bunch. I was hoping they'd last longer, but after 4 weeks they're definitely needing a change. They seemed to degrade more evenly at least. The finger marks are pretty obvious on them, but they're definitely still playable. They are brighter than the non-cobalts, but surprisingly not significantly, and I think they have a bit better sounding low end and middle.. They're definitely interesting and I recommend anyone try them. Though they are more expensive, these are my favorite right now.

Ernie Ball Regular Slinky (bass)

I'm a lot newer to bass than guitar and still scouring for the right tone, but these did pretty well and sounded a lot better than whatever brand strings my bass came stringed up with. My only complaint is that the low E string tends to not quite give enough audible oomph. The other strings sound fine, but it seems like something is just off about the E string. I play in standard and half-step down tunings and it just didn't sound great in either of them on the E string

Ernie Ball Power Slinky (bass)

These feel very similar to the regular slinky, but gives that extra oomph I was looking for. They're still pretty bright (especially new), but the E string actually carries some weight behind it. These are thus far my favorite that I've tried. These definitely put a bit more stress on the guitar though, and standard tuning doesn't really seem right on them with their gauge. Half-step down sounds fine though, so it's good with me since that's mostly what I play.

Overall for strings, you're just going to have to try them. They're cheap and if you don't like them they're easy to change out. The only thing to be careful of is when using a significantly higher or lower gauge you may need to change your guitar's setup. But yea, don't skimp on them, and if your guitar sounds dead, try a string change. Some strings come out of the package dead even!

Anyway, I guess this is kinda the beginning of a series, eventually I'll get my blog updated so that I can treat it as a series appropriately. I want to share the kinda stuff I try, some sound clips, and maybe even provide some full projects that you can try yourself if you're that bored. Keep in mind I'm learning though, and this is basically just me live blogging my learning experience and documenting the moments when I think I've made a breakthrough.

Posted: 8/25/2015 1:09:17 PM

Exploit Report Responses

So, I found it interesting the "response" I got from exchanges when reporting the Pharma Exploit. TL;DR; some malicious miners could mine blocks significantly faster than legitimate miners.

In all, 3 coins and 3 altcoin exchanges were affected. The coins being Pharma (2 exchanges), MasterDoge, and Hexxcoin (1 exchange). The 3 exchanges are C-CEX, BlueTrade, and Yobit. I also sent a message to Bittrex because I thought a coin was affected that they had a market for, but that was a mistake and the coin was not actually affected.

Responses from exchanges:

  1. C-CEX: No response, market still online
  2. Yobit: No response, market still online
  3. BlueTrade: Response summarized as "this exploit only affects the miners and because it doesn't affect transaction balances, we will keep the market up." (which is bullshit), market still online
  4. Bittrex: Response within 30 minutes asking for more details (at this point I indicated it doesn't actually affect a coin I thought it did), unaffected

So, there you go. Four exchanges contacted about a security problem. One replied back that was actually concerned about it.

Posted: 7/5/2015 5:49:59 PM

Still existing

I really should blog more. Just hard to find the time...

I still exist though. Most of my recent projects have been bitcoin and altcoin related, since I do bring home a bit of money from freelancing in that field in my freetime. Bitcoin and altcoins really seem to be winding down though since the great altcoin bubble popping. So, probably going to be looking for something new to do pretty soon.

hmm.. yea, I guess that's it

Tags: mmm
Posted: 5/2/2015 6:11:15 AM

Configuring a SoYouStart IP for Arch Linux

So, I recently managed to snag a SoYouStart dedicated server. It comes with 16 IPs, but configuring more than the main IP (ie, "failover" IPs) is definitely not trivial. I used my dedicated server for hosting my own VMs with Proxmox, so I definitely needed to use these extra IPs.

I couldn't find any good way to configure a failover IP configuration in Arch Linux, so I scrounged around and ended up following directions mostly from the FreeBSD instructions, but adapted for Arch.

Here's how I did it

[earlz@test2 ~]$ cat /etc/netctl/virtnetwork 
Description='A more versatile static ethernet connection'
# Any valid iproute command can be placed in this array
IPCustom=('addr add FAIL.OVER.IP/32 dev ens18' 'route add PRIMARY.IP dev ens18' 'route add default via PRIMARY.IP')

Replace FAIL.OVER.IP with the appropriate failover IP(ie, the extra IPs). Replace PRIMARY.IP with your main IP, but change it to end with 254.

I'm sure there is a better way to do this, but eh. close enough for me

Posted: 1/15/2015 2:54:58 AM

Provably Spendable Altcoin Burn Addresses

Please verify this message at

Copy and paste the text from here: to to ensure it is signed by me(earlz)

Also, for good measure, you should run the code I used to generate the addresses to confirm. You can never be too careful throwing around huge amounts of money


This is a list of unspendable addresses with which to burn coins to. When you send a coin to any of these addresses, they are permanently gone and can never be redeemed.

You can prove this by sending a small test amount to the address and then checking a block explorer or using getrawtransaction txid 1. You should see the coins output to somehting like "raw_scriptPubKey": "76a914000000000000000000000000000000000000000088ac" Some block explorers are also smart enough to indicate in their user interface that the coins were destroyed.

You can find the version number matching to the desired altcoin by checking two places in the code:

chainparams.cpp for bitcoin 0.9 and later based coins:

base58Prefixes[PUBKEY_ADDRESS] = list_of(0); //version number is 0

or in base58.h

PUBKEY_ADDRESS = 0, //version number is 0

You can generate this list of addresses with this C# code

Version: 0, Address: 1111111111111111111114oLvT2
Version: 1, Address: QLbz7JHiBTspS962RLKV8GndWFwjA5K66
Version: 2, Address: ogCyDbaRMvkdsHB3qfdyFYaG1WtWyNoVK
Version: 3, Address: 2D1oxKts8YPdTJRG5FzxTNpMtWmqBnjrht
Version: 4, Address: 2cMQwSC9qirWGjZM6gLGwW69X22mx9jRA9
Version: 5, Address: 31h1vYVSYuKP6AhS86fbRdMw9XHieotbST
Version: 6, Address: 3R2cuenjG5nFubqX9Wzuukdin2YfLYZyD1
Version: 7, Address: 3pNDtm61yGF8j2ycAwLEPsuWQXoc2sA4Km
Version: 8, Address: 4DhpssPJgSi1YU7hCMfYt1BJ334YnPXXvB
Version: 9, Address: 4d3RrygbPdAtMuFnDmzsN8T5fYKVUjFu7m
Version: 10, Address: 52P2r5yt6odmBLPsFCLBrFisJ3aSBHTm7z
Version: 11, Address: 5RidqCHAoz6dzmXxGcfWLNzevYqNrjZe5V
Version: 12, Address: 5q4EpJaTXAZWpCg3J2zppWGSZ46KYZmeCZ
Version: 13, Address: 6EPqoQskEM2Pddp8KTL9JdYEBZMGFDpfbU
Version: 14, Address: 6djSnXB2wXVGT4xDLsfTnkp1p4cD2B68LT
Version: 15, Address: 7353mdUKehx9GW6JNHznGt5oSZs9mBsnYx
Version: 16, Address: 7SQekjmcMtR25wEPPiL6m1Mb5586R5ut33
Version: 17, Address: 7qkFjr4u54stuNNUR8fRF8dNhaP37bg4x7
Version: 18, Address: 8F5rixNBnFLmioWZSYzjjFuAL5dytLR3ux
Version: 19, Address: 8eRTi4fUVRoeYEeeTyL4DPAwxatvbjaxFV
Version: 20, Address: 93m4hAxmCcGXMfnjVPfNhWSjb69sDziGSY
Version: 21, Address: 9T6fgHG3unjQB6vpWozhBdiXDbQp3P7F8M
Version: 22, Address: 9rSGfPZLcyCGzY4uYEL1fkzJr6fkicS2rs
Version: 23, Address: AFmseVrdL9f9oyCzZefL9tG6UbvhPbdYzM
Version: 24, Address: Af7Udc9v3L82dQM5b4zee1Xt77BeB76VTG
Version: 25, Address: B4T5ciTCkWauSqVAcVKy88ofjcSasUkSYU
Version: 26, Address: BTngbpkVTh3nGGdFdufHcG5TN7hXYuX31z
Version: 27, Address: Bs8Haw3nAsWf5hmLfKzc6PMEzcxUGSYjxf
Version: 28, Address: CGTta3M4t3yXu8uRgkKvaWd2d8DQvDPnpL
Version: 29, Address: CfoVZ9eMbESQia3WiAfF4dtpFdUMf7KWzm
Version: 30, Address: D596YFweJQuHY1BbjazZYmAbt8jJPbKehC
Version: 31, Address: DUUhXNEw1bNAMSKgm1Kt2tSPWdzF8952Np
Version: 32, Address: DspJWUYDimq3AsTmnRfCX1iB99FBnpDZgu
Version: 33, Address: EH9uVaqWRxHuzJbroqzX18yxmeW8XVJyV9
Version: 34, Address: EgVWUh8o98knojjwqGKqVGFkQ9m5BDNc9G
Version: 35, Address: F5q7ToS5rKDfdAt2rgf9yPXY2f21wp8sq4
Version: 36, Address: FVAiSujNZVgYSc27t6zUTWoKfAGxc8CEW5
Version: 37, Address: FtWKS22fGg9RG3ACuXKnwe57HfXuPKLD5o
Version: 38, Address: GHqvR8KwyrcJ5UJHvwf7RmLtvAnr5uTHdV
Version: 39, Address: GhBXQEdEh35AtuSNxMzRutcgYg3nkvq5Wb
Version: 40, Address: H6X8PLvXQDY3iLaTynKkQ1tUBBJjSZSf23
Version: 41, Address: HVrjNTDp7PzvXmiZ1Cf4t9AFogZgDAZZWi
Version: 42, Address: HuCLMZX6paToMCre2czPNGS3SBpctajMLL
Version: 43, Address: JJXwLfpPXkvgAdzj43KhrPhq4h5ZgWCZWe
Version: 44, Address: JhsYKn7gEwPYz58p5Tf2LWychCLWNQsFhn
Version: 45, Address: K7D9JtQxx7rRoWGu6szLpeFQKhbSzyUbC8
Version: 46, Address: KWYkHziFfJKJcwQz8JKfJmXBxCrPkUrNjU
Version: 47, Address: KutMH71YNUnBSNZ59ieyntnyai7LU5ciQj
Version: 48, Address: LKDxGDJq5fF4FohAB8zJH24mDDNHDNtqsE
Version: 49, Address: LiZZFKc7nqhw5EqFCZKcm9LYqidDsKHFSL
Version: 50, Address: M7uAERuQW2AotfyLDyewFGcLUDtAYu9v5V
Version: 51, Address: MXEmDYChDCdgi77RFPzFjPt86j97MwEZsu
Version: 52, Address: MvaNCeVyvP6ZXYFWGpKaDX9ujEQ418F7sm
Version: 53, Address: NKuyBkoGdZZSLyPbJEetheRhMjeznFZszf
Version: 54, Address: NjFaAs6ZLk2KAQXgKezDBmhUzEuwSacxX1
Version: 55, Address: P8bB9yPr3vVByqfmM5KXftyGckAtAdu6f8
Version: 56, Address: PXvn95h8m6x4oGorNVerA2F4FFRpqMqwAM
Version: 57, Address: PwGP8BzRUHQwchwwPuzAe9WqskgmbKp88f
Version: 58, Address: QLbz7JHiBTspS962RLKV8GndWFwiJNvEPz
Version: 59, Address: Qjwb6QazteLhFaE7SkeocQ4R8mCexgjaLb
Version: 60, Address: R9HC5WtHbpoa51NCUAz86XLCmGTbkf45NT
Version: 61, Address: RYco4dBaK1GStSWHVbKSaebzPmiYNjtd5R
Version: 62, Address: RwxQ3jUs2BjKhseNX1em4msn2GyVBjd1Lc
Version: 63, Address: SMJ12qn9jNCCXJnTYRz5Yu9ZenERqvYwfg
Version: 64, Address: Skdc1x5SSYf5LjvYZrKQ32RMHHVNWCkvvo
Version: 65, Address: T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb
Version: 66, Address: TZJozAg1ruapycCicgz31GxvYJ1G1qELV7
Version: 67, Address: TxeQyGyJa63ho3Loe7KMVQEiAoGCjsUGkb
Version: 68, Address: UMz1xPGbHGWacUUtfXefyXWVoJX9Q2kNtF
Version: 69, Address: UmKcwVZszSyTRucygwyzTenHRon69evUe1
Version: 70, Address: VAfDvbsAhdSLFLm4iNKJwn454K32pQL4Ne
Version: 71, Address: VZzpuiATQouD4mu9jnedRuKrgpHyY2Me1w
Version: 72, Address: VyLRtpTk7zN5tD3EmCywv2beKKYvDmMwFV
Version: 73, Address: WNg2svm2qApxheBKndKGQ9sRwporvRgRpT
Version: 74, Address: Wn1ds34KYMHqX5KQp3eatH9DaL4ogbVZA4
Version: 75, Address: XBMEr9McFXkiLWTVqTyuNQR1CqKkMPMn6L
Version: 76, Address: XagqqFetxiDb9wbartKDrXgnqLah6SqX2S
Version: 77, Address: Xz2SpMxBftgTyNjftJeYLexaTqqdn8nnGv
Version: 78, Address: YPN3oUFUP59LnoskuiyrpnEN6M6aXT4ZJD
Version: 79, Address: YnhenaYm6FcDcF1qw9KBJuW9irMXAhFG9T
Version: 80, Address: ZC3Fmgr3oS56Rg9vxZeVo2mwMMcTvhxKzc
Version: 81, Address: ZbNrko9LWcXyF7J1yyypHA3iyrsQd7Yfms
Version: 82, Address: ZziTjuSdDnzr4YS71QK8mHKWcN8MMmMdi8
Version: 83, Address: aQ44j1juvyTisyaC2peTFQbJEsPJ6xNJsd
Version: 84, Address: aoPfi83Ce9vbhQiH4EymjXs5sNeEoGtEFB
Version: 85, Address: bCjGhELVMLPUWqrN5fK6Df8sVsuBWTKAVN
Version: 86, Address: bc4sgLdn4WrMLGzT75eQhnQf8PA8EpiYbA
Version: 87, Address: c1QUfSw4mhKE9i8Y8VyjBugSktR4tTNknH
Version: 88, Address: cQk5eZEMUsn6y9Gd9vK3g2xEPPg1e5m7n6
Version: 89, Address: cp5gdfXeC4EynaQiBLeNAAE21tvxGwsxK9
Version: 90, Address: dDRHcmpvuEhrc1YoCkygeHVoeQBtzThwNG
Version: 91, Address: dcktbt8DcRAjRSgtEBK18QmbGuSqmo3n8w
Version: 92, Address: e26VazRWKbdcEspyFbeKcY3NuQhnUNMBCG
Version: 93, Address: eRS6a6io2n6V4Jy4H1ye6fKAXuxj8Equm7
Version: 94, Address: epmhZD25jxZMsk79JSJxanaxARDfvXHFj8
Version: 95, Address: fE7JYKKNT92EhBFEKreH4urjnvUceJJVZJ
Version: 96, Address: fdSuXRcfAKV7WcPKMGybZ38XRRjZFwi6Qq
Version: 97, Address: g2nWWXuwsVwzL3XQNhJv3AQK3vzVzJ2DTZ
Version: 98, Address: gS87VeDEagQs9UfVQ7eEXHg6gSFSgoxxnJ
Version: 99, Address: gqTiUkWXHrsjxuoaRXyZ1QwtJwWPUVqsM2
Version: 100, Address: hEoKTrop13LcnLwfSxJsVYDfwSmLAp8Jq9
Version: 101, Address: he8vSy76iDoVbn5kUNeByfVTZx2GpdZxrX
Version: 102, Address: i3UXS5QPRQGNRDDqVnyWTnmFCTHDbzmsYk
Version: 103, Address: iSp8RBhg8ajFEeMvXDJpwv32pxYAJusoSs
Version: 104, Address: ir9jQHzxqmC845W1Yde9S3JpTTo72C9YY8
Version: 105, Address: jFVLPQJFYwezsWe6a3yTvAac5y43kgdYJD
Version: 106, Address: jepwNWbYG87sgwnBbUJnQHrPiUJzTmT4xi
Version: 107, Address: k4AYMctpyJakWNvGcte6tR8BLyZw8fDMYV
Version: 108, Address: kTW9LjC7gV3dKp4MeJyRNYPxyUpstdSbBh
Version: 109, Address: krqkKqVQPfWW9FCSfjJjrffkbz5pYzx3eg
Version: 110, Address: mGBMJwnh6qyNxgLXh9e4LnwYEVLmJ99DAh
Version: 111, Address: mfWxJ45yp2SFn7UciZyNpvDKrzbhyfKrY8
Version: 112, Address: n4rZHAPGXCu8bYchjzJhK3V7VVrefDJHw3
Version: 113, Address: nUCAGGgZEPN1QyknmQe1oAku817bQAFKFt
Version: 114, Address: nsXmFNyqwZptEQtsnpyLHJ2gkWNY5xk9Ad
Version: 115, Address: oGsNEVH8ekHm3r2xpFJemRJUP1dUrQ9Tgo
Version: 116, Address: ogCyDbaRMvkdsHB3qfdyFYaG1WtRY9uKob
Version: 117, Address: p5YaChsi57DWgiK8s5yHjfr3e29NBSr2Lr
Version: 118, Address: pUtBBpAznHgPW9TDtWJcDo7qGXQJtffELg
Version: 119, Address: ptDnAvUHVU9GKabJuvdvhvPcu2fFhbCHUk
Version: 120, Address: qHZPA2maCec991jPwLyFC3fQXXvCQKGhkU
Version: 121, Address: qgtz994ruq51xSsUxmJZgAwCA3B96uWX9n
Version: 122, Address: r6Eb8FN9d1Xtmt1ZzBdtAJCynYS5jpWCRq
Version: 123, Address: rVaC7MfSLBzmbK9f1byCeRUmR3h2VUPcwu
Version: 124, Address: rtuo6Txj3NTeQkHk32JX8YkZ3YwyE5uSav
Version: 125, Address: sJFQ5aG1kYvXEBRq4Sdqcg2Lg4CuwtaWNi
Version: 126, Address: shb14gZJTjPQ3cZv5ryA6oJ8JZTrevAQV4
Version: 127, Address: t6vc3nrbAurGs3i17HJUavZuw4ioKTiFCE
Version: 128, Address: tWGD2u9st6K9gUr68hdo53qhZZyk3JoQAF
Version: 129, Address: tubp21TAbGn2VuzBA7y7ZB7VC5EgmEm7bj
Version: 130, Address: uJwR17kTJTEuKM8GBYJS3JPGpaVdSr7CW1
Version: 131, Address: uiH1zE3k1dhn8nGMCxdkXRf4T5kaCdkd5L
Version: 132, Address: v7ccyLM2ipAexDQSENy51Yvr5b1WsV3aCb
Version: 133, Address: vWxDxSeKRzdXmeYXFoJPVgCdi6GTe9oudV
Version: 134, Address: vvHpwYwc9B6Qb5gcHDdhyoURLbXQKTGrr1
Version: 135, Address: wKdRvfEtrMZHQWphJdy2TvkCy6nM2sRvXd
Version: 136, Address: wiy2umYBZY2ADwxnL4JLx41zbc3HkExbah
Version: 137, Address: x8JdtsqUGiV33P6sMUdfSBHnE7JEUyxTaJ
Version: 138, Address: xXeEsz8kytwurpExNtxyvJZZrcZB9EDJbg
Version: 139, Address: xvyqs6S3h5QngFP3QKJJQRqMV7p7sd48cU
Version: 140, Address: yLKSrCjLQFsfVgX8RjdctZ797d54atPjnV
Version: 141, Address: yjf3qK2d7SLYK7fDT9xwNgNvk8L1K3VhGr
Version: 142, Address: z8zepRKupcoR8YoJUaJFroeiNdawygAmXb
Version: 143, Address: zYLFoXdCXoGHwywPVzdaLvvW18qtkfAi67
Version: 144, Address: zwfrndvVEyjAmR5UXQxtq4CHde6qUBPryp
Version: 145, Address: 21M1TmkDmxAC3arDZYqJDKBU5G9MnASQWhb
Version: 146, Address: 21kM4krX4fLevQHMeaFdXoJjrteciobSpTE
Version: 147, Address: 229gfjxpMNX7oDiVjbfxrHS1eX9sfZM4YhE
Version: 148, Address: 22Z2Gj57e5hag39dpd6JAmZHS9f8cJtPSwe
Version: 149, Address: 22xMsiBQvnt3YramueWdVFgZDnAPYyN9DAW
Version: 150, Address: 23MhUhHiDW4WRg1uzfvxojoq1QfeVjj7JTT
Version: 151, Address: 23m35gQ1WDEyJVT45hMJ8Dw6o3AuSRanfoW
Version: 152, Address: 24ANgfWJnvRSBJtCAimdSi4NafgAPAzJ9Vw
Version: 153, Address: 24ZiHecc5dbu48KLFkBxmCBeNJBRKrksH3x
Version: 154, Address: 24y3tdiuNLnMvwkULmcJ5gJv9vggGW3WGf6
Version: 155, Address: 25NPVcqCf3xpomBcRo2dQASBwZBwDEmoQUw
Version: 156, Address: 25mj6bwVwm9HgackWpSxieZTjBhC9zYcLj6
Version: 157, Address: 26B4hb3oEUKkZQ3tbqsJ38gjWpCT6iqRz2Z
Version: 158, Address: 26aQJaA6XBWDSDV2gsHdMcp1JShi3SJdwwr
Version: 159, Address: 26yjuZGPotggK2vAmthxg6wH65Cxz7aTu2i
Version: 160, Address: 27P5WYNh6bs9BrMJrv8Hzb4YshiDvkmsVmc
Version: 161, Address: 27nR7XUzPK3c4fnSwwYdK5BpfLDUsVoEtAk
Version: 162, Address: 28BkiWbHg2E4wVDb2xxxdZK6SxijpEQDWhR
Version: 163, Address: 28b6KVhaxjQXpJej7zPHx3SNEbDzkyYLg1c
Version: 164, Address: 28zRvUotFSazh85sD1odGXZe2DjFhfiagTM
Version: 165, Address: 29PmXTvBY9mTZwX1J3Dxb1guorEWeMXWj9J
Version: 166, Address: 29o78T2UprwvSkx9P4eHuVpBbUjmb7QsDZ8
Version: 167, Address: 2ACSjS8n7a8PKaPHU64dDywTP7F2Xnso73i
Version: 168, Address: 2AbnLRF5QHJrCPpRZ7UxYU4jAjkHUTriR6y
Version: 169, Address: 2B17wQMNgzVK5DFZe8uHrxBzxNFYRDevbkG
Version: 170, Address: 2BQTYPTfyhfmx2ghjAKdBSKGjzkoMyLjRXP
Version: 171, Address: 2Boo9NZyGQrEpr7qpBjxVvSYXdG4JanKBSc
Version: 172, Address: 2CD8kMgGZ82hhfYyuDAHpQZpKFmKFKjZ76n
Version: 173, Address: 2CcUMLnZqqDAaUz7zEad8th66tGaC2BS8XL
Version: 174, Address: 2D1oxKts8YPdTJRG5FzxTNpMtWmq8ogJg2U
Version: 175, Address: 2DR9ZK1ARFa6L7rQAHRHmrwdg9H65XQAzVH
Version: 176, Address: 2DpVAJ7ThxkZCwHYFJqd6M4uTmnM2BBxq4a
Version: 177, Address: 2EDpmHDkzfw25kigLLFxQqCBFQHbxs7sZ3Z
Version: 178, Address: 2EdANGL4HP7Uxa9pRMgHjKKT32nruaTZbks
Version: 179, Address: 2F2VyFSMa6HwqPaxWP6d3oSipfJ7rHoycY9
Version: 180, Address: 2FRqaEYeroUQiD26bQWxNHZzcHoNo3vqoah
Version: 181, Address: 2FqBBDex9Wesb2TEgRwHgmhGPvJdjn3VySa
Version: 182, Address: 2GEWnCmFSDqLTqtNmTMd1FpYBYotgR79eRB
Version: 183, Address: 2GdrPBsYiw1oLfKWrUmxKjwoyBK9d8FShkh
Version: 184, Address: 2H3BzAyr1eCGDUkewWCHeE55kopQZprrjuM
Version: 185, Address: 2HSXbA69JMNj6JBo2XccxiCMYSKfWZKfNiH
Version: 186, Address: 2HqsC9CSb4ZBy7cw7Z2xHCKdL4pvTJ1puEt
Version: 187, Address: 2JFCo8Jjsmjeqw45CaTHbgSu7hLBQ199hUo
Version: 188, Address: 2JeYQ7R3AUv7ikVDHbscvAaAuKqSLgmg8Ns
Version: 189, Address: 2K3t16XLTC6abZvMNdHxEehSgxLhHPEwWBp
Version: 190, Address: 2KTDc5ddjuH3UPMVTeiHZ8piUaqxE8efyQS
Version: 191, Address: 2KrZD4jw2cTWMCndYg8cscwzGDMDAr2Vfxi
Version: 192, Address: 2LFtp3rEKKdyE2DmdhYxC75G3qrU7XkhRnJ
Version: 193, Address: 2LfER2xXc2pS6qeuiiyHWbCXqUMj4F4VWmR
Version: 194, Address: 2M4a224ptjztyf63okPcq5Kod6rz119KvTG
Version: 195, Address: 2MTud1B8BTBMrUXBtmox9ZT5QjNEweTvJzd
Version: 196, Address: 2MsFDzHRUAMpjHxKyoEHU3aMCMsVtMqs1PV
Version: 197, Address: 2NGapyPiksYHc7PU4pecnXhcyzNkq6XkrCc
Version: 198, Address: 2NfvRxW23aikUvpc9r4x71ptmct1mnVAMDo
Version: 199, Address: 2P5G2wcKLHuDMkFkEsVHRVxAZFPGiWSK8Nu
Version: 200, Address: 2PUbdvicd15gEZgtKtucjz5SLstXfFA9hbp
Version: 201, Address: 2PswEupuuiG97P82QvKx4UCi8WPnbwLazty
Version: 202, Address: 2QHGqtwDCRSbzCZAVwkHNxKyv8u3YcQ1tMm
Version: 203, Address: 2QgcSt3WV8d4s1zJayAchSTFhmQJVN3br24
Version: 204, Address: 2R5x3s9omqoXjqRSfzax1vaXVPuZS5uBrjd
Version: 205, Address: 2RVHerG74Yyzceram21HLQhoH2QpNmpdhPA
Version: 206, Address: 2RtdFqNQMGATVUHir3Rcetq54ev5KUF7CKc
Version: 207, Address: 2SHxrpUhdyLvNHirw4qwyNxLrHRLGCEGteF
Version: 208, Address: 2ShJToazvgXPF7A126GHHs5cduvbCwVFSEJ
Version: 209, Address: 2T6e4nhJDPhr7vb977gccMCtRYRr9g78FVP
Version: 210, Address: 2TVyfmobW6tJzk2HC96wvqLADAw76KwWP8N
Version: 211, Address: 2TuKGkutnp4msZTRHAXHFKTRzoSN37VVAFw
Version: 212, Address: 2UJesk2C5XFEkNtZNBwcZoahnRwcynjeMTL
Version: 213, Address: 2UhzUj8VNERhdCKhTDMwtHhya4SsvS1w2ve
Version: 214, Address: 2V7L5iEnewcAW1kqYEnHCmqFMgx8sBBwaW1
Version: 215, Address: 2VWfghM5wendNqBydGCcXFxX9KTPovpTTp9
Version: 216, Address: 2Vv1HgTPEMy6Fed7iHcwqk5nvwxekeUY6LN
Version: 217, Address: 2WKLtfZgX59Z8U4FoK3HAED4iaTuhHLrQWV
Version: 218, Address: 2WigVefyonL21HVPtLTcUiLLWCyAe3793Hv
Version: 219, Address: 2X826dnH6VWUt6vXyMswoCTcHqURans3VbC
Version: 220, Address: 2XXMhctaPCgwkvMg4PJH7gat5TygXRGHNka
Version: 221, Address: 2XvhJbzsfusQdjnp9QicSAi9s6UwUDaHCTE
Version: 222, Address: 2YL2ub7Axd3sWZDxES8wkeqReizCQq5qeYS
Version: 223, Address: 2YjNWaDUFLELPNf6KTZH58xhSMVTMbuiQue
Version: 224, Address: 2Z8i7ZKmY3QoGC6EQUycPd5yDyziJGUP4yB
Version: 225, Address: 2ZY3iYS4pkbG91XNVWPwi7DF1cVyF1QSRQv
Version: 226, Address: 2ZwPKXYN7Tmj1pxWaXpH2bLWoF1EBjcvjdx
Version: 227, Address: 2aLivWefQAxBtePefZEcM5TnasWV8TZUAnk
Version: 228, Address: 2ak4XVkxgt8emTpnkaewfZb4NW1k58Y6soz
Version: 229, Address: 2b9Q8UsFybK7eHFvqc5Gz3iLA8X11qLGHho
Version: 230, Address: 2bYjjTyZGJVaX6h4vdVcJXqbwm2FxX3mXFt
Version: 231, Address: 2bx5LT5rZ1g3Pv8D1euwd1xsjPXWuJVAuAZ
Version: 232, Address: 2cMQwSC9qirWGjZM6gLGwW69X22mr23ajyL
Version: 233, Address: 2ckkYRJT8S2y9YzVBhkcFzDRJeY2nhTvtkr
Version: 234, Address: 2dA69QQkR9DS2NRdGjAwaULh6H3HjMykJZg
Version: 235, Address: 2dZRkPX3hrPtuBrmMkbGtxTxsuYYgAaFrXZ
Version: 236, Address: 2dxmMNdLzZaMn1HuSn1cDSbEfY3ocqKw2JE
Version: 237, Address: 2eN6xMjeHGkpepj3XoRwXviWTAZ4ZYzZUiZ
Version: 238, Address: 2emSZLqwZywHXeABcprGrQqnEo4KWDUtHZ8
Version: 239, Address: 2fAnAKxErh7kQTbKhrGcAty42RZaSyLdLhp
Version: 240, Address: 2fa7mK4Y9QJDHH2TnsgwVP6Kp44qPdoERF7
Version: 241, Address: 2fyTNJAqS7UgA6Tbsu7GosDbbga6LNxXpjp
Version: 242, Address: 2gNnyHH8ipf92utjxvXc8MLsPK5MH5Y2mh8
Version: 243, Address: 2gn8aGPS1XqbujKt3wwwSqU9AwacDmHzxwT
Version: 244, Address: 2hBUBFVjJF24nYm28yNGmKbQxa5sAaRbBRL
Version: 245, Address: 2haonEc2axCXfNCADznc5oigkCb87CsWT4q
Version: 246, Address: 2hz9PDiKsfNzYBdJK2CwQHqxXq6P3zvPiYL
Version: 247, Address: 2iPUzCpdANZTR14SQ3dGimyEKTbdzhc3wFX
Version: 248, Address: 2inpbBvvT5jvHpVaV53c3G6W766twP9Agiu
Version: 249, Address: 2jCACB3DjnvPAdvia6TwMkDmtic9t4jgUNN
Version: 250, Address: 2jbVoA9X2W6r3TMrf7tGgEM3gM7Qpkek3Bk
Version: 251, Address: 2jzqQ9FpKDHJvGnzk9JbziUKTycfmUfunZT
Version: 252, Address: 2kQB18N7bvTmo6E8qAiwKCbbFc7viDRKCkh
Version: 253, Address: 2koWc7UQtdeEfufGvC9Gdgis3EdBexf8fte
Version: 254, Address: 2mCrD6aiBLphYj6R1DZbxAr8ps8SbbVvNZX
Version: 255, Address: 2mcBp5h1U41ARYXZ6EywGeyQcVdhYP7dFob
Posted: 10/22/2014 3:40:57 AM

Megcoin Mining and Setup Guide

This was authored by billotronic on bitcointalk/IRC

Register with a pool. For this example we are going to use RapidHash


Currently only x64 Windows is supported

  • Download miner
  • Unzip and enter the dir
  • Next, create a new text document and open it for editing
  • Enter the following: minerd.exe -o stratum+tcp:// -u YOUR_MEG_ADDRESS -p anything
  • If you do not want to use all available cores add "-t X" where X is the number of cores to be used.
  • save as miner.bat (or whatever suits your fancy as long as the file extension is .bat)
  • Double click on your created .bat file and start mining


Assuming *buntu 12.04 though these packages should be in your repo if using a current version Debian derivative.

First, install dependencies:

sudo apt-get update
sudo  apt-get install git build-essential libcurl4-openssl-dev screen automake make -y

Get source:

git clone


cd megcpuminer
chmod a+x @@@ is this needed?
./configure CFLAGS="-O3 -march=native"

Start the miner:

screen ./minerd -o stratum+tcp:// -u YOUR_MEG_ADDRESS -p anything

If you do not want to use all available cores add "-t X" where X is the number of cores to be used.

LINK: Install miner and mine script CHANGE MEG ADDRESS


Shameless referal link:

Create account and add some funds.

Go to scripts and create a new script

Add this:

NOTE: Change script to YOUR MEG ADDRESS!!!
sudo tsocks apt-get update
sudo tsocks apt-get install git -y
tsocks git clone
sudo tsocks apt-get install build-essential libcurl4-openssl-dev automake make -y
cd megcpuminer
chmod a+x
./configure CFLAGS="-O3"
tsocks ./minerd -o stratum+tcp:// -u YOUR_MEG_ADDRESS -p anything

Then save.

Now go to Buy Compute and add your bid requirements. I recommend setting the minimum RAM to at least 1024. Anything less was giving compilation errors from running out of RAM.

To ensure proper script execution, go to Access Machines --> Script Output and a window will open up showing the console output of your VPS instance. The script will take a few minutes to fully run (sometimes much longer depending on the VPS you rent) so be patient and keep checking till you see the miner hashing

Example: [2014-05-10 01:07:37] accepted: 174/174 (100.00%), 143.74 khash/s (yay!!!)

Megcoin Wallet Guide

*buntu 12.04 & qt4

First install dependencies:

sudo apt-get update
sudo apt-get install build-essential libtool autotools-dev autoconf libssl-dev  libboost-all-dev libdb5.1++-dev libqt4-dev libprotobuf-dev protobuf-compiler git libqrencode-dev libminiupnpc-dev -y

Get the source:

git clone

Build the client:

cd megcoin
./configure --with-gui=qt4 
sudo make install

To launch:


Install script:

*buntu 14.04 & qt5

First install dependencies:

sudo  apt-get install git build-essential libssl-dev libdb5.1++-dev  libboost-all-dev libqrencode-dev libminiupnpc-dev libqt5core5a  autotools-dev autoconf qttools5-dev-tools qttools5-dev  libqt5dbus5  libqt5gui5 libprotobuf-dev protobuf-compiler -y

Get the source:

git clone

Build the client:

cd megcoin
./configure --with-gui=qt5
sudo make install

To launch


Install script:

Tags: megcoin
Posted: 5/10/2014 6:58:34 AM

Cryptographic proofs

The following is signed:

Hash: SHA512

I hereby claim:

1. I own and as the website and domain.
2. I am earlz ( on keybase.
3. I have a public key whose fingerprint is C114 6A0D 6250 CAEA E3C7  5516 224E 8EA1 9223 B76D

And finally, I am proving ownership of this website by posting this here. 
Version: Keybase OpenPGP JS 0.0.1


My publicly-auditable identity:

From the command line:

Consider the keybase command line program.

# look me up
keybase id earlz

# encrypt a message to me
keybase encrypt earlz -m 'a secret message...'

# ...and more...

Dogecoin address ownership verification

Hash: SHA512

The Dogecoin address DTe6ymUDiTNaLEe4qBNyLzZyMUnEgLTRnT is owned by Earlz, who also owns and has a publicly-auditable identity at

Signature: IIiNwuV3rp5yhDo5WzPymlO7ARBHZj9J25eUDKflbg+WfsOozULFk+fptsxLj5G0jHG3+2Ww5SpkLIP6DNJZirM=
Version: Keybase OpenPGP JS 0.0.1

Posted: 3/18/2014 8:51:01 PM

I'm learning Rust so I can move away from C#

So, I've been learning Rust recently. It's been a huge breath of fresh air for me. It's basically everything I've ever wanted in a community and programming language.. But wait, C# is pretty cool too... Well, let's take a step into why I find Rust to be so refreshing, despite me loving C#.

Linux as a first class citizen

Rust is supported on Linux as a first class citizen. This is in stark difference to .NET, where Mono seems to be the red headed step child. I love Mono. This website is running Mono. No matter how awesome Mono is though, it can never shake off the fact that .NET and C# is primarily driven by Microsoft, who would be glad if every copy of the source code of Linux was lost.

Xamarin is now the official steward of Mono. They seem to be much more focused on ensuring that their proprietary Mono support on Android and iOS continues to be awesome (which it is). It seems like the only advancement to Mono happens only because it happens to work on every platform.

Rust has financial backing from Mozilla. Mozilla has always struck me as one of those "good" companies. Some people would say this about Google, but I don't think making people into ads without consent is not evil. Mozilla has always been good about open sourcing nearly everything they do. And they do it under permissive licenses! The whole of Rust is under Apache/MIT license. Meanwhile, Microsoft is busy making sure that their licenses say can't be "run on a platform other than the Windows platform;"

Open Design. Open Community.

I joined the #rust IRC channel. I was quite shocked at how active it was. And how much discussion about the direction of the language itself happens on there. Again, this is the exact opposite of .NET and C#. Basically what happens with C# is Microsoft goes behind closed doors, tries to find things that need to be easier, and then when the next version of Visual Studio is due to come out, unleashes these changes on us. If we don't like the changes, that's too bad. Now, honestly, I must say that most of these changes are not necessarily bad. It's more the principal of the matter. It's like if C# was your wife (or husband) and your family had saved up money for three years to get a new car, and then C# went shopping with her ex from high school (Microsoft) and brought home a scooter and a gas guzzling Hummer. It's not that either one aren't useful in some circumstances, but that money (ie, time) could've been better used on something else.

And that's not even to mention the fact that Microsoft decided to send home with C# a mutt dog that shits on everything(ie, WinRT support in .NET). I for one do not like the direction Microsoft is taking .NET. In fact, with WinRT it looks like the Windows division had a secret plan to try to make .NET suck as much as possible. Obviously they want us to all be using C++, because all their advancement happened there.. oh and now C# can interface to C++ code easier... so you can port your existing C# code to C++. It seems like Microsoft is actively trying to prevent me from writing for their platform even. Sometimes I think they'd be happier if all the developers just went away and let them focus on making Word suck more.

Now, this rant has a point. Rust isn't like this. If I don't like a feature, I can talk about it in IRC.. and here is the amazing part, people will actually listen. Sure, the writers of C# and such hang out on Stackoverflow and answer design questions and such, but it's not like Microsoft is asking the community "well, what do you want?".. because if they had, then WPF probably wouldn't be dead in the water. But I digress.

Most of the stuff Microsoft develops that is open source, they don't really accept contributions to either. Recently (last year) they finally started accepting pull requests and doing development openly in ASP.NET MVC though. So, they're starting to move toward the right direction, but I won't be happy until .NET framework is completely open source.

Embrace the magic. Screw the magic.

There are two kinds of developers. The ones that prefer magic, and the ones that don't. I explicitly abhor magic in most cases. This is why I don't use ASP.NET MVC. Magic is the life blood of it!

Now, what do I consider magic?

  1. Strings that somehow get translated to significant method or type names at runtime
  2. Using reflection to call certain hard-coded method names (that aren't part of an interface)
  3. Using attributes to define essential behavior.

I can hear the yells now. "Convention over configuration!" No, fuck your conventions. I want compiler errors, not runtime or logic errors.

Example, here is how to configure a route in ASP.NET MVC:

  "Default", // Route name
  "{controller}/{action}/{id}", // URL with parameters
  new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults

Hmm, let's count the number of ways we could mess this up. Well, we might screw up the super magic names of "Home" or "Index". I think that the anonymous object's fields of controller and action are also significant. I don't know ASP.NET MVC. Personally, with something like intellisense at Microsoft's disposal, I don't understand why they chose such a dynamically typed way of doing this.

Magic isn't as bad in dynamically typed languages at least, because magic doesn't make you lose as much as in a statically typed language. This is why I'm not going to mention something like Ruby. I actually enjoy writing Ruby. When they do magic, I'm not losing the entire benefit of using a compiled and statically typed language. Instead, I'm just losing an easy understanding of how things work.

Rust, on the other hand, is designed from the very start that compiler errors should be given for everything that is probably wrong. They have an enormous focus on compile-time safety. They track your pointers and ensure a null pointer will never happen. Sometimes things are impossible to represent in this safe environment, so they also provide the unsafe keyword. The whole community seems to be chanting "compiler errors, not runtime errors". And for good reason. Compilers are powerful tools! They should verify that code will do what it is suppose to, not just spit out machine code

Just use Visual Studio. Oh, you're on Linux?

C# was never designed to be written outside of Visual Studio. With it's long names, magical code generation (in some projects), and official tool support for only MSBuild, it makes a lot of assumptions. This would be fine if Visual Studio worked on Linux, but it doesn't. The only choice for Linux is Xamarin Studio, or some crufty combination of Makefiles, MSBuild(for interop with Visual Studio), and a bit of insanity. And if you've never had the pleasure of using Xamarin Studio, let me just tell you first hand. IT SUCKS. It can get you through in a pinch, but in general, it sucks really bad. Apparently it doesn't use MSBuild natively, which causes interesting behavior sometimes. The UI doesn't obey themes properly, leading to a very ugly editor in my case. VI-mode is a running joke; and finally, it's #1 feature is that restarting it will fx it when it freezes.

Well, Xamarin is maintaining it, maybe it works better for their official platforms (Windows or Mac OSX).. erhm.. no, it doesn't. It sucks equally as bad there. The strange thing is that when it was MonoDevelop, it didn't suck quite as bad. I mean, the UI was a bit uglier (but did work properly with themes), it didn't support the new stuff like portable class libraries, and it was still pretty bad.. but I actually did not mind using it exclusively. It usually was good enough for me to not constantly be annoyed. Xamarin changing it into XamarinStudio was the worst thing that ever happened to it.

Rust, on the other hand, does not have an ulterior motive to drive the sales of a text editor. It's very easy to type, and very easy to use with many tools. I'm not going to say makefiles are perfect, but at least they work everywhere. Rust seems to follows the C style convention of keep names as short as possibly readable. (but you won't see names like atoi in rust, because the designers aren't Satan). I've been using Kate (due to it's awesome vi-mode) for Rust development. I constantly have to look at references because I'm still learning, but in general you seem to type less than C#. I do miss intellisense, though. It's a very useful feature when you're discovering methods and such of an object.

It's like C, except it's from this decade

Honestly, I've never had a big problem with writing C. I love the simplicity and the pure understanding I can have of the code I write. Also, it's nice to see a Linux-first platform. But I can't stand the cruft of actually trying to get things done in C. Function prototypes, preprocessor includes, no assistance with memory management... ugh. This is what makes Rust so awesome. It's like C, except for with all the cruft fixed, and with a few other awesome things added like closures and green threads. You can even use rust to write an OS kernel with just a bit of added assembly. Try doing that with C#..

Other languages?

To be fair, I did look at other languages. Some of these languages looked cool, but just didn't quite mesh with me like Rust did.

  • Go -- lacks generics and I don't enjoy some of the design decisions
  • Crystal-lang -- I actually looked at this and wanted to use it, but I couldn't get it to work and the community seemed rather lack luster.. and the language/compiler lacks an open source license
  • Something crazy and functional -- I've tried some functional languages.. they're pretty cool, but just not what I wanted right now

My dream of a language almost perfectly coincides with Rust

  • Compiles to native (no runtime)
  • Compiler errors, not runtime errors
  • Strong type system with duck typing
  • Has a strong generic type system
  • Generally embraces my "no magic" life style
  • Linux as a first class citizen
  • Could semi-easily replace C as a systems language

As you can see, Rust fits the bill pretty well. It's not perfect, no language is.. but it's the best I've seen yet

What now?

Well, I'm going to continue learning and using Rust. And I'll continue using C#, because it's what brings home the bacon.. but all of my open source effort will be toward Rust. Rust has a community I believe in and their ideals are something I can agree with. Some people like magic mixed with their static typing, and that's ok. Some people don't care at all about Linux support, and that's ok. I'll be over here though, using Rust, chanting "compiler errors not runtime errors" and using Kate on Arch Linux :)

So far, I'm working on learning Rust by trying to write something like my LucidMVC project, but in Rust, dubbed RustyMVC.

Posted: 10/12/2013 6:12:17 PM

Why I won't be using Microsoft.Bcl.Immutable package (despite much anticipation)

Looking at the newly released ImmutableCollection package, I see some confusing restrictions in it's licensing agreement (especially for something that must be redistributed with your application)

You may not ... work around any technical limitations in the software;

Does this mean it's illegal to use reflection to get at private bits of the library?

You may not ... use the software for commercial software hosting services.

This sounds quite scary. Does this mean I couldn't make a commercial website or SAS product using this library?

You may not ... modify or distribute the source code of any Distributable Code so that any part of it becomes subject to an Excluded License. An Excluded License is one that requires, as a condition of use, modification or distribution, that the code be disclosed or distributed in source code form; or others have the right to modify it.

Does this mean I can't use GPL licensed code with this library?

You may not ... distribute Distributable Code to run on a platform other than the Windows platform;

This looks rather obvious, but does this mean I couldn't make a website that ran on Mono and used this library, or does it only mean that I couldn't make something using Mono and then package the program and this library in a Linux debian package or something else? (ie, distribute, not just run)

This license worries me greatly about my ability to use this (much anticipated) library. These questions probably require a lawyer to fully resolve, and I'm not going to buy the time to ask one.. so, I just won't be using this library, as cool as it looks and as much as this has been anticipated for me.

Unless you have a legal team you can ask these questions, I wouldn't use this library either until Microsoft changes the license to something less hostile to developers

Also, if you want a version of this with a sane license, see the up and coming MIT-Licensed Project

Posted: 9/26/2013 4:18:27 PM

Xamarin Android... is awesome

So, I recently found that Xamarin Android completely allows dynamic loading of assemblies.. and everything somehow seems to work properly.

Purely awesome. Try it out yourself:

                var wc = new WebClient();
                var bytes = wc.DownloadData("");
                var asm = Assembly.Load(bytes);
                Type type = asm.GetType("DynamicAsm.DynClass");
                var obj = Activator.CreateInstance(type);
                var res = (string)type.InvokeMember("Test",
                                  BindingFlags.Default | BindingFlags.InvokeMethod,
                                  new object[] { count++ });
                button.Text = string.Format(res);

Despite Xamarin Studio and most of the things around it being buggy, the actual APIs are rock solid and awesome.

Posted: 9/16/2013 2:35:17 AM