Exciting Introduction to Newsqueak, for me at least. (NL10)

Sykopomp and I have been speaking on concurrency a lot lately.

I’ve used concurrency in several applications, the largest of which was a bot for EQ that used an Actor based concurrency system. Other that have used concurrency haven’t used any of the larger patterns, and honestly were just off the cuff and likely would not have worked well at all when scaled up.

Sykopomp pointed out Communicating Sequential Processes. I read about it and it seemed like a really good idea, but implementing it was still a bit beyond what I could imagine. He then clued me in on a Google Talk done by Rob Pike, Advanced Topics in Programming Languages: Concurrency/message passing Newsqueak.

After watching this, I am really excited for this style of concurrency. I am looking to use it with Python but I have yet to find a library that implements it. I have considered using newsqueak directly but the problem there is the small community and even smaller amount of libraries available.

If I can not find such a library, I may take it upon myself to implement this, possibly as a wrapper on python. Sykopomp would just as soon I learned lisp and used the lib he found for lisp using this, but I am going to stick with my python for now.

EDIT: Found a library for pyhton: PyCSP. Going to install and play with it today, I am really excited. I’ll report back my experience as soon as I have enough code written to decide on if I really like it or not

Read it later (NL2)

I tend to get a lot of links on IRC about various topics, often I’d like to read them but I don’t have the time or the focus to do it just that moment. I’ve tried several methods of saving links to read them later, Emailing the pages to myself, adding it to reader with the tag ‘look at later’ and none has worked as effectively as I would have liked.

I stumbled upon the Read It Later Firefox extension and strongly considered it, but I use a mod on Firefox that makes it so that extension is pretty much useless, I’ll go into why my Firefox looks like this another day. I’d recommend this extension if your UI isn’t as minimal as mine.

But my search was not hopeless, I found that the site that did Read It Later, also did a set of bookmarklets which are great. You have to sign up to use them, since they send the URL to the site for your list, allowing you to generate a read it later list on the fly, then you can hit the read bookmarklet to mark it as read and remove it from the list. And there is of course a bookmarklet to bring you to your list.

This solution was nice enough as it was, but they also provide a RSS feed of your list, those of us who use feed readers continue on, those who don’t, go here and start using them. They are great.

So I set it up in my feed reader so when I am going through my reader, I am reminded of my list, and can read them as needed, or I can jump straight to my list via the bookmarklet. This allows me to not think about the articles until I have time to read them (like when I am checking my reader)

This solution is great for me, hope y’all like it too.

Nerd levels (Nerd Level 1)

16:00:09 Wraithan | I can’t decide on how technical I want to go
16:00:23 [C]Niall | Meh. Wing it.
16:00:29 [C]Niall | Write crap if you want to write crap.
16:00:35 Wraithan | sometimes i feel like just diving in and fuck those who don’t get it, other times I feel bad and want to make it so everyone an understand
16:00:46 [C]Niall | Do it all.
16:00:56 Wraithan | Maybe I should put a level as part of the name
16:00:56 Wraithan | haha
16:01:21 [C]Niall | Yeah.
16:01:23 [C]Niall | Good plan.

Alright, from now I plan on tagging each title with a nerd level. Sometimes I want to go in-depth on programming topics and well, most of my friends wont get it. Other times I am doing light hearted posts and/or explaining different technical things in ways I hope the majority can understand.

Not going to list all the levels, just going to put tiers.
Nerd Level 1: This will be stuff anyone can understand, or hopefully anyone can, ping me on IM/IRC/comments if something doesn’t make sense in one of these, so I can improve my writing.

Nerd Level 5: This will be moderately technical stuff, such as computer parts and linux software and what not.

Nerd Level 10+: This will be more in-depth programming concepts, examinations into how hardware works, stuff like that.

Hopefully this will help, and allow me to explore whatever topics I want.

Alpha and Omega

More experimental software exploits.

I spent 2-3 hours last night troubleshooting a crash in the latest nightly (an alpha or beta version that is built from the code base each evening) version of Firefox.

I went to http://commons.wikimedia.org/wiki/File:Weechat.jpg when looking around for some screen shots of how the IRC client used to look in the previous version (was helping someone on IRC to make the current version look more like the older version) it turns out some Javascript (code that runs on your browser to make things dynamic.)

What did this get me by running the nightly and finding a bug and reporting it. Not much, surely the bug would have been discovered before live without me. But this is just the inverse of the poison vial in the river. If all of us who test out software thought that same way, that it would be found before release so why bother even using a alpha/beta/rc piece of software and reporting bugs, it would increase the burden on the developer and allow for more edge case bugs to slip through.

If you have the time and the will, I recommend that you use beta software, just be sure you are willing to go to their website and file a bug report if/when it crashes or glitches or whatever else.

Tips for filing bug reports though, attempt to reproduce the bug, if you can, then give the full reproduction steps in the bug report, if not, say that you couldn’t reproduce it, just because you can’t doesn’t mean that the developer wont have an idea of why it happened and be able to force the bug to show its face.

