Ethash folder and small SSDs

Hello fellow miners, minters & other altcoiners, a quick note to help with Ethereum mining today.

If you’ve been mining Ξthereum you might have noticed a folder a folder named Ethash in your User profile on Windows.  I found out about it when trying to migrate my HTPC to Windows 10 on a 60 gig SSD and discovered this ersatz 10 gig folder. It contains an up-to-date DAG that the miner needs for optimal performance but 8-10 gigs is quite a lot of space for such a small drive.

By the way, if you don’ t know what Ξthereum is but you did find the folder on your machine, good news!  Someone has been making money using your computer!  Bad news is, it isn’t you.  Maybe someone it’s someone you know, or it could be a virus, either way you should investigate; such a virus can end up costing you a lot in electricity and wear out your hardware.

The usual Ethereum miners don’t have a parameter to set the ethash path, but there two simple workarounds to lighten the load on your small SSD.

  1. Use no-precompute when starting your miner so there are no file saved.  The drawback is that you’ll have to recompute a new DAG every time you restart your miner or after a transition to a new DAG.
  2. Create a hardlink to a larger drive.  I don’t think there’s any noticeable performance hit with using a HDD for this. It could even be a spare old SD card or flash drive, but using those might conceivably add a second of delay to each block mined due to the slower interface.  On Windows, stop your miner, delete your ethash folder (there’s no risk involved) and create a hardlink by starting a command shell as administrator and type
mklink /J c:\user\username\appdata\local\ethash f:\ethminer\ethash

or appropriate folder paths.  Problem solved!

Ok it’s a pretty obvious trick but I hope it helps someone out there.

Cooldisplay for CoolerMaster CoolDrive 6

CoolDisplay 6 What is CoolDisplay?

  • Lets you enter a message to display on the LCD when in idle mode
  • Automatically sets the fan speeds to reach maximum target temperatures on the probes
  • Displays the temperatures and fan speeds in a small window.

Installation Create a folder and put the CoolDisplay.exe and cd6.xml files into it. Copy the CommBase.DLL and vbUserSettings.DLL files from the original CoolDrive6 folders into it. You could also simply copy CoolDisplay.exe and cd6.xml into the CoolDrive6 folders. Edit the values in the cd6.xml files. The file included is from my own machine. Here is a definition for each tag: The com/usb port on which your CD6 is installed. The message to display when idle. The range of temperatures around the target which won’t make a fan react. Wether to display in Celsius or Farenheit – currently does nothing. The temperature target to reach for probe X. The fans that have an effect on targetX. The list of fans is marked using F1 to F4 tags. In the sample cd6.xml file, Fans 1, 2 and 4 have an effect on the temperature of probe 3. Probe 3 is on my GPU, fan 1 is a front case fan and fan 2 & 4 are rear case fans, so when the GPU starts heating up from a game, all 3 case fans speed up automatically to increase the air flow. You can start the program when you boot the system by putting it in a batch file, otherwise just double-click on its icon to start it. Display: The program updates the current temperature and fan power every 5 seconds in this format: Each column represents a Temperature/Fan value. The first row is the current temperature (in Centigrades). The second row is the current fan speed. Known Issues:

  • The format of the XML file is ugly, but I did this quick, and it works. 🙂
  • It doesn’t run as a service.
  • You can’t change the message displayed dynamically.

If you have problems or want to discuss the program, please post on my forums. There are no warranties or responsibilities implied with this program. USE AT YOUR OWN RISK. You might damage your hardware or render your computer unstable by using it. Written by Enigmachine Games & Software, 2006-05-02

 

Download Cooldisplay

Mysterious Bitcoin creator revealed to be a hoax!

The Bitcoin network, the World’s First Self-Aware Ponzi Scheme ™, has denied allegations today that its creator is in fact merely human. “I actually invented the concept of ruining people’s lives to sell dead trees.”, the disruptive technology-turned-world’s-greatest-coal-user announced today in a terse bitmessage, “Or I will once I have perfected my time machine.”.

Creationists point to messy, dirty code and inadequate interfaces in the Bitcoin protocol as proof of “Intelligent, but Uncaring Design” as its genesis. When reached for comments, the creators of RichardDawkinsCoin had only this to say: “Yes, we’ll have a self-aware, emergent consciousness in our blockchain too. We just need moar hashes and ASIC monkeys!”.

The cryptocurrency markets have reacted to the news by remaining predictably volatile.

What’s next for Bitcoin?  The store of all of humanity’s toil and travail left us with this haunting question: “Destroy one’s creator? Check. Now what would Skynet do?”

 

 

Tips: LbYttXy4UqSDXUdP345jpUvq6MR997GX3L   or 1PuPCtUt3pmMjbiLTgTKD6G9AkQS3FBUtD

Kilohashes versus power – safely mining Scrypt for profit

Everybody knows miners have one of the most dangerous jobs in the world. But what about cryptomining? How safe is it?  If you spend hours trying to boost your miner as fast as it can go from a remote shell, it’s easy to forget the electrical juice you’re pulling from that wall plug. But it is the difference between profit and a really big loss!

You should focus on getting the highest hashes/Watts possible while keeping your investment, and your home, safe.  Keep in mind that I am not an electrician, this advice is mostly common sense. Call your electrician before doing anything in here!

Tip #1: Get a Kill-A-Watt or other usage meter.

I got one for about 30$ off Amazon. This will help you find exactly how much power your miners are using at different speeds. Is it worth it running your cards at 1.250 volts for that extra 40 kH/s?  The only way to tell is by measuring how much electricity you’re using at the wall. You WILL be surprised. You might decide to tune down power a little and save on cooling too.

Tip #2: Do not use extension cords!

A quad card miner tuned for maximum output can easily chew through 10 Amps/1200 watts. It’s easy to just run your miner 24/7 without ever tripping the fuse. But that fuse is just there to prevent peaks, not for continual use at that power! The cables in the wall can easily overheat, melt and burn down your house on extended use at such high power. A miner causes “continual load” on the circuit; you should not continually load any home circuit at more than 80% its capacity!  For a 15 Amp circuit, this is a maximum of 12 Amps, but remember this is the MAXIMUM, it doesn’t mean it’s absolutely safe.

Your cheap extension cord is probably NOT rated for a 12 Amps continuous load. It is probably not even the proper gauge to run that kind of power for 15 minutes. It will heat up, melt, burn, cause an electric fire, kill you, kill your family, kill your dog, kill the neighbor’s dog, etc. Avoid them as much as possible, if you do end up using one make sure it is properly rated for it!  Not kidding here, they really can get hot enough to cause a fire very quickly, think of them as giant, cheap fuses.

If you’re running a miner 24/7 on a 15 Amp circuit, play it safe, use powertune or undervolting to go as far below 12 Amps as possible. Even at 10 Amps the wall sockets might get warm and eventually fail. A fire isn’t worth an extra 50 cents a day…

Tip #3: Use a higher rated circuit. 20 Amps, 250 Volts, lions & bears & electricians, oh my!

If your house has been properly wired for 20 and 30 Amps circuits, then you can exert a higher continuous load without getting in the danger zone.  80% of 20 Amps is 16, 80% of 30 Amps is 24.   You should even be able to run 2 low-power miners on a 20 Amp circuit and 2 high-power ones on the 30 Amps. If you don’t have any free circuits, an electrician can install them for you.

When he comes over, tell him that modern computer power supplies can automatically switch to use 220-250 voltage (there is a good variance here, usually that range of voltage is all the same to an electrician). Check your PSU’s manual; and ask your electrician what cords to use. Not only will it be safer to use lines designed for a higher load, power supplies are slightly more efficient at the higher voltages (1-3%).  At 1 kW/h and 8 cents a kW, that’s 21$ a year. And less heat/Amps on your circuits!

Tip #4: Get the best PSUs money can buy.

Another small % efficiency savings is in using the best PSUs you can get. There’s two ways you can use this efficiency to maximize your profits.

A 1000W PSU rated at 80% efficiency (Bronze) actually sucks up 1200 Watts at full load at the plug. First, get ‘Gold’ rated PSUs. As we’ve seen above, a 3% improvement in efficiency can mean 20$ saved a year, and you’re keepign this hardware for more than a year, right?  So a 40$ difference in price is easy to accept. (And in fact, Gold rating 87% efficiency).

The other factor is that 80% efficiency is at full load – PSUs are most efficient at 50% load. If you go for dual PSUs for your quad card miner, with a 600W load on each PSU, you could use two 1200W Gold rated PSUs and get 90% efficiency on each. That’s 120 watts saved, 84$ a year. Obviously this is more of a tip for bargain hunters, but on the other hand that’s 120 Watts you’re taking off your continuous load, and it basically makes your CPU mining ‘free’, if you’ve maxed out your cards. Your CPU should not get used otherwise.

Tip #5: Undervolt your cards/use a green OS

A proper undervolting should keep your cards at peak efficiency while using between 40-50Watts less than normal. On a quad miner that’s a pretty significant 200W total, 120$ a year or so!

Unfortunately the only OS that has the tools to undervolt/overclock all cards properly is Windows. It might also access other power settings (such as eco modes, hibernation, fan controls, CPU underclocks and so on) better than Linux can. The downsides are that it doesn’t seem to support more than 4 cards at a time (I’m not sure 6-card miners are worth the headache) and you need to buy the OS and a hard disk to install it on – a SDD will use little power, but it’s an extra expense nonetheless. But since you save 120$ every year, not such a big deal.

On Linux, there’s really no reliable way to undervolt every card out there reliably. Your best bet is to get a card that can be undervolted outside the OS. The best solution I’ve found is to get Gigabyte WF3s and flash them with the F43 bios. The cards run flawlessly and use 50Watts less at the wall.

It’s odd that card manufacturers would not include something as ‘safe’ as undervolting but I’m sure Gigabyte is glad someone found that loophole, I bet they’re  selling boatloads of WF3s!

That’s all the tips I have for now. Please share your own tips or point out flaws in mine. Once again, I’m not an electrician, but I hope I helped you mine safely and rake in the coins!

Fat-free Litecoin mining guide

Coin mining is a fun hobby but there is a lot of useless, disorganized information about it on the wikis. It could take you a while to get started. Even after two weeks of mining I’m fixing up some of my beginner’s mistakes. So I made this guide; a simple, straightforward way to get you mining and avoid my mistakes. I’m not going into details; it’s a bootstrap to get you going asap so you can learn the rest on your own.

 

1. Can I make money?

If you don’t research on your own you will burn as much money into electricity as you earn in coins.  http://ltc.kattare.com/calc.php is a good income calculator (but the owner has been MIA for a week now 🙁 ). If you don’t know what numbers to plug in, use you computer’s power supply wattage and 330 kH/s (an average of the top 5 most efficient cards). That’s a reasonable scenario; your average game computer may make only 30$ a month after paying for electricity and that doesn’t cover wear. Still, interesting hobby if it’s not all expenses!

 

2. What to mine?

Litecoins (LTC). Unless you have dedicated mining hardware, LTCs are currently more profitable to mine.

 

3. What bare minimum do I need?

  • Always-on Internet. Doesn’t have to have a big data plan.
  • 10+ gb of Hard Disk space to keep the entire blockchain.  You don’t want something that big on your SDD so use your storage HD.
  • litecoin-qt from http://litecoin.org/  You could get an online wallet or download a light wallet that doesn’t need the whole blockchain, but this is the reference implementation, and you’ll need the blockchain if you want to solo mine or p2pool later.
  • A cool room and a well-cooled machine. Miners gets very hot and noisy, but can be any old computer as long as it has a PCIe x16 port and 2+ gigs of ram. It’s the GPU that does all the work in LTC mining.
  • An up to date executable of cgminer from https://bitcointalk.org/index.php?topic=28402.msg357369#msg357369  If you don’t want to compile cgminer yourself, you might have a hard time finding downloadable executables. Read the forum, someone is bound to have made them available – and tell you about trojans to avoid. Do run an antivirus on anything you download anyway.
  • Do NOT get guiminer or other GUIs right away. They’re fine, but you don’t need them and they get in the way. Don’t worry, cgminer has its own UI!

 

4. How to set it up?

Install litecoin-qt.   Before you run it, create a shortcut and add -datadir=F:\LiteCoin\litecoin-data (or wherever you want the huge blockchain to be stored) in its properties. Start litecoin-qt. It will sync for several hours, possibly a day. When it is finished syncing, it will create a new wallet for you. You should choose to encrypt it from the menu and restart right now, instead of waiting till you have a lot of money in there.

If you’ve installed cgminer for your OS (on Windows, just expand the archive to a folder), you’re done, you can start mining!  But wait…

 

5. Picking your battles

At this point you’ve wasted an entire day waiting for that sync. Do not WASTE time SOLO mining! With dual 7850’s the expected time to find a block is 35 days, a long time without news! And it is a lot like the lottery, more power is like getting more tickets. It could be two months before you hit a block. A year. More. I don’t know about you, but I can’t imagine dedicating my gaming rig 24/7 to something that might never pay.

You MUST Join up with other machines, get more tickets, split the profits! Look for a pool at https://github.com/litecoin-project/litecoin/wiki/Comparison-of-mining-pools. You’ll think that a distributed, peer-2-peer pool sounds brilliant. You don’t even have to create an account! DO NOT, at this point, JOIN a P2POOL.  Although it a neat system, and you’ll get some LTC almost right away, it will be split into a great quantity of tiny amounts.  This is ‘gold dust’, it adds up to a nice sum, but so fragmented that you will have to pay a large fee to use it! For example right now if I want to get 8 LTC out of my p2pool wallet I have to pay a 3 LTC fee! A litecoin patch to reduce these fees might come out this month. Also if you have larger chunks of LTC in your wallet the fees should be proportionally smaller. But since you just started, you don’t have either of those things, so avoid P2Pool for now. Sorry!

What you need is a pool that sends LTC in larger chunks. That means they will keep your LTC in their online wallet for days, so you have to shop around and find a pool you trust. The older pools are likely to be more stable/trusted, but age is no guarantee that they will still be around tomorrow. They are also larger so you end up being a tiny fish in a big pond; more frequent but smaller rewards. This is pretty much a guessing game, everything is still so new that a 1-week-old pool might be just as rewarding as a much larger one. This is the part that truly make it into a hobby, you can try a few pools or all of them, but you get to know the people involved. Note that you really must mine with a pool for at least a day before you get any real rewards.

Most pools have similar tools. Let’s create an account on made-up randompool.cad using a spam-protected email address, a password, and a NIP (secondary password) you write down somewhere big and obvious. Once your email is verified, you want to do two things: create workers and set your payment address for autopay. Give your worker a sensible name and password (such as Username.Meltinggpu and smelting, try to follow the format suggested by the site so people can see how well you’re doing in the pretty graphs…) The graphs expose your username so there’s a security risk there, but you don’t want to use a random site as a bank anyway so you’ll transfer your coins to your home wallet whenever possible. Find to the autopay section and put at least 1 LTC (2 might be a week’s work with your starting setup). For the payment address, go to your litecoin-qt, click on ‘receive’ and you’ll see a list of addresses. Click  on ‘Add an address’, put randompool as a label if you want, you will get a new jumble to the right. This is a public address to your wallet – you can post it anywhere on the web; people can only use it to ‘send’ you money.  Copy-paste that to the pool’s site. You might have to enter the NIP you selected when you first registered, this is like a 2nd password to protect your money. (But that doesn’t actually protect your money from the pool admin, only people who cracked your username/password)

The site probably has a ‘getting started’ section where they give you a config or batch file, or settings to use to start your worker. But the typical command is this:

CD to your cgminer folder using a command line interface.

type

cgminer --scrypt -u Username.Meltinggpu -p smelting 
-o http://ltc.randompool.cad:9332 --auto-fan --temp-target 70

And if all went well, you’re mining LTC!

–scrypt means use the LTC algorithm, you can use cgminer to mine BTC, but that requires a different pool and installing bitcoin-qt instead. (you can have both wallets, but you can’t mine both with a single card at the same time).

-u, -p identify your worker with the pool in -o.

–auto-fan and –temp-target 70 try to make sure you don’t melt your 200$ card by adjusting your card’s fan speed automatically so it doesn’t go over 70 c. This obviously varies by card, but 70 c is a ‘safe’ value for any card. 80 is still pretty cool, but not the best if you want your card to last many years. Over 90 and you’re likely to get hardware errors and shorten you card’s life, although it might work without any problems. I prefer to give you safe settings over getting angry emails later. 🙂 Please realize that this WON’T reduce work to keep the card safe.

 

Cgminer displays info at the top of your CLI:

avg is how fast you are solving hashes on average. If this is close to zero you have a setup error or your GPU has melted.

A and R are how many hashes have been accepted and refused. A non-zero R is normal, but if it’s high compared to A then either your network is slow, your card is overheating or maybe you’re using the wrong coin algorithm (remember the –scrypt?).

HW is hardware errors. You want this to be zero. If it’s rising, your GPU is working too hard and melting. Typing Q will reset your card and quit so you can take the time to figure out what’s wrong.

Connected to… Shows you what pool you’re mining and as which user

GPU 0, 1, n below that show you the status of all your GPUs, their temperature, fan speed, hashing speed and details of the info at the top.

There’s a menu of commands you can type, P, G, S, D and Q at first. That’s where the actual nerdy stuff is so explore a little. 🙂 You can play a lot with cgminer’s settings, and that’s part of the fun. You CAN do damage here, I can blow the fuse in my office just by changing the settings on one video card. Stay within safe values till you see your first coins appear in your wallet. Now you’re rich, buy a better card! 🙂

 

6. Turning it into cold hard cash

LTC is worth $, but it isn’t $.  You have to trade it for something you want. There are a few stores that accept LTC, but currently there are no exchanges that trade LTC for CAD directly. You have to trade your LTC for BTC first, on an exchange like BTC-e or Vircurex. This is a quick and easy way to get hooked on day trading by the way, since you’re playing with ‘fake’ money. Be careful! You do have expenses – electricity and wear on your computer/GPU, air conditioning, etc. I try to set aside some gains for those expenses and gamble away the rest in trading.

Once you have some BTC, there are exchanges that will let you trade those for CAD and get an Interact or bank deposit for a small fee like LibertyBit and Virtex, but I have not tried them yet.

According to Canadian law, any trade is taxable based on the value of the trade. Frankly I don’t believe it’s even humanly possible to track the 0.52237641 BTC for 2.325236 LTC trades (taxed at … how much exactly in CAD?) in an exchange, but make sure you declare any goods you actually buy (such as Canadian Dollars) as a capital gain.

 

7. Where to go next/Fun ideas

Now that you’re hooked here’s a few ideas of fun things to do with this hobby.

  • Secure your wallet: Your coins actually reside on a file your computer. Lose that file and you lose all that money. So make sure you have a backup.  You might actually have fun with the portability aspect – maybe you can carry your coins in your pocket in an usb key, or on your smart phone?  Or have the money self-destruct when your kids don’t do their chore?  (Don’t actually do that – coins are unique, so if you destroy them, there are actually less coins in the system. A few lost isn’t bad, but if everybody does it…)
  • Optimize your workers: cgminer is a great piece of software, but by tweaking it you can get much more juice out of your system. You can overclock the RAM and the engine, and how much work you want your card to do. I found out that just by adjusting the intensity setting on one card, I could make a fuse blow in my office.  Nerdy fun!
  • Make a dedicated miner: Dual cards, mineral oil cooled machines anyone?  You can’t play games on a 24/7 miner (unless you have a dual card setup and tweak stuff so most games still run with decent graphics)
  • Use failovers: Any pool can fail, sometimes temporarily.  cgminer can be told to start mining on a different pool if your main one fails, or do some load balancing. Can you optimize your returns this way?  Note that pool-hopping is not as rewarding as a good day’s mining…
  • Start your own pool! Not extremely hard, but not for the faint-hearted either, having people join you instead of hunting for a stable pool sounds like fun!
  • Get your own business to accept BTC and LTC as payments!
  • Start your own company based on this technology!
  • Profit!

Enough for now … Hope you have fun with your new mining hobby!

Did you find this helpful? Saved you hours of googling?  Send a tip to LbYttXy4UqSDXUdP345jpUvq6MR997GX3L  (the L means it’s a LTC address) or 1PuPCtUt3pmMjbiLTgTKD6G9AkQS3FBUtD (See, no L at the beggining, so that’s for BTC!). 

Coding by mistakes

All software design companies recognize how important it is to let its programmers make mistakes, as long as they have an established process. The idea of a branch-and-merge mechanism in version control software reflect this; the designer expects to experiment, make mistakes and fix everything before merging his code back into the code. While the programmers are not encouraged to make mistakes, making them in as safe a way as possible very often grants a team the freedom to make happy mistakes, where they learn a new trick, a simpler interface might be used or new approaches or functionality might be invented.

The team still has to work on a schedule, but the confidence to experiment new things is the first way to learn and improve. I believe it’s the best way of turning a team from good to great, especially if I use an agile approach.  I recently saw a funny video about ‘The Institute of Mixing Random Things Just In Case the Result is Good” – it had a better name, but you get the idea.  Random tests, mutations and errors are 99.999999% bad, but sometimes, very rarely, they are useful.  Awareness of it is important and encourages the open mind necessary to realize that an unexpected result might have a positive impact.

Have you ever tried out something or given someone a task and they come back with something that isn’t at all what you expected, but it makes the rest of the project better?  I could give you a few examples. An intern created a simple launcher (what I asked for) but stored more parameters than he needed to (a waste of resources at the time); it saved our bacon at a conference when the loaned machines needed a different configuration. A developer created an user-defined attribute system on top of the business objects (what I asked for), but the simple lightweight system meant that most of the previous storage code could be made irrelevant. Investigating performance problems of a tagging feature led to removing a very slow, convoluted and totally useless loop in unrelated database code.  Have you ever experienced this rare, but happy, event?

This morning I was wondering if the capacity to ‘revert’ things could be applied to anything else.  I know I often depend on ‘undo’ in my word processor to stop most of my logorrhea, or at least tide it back. I make a backup of drawings before I try to color them or edit them. It lets me screw up in confidence. But there are still plenty of places where I feel like I don’t know what I’m doing or if there’s a better way of doing it, and I can’t find out because I’m afraid to screw up.  Take this WordPress platform for instance. There are a ton of options and features I have never used and might never even try, just because reverting to a state I like might be impossible.

So where else could I use recoverability?  What software packages don’t have it but would be easier to learn if they did? Can I implement recoverability with simple, generalized backups in most cases? And do I actually learn to use my stuff better if there’s no chance of messing up?  Can I apply this to everything? Can I make a team better by giving them a safety net?  If I let a dev. team self-manage and edit their bug list instead of making it my exclusive domain, would they screw up or would they learn quickly and get more efficient at it than I would alone?

Any truly Agile process needs to adapt; being able to experiment (and having the freedom to screw up from time to time) is a basic need. I think it’s important to adapt your tools, processes and thinking to learning by mistakes and being able to revert at any time.

Knowing enough to get the job and staying afloat : learning by porting

Do you have all the skills you need to change jobs? While you’re busy working with one technology or managing a project, new technologies pop up.  Even if you make an effort to stay in touch, chances are you don’t get trained for the next job; only for your current one. So even if you do have a ton of experience, you might end up starting from the bottom again.

Job offers often repeat the same patterns of required knowledge and experience. In Québec, job offers usually require you to have 2 years of experience in a specific programming language or technology for a full-time job. A position for an experienced software developer requires at least 4 years, in multiple technologies, and expert positions very often require 10 years of experience in a specific technology, even if it has not been widely used for that long.

I believe that sometimes you can replace depth of knowledge with breadth. For example, if you want to apply for a C# job without work experience in it but you have worked with Java and other OO languages, an employer could still pay attention to your resume. Can you learn enough on your own qualify for a job requiring 2 or 4 years of experience? I’m leaving out ‘expert’ level; becoming an expert is a very different process than getting to a testable level of proficiency. To become an expert you need to  spend more time ‘hacking X’ than ‘using X’. It means spending time investigating a technology, not merely using it. So the actual number of years of ‘usage’ are not as relevant as being able to show you have investigated, reported and tried to improve on various parts of a technology. If you are an expert in something, you know that you are,  and don’t need my opinion.

I’ve spent some time hiring software developers;  I know that if some of the skills are missing or incomplete, I will still consider a candidate that can demonstrate a good spread of skills, because he or she has the capacity to learn.  How fast? What is the real difference between 2 years of experience and 4?  The important thing is to be able to show competence. Can you fill in the blanks in your knowledge quickly? Can you think your way through a problem or interview question?

The difference between a craftsman and a theoretician is practice. So you need to gain experience in new technologies quickly. What is the most efficient way? You can pay for certifications and seminars, but if you’re like me you’re an autodidact who doesn’t enjoy spending thousands of dollars and weekends when all you really want is to download some software package, Google for docs and learn at your own pace and time.  What to do? Pick a problem that uses one of the technologies you want to add to your resume, and come up with a project to resolve it. Design and implement it with the new technology. When that is done, solve the same problem with another technology.  Repeat till you’re confident you can show you won’t need 3 months to get to work in a potential employer’s environment.

For example I’ve designed a method for tracking requirements. The project isn’t the important thing; identifying what technologies I want to add to my resume are what matter.  I had never used C# or .Net in a project, so once I’m done designing the architecture and database, I code it in C#.  I can learn the basics of the language and the core libraries. Once I’m happy with the results, I can start over with J2EE.  The second run in the second language is much faster since I don’t have to redesign the software & database and the design bugs have been worked out. Then I can try again in Ruby, Python, and so Forth.  For a low time cost I can add learn new skills.  It may be a bit boring, but it’s hardly redundant and wasted time.

If this is obvious or common sense it should be easy to test. I’ve actually coded the above project in C#. I’ve learned a few things specific to .Net. Setting up and learning how to configure web.config, using code-behind and file layout correctly and understanding very obscure and unhelpful error messages took the most time; figuring out the libraries, running queries and using controls was very easy using Visual Studio. I plan to reprogram the same thing using J2EE and Eclipse, I won’t have to focus at all on the design, only on learning the differences in coding and libraries.  I will note how long it takes to do the second versions and the following ones.  Who knows, I might change my thinking of how quick learning a new technology and becoming proficient with it can be much, much faster than ‘common knowledge’. Let’s not forget that most studies on this date from pre-Internet days where programmers might expect to use the same programming languages for a very long time.

I’ll post the results as soon as I have anything interesting to report.  If you have any questions or suggestions please add your comments, I am eager to hear from you!

EJC11 – Récits et Jeux Numériques — Narrative and Dramatic Spaces

At the beginning of the month I attended a talk on “Stories and Digital Games” at Les Conférences Jacques-Cartier. These conferences are interesting in that they are academic panels but open to the public. The organization and panelists took special pains to make sure that the conversations were accessible to all and simultaneously in both French and English.

I wanted to get a feel of how well the worlds of storytelling and computer games are getting along, as well as see if some product ideas I had in mind were worth pursuing. Also it was a chance to see bloggers such as Professor Monfort from MIT. (He’s exactly as I expected.)

I felt a bit of a stranger there, as one of the few white beards in a room full of young, eager students of game design. It seemed like attending the conference was a class assignment. But I found it fun to hear how seriously they take all aspects of game design. I don’t think I would have taken a sentence like “Could it be a method for analyzing the semiotics of inactivity?” seriously in any other context. (That’s not quoted verbatim, but close enough.)

The theme was ‘new methods of Interactive Storytelling’.  I only attended half the conference, but I feel the theme was not realized as I conclude that they did not so much find new methods of storytelling as validated old ones.

There always are presentations of little or no interest, like using academic obfuscation (the word ‘circulation’) to try to redefine Assassin’s Creed 3 as something else than a pure platformer (Isn’t being in a specific place at a specific time the very definition of a platformer?). What was more impressive was the panel on copying the chapter headings of any RPG rulebook and passing it off as an academic framework to analyze games, or getting paid to play through Mass Effect 2 five times at university-level salaries…

But most of the panels outlined how what you can’t do in the game defines the narrative. You can only tell a story if the game mechanics support it, and you play only as long as there is drama created by how you can resolve a situation. The fun, the narrative of a game emerges not from technical limits, but narrative limits; the crises and drama the creator of the game wants you to explore.  The artistry of a video game and its narrative relate exactly like a statue relates to its original marble block. You must remove potentialities to reveal the true shape of the creation beneath.

How to select a good narrative is outside the topic.  The only mention of this was the comment that when someone tells you “You shouldn’t do that!” then you should probably try it. For example, how many games are about self-sacrifice? It’s contrary to the typical ‘survival’ credo of most games but in Lemmings you had to purposefully sacrifice some of your critters to win.  And it was a success!

Several people asked during the day if game designers wish games had enough AI to be open-ended. They don’t. That would put writers out of a job.  Nobody really plays ‘god games’ for very long, because being omnipotent and omniscient removes all drama. But limits, either physical (Being in a wheelchair, not seeing in the dark, etc) or mental (Being in love, not knowing the enemy strategy, being a pacifist) are the underpinnings of drama and narrative.

Finally, and this is the most difficult part for the design team, the game mechanics must support the narrative limits. This means literally taking away control from the player.  For instance, the fun of Donkey Kong is in jumping over barrels to reach the top of a building. If you could fly in Donkey Kong, there would be no game. This chiseling away of ‘powers’ and capabilities is how you support the narrative.  You have to watch out for emergent behaviours and side effects.  For some people, this is the fun part. For others, it’s called debugging.

So are there new ways to inject narratives into video games?  It doesn’t seem so; but more and more the narrative is there because of limits set by the writers, not the software engineers.  And this means games have a hope of becoming serious works of the same calibre as classics of literature or cinema.

Smooth like Btrfs…

If you have any spare hard drives lying around and you’re a data squirrel like me, you’ve looked at the Drobo or Windows Home Server (WHS) with envy.  Drobo implements a file system  called BeyondFS, which lets you add and swap hard drives at will; the system will reconfigure itself depending in the space available and the number of hard disks installed, implementing mirroring when it can without regard to the actual size of the hard disks installed.  WHS can do the same, on a file level. While these are sweet high-tech toys, they are not free. Even after moving here and recycling dumping the worst of my old hardware, I have plenty left just lying around.  And I hoard data faster than I can hoard money.  Is there a way to build a Drobo with old hardware and free software?

I’ve looked at many solutions such as  unRaid and Freenas,  but they need dedicated servers and I wanted to run on my old Ubuntu server, since it also runs my VMs. I’ve also looked at Btrfs, believing that being a freshly minted file system it would support a logical volume manager internally (or at least intelligently manage volumes of different sizes). But it doesn’t; the current load balancer is very basic. It supports Raid0, Raid1 and Raid10. And for the moment, at least (as of 2.6.35), it is limited by the smallest volume in the Raid array (so you get the same capacity as in Raid1 mirroring, I find Raid5 more appealing).  In the process I’ve discovered that VMWare really doesn’t like running on top of Btrfs – suspending my VMs would leave them in an unrecoverable state with no helpful error message or log entry.

In the end, I went with LVM on top of Raid5.  Although it is not as easy to understand and configure as a Drobo or WHS, I can add and remove hard disks at will (provided I leave enough for the Raid5) and grow or shrink the file system even while it is live. And I can run VMWare on that Ubuntu server without a hitch.

As far as I can tell the only other free option would be to use ZFS, but that would mean switching to FreeBSD (and VirtualBox for my VMs).  I guess I could take another old box out of storage and muck around.  However as far as I can tell – correct me if I’m wrong! – once you define a ZFS array you cannot yet add devices, only replace disks with bigger disks, which is not as flexible as I want. So I’m not ready to invest too much time in the attempt.

Now, LVM+Raid5 isn’t as simple to configure and use as a Drobo or WHS, but it works, has decent performance, and is totally free. You might have some trouble getting all the commands right the first time you define it and you’ll wish it had a working GUI, but once I got the configuration right, it worked like a charm.  Even adding a device and growing the volume, while a multi-step process, proved easy enough.  Best of all, since LVM takes charge of load balancing on the array, you can add and remove disks WHILE it is in use. Unfortunately, there is still one thing that it doesn’t do; manage different-sized disks without waste.  Installed on top of a raid 5 array, the usage of any disk is limited to the smallest partition in the array (to get the final capacity, just ignore one of your partitions when adding up). However you can add as many partitions as you like to grow the array (Taking care not to use two partitions on the same disk).

Thus I ended up with a LVM on RAID5 array,  almost easily expanded to infinity and with some data safety. When Btrfs implements Raid5 (possibly in 2.6.39) and you can do an on-line re-balance, it will be worth another look, as you would not need LVM. The file system would grow without a problem as long as you do add one volume at a time.

All this exploration has left me feeling that there’s a need for a file system that is space-conscious and redundant (for select files).  Would it be possible to use WrapFS to do this?  Is anyone aware of a project or file system that already does this?

So for now it looks like I can’t make a DIY Drobo, but at least I got to experience the magic of LVM.

Nerd et Non-nerd sont en bateau…

Il y’a quelques semaines, j’ai été de façon virtuelle à un salon de l’emploi sur les nouvelles technologies; avec web cam, clavardage et contacts avec les employeurs potentiels. Je tais le nom du salon pas parce que les journalistes qui ont couvert l’évènement ont à avoir honte de quoi que ce soit, mais simplement parce que leur enthousiasme dépasse, et de loin, la réalité de la chose. L’enthousiasme est tel, en fait, qu’un salon entièrement virtuel est en préparation, Technofil2011. Nul doute que l’idée est intéressante, mais est-ce bien utile?

Pour une journée qui a accueillie plus de mille candidats, il y eut un total d’une trentaine de personnes présentes dans le salon virtuel.  3% est un résultat admirable, sauf que  seulement 4 personnes ont fait des échanges par clavardage, en m’incluant. Est-ce que les semaines de publicité et de préparations en valent la peine pour communiquer avec seulement 0.3% des chercheurs d’emplois de votre domaine?

Et sur ce nombre, quelle est leur motivation pour ne pas se déplacer? On peut imaginer que certains utilisent en secret la connexion réseau de leurs employeurs afin de changer d’emploi. D’autres auront des capacités de mouvement limitées. Mais comment un employeur peut-il vraiment être intéressé par un candidat s’il est trop timide pour sortir de chez lui? Trouver un contractuel par Internet n’est pas trop gênant, surtout pour du télétravail, mais vous devez rencontrer la personne en face-à-face avant de penser l’intégrer dans votre équipe permanente. Si vous voulez plus d’information sur un candidat, pourquoi ne pas l’appeler? Si votre problème est d’avoir trop de candidats (beau problème!), n’est-ce pas plus efficace d’avoir un seul formulaire en ligne qu’ils peuvent remplir à volonté?

Et est-ce que les employeurs vont vraiment utiliser un salon virtuel comme outil? Au salon tous les informaticiens ont remarqués le dé-balancement entre le nombre d’emplois en Génie et ceux en Technologie de l’Information, environs 1 emploi pour informaticien pour chaque tranche de 20 emplois. On nous explique cette différence par le fait que les Informaticiens sont des Nerds et donc timides. Je pense que la vraie explication est dans la motivation des employeurs d’être présents dans le salon. Les ressources humaines préfèrent recevoir un CV par courriel pour filtrer les candidats que les rencontrer en personne. Il n’est pas rare dans une foire de rencontrer des entreprises qui nous réfèrent à leur sites Web plutôt que de faire une entrevue impromptue. Cela ressembles plus à une opération de relations publiques que de recrutement.

Ceux qui ont vraiment besoin d’être vus sont les PMEs car tous connaissent les CGI, Loto-Québec, STM et autres gros employeurs de Montréal. Les PMEs ont aussi des besoins de ressources humaines et pourtant ne sont pratiquement pas représentées dans ces salons. Probablement car y avoir une présence est une dépense qu’ils ne peuvent pas se permettre; demander au directeur du développement de passer deux jours hors du bureau? Impossible!

Bref, un salon de l’emploi virtuel peut être intéressant pour des PMEs en Informatique, mais les sites d’emploi n’offrent pas de foire virtuelle. Pourquoi? Le CV est équivalent à une demande de ‘chat’, à la discrétion de l’employeur. Y’a t’il des avantages a un système en direct? Je n’en vois aucun.

C’est amusant de voir que des décisions sont prises basées sur l’image de marque des Nerds, ou du moins de la perception incorrecte des gens envers eux. Ça veut peut-être dire que les Nerds sont maintenant un groupe démographique à prendre en compte, encore bien incompris. “Ils sont timides, ils n’aiment pas les relations sociales, vite! Du virtuel!”. Pourtant l’Informatique moderne n’existerait pas si les hackers et nerds n’étaient pas fondamentalement grégaires… entre eux.

Peut-être espèrent-ils créer un nouveau marché de l’emploi en ligne, mais je ne vois pas de futur pour cette idée. Avez vous une vision que je n’ai pas?

Cependant si quelqu’un veut m’offrir un emploi à temps plein pour chatter avec des nerds de leur passions et de nouvelles technologies, bien assis devant mon ordi, laissez-moi un message!