Archive for the ‘Software Developer’ Category

I had been planning to do this for a while: it’s my first Wordpress Plugin! Over at Roy on Magic, I often have to write out decklists and such, so I wanted to have an autocard feature similar to the one used at MTGSalvation. After a quick five-minute search I couldn’t figure out how they did it, so I just wrote the plugin myself. Actual effort was around 3.5 hours, most of it struggling with PHP and Regular Expressions. :p

Details and download are at http://www.roytang.net/wiki/index.php/MTG_Autocard_WP. Hopefully someone else will find it useful.

Posted by Roy in Games, Projects, Software Developer | No Comments

No, I’m not job hunting. But other people are, apparently. I got a comment on an old post I made about my job hunting days. Not only that, but the guy IM’d me asking to talk (I put my yahoo id on this site somewhere me). It’s a bit strange, but I figured, why not? What I got from listening to him was that he was just extremely frustrated at how difficult it is to find a good job, so he was looking for people who had gone through similar experiences. He’d been unemployed for almost two months after quitting from a crappy job last November.

I was going to be late, so I just gave him a few tips that I think could improve his chances of finding a good programming job. I thought I’d share them here as well. Note that I’m no expert on this or anything, just my opinions. Text in italics are additional notes not included in the original conversation:


(08:19:18 PHT) Roy: 1. 2 months is not a long time. I understand it’s hard on your financial situation, but a lot of people take longer to find work. if you just jump on to the first job you’re offered, you’re more likely to get a crappy job
(08:20:28 PHT) Roy: 2. “java programmer” means that you specialize in java only. unfortunately, the good jobs for programmers all require you to be easily able to learn new stuff (particularly programming languages), as needed. it’s alright to try to get your foot in the door using java, but you shouldn’t restrict yourself to that
(08:21:52 PHT) Roy: regarding that blog post…looking back, I’m glad that I did not get that job, as it was obviously not the right company for me. you need to figure out what kind of company you want to work for. personally, I prefer working for a company that really does software, instead of a bank or something that just happens to need some in-house programmers

This is 100% true. If you are serious about having a career in software programming, you should avoid working for companies whose primary product is not software. You will get a lot more respect in a dedicated software-development company.

(08:23:40 PHT) Roy: lastly, and this one is a bit harsh: being a programmer is hard. the good companies won’t take you in unless you’re really smart. make sure you have what it takes. try to improve your problem solving or learning skills in your spare time. try to learn a new language, etc. your background works against you here, as I know for a fact that most of the good software shops prefer to hire from the big 3 (UP, Ateneo, Lasalle)

The bias I mention here is certainly true. In my place of work probably a good 80%-90% of people at least are from the big three. And most of our recruitment drives are geared towards those three schools. I’m sure it’s the same in all the “good” software shops. Whether this reflects the quality of those schools’ graduates or just an inherent bias in recruitment, it is a real bias that graduates of other schools have to recognize and work to overcome. 

Looking back at the conversation this morning, I wonder if I did not come off as a bit elitist or something, focusing my advise on looking for “good” companies and all. I can afford to say all this now since I have a good, stable job, but I wonder how it would have felt hearing that advice when you’re running out of cash and desperately needed work? I guess I have to say that if you really need to take a crappy job, then take a crappy job. But be aware that it’s a crappy job, and figure out how you plan to climb out of it and find something better.

I’d also like to reiterate that these are just my opinions - I’m certainly no expert on job hunting, having been lucky enough to land a nice job after almost a year of being a bum and lazily submitting resumes. :D

Posted by Roy in Personal Thoughts, Software Developer, Work | No Comments

One of the qualities that I think make a really good software developer is the ability to solve difficult technical problems. Unless you’re the sort of software developer who just sells the same piece of software over and over again, at some point in time you’ll to need to find out how to implement some feature you’ve never tried before. Or you’ll hit a problem that’s not documented in any official docs and you need that critical functionality.

Typically, there are two approaches: Research and Experimentation. Today I’ll talk about Research.

Research means the internet of course, but what part of it exactly? At first of course you should search for the information yourself, using Google usually. But often if the technology is new or the problem is esoteric enough, you won’t be able to find what you need (or you would need very precise keywords). The second step is to ask for expert help.

As an example, some recent postings of mine on a Microsoft-related forum (I was trying to figure out how to do an addin for Microsoft Office) elicited a mail from someone with the subject “Hello, I need ur help”. I was feeling a bit helpful, so I gave him a reply. I’m not sure if it was smarmy or anything, but I also gave him some additional advice, and I quote:

“Also I have some additional free advice for you:
1. Your email looks like SPAM. I was about to mark it as spam when I happened to spot the phrase “MSWord Addins” in the body. Learn to write better email subjects.
2. Sending personal emails to people asking for help isn’t a very good way to solve technical issues. Most people are likely to ignore such requests.
3. You might want to read this: http://catb.org/~esr/faqs/smart-questions.html”

I’m not trying to deride him or anything, god knows I’ve sent my own share of personal email requests for help before. And it’s correct that they are often ignored, so it’s not very effective. I think the most effective way, as mentioned in the ESR link above, is to use forums. Specifically, don’t look for forums where newbies like us ask questions; use forums where experts congregate. By forum, I’m not strictly referring to bulletin boards, it also includes mailing-lists.

How to find the best forums? It depends on what you’re looking for.

The best thing is if your subject matter of choice has an active community of developers interested or passionate about the product. Google about the subject matter and see what forums or mailing lists are popular. An example would be Adobe Flex, which I started reading up on a while back for a work-related issue. Finding help on Adobe Flex is really easy. There’s a very active mailing-list, where you can even expect replies from some of the guys who actually made Flex. If you visit some of the active blogs about Flex (there are a lot), many of them will reference the flexcoders mailing list so you know you can get a lot of good help there.

Non-official forums are better because people are more likely to be passionate than paid reps. One problem I often encounter when researching is Microsoft. Whenever I search for Microsoft-related stuff inevitably sources dry up - there are literally hundreds of unofficial forums where many newbies ask questions. Now, what to recognize about Microsoft is that they have hundreds (maybe thousands?) of experts called MVPs in every different Microsoft technology. These MVPs are recognized by Microsoft for providing unofficial support to the community. So, the trick is to figure out where you can post such that a good number of MVPs will see your question and possibly respond.

I’m not sure what the best place would be, but the one that I have gotten the most results from would be Google Groups. Any of the microsoft.public.* ones. I guess Google Groups would be pretty good for non-MS topics as well, but I find that inevitably my MS searches lead me here. For Office-related questions at least there are often one or two MVPs who reply.

Another resource I have used on occasion: the forums at Joel on Software. A lot of very good developers frequent those forums, so even if no one can answer your questions, they might be able to point you in the right direction.

Beyond forums, well good luck. At this point you might need to resort to personal emails, although I have personally never gotten any success from such a method. Or you probably have to resort to detailed experimentation or even - god forbid - giving up.

Posted by Roy in Software Developer | 2 Comments

Aug. 12, 2007

I couldn’t sleep, so obviously, I had to start a new personal project.

PyMTG

I was inspired after forum-browsing lead me to look at existing MTG open-source software. I’ve been thinking of starting a true-blue personal software project for a while now, and the idea of PyMTG appeals to me for several reasons:

(a) It’s related to one of my current hobbies
(b) Allows me to become familiar with a new language (Python)
(c) It’s moderately to insanely difficult (depending on how well I set my targets), i.e. it’s of a scale large enough to be challenging.

The wiki page contains the target features for the first release at the end of the year. Quite modest I think, despite my tendencies to underestimate. I hope I can follow through with this project and have enough time for it.

The success of the project would be determined by how much of the existing MTG cardbase it could support. Ultimately, I would want it to be open-source and have people help me to obtain 100% cardbase support. But that’s obviously very far away.

Wish me luck :)

Update: This project is on-hold, not surprisingly. It turns out I don’t actually have time to learn a new language. :(

Posted by Roy in Software Developer | 1 Comment

Most of the time, my work involves mostly run-of-the-mill information management systems. Lately however, I’ve been asked to look into some new tech, and that got me interested in what’s called Rich Internet Applications (RIAs for short). The primary platform for RIAs is Flash, which apparently is already owned by Adobe and Macromedia is no more. Yeah, I never really paid attention to Flash, like most people I assumed it was only for making amusing movies and annoying ads. Also, Flash has always been a tool oriented towards people who are more design-oriented, not engineers or programmers like me. I mean, I load up Flash 8 and I have no idea how to do anything.

Lately however, Adobe has released a product called Flex, which is basically a programming API for generating SWF files using XML and the Flash scripting language, ActionScript. It’s pretty cool, and I’ve seen a few really nice demos of web applications done using Flash, some of which I highlighted in recent links. I’ve tried out Flex for a few days, and really it is SO AWESOME. There are some UI stuff that you can do that would be ridiculously difficult with traditional HTML/Javascript and those things are so easy using Flex. (Just one caveat: some of the demos I’ve seen so far are quite the resource hogs…)

The real power of Flex is the fact that it generates files that run on Flash Player, one of the most ubiquitous platforms on the web. I’m betting that Flash Player has a larger install base than Internet Explorer. So it’s really hard to compete with Flash as a web platform.

That doesn’t stop people from trying however. Lately, Microsoft announced Silverlight, a .NET-based RIA SDK of some sort. The screenshots seem to denote that it can do really cool things as well. Gee, it would be nice if I could experience it directly, but here’s what I got when I tried to install the runtime:

Problem installing Microsoft Silverlight

Gee, way to challenge Flash: make it difficult to install the runtime. I’m not even sure if I really don’t have Admin privileges on this machine, and you know what? I don’t care about Silverlight enough to find out. With Flash Player, sometimes people don’t even know it’s being installed.

Before Flex existed, the ability to create Flash-based webapps was mostly limited to developers who were patient enough to understand the Flash authoring tool. Flex opens up that platform to any developer with decent programming knowledge. Will this change the face of the internets? We’ll see…

Posted by Roy in Software Developer, Tech | No Comments

May. 21, 2006

I always have a hard time assessing fellow developers.

For one thing, I’m never sure whether it’s fair to apply to other people the same internal standard I have for myself. Some people might say, “of course it’s fair to expect as much from other people as yourself!”, but the fact is that I’m not even sure if I expect too much from myself. I may like to project and arrogant and prideful exterior, but I’m extremely self-critical. I feel that many of the problems in our current project have been caused directly by my own lack of experience in handling techincal design decisions. However, my own perceptions contrast with the assessments I get from my peers. I’m neither kidding nor trying to brag here…I’ve actually had assessment sessions where the phrases “idolize” and “would like to follow his career path” were used. I’m not sure if I’m being buttered up or my expectations of myself are really that far out of sync with the world…

Anyway, meaningless self-analysis aside, what makes a good software developer? I’m sure many others have given numerous things to look for in developers, but for now I think there’s one trait I can identify: a passion for learning. I prefer software developers who are always looking to improve themselves; the ones who buy reference books, read articles on the ‘net, consult with senior developers for design advice, attend trainings and seminars, etc. They study what works and what does not in software development, and they strive to apply only the best practices. For lack of a better term, such people are craftsmen, software development is their craft. I’m fairly sure that any software developer who exhibits such qualities is a pretty good one.

I suppose I’m fairly lucky. Of the current crop of developers I work with, at least 3 out of 10 satisfy that description. Not a bad ratio.

Posted by Roy in Software Developer | No Comments

So I was at work, and one of the HK guys asks me if we can have a themed button for the file input control in one of our screens. So, I’m all “alpha geek” and stuff, and I go: “No we can’t. We can’t style the ‘Browse’ button directly, and IE will throw an Access Denied error on submit if we invoke the click() method using Javascript.”

But HK guy replies: “Gee, I wonder how GMail does it then.”

I checked, and he’s right. I never noticed before because I use Firefox all the time, but GMail in IE doesn’t even show the freakin’ file input control! It’s just an “Attach a File” link that opens the “Open File” dialog on click! I took a look at it and I was like…”how in the world…”

So, being a developer, I of course attempt to get the source, analyze it, break it down, and get it to work for me. But from experience, I know that trying to figure out gmail’s obfuscated javascript code would take me days. So I decided to take an alternative approach: I would let gmail execute it’s weird javascript magic, then use javascript myself to extract the relevant HTML and Javascript code from the gmail window at the correct state.

My first attempt: I tried to load gmail in an iframe so I could read the document contents from window.top. Eh, no go. Gmail pops itself out of the frame easily.

My second attempt: I open gmail in a new window using javascript’s window.open, then use the resulting window variable to access the document contents. Something like this:

<html>
<body>
<script>
var win;
function doIt() {
win = window.open(’http://www.gmail.com’);
}
function getIt() {
document.getElementById(”t”).innerHTML = win.document.body.innerHTML;
}
</script>
<br/><input type=”button” onclick=”doIt()” value=”clickMe” />
<br/><input type=”button” onclick=”getIt()” value=”getContents” />
<br/><textarea style=”width:100%; height: 40%;” id=”t”></textarea>
</body>
</html>

Wow, “Access is denied.” Who knew IE actually had that much security?

I try a few other methods, mainly trying to navigate the properties of the “win” variable to find something I can actually use. I go through trees of frames trying to find something…but I get “Access Denied” and “Permission Denied” anytime I try to get near a document element.

Damn this is tough…I thought it would only take me a few minutes =/

Posted by Roy in Software Developer, Work | 1 Comment

Today’s Dilbert takes the old programming truism to an extreme - “Users don’t know what they want.”

Posted by Roy in Pop Culture, Software Developer, Tech | 1 Comment

Dec. 4, 2005

So, my brother needed to present 20 java programs for school. He didn’t have to make them himself, he said. Just to print them out and submit them. (What kind of ridiculous compsci teacher asks for hardcopies of source instead of softcopies?)

Anyway, I said, sure. I’ll make some, it’ll be easy. After all, trivial programs shouldn’t take me more than 5 minutes each right? It was true, each one didn’t take long. But I spent quite some time thinking about what I would actually code. The usual suspects are there - Hello World, prime factors, factorial, simple arithmetic, palindromes. It was just harder than I thought making up twenty diverse trivial java programs to write. I’m not a teacher after all :p

Anyway, in case someone in the world finds these examples useful:

Twenty random java programs.

Posted by Roy in Software Developer | No Comments

Sorry about the title. I couldn’t find any succinct way to put it.

Anyway, yeah. I’m supposed to be trying to get a phone. People have been harassing me for years about the fact that I don’t have a phone. Since my vacation is already half-wasted already, I figure I’d go online and get some info on what phone I’d buy.

Now, bear with me a bit, I’m really stupid when it comes to phones, since I’ve practically never owned one. If there’s any better way or better place to look for the info than the way I describe here, tell me about it. :D

First, to find out what are the available phones and their features, I check the website of one of the major providers to see what handsets they list, since supposedly this tells me what models are available locally. FYI, I chose to use Smart’s website

Now, this helps me find phones which have features I like. But the Smart website only gives me prices offered by Smart when the phone is tied to one of their plans. Let’s assume I want a bit more flexibility and don’t want to be tied to the plan. I have no idea where to check the prices though, so I hit two auction sites instead: ebili and bidshot, so I can get some idea what people are willing to pay for these models.

Easy enough right? Check the features, cross-check the prices, choose a phone. Some notes on these websites:

Smart: Why the hell is the list of phones not sorted in any logical order? None that I can see anyway. When I see a cheap, er, reasonably-priced phone on the auction sites, I want to check the features of that phone on the Smart website but it takes me a while to find it. Some sort of search feature would have been nice. (Or maybe there is one and I missed it?)

Ebili/Bidshot: Why the hell is the search result list not sortable in any way? If you have a grid of search results, I don’t see how difficult it is to implement sortable columns; every single webapp I’ve worked on has this feature! I was almost tempted to send them an email offering my services as a freelancer to implement reasonable searching features such as sorting and filtering. These are NOT difficult things to implement, I don’t know why we don’t see them in all websites; I can understand the performance concern if you’re potentially returning millions of hits (i.e. Google), but these searches have hits ranging in dozens, sorting performance hit should be minimal.

That is all, just wanted to rant. And no, I have not chosen a phone yet.

Posted by Roy in Software Developer, Tech | No Comments