Home


What was Vanilla WoW like?

  January 15, 2013

After a one-night revist to Diablo 3 (I haven’t played since before Paragon levels were released), I ventured out on the forums looking for people who shared my lackluster opinion of the game. Eventually, the search wound up with me reading a post “What was Vanilla WoW like? I am curious to know…”. One of the responses nailed the answer almost on the head:

By Arigise on 2010/09/26 at 6:53 PM (Patch 3.3.5)
Vanilla was very very much more “grindy” than the game is now. Leveling took more effort and gold was so very much harder to come by. Raid experiences, while they still could be fun, took many more hours dedication than raids do now and often a lot of that was spent wading through trash mobs.

The biggest changes in my opinion have been made to the multi-role classes. Classes like paladins and druids were effectively pigeon-holed into one raiding spec and those roles were often tedious to the point of insanity. (i.e. Holy Paladins on 2min buff duty for their 40m raid).

Another big change is the amount of information available to the average player. Sites similar to wowhead were in their infancy and access to information like caps, talent builds, and optimal rotations were known by relatively few players.

As zdouse says, the game has pretty much been steadily improving. And although we had good times back in those days, if we take off our rose-tinted glasses its pretty clear it was a rough road back then.

Exactly this BUT I would argue those factors actually made the game better. Downing a boss, getting new gear, and sometimes even just getting TO the dungeon (for the case of Alliance –> RFC/WC/SM) felt like actual accomplishments – and we didn’t need Achievements to spoon feed it to us, we knew it.

Because of these things, the game became more immersive. Even after the level cap, you felt invested and couldn’t wait for the next guild raid day. Nowadays in WoW (conjecture from since I quit after a bit of raiding in Cataclysm):

  • PuGs (both PvE and PvP) are much more common and viable (while this makes it easier to fit a schedule but gear/completion feels less “presitgious”).
  • Battleground PVP feels like a grind and world PVP is suicide (I can’t remember city raids happening much after BC).
  • The game baby-steps you through it. Even through end-game content. Hardmode was Blizzard’s answer to this but the fights don’t change enough to make it avoid feeling like a re-hash of content. Plus there was something driving about the fact you had to strive to see endgame storyline / environments. I understand some developers/players may feel miffed when only a small percent of players even *see* the content, but I feel the sense of mystery is a much more worthwhile tradeoff in terms of game quality.

Unfortunately, all of this tells me is that Blizzard is turning to making everything more “accessible” for more people overall – which directly translates to profits. I suspect this works in the short-term but leads to a game’s decline in the long-term. Basically, unless Blizzard has leadership with a vision for quality, their titles will fail eventually (sooner than later imho). I very strongly suspect Activision’s acquiring of Blizzard could be a catalyst for this, though one can’t argue the trend was still present before the acquisition (e.g. the LFG tool in BC).

On that note, if anyone knows of a game that fits the description of Vanilla WoW I painted above, please let me know in the comments below!


Asus UX32VD lid switch / screen defect

  December 21, 2012

I purchased an ASUS UX32VD ultrabook a couple months ago and recently started noticing a very peculiar defect – the screen sporadically turns off while the laptop is open, for what was seemingly no reason. Sometimes it would go days without this happening, other times, every couple seconds; now I’ve finally figured it out and can consistently replicate the issue.

Image

I started by investigating what triggers could cause the screen (and lit keboard) to turn off. It didn’t take long to rule out a software cause – on High Performance battery mode, and screen timeouts disabled, it still occurred. Moreover, a software cause didn’t seem likely because of the sporadic nature of it – there was no consistent timing between occurrences,

This left a hardware fault to blame, and I felt a sense of dread at this point – the last thing I wanted to do was send this in to ASUS; After upgrading it with an SSD and RAM, the last thing I wanted was a warranty dispute with ASUS or to receive a refurbished model back without my upgrades.

My first guess was maybe the light sensor was going haywire and dimming the screen, but the screen was??off,??not just dimmed!??Alas, I finally determined the issue does not appear to be anything that a manufacturer could repair. After countless, bizarre, tests, I determined the issue appears to be with the model’s magnetic lid switch. Around certain metals the screen consistently switches off as if the lid were closed – on my cooling pad I notice the issue happens extremely frequently, whereas lying on my bed, never!