Make sure you are up to date, if you are running a beta version that is 2-3 versions old, the first thing the developer is going to say is ‘can you reproduce it in the most recent version?’

And last but surely not least, at least give it a half assed attempt at searching their bug database to see if the bug has already been posted, if it has, and you have similar reproduction steps then add them in the comment (or if you can reproduce but the original bug poster can’t) along with any other information you have. If the bug is in there, but you have vastly different reproduction steps, then post in a separate bug report.

Hopefully this will encourage some of you to run beta software, and help the developers while you are at it.

Note: The bug reporting tips apply to release software as well. If the program has a website, look for a bug database (may be labeled as known issues) if they don’t have a bug database, find the contact email address and send them the bug report via email (even if you think it is common enough for others to have already reported it)

Nerding Out

I have a tendency to do some things that others consider odd… among those things is my computer habits. I like to run my IM through my IRC client… which is a text mode client (aka no pretty pictures) It works great for me, and allows me to connect remotely into my session and talk to folks.

For this I was using coLinux on my windows gaming machine. Which allows me to run Linux as a daemon process. But this grew tiresome as sometimes I like to turn off that beast since it is so loud. So at about midnight last night I decided I should just build a always on server. At first this seemed like it was destined for failure.

I didn’t have a spare network port on my router to even connect another computer. So I found extra network cards to plug into my always on server to use it as a router. Ok that problem solved, then I realized I didn’t have a PC-PC network cables (crossover cables) and thought that would end my fun, but turns out modern NICs have auto-mdix which can flip one side to a router port instead of a normal computer port, thus fixing the problem.

So I pull out my biggest baddest computer that is sitting around collecting dust, find out that I had given away the heat sink and didn’t have any spares for it. Next computer… didn’t have any RAM for it, same with the next two. I pull out the bottom of the bucket, a AMD Duron 800MHz, it is i686 so I can run Archlinux on it, but I couldn’t find ram for it either… digging and digging though my parts box I finally found two sticks of SD-RAM, 32MB each.

So I put all these parts together on my bed to test them, find they are all working including a rather iffy 8GB hard drive I found. I install Archlinux on it, get it all setup for headless running, power it off, remove the video card, and move to it’s new home:

Yup, that’s right, no case, here are some quotes about that:

05:24:31 jelly12gen | Wraithan: woo it’s bare boned
05:25:59 tigrmesh | you were serious! it really is just sitting on a shelf
05:26:45 [F]LillianYIM | it’s like all open air and such
05:27:26 tigrmesh | it never occurred to me that a case is ‘merely’ an accessory
05:49:06 DigitalKiwi | I hope that’s not running like that >.>
06:01:35 DigitalKiwi | well it could explode!

I have a throttle on the fan making it near silent. overall this system should be REALLY low power making it ideal for an always on system.

Beta Software and Nerds.

Second post, maybe I will keep up with this.

Beta software, something I use an above average amount of. In fact most applications I directly use on a regular basis are in alpha, beta, or release candidate state.

Why you may ask? I like to be on the cutting edge, talk to my friends about how cool this new feature or having that bug fix really makes things better, and the speed, you wouldn’t believe the speed of the new version!

What I don’t tell you is the 10 bugs in the new feature, the 3 resulting bugs from the bug fix, and how despite the runtime speed, it crashes so much it is the same, if not slower.

Nerds tolerate a lot more problems with their software and hardware than the average person, if we find a bug we post something into the bug tracker, and/or we just deal with it, a small portion will look to see if they can fix the bug and maybe submit a patch, but an even smaller portion will actually be able to, and even then, the bug doesn’t typically get fixed until the developer fixes it.

Whereas your standard computer user will do one of three things should they encounter a problem with a piece of software. First is just give up and abandon the project, second would be to try to work around the problem and probably call their IT friend to see if they can help, or finally they just go find a different piece of software to use. This isn’t the wrong way to go about things, but it certainly isn’t the nerd way.

Funny thing is, like the indie movement where a band is only cool until you tell someone about it, using beta software is cool because we are an exclusive group that gets to see all the cool new features before you mundane stable version users do, but that doesn’t stop us from insisting you should use the beta version, which is just sabotaging ourselves, since more will be using it and we will have to provide tech support on it.

It reminds me of the The REAL reason we use Linux especially number 2.

It has taken me years to understand that most people don’t share my love of technology. They may embrace the fact that they have to use it but they aren’t interested in using things that may break, or digging deep into why it works. Even in workplaces with lots of computer nerds (like when I was programming or doing QA) I was still a minority, most of them used their computers as a tool to get a job done, not caring about the intricacies. It sucks at times, because when I discover something I think is really neat, I have almost no one to share with.

Not sure if any of you guys have hobbies that you feel you can’t share with your friends, but that is unfortunately the place a lot of us nerds get pushed into. We dive deeper into different technologies, have a great time doing it, then when one of our friends ask what we did last night, we simplify it down to Played on my computer, or maybe for those friends who are a little more tech savvy, I was programming (and maybe even share the project name). They may be kind and ask how that project is going, and you will again simplify greatly and say Well or There are a few problems.