Ron Toland
About Canada Writing Updates Recently Read Photos Also on Micro.blog
  • Apple's Garden is Walled, with Locked Gates

    I’ve just been reminded why I left Mac for Linux.

    Me (to store rep): “Can I install and play with some apps on this demo iPad so I can decide if I want to buy one?”

    Rep: “Nope. Use just what’s installed.”

    …and that’s when I left. If I can’t be allowed into the Walled Garden of Apple long enough to decide if I want to spend some money there, I’ll stick with my open-source.

    I’m off to Best Buy to look at a Linux-compatible netbook.

    → 1:20 PM, Apr 6
  • How To: Change Imagefield Thumbnail Size in Drupal

    In Drupal, the Imagefield fieldtype comes with a built-in thumbnail generator. If you'd like to control the size of the thumbnail, just set the value of the imagefield_thumb_size variable, like so:

    variable_set('imagefield_thumb_size', '200x200');

    That'll set the imagefield thumbnail size to 200 x 200 pixels.

    → 2:09 AM, Feb 9
  • Predictions for 2010

    Everybody’s got ‘em. Here’s mine:

    What Will Change Radically:

    1. Ebooks. In 2009 they really started taking off. With the release of Apple's Tablet, the Nook finally appearing in stores, and Borders launching their own reader/ebook service, the world of publishing will finally start lurching into the 21st century.
    2. The OS Wars. With the release of Google's Chrome OS netbooks, coupled with the increasing market share of Android on smartphones, the internet revolution will be complete. Mac vs Windows won't matter as much to users anymore, since everything important (email, documents, reading) will either work on their phone or in their browser. Only coders and gamers will care about platforms as such anymore, since you'll still need a full-featured OS to develop or play on.
    3. Online Publishing. The Nook and the Kindle are already experimenting with subscription-based magazine and newspaper content. This market will grow to replace the paper-based income streams for most newspapers and magazines. Some customers will still want their ad-based online content, and some will still want a physical copy, but most will switch over to the convenience of electronic versions. Publishers will also move in this space when they see it's a way to replicate their old revenue streams in the new electronic age.
    What Will Stay The Same:
    1. Sci-fi/Fantasy Publishing. While everyone else starts to pile on the ebook wagon, genre presses (especially the small ones, that could benefit the most from electronic distribution) will continue to take timid steps in the direction of electronic publishing, but refuse to embrace it.
    2. M$ dominance. Even though Google is pulling the rug out from under Windows, sheer inertia will keep them moving forward in the marketplace for the next year or two. That, and the videogame industry.
    3. Books. They won't go anywhere. They'll just finally be seen for what they are: 500-year-old relics that have a lot of nostalgic value, but don't meet the needs of most people anymore.
    What do you think? How far off am I?
    → 9:39 PM, Dec 31
  • UNR on HP Mini 110

    I’ve been thinking about trying out Ubuntu Netbook Remix, the version of Ubuntu Linux made especially for netbooks like my HP MIni 110, for a while now. I was attracted to the idea of being able to run a real Linux distro on the netbook, as opposed to the tightly-controlled version that came on the Mini. HP’s version of Ubuntu–Mie–isn’t bad, so much as completely un-customizable: you can’t remove the screen-hogging front panels from the desktop, for instance, which left me staring a large blank space where Email was supposed to appear (I used Gmail, so a desktop-bound email program is useless to me).

    So this week I finally bit the bullet, wiped the harddrive, and installed the latest version of UNR.

    Thus far, things have gone well. I had some problems with wifi at first, but running the software updater and rebooting fixed that problem. I’ve been able to download and install Wine, which lets me use the Windows version of eReader for reading my ebooks. I’ve re-arranged the icons in the menus, ripped out some software I didn’t need, and in general had a good time customizing the hell out of the OS.

    I feel like I’ve been given a new computer, one that’s more fun to use and easier to bend to my will. In the end, that’s always been the appeal of Linux to me: it puts power back in the hands of users, where it belongs.

    → 1:34 PM, Dec 31
  • eReader for Android!

    They just released a version of the eReader software (formerly Palm eReader, then just eReader, now the Barnes and Noble eReader) for the Android platform.

    It’s a little bit buggy: you need to wait for an entire book’s table of contents to load before reading/scrolling, else the book will get stuck partway through. Other than that, it works great on my G1. Nice to see a commercial ereader on a Linux platform. (Yes, the books still have DRM, but the format’s got some longevity behind it, and is supported on enough devices that I’m not worried about getting locked into one platform).

    → 8:39 PM, Nov 29
  • Guilty as Charged

    Ripped from Code Complete:

    People who preach software design as a disciplined activity spend considerable energy making us all feel guilty. We can never be structured enough or object-oriented enough to achieve nirvana in this lifetime. We all truck around a kind of original sin from having learned Basic at an impressionable age. But my bet is that most of us are better designers than the purists will ever acknowledge.

    —P. J. Plauger

    → 10:45 AM, Aug 19
  • Sorting Algorithms, Part Two

    The second sorting algorithm I decided to learn was the QuickSort. It’s a little more complicated than the StraightSort, but generally faster for larger numbers of integers.

    The idea is to look at the first number of a list, call it the firstElement. You scan up the list looking for a number greater than the firstElement. Once you’ve found one, you scan down from the end of the list looking for a number less than the firstElement. When you’ve found both, swap them. Repeat this process till all the numbers greater than the firstElement are further down the list than all the numbers lower than the firstElement.

    Congratulations, you’ve sorted the list with respect to the firstElement! Now, snip the firstElement off the front of the list, and slip it back into the list at the point where your probe scanning down the list first passed your probe scanning up the list. You’ve got the firstElement placed correctly in the list.

    Now, break your list into two parts: one part extends from the beginning of the list up to the newly-placed firstElement, and the second part extends from just past the firstElement to the end of the list. Do the same “take the first Element and scan up from the list…” work you did before on the whole list, but this time do it to each part separately.

    When the partial lists get down to around 7 elements or less, go ahead and do a StraightSort on them instead of the swap-and-scan sorting. When you’ve got the parts sorted, put them back together, and you’ve got a fully sorted list!

    This one took me a while to wrap my head around, so don’t be intimidated if it doesn’t make sense at first. Have a look at the code below, and remember that you’re doing a sort on the whole list, then breaking it down and doing the same kind of sort on parts of the list, and so on down the line.

    Here’s the code:

    def quickSort(data): “““Takes a list of integers and returns a sorted list. Based on QuickSort method Note: will not sort non-unique items!””” insertedElement = data[0] swappedData = swapSort(data) insertedIndex = swappedData.index(insertedElement) firstHalf = swappedData[:insertedIndex + 1] if (insertedIndex != (len(swappedData) - 1)): secondHalf = swappedData[insertedIndex + 1:] else: secondHalf = swappedData[insertedIndex:] if len(firstHalf) > 7: firstHalf = quickSort(firstHalf) else: firstHalf = straightSort(firstHalf) if len(secondHalf) > 7: secondHalf = quickSort(secondHalf) else: secondHalf = straightSort(secondHalf) sortedData = firstHalf sortedData.extend(secondHalf) return sortedData

    def swapSort(data): “““This is the first half of the QuickSort algorithm. Implemented here to prevent recursion errors””” firstElement = data[0] greaterIndex = 1 lesserIndex = len(data) - 1 while (lesserIndex >= greaterIndex): if (data[greaterIndex] > firstElement) & (data[lesserIndex] < firstElement): greater = data[greaterIndex] data[greaterIndex] = data[lesserIndex] data[lesserIndex] = greater greaterIndex += 1 lesserIndex -= 1 else: if data[greaterIndex] firstElement: lesserIndex -= 1 data.insert(greaterIndex, firstElement) data = data[1:] return data

    Notice how I’ve broken up the algorithm into two functions: one that does the swap-and-scan, the other that breaks the list up and decides whether or not to run a StraightSort on the pieces. Again, I’m not sure I’ve fully Pythonized this code; any suggestions?

    → 6:28 PM, Apr 24
  • Sorting Algorithms, Part One

    Inspired by a question from a programming interview, I’ve taken it upon myself to learn how to implement different sorting algorithms in Python. My goal is to:

    1. Learn a bit more about programming algorithms, and
    2. Get back into Python-coding shape.

    The first algorithm I’ve coded up is a simple Straight Sort. It sorts a series of numbers like you’d sort a hand of cards: it picks the second number and sorts it with respect to the first, then picks the third number and places it where it should be with respect to the first two, and so on. It’s pretty fast for low numbers of integers, but slows down exponentially as the number of integers grows.

    Here’s the actual code:

    def straightSort(data): “““Takes a list of integers and returns a sorted list. Based on Straight Insertion method. Note: will not sort non-unique items!””” for item in data: currentIndex = data.index(item) for i in data[:currentIndex]: if data[currentIndex - 1] > item and currentIndex > 0: data[currentIndex] = data[currentIndex - 1] data[currentIndex - 1] = item currentIndex -= 1 return data

    It’s pretty simple, but I feel I may have been writing C++ style code in Python, instead of writing Python-style code. Any suggestions?

    → 6:32 PM, Apr 23
  • HowTo: Get Filezilla working after FTP connection drop

    If you’re using Filezilla to connect to a shared hosting account that uses cPanel, and your internet connection gets dropped during a transfer, you’re going to get an error from Filezilla when you try to reconnect after getting your internet up again.

    Here’s how to clear that error:

    1. Login to your shared hosting account.

    2. In cPanel, go to “FTP Session Manager”

    3. You should see a long list of “IDLE” connections. Delete each of them, one by one, using the “X” button beside each entry.

    4. Logout of cPanel when all the ftp sessions have been deleted.

    …and that’s it! You should be able to connect normally to your account through ftp again.

    → 12:28 PM, Apr 13
  • How To: Install Sun Java in Ubuntu from Command-Line

    Had to do a fresh install of Sun's Java on a remote Ubuntu machine this weekend. It's pretty easy to do in a graphical environment, but I only had ssh access. Since I couldn't find a set of instructions on how to install Sun's Java from the command line, I thought I'd put together my own how-to.

    You'll use the apt-get command to grab the Sun java .deb files and install them. It works just like a command-line version of the Synaptic Package Manager you probably used to install software from the graphical environment.

    But apt-get doesn't know how to find the Sun Java files unless you add some sources to its repositories: a list of all the places apt-get looks for software.

    Once you've added the repositories to the source list for apt-get, one command will install everything for you. Here's a step-by-step way to do it:

    1. Type "nano /etc/apt/sources.list" to open a command-line text editor to edit the list of repositories apt-get will look through.
    2. You'll see some lines, starting with "deb" or "deb-src" already in the file. Add the following lines to the file:

      deb http://us.archive.ubuntu.com/ubuntu/ hardy universe deb-src http://us.archive.ubuntu.com/ubuntu/ hardy universe deb http://us.archive.ubuntu.com/ubuntu/ hardy-updates universe deb-src http://us.archive.ubuntu.com/ubuntu/ hardy-updates universe deb http://us.archive.ubuntu.com/ubuntu/ hardy multiverse deb-src http://us.archive.ubuntu.com/ubuntu/ hardy multiverse deb http://us.archive.ubuntu.com/ubuntu/ hardy-updates multiverse deb-src http://us.archive.ubuntu.com/ubuntu/ hardy-updates multiverse

    3. Press Ctrl-O to save the file. Press Return to agree to name the file sources.list, then press Ctrl-X to leave the editor.
    4. Type: "apt-get update"
    5. Type: "apt-get install sun-java6-jdk"

    That should do it!

    → 7:24 PM, Nov 14
  • Hope Mingled with Despair

    So, Obama won the Presidential race, making me proud to be a citizen of the USA and hopeful that we can turn things around here.

    But Proposition 8, the hateful law banning gay marriage and writing bigotry into the California state constitution, looks like it will pass.

    Thousands of perfectly legal marriages between same-sex couples will be in legal limbo, not officially dissolved but suddenly not recognized, either. The thought that such an evil law could pass in what is supposed to be the most progressive state in the Union makes me fear for the ability of the U.S. to grow up into a modern nation.

    For those of you who voted for Proposition 8, I hope you live long enough to see your vote as shameful, just as voting for a law banning interracial marriage is shameful today.

    → 5:08 PM, Nov 5
  • Go Vote!

    Just got back from the voting booth. It's my first time to vote since the dark days of '02, and my first time to vote in California. And yes, it felt good. :)

    If you haven't already, head down to your local polling place and vote! Even if you're not registered, get yourself put on a provisional ballot. Who knows, your vote could decide a close election.

    → 12:10 PM, Nov 4
  • Fix for Mac OS 10.5.5 Slow Internet Problem

    After installing the 10.5.5 update for my Macbook, I noticed both wireless and wired internet access seemed slower. My wife's Macbook, running 10.4, didn't have the same problems.

    I did some poking around the internet, tried scanning for a potential Trojan horse (none found), and finally decided to try turning off IPv6 for my ethernet connection (Go to System Preferences -> Network -> Advanced options (on the ethernet options screen) -> Configure IPv6 -> Off). When I rebooted, the problem was gone.

    Has anyone else had the same problem? What was your solution?

    → 10:53 AM, Oct 16
  • Austin GDC Notes: Day One

    Here's my notes from the first day of the Austin Game Developers' Conference:

    chris crawford on paradigm shifts

    1. proper study of man is man
    2. interactivity is most important part of software
    3. graphics exist only to support interactivity
    4. no plots; storytelling is process, not plot
    5. focus on what the user does
    6. worry about the verbs of the story
    7. need a linguistic user interface (language) to get large number of verbs
    8. but, probably can't get natural language on a computer
    9. chris recommends using Deikto to build toy reality-stories
    10. use swat to create social-focused games; storytron.com

    living with a legacy: lessons from everquest (sony's everquest team)

    • pitfalls in mmo systems design
      • correcting poor documentation (now wiki-based): made custom data search tools, run checks for new-found bug combos
      • non-scaling design: capped % modifiers, capped melee attack speed and other stackable modifiers
      • complicated systems: legacy systems accrue cruft over time
    • problem resolutions
      • reworked obsolete systems: again, systems that worked early on, but failed over the length of the game; had to redesign to scale indefinitely
      • adapted problem systems: dealt with system interactions that were only revealed to be problematic after release
      • removed some problems entirely: e.g. beam-kiting, combining item and power boost for item
    • designing scalable systems
      • use visible game systems to give feedback to players
      • use game system models/mockups to test new systems before implementing them
      • avoid complicating systems through stacking or using non-formula-based calculations
      • always design systems with opposing systems to make sure new systems/items scale over time
      • design a backup plan for each system in case new systems don't go over well
      • be conservative when tuning new systems, it's better to improve a bad system than nerf an overpowered one

    writing for cinematic design (bioware)

    • now have dedicated cinematic designers (crafting interactive narrative content with cinematic presentation)
    • feel cinematic design the best way to deliver story to the player
    • building blocks: writing, audio, settings, camera, digital actors, player choice
    • in the future: need to find the right balance between audience-led agency and designer-led emotion
    • have to watch what audience expects: their expectations constantly change with the medium and we have to change our approach to match
    • lately, have moved from writing in novel-style to writing in more film-script format
    • involve player in the narrative as much as possible

    easy is f**king hard (eric zimmerman with gamelab)

    • game design is a design discipline, designers make the rules
    • hardcore vs casual: complexity of interaction, time investment required, gamer content
    • game design means thinking of games as systems
    • as systems, games will have emergent behavior, often social behavior
    • via the game, we explore the system as a form of play
    • designers describe the system through rules
    • need to ensure players have meaningful actions to take during play
    • to have a choice, player needs to be able to see the state of the game system and the available choices (but not necessarily the possible consequences of those choices); to evaluate choice and learn, consequences of choice (once made) need to be obvious to the player
    • current choices should be integrated into later choices
    • slow but powerful advancement keeps players hooked, especially if player can see future rewards (turn them into play goals)
    • remember, games take place in a social context; you're really designing a social activity
    → 4:06 PM, Sep 21
  • Back from Austin

    Got back last night from the Austin Game Developers' Conference. The AGDC this year was amazing; every talk was either full of useful information, entertaining, or both.

    I also finally got to meet a lot of the IGDA Writers' SIG folks I’ve been talking to over email. Many business cards and writing tips were passed around over pints of excellent beer.

    I'll be posting my notes from the conference over the next few days in between prepping for the move to San Diego.

    → 5:15 PM, Sep 19
  • Wishes

    I wish celebrities over 40 were allowed to grow old gracefully, instead of being pressured to starve themselves and inject toxins into their skin to try to look 25.

    I wish children were encouraged to experiment and play under adult supervision more, instead of either running amok or being tied up in unexplained rules.

    I wish atheism wasn't against the law in Arkansas, that Christian charity could be extended to include non-Christians living in the Bible Belt.

    What do you wish for?

    → 7:02 PM, Aug 30
  • Inspiration

    Noted game designer Erin Hoffman posted an absolutely amazing letter originally written by Rainer Maria Rilke to a young would-be poet:

    You ask whether your verses are good. You ask me. You have asked others before. You send them to magazines. You compare them with other poems, and you are disturbed when certain editors reject your efforts. Now (since you have allowed me to advise you) I beg you to give up all that. You are looking outward, and that above all you should not do now. Nobody can counsel and help you, nobody. There is only one single way. Go into yourself. Search for the reason that bids you write; find out whether it is spreading out its roots in the deepest places of your heart, acknowledge to yourself whether you would have to die if it were denied you to write. This above all -- ask yourself in the stillest hour of your night: must I write?

    Read the rest.

    → 4:02 PM, Aug 18
  • Haven't I Read This Before?

    Absurdistan: a fat, paranoid slob has a series of misadventures. Wasn't that a book called A Confederacy of Dunces?

    Stone of Tears: man enslaved by a society of magic-wielding b*tches. Isn't that the Wheel of Time series?

    Any books you've read lately that give you a weird sense of deja vu?

    → 3:32 PM, Aug 13
  • Uncertainty

    Uncertainty is a vine creeping through the forest of your dreams, choking the life out of them.

    Uncertainty is a child muttering to himself that he's lost and can't find the way home, even when surrounded by maps and street signs.

    Uncertainty is fear in disguise, face covered with a blank mask to keep you guessing.

    Uncertainty is a chill wind wrapped around your heart, stretching each passing moment into an eon.

    Uncertainty is a barricade across your life's path, keeping you from greatness.

    → 7:22 AM, Aug 7
  • Good User Interface Design

    The Design of Everyday Things changed my life.

    Before I read it, I blamed myself if I couldn't figure out a piece of software. I believed "the software's always right," and thought I was just not smart enough to use a program if I couldn't get it to do what I wanted it to do.

    Worse, I felt the same way about other people that couldn't do something with their computer. If I knew how to do what they wanted, I felt superior, like I had mastered a trick they weren't competent enough to grasp.

    But I was wrong. We've all come across programs that were easier to use than others: software that didn't fight us, but worked for us to accomplish our goals. The difference between friendly software and difficult software lies solely in its design, not in the person using it.

    Since my change in perspective, I try to notice good user interface design in the software I use in order to imitate it, and watch for bad design so I can learn not to make the same mistakes. If I design a webpage, I try to follow the usability guidelines discovered by others through rigorous testing. In the software I'm writing for my wife's work as an occupational therapist, I'm constantly getting her opinion on how she expects things to work, so I can meet those expectations.

    I do it because I know that every user that comes away frustrated with something I've created is a result of a failure of my design. It's my problem, not theirs, and I should do everything I can to prevent that failure from happening.

    What software drives you crazy with its bad design? What would you change about it, if you had the chance to talk directly to the developers?

    → 3:09 PM, Aug 5
  • Nokia N810: 3 Months In

    I've been using my Nokia N810 for a few months now. Though enough time has gone by for the initial "Shiny!" love to wane, I still carry my Nokia around with me everywhere I go.

    Why? Because it's fulfilled everything I wanted it to do:

    1. Replace my forest of small notebooks: Check. I've gotten much better at typing on the built-in keyboard, and still enjoy swapping back and forth between using it and trusting the handwriting recognition to make sense of my scribbles. It's great to be able to jot down a story idea, then come back and fill it in later, all on the same machine. Oh, and I can carry around a single list of all the books I want to buy/read, so when I'm in the bookstore I don't have to worry about remembering the title of "that great book I read a review about six months ago."
    2. Serve as my primary ebook reader: Easily. FBReader is an awesome piece of software (for reading non-DRM'd books), and the Garnet VM lets me run my Palm-OS Mobipocket Reader in full-screen mode. Now if only I could buy more books in electronic form!
    3. Replace my iPod: Check and double-check. That's right, I gave up my Apple Shiny for Linux. I buy my songs on Amazon's MP3 store, download them to the 8GB card I've got in my Nokia, and use Canola to play everything back. Canola's got a nice user interface, and even recognizes the .ogg files I've ripped from CDs!
    4. Read (and respond) to email away from home: Check. I can not only look at GMail in regular (non-mobile) mode, but revise my Google Docs and respond to any forum discussions I'm involved in. The Nokia's browser renders web pages flawlessly, and connects to local WiFi hotspots without trouble. I only need to take my notebook if I'm doing some programming. Otherwise, the laptop stays at home.
    → 4:54 PM, Aug 4
  • Sticky Notes for your Browser: Posti.ca

    If you've ever used the post-it notes in OS X's Dashboard app, you know how handy those little buggers can be.

    But (as far as I know), you can't share those notes from computer to computer, and if you use a non-Mac OS, you can't use them at all.

    Thankfully, Posti.ca has put together a web service that gives you the look and feel of Apple's Notes Widget but runs in your browser. Since creating an account is free, you can now sign up, create notes, and view them from any computer.

    I've been using it to jot down ideas I have while at work that I need to follow up on at home. The service seems stable so far, though there are a few bugs they've yet to work out.

    → 3:34 PM, Aug 1
  • VMWare Fusion Beta 2

    VMWare Fusion is an application for the Mac that lets you run Windows as a virtual machine. No need to reboot into Windows to play games, you can just startup Fusion and run any Windows app right from your comfy Mac OS desktop.

    They've launched a new public beta (version 2), which you can download and try out for free. It's beta software, so it's not for critical stuff, but should work fine if you're curious about the software.

    I gave it a go on my work machine. Installation was easy, and it automatically detected the Boot Camp partition I've been using to run Windows with. Starting the Windows machine was easy, and it felt prety responsive.

    ...Until I tried to run a game, that is. I started up Fable, a not-too-recent game with low graphics requirements. After a few screen hiccups, the game started, but Fusion warned me that "some shaders are not supported, and some elements may not display."

    I clicked past the warning and started a game anyway. Lo and behold the missing shaders were: me! The main character displayed as just a pair of eyeballs floating in space. Really creepy, and kind of a deal-breaker for me.

    So I shut it down. Or rather, tried to shut it down, but had to force quit and reboot my Mac to regain control of the machine.

    It didn't perform well for me, but I'd still suggest giving the free beta a shot. Who knows? You may find it does everything *you* need it to do, and be worth picking up a copy of Fusion 2.0 when it comes out.

    → 4:28 PM, Jul 31
  • Disappointed

    I subscribed to the new Tor.com newsletter this year, drawn by the offer of free ebooks (without DRM!) delivered every week. I haven’t had a chance to read all the books they’ve sent, but it’s been nice getting books in my favorite format (Mobipocket) without having to worry about DRM getting in my way.

    I really looked forward to the unveiling of the new Tor.com site, thinking that the free ebooks were a sign that Tor had finally caught up with the 21st century and was going to offer DRM-free ebooks for sale.

    The site launched yesterday, and it’s a big disappointment. There’s no ebooks for sale, no celebration of the (science fiction!) publishing industry joining the modern world.

    It’s got blogs. Blogs written by editors and publishers, people that usually already have blogs elsewhere. Oh, and you can leave comments, and join the “discussion”.

    WTF? Where’s the value in that? I already get my science fiction book-scene news from blogs written by authors and publishers. Why would I go to Tor.com to read the same stuff from fewer perspectives?

    I feel a little like I’ve just been through a bait-and-switch. That’s why I’m not linking to the site; there’s no reason to go there.

    → 7:39 AM, Jul 21
  • Quoted

    Erin Hoffman at The Escapist put up a new article in a "Tools of the Trade" series that has a quote from yours truly.

    The article has a good rundown on the tools indie developers are using to solve their problems without breaking their budgets. Check out Erin's previous article giving a general overview of game tools, as well.

    Oddly enough (to me), my quote came out of a series of emails sparked by my response to a question Erin put up on LinkedIn. Score one for Web-based Social Networking!

    → 12:29 PM, Jun 27
← Newer Posts Page 31 of 33 Older Posts →
  • RSS
  • JSON Feed