I’ve worked around this issue by finding a sweet spot on the cooling pad that doesn’t trigger the switch – I suspect the motors from the two fans are the culprit. Overall, however, this isn’t enough of an issue for me to downvote this model – I just won’t be bringing it around intense magnetic fields (e,g. LHC or Cold Fusion reactors…)

TLDR: Anything magnetic near the ASUS UX32VD appears to trigger the lid close switch


Comments

Andre

thank you ! it worked for UX32LN , i used fridge magnet !

January 20 at 6:14am
FuelFlo

It also seems to work for me with my UX32LN. Since 2 days the problem hasn’t appeared anymore, lets hope it stays like that for a while =)
I was using the .5mm?? neodym magnet.

November 9 at 9:44am
Marcus

It only works temporarily for me. Have to use the magnet everytime I want to start the computer after having fold down the screen, do I need a stronger magnet to make it more permanent or something?

December 11, 2014
Marcus

It only works temporarily for me. Have to do the magnet after everytime I fold down the screen, do I need a stronger magnet to make it more permanent or something?

December 9, 2014
Johannes

The same happened to me a few weeks ago. Here’s a video: https://www.youtube.com/watch?v=Km_03iAATTg

Did anyone solve this without replacing the notebook?

September 6, 2014
Dan

Yep, this works. Need a semi-powerful magnet, we used a whiteboard magnet.

Top right hand corner of the bottom case.
Start up high, and slowly lower the magnet until the screen flips on.

Ray on August 21, 2013 shows the precise location in his picture on google docs. If that picture isn’t available anymore, the location is the top right hand corner of the bottom case, to the right of the power button on the metal area of the case (or to be more precise, the hard drive LED indicator).

May 14, 2014
Stephen

Just to add my thanks. Been struggling with this problem for months, swipe of a magnet and it is fixed. many thanks.

November 5, 2013
Ray

The location at the red circle.

Though my problem has been that the switch no longer works with the inbuilt magnet on the lid. Not sure how to fix that.

https://docs.google.com/file/d/0B_lTHFNnF-AkQzRFbXRzbkVENmM/edit?usp=sharing

August 21, 2013
max

Dear awesome people that found out how to solve this problem,

if anybody who has experience with remagnitizing the switch could post a picture of where to put the magnet, that would be great!

Thanks so much!

June 5, 2013
julien

Wow !!!! This was driving me nuts and here is the only area on the net I found talking about this particular problem …. I need a magnet then.

May 22, 2013

My thoughts as a Software Developer

  December 8, 2012

I was introduced to computers fairly young. It started with games, I was inspired by massive worlds of someone else’s imagination that could be experienced by anyone. I explored every nook and cranny of these worlds, figured out the tricks, the sidequests, the secrets; I??unraveled??every part of these worlds until they were laid bare, their inner workings made so obvious to me that I no longer saw the world I was intended to see, but rather, how that world worked. It was thus that I truly learned how to program.

Schoolwork came easy to me because I would figure out how the system worked and what I needed to do to succeed. When I encountered a system I couldn’t exploit at a glance, it intrigued me – this is what drove my deep interests into Math and Physics.

As a kid, I had it right. I followed my wonder and it drove me to do great things. By understanding how things worked, I naturally started thinking about how I could make them work??for me. At this time I also took my first programming class and was truly in awe. By learning a small subset of commands, I could make a computer do??anything. I chose the computer as my medium because of it’s accessibility. I could create a program in a matter of hours that was tremendously more useful than, say, the key fob from metalworking class that took weeks to make! The world was a canvas and a computer my brush.

As I eventually went through school and onto University, I learned more and more about computers. Since this was something I had a knack for, I decided to go into it as my field of study. Each year, less courses were about Art, Math, and Physics, and more focused on computers. I learned a great deal of very useful concepts like Object Oriented Design, Networking, and Software Development strategies. The problem is these are a means, not an end.

Many of the software development jobs out there now are for the sake of software development. The companies that post these jobs have lost their vision of??why – the reason why the original product was designed. The developer’s job is often no longer to paint the picture, but rather to help maintain the machine, to keep it going. This is an example of profits??commandeering??innovation, where business and marketing think the key to ongoing success is to recreate the original success.

The message I’m trying to convey is don’t be a cog in the machine. Don’t program for the sake of programming. Computers are not an end – they are a means. Use them as the medium of your creativity. There are an endless number of development technologies out there that come out at an ever-increasing rate, and you can never learn them all. Even if you could, that is not what makes a great programmer; what does is inspiration and the belief that what you are creating with those technologies will truly change the world.


New feature: WordPress Integration

  July 16, 2011

After getting bored of the static content on my portfolio site’s home page (http://www.skidson.com), I’ve decided to use this space to fetch my WordPress blog posts. I had to make a decision of whether to develop my own blog posting tools or choose this route – but reinventing the impressive functionality of WordPress’ tools seemed somewhat silly, although it may still be project to tackle later.

Since I recently moved out of my university residence, I no longer have access to a 100Mbps connection – instead I’m behind a crummy “50Mbps” (more like 15Mbps) Shaw ISP… that blocks port 80! This motivated me to transfer my portfolio site over Google App Engine for free hosting. The catch – no native PHP support – WordPress’ primary method of integrating itself into an external site. Rather than try and hack my own PHP engine, I decided to make use of my blog’s RSS feed via SAX:

import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.helpers.XMLReaderFactory;

public class RSSParser extends DefaultHandler {
    private int fetchCount = 0;
    private String parsed = "";
    private List<Map<String, String>> rssList =
            new ArrayList<Map<String, String>>(fetchCount);
    private Map<String, String> rssItem;
    private Set<String> rssKeys;

    public RSSParser() {
        this.rssKeys = new HashSet<String>();
    }

    public RSSParser(Collection<String> rssKeys) {
        this.rssKeys = new HashSet<String>(rssKeys);
    }

    public synchronized List<Map<String, String>> parse(String url) {
        XMLReader reader;
        try {
            reader = XMLReaderFactory.createXMLReader();
            reader.setContentHandler(this);
            reader.setErrorHandler(this);
            reader.parse(new InputSource(
                    new InputStreamReader((
                    new URL(url)).openStream())));
        } catch (Exception e) {
            e.printStackTrace();
        }
        return rssList;
    }

    // ******** XMLReader Event Handlers ********

    @Override
    public void characters(char[] in, int start, int length)
            throws SAXException {
        for (int i = start; i < start+length; i++)
            parsed += in[i];
    }

    @Override
    public void startElement(String uri, String name, String tag,
            Attributes attributes) throws SAXException {
//        if (fetchCount > 0 && rssList.size() >= fetchCount)
//            throw new SAXException("Fetch count reached");
        if (tag.equals("item")) {
            if (rssItem != null && !rssItem.isEmpty())
                rssList.add(rssItem);
            rssItem = new HashMap<String, String>();
        }
    }

    @Override
    public void endElement(String uri, String name, String tag)
            throws SAXException {
        if (rssKeys.contains(tag) && rssItem != null)
            rssItem.put(tag, parsed.trim());
        parsed = "";
    }

    @Override
    public void endDocument() throws SAXException {
        if (rssItem != null && !rssItem.isEmpty())
            rssList.add(rssItem);
        super.endDocument();
    }

    public void addField(String name) {
        rssKeys.add(name);
    }

    public void removeField(String name) {
        rssKeys.remove(name);
    }

    public void setFetchCount(int count) {
        this.fetchCount = count;
    }

}

This implementation simply requires specification of what tags to look for and returns a list of maps containing that content indexed by the tag name as the key. I prefer this method over writing a custom class as it is more adaptable depending on what content you want to pull. For WordPress, I simply instantiated the parser as such:

RSSParser rss = new RSSParser(
    Arrays.asList("title", "pubDate", "content:encoded"));

Then throwing the content into the page’s model and iterating through the items becomes a trivial set of JSTL tags.


Unrealscript Third Person Camera

  June 24, 2010

Even though UDK offers an array of ways to implement a different character view for your pawn, none seemed to satisfy me. UDK’s base third person camera (implemented by merely putting SetBehindView(true) in the pawn’s controller), had the pawn mesh take up too much of the view and prevents looking up and down. The common internet examples chose to trace from the player towards the desired distance and place the camera wherever a collision occurred, however, the camera would skew the vertical angle so the crosshairs would no longer be accurate – considering my project is a shooter, this isn’t exactly ideal.

My implementation simply takes the pawn’s rotation, adds a rotation specified by the CameraOffset variable, and follows the resulting vector, in world space, by the magnitude of CameraOffset:

CameraStart = Location + (VSize(CameraOffset) * normal(vector(Rotation + Rotator(CameraOffset))));

This is the location in world space where our camera points to. From this location we trace backwards along the direction of the controller’s rotation (not the pawn’s because we want freedom along the Z-axis, the pawn’s rotation is only on the X-Y plane). We trace towards a distance specified by CameraDistance. This trace occurs within a ‘do..until’ loop for as long as a collision occurs, decrementing CameraDistance each iteration:

CameraDistance = default.CameraDistance;
do {
    CameraLocation = CameraStart - Vector(PawnRotation) * CameraDistance;
    CameraDistance -= 1;
} until (Trace(HitLocation, HitNormal, CameraLocation, CameraStart,
false, CameraFOV,, TRACEFLAG_Blocking) == none);

out_CamRot = Rotator(CameraStart - CameraLocation);
out_CamLoc = CameraLocation;

For the rest of the implementation I followed the general format outlined here: http://forecourse.com/2010/03/creating-a-third-person-camera/, explained beautifully by Allar. There are numerous other well-structured tutorials available on his blog and I highly recommend them for anyone learning UDK.


Comments

Michael Allar

Thanks for the link.

June 24, 2010

UDK/Unrealscript Bug

  June 22, 2010

Shifting gears back to my UDK project, for the last few days I’ve been completely hounded by some bug I couldn’t find for the life of me. One day I had everything working fine, then the next my pawn and playercontroller classes weren’t being used at all. Tearing my hair out in frustration I completely scrapped everything and rewrote it – to no avail! Then I tried using some dummy code from the internet and, voila, it worked!

I compared the differences between my code and the dummy, stripped mine down to be exactly the same and still no luck. After another day of comparing I started copying and pasting chunks of the dummy code over to mine to narrow down the source, until I found the problem…

Bracing style! I have always been an adamant supporter of 1TBS (http://en.wikipedia.org/wiki/Indent_style#Variant:_1TBS), but for some reason in Unrealscript, for the extended GameInfo class, 1TBS results in the defaultproperties not being read. Perhaps it is for all defaultproperties sections, most likely, but I haven’t tested yet. However, it seems 1TBS works fine everywhere else in the code.

Figured I’d share this lovely tale of frustration with you all before anyone else has problems…


Comments

skidson

Thanks for the heads-up. I havent touched unrealscript lately but I bet that was probably it, given I was using Notepad++.

December 14, 2010
Dustin Smith

I can almost guarantee that you didn’t save the .uc text file with UTF-8 Encoding and you most likely saved it with ANSI Instead

December 8, 2010

Cocoa and Objective-C

  June 13, 2010

The primary system for developing iPhone (and Mac OSX) applications is known as Cocoa. Cocoa itself is not a language, but rather the collection of classes used in app development. These classes are organized in a hierarchy extending from a base class, NSObject. This is very similar to how Java establishes its environment from a base Object class. The Objective-C programming language allows developers to put the Cocoa environment to use. The best summary of what I’ve gathered from Objective-C is that it is a very dynamic language. That is to say that Objective-C code can change itself at runtime, creating new classes on the fly. This seems to be rooted in the ability to deal with both Classes and Objects within the code. Unlike C++ and Java, classes are not merely a framework from which objects are instantiated, but are editable at run-time as well. This removes a great deal of restriction from the language, but with it, a significant amount of structure.

Objective-C is NOT a programming language for beginners and I highly recommend brushing up on OOP (Object Oriented Programming) techniques through Java and C++ before attempting to learn it. For those who feel confident in their ability I’ve linked some helpful resources below.

C++ to Objective-C Guide:
http://chachatelier.fr/programmation/fichiers/cpp-objc-en.pdf
Cocoa Fundamentals Guide:
http://developer.apple.com/mac/library/documentation/cocoa/Conceptual/CocoaFundamentals/CocoaFundamentals.pdf


Comments

risk of Developing cancer

Superb, what a website it is! This web site gives useful data to us, keep it
up.

May 2, 2013

Mac OSX (Snow Leopard 10.6.3) in Virtual Machine

  June 11, 2010

With the official announcement of the iPhone 4 and its impressive capabilities, no doubt even more people are going to be looking into iPhone App Development, me included. However, Apple has cleverly restricted the use of its iPhone OS SDK to Mac OSX systems, and particularly the iPhone OS 4 to Snow Leopard (10.6.2+). After a few days struggle I’ve managed to set up a perfect working environment through VMware Workstation, despite barriers designed to prevent this. Note that true Apple operating systems are dependent on unique processor architecture, which is why it is not a simple installation process. Virtual machines use your [host] processor to translate instructions into a format understandable by the client processor.

Things you need:

  1. A Snow Leopard dvd or .iso /.dmg file.
  2. VMware Workstation
  3. A Mac OSX bootloader (provided in a guide linked below)

The software above may be purchased from their respective retailers. Other methods may be possible but I will not discuss them.

Follow this guide word-for-word: http://www.online-tech-tips.com/mac-os-x/install-snow-leopard-on-pc/

Once your VM OSX boots up I highly recommend taking a snapshot using VMware Workstation so you can always return to that state if necessary.

A common issue for many users is being stuck at the “grey apple” loading screen. This is caused by the instruction “ACPI_SMC_PlatformPlugin::start – waitForService(resourceMatching(AppleIntelCPUPowerManagement)” timing out and thus preventing the boot from continuing (you can verify this by booting up in verbose mode by pressing f8 while the OS starts and entering “-v” as a boot flag). I personally scratched my head over this issue for days before I managed to find a solution:

  1. Close VMware Workstation (make sure it is not on your system tray!)
  2. Open the directory where you installed the virtual machine partition (by default this is somewhere in My Documents, but I highly recommend changing this through VMware Workstation’s preferences)
  3. Search for the .vmx file (the one that doesn’t start with “._”)
  4. Open this file in notepad and look for the setting smc.present=”TRUE” and change this to “FALSE”
  5. You should now be able to boot, restart, and shut down fine without any kernel panics! (KP’s are Mac’s equivalent of Window’s blue screen of death)

Lastly, to get sound working inside the virtual machine and to use VMware Tools to resize resolution and share folders with your host OS, install http://softlayer.dl.sourceforge.net/project/vmsvga2/Audio/SnowLeopard/EnsoniqAudioPCI_1.0.2_for_SnowLeopard.mpkg.tar.gz within the VM (you will need to transfer it with a flash drive, email it, or simply download it with safari). After installation, restart the VM and the VMware Tools installer should appear on the Mac OS’ desktop. From there it’s pretty straightforward to enable the features you want.


Game break

  May 23, 2010

Steam has been offering Portal for free until today, so there’s one distraction. I was sure to add it to my steam account though. Nothing beats free.

Blizzard is definitely taking their time getting the Starcraft II Beta back in working order after patch 13. It’s significantly better today than the past few days but it’s far from perfect. I hope they fix it all before May 31st, when the first phase of beta officially ends and I’ll be Starcraftless for 3 weeks. They have, however, solidified their partnership with Facebook and enabled the Facebook-Battle.net Real ID friend tool. Now my personal information isn’t just privatized, but it’s being given to massive gaming corporations. I know I can always “control my privacy” and just completely delete my Facebook and such, but it just doesn’t seem to be an issue yet. I’m just worried that, just like a trap, by the time I actually decide it is an issue, it’ll be too late.

Activision (aka Blizzard), in all their greedy, sinister nature, has confirmed another pack of 5 maps for Modern Warfare 2, again three new maps and two rehashed ones. Rather than excite me, this development pisses me off completely. A $15 price tag for 5 maps is utterly ridiculous, yet I still caved and paid for the extra content of the first map pack. But now that Activision has tasted blood from the profits, it’s entered a frenzy. It’s all just a digraceful money grab. The new map pack requires the first one as well, meaning any players seeking additional content will be expected to have forked over $30 in total. That’s over half the price of the entire game! And just as a cherry on top, the twits are again proceeding with the Microsoft favoritism and releasing the pack earlier for Xbox 360 players. I’m sure Activision is pocketing a pretty penny from MS for it but they don’t seem to realize that isolating all but one of their consumer markets is not exactly smart. I’m a little confused at Microsoft too.. I really doubt anyone’s going to go out and buy an Xbox 360 because of these ploys, it’s just a nuisance for everyone else.