Fully informed and experienced decision

My comment for “Why I Don’t Use Interface Builder”: http://blog.teamtreehouse.com/why-i-dont-use-interface-builder

IB is about Organizing, not about Replacing. IB is a tool, not a regulation.
Once you know the limits of IB and developed good programming habits, IB can be extremely useful.

I saw too much terrible spaghetti codes, which could have been helped by adopting MVC principles and knowing the life cycles of UIViewController & UIView instances.
As a way to help those developers to learn about the principles, I show them how to complete a project using IB and later replace it using only codes, to help them to realize the limits of XIB files and see how whole structure is preserved, to show the real reason for using IB: Separating codes.

And once VIEW components are separated from others, I point out patterns or repetition, which are just configurations at loading of the instances.
Other than iteration, they are not so easy to be solved creatively and quickly, without taking precious seconds, minutes, or hours.
Also, there are more important tasks for fulfilling the requirements of the app, than tasks for calculating frames for labels.

Unless you like it (I saw some people who like it), it’s smart or even necessary to use a tool which was developed to avoid working mechanically. Fortunately in Xcode, we have Interface Builder.

Depending on the characteristic of the projects, the decision to use or not to use IB is totally up to the developers. When they decide not to, I hope it’s fully informed and experienced one, instead of one caused by estranged or uncomfortable feeling toward IB.

Advertisements

Free Applications for the Developers using Mac

Mac and Windows togatherA few weeks ago, I reinstalled Mac OS X Leopard after one year of experiencing my first non-Windows environment. Not that I needed to fix something, but simply I wanted to set the optimal environment which I’ve learned by trials.

So far, it has been very satisfying, and owning a machine which allows me to have both Mac and Windows worlds for development is purely exhilarating.

To be honest, I don’t have anything against Windows environment. Rather, it’s because I still can have Windows in a Mac machine, I decided to get one, so I can obtain the privilege to use Mac OS X(Unix) and Windows together. For acquiring this environment, I figured Mac could be the only machine, unless I hack something.

It has been great joy to find more about Mac and useful equipments for the developers and to train myself to become better at them.

This is the list of applications I was recommended by great blog posts, and would strongly recommend to other Mac users, especially to the new developers who has experienced Mac for no more than a year like myself. I personally use these, some are available also in Windows, and of course, they are free.

Xcode:

There is no other IDE for developing an application for Mac OS and iPhone. Unlike Microsoft’s expensive Visual Studio, you can get it for free, as included in Mac machine you purchased. You may have to pay for iPhone Developer’s Program if you want to use an actual device for testing and deployment, but to use only simulator you can get Xcode with iPhone SDK for free. Currently, I am enjoying so much time to master this great tool.

Eclipse:

I cannot say much about this, but it seems like this IDE is a must for Java or other popular language developers, almost in every environment. Though I’ve been using it less then I expected because of using Xcode and Aptana more, I think nobody can ignore the importance of its presence in a developer’s machine.

Aptana:

Using almost identical user interface as Eclipse, this tool is specialized in web development. Whenever I need to write a web program, rather than using Eclipse, I use Aptana. So I designated Aptana for web development, and Eclipse for Java.

TextWrangler:

I just can’t find any other editor better than this for Mac environment. This one has almost every feature a developer can ask for. My use of an editor is to modify codes already written, while IDEs are for writing new codes, because they provide code suggestions while typing. Together with TextWrangler, I can have a mini and quick IDE for anything.

DropBox:

If you are in the situation of using more than one computer in many places, DropBox folder is a must. Though it gives only 2GB to be used for free, it’s sufficient to synchronize your working files to be shared among your office computer and home computer. This synchronization is very powerful if you save your workspace of Eclipse or Aptana in DropBox folder, you can have same coding environment shared among the computers accessing the same DropBox folder.

FileZilla:

So far I’ve been using only this one, because it seems to be the simplest and the fastest. I strongly recommend this for its bookmark and folder synchronization features.

XMind:

This is a great tool for building a beautiful mind map of your own. To me, the user interface and icon are simple and pretty.

NTFS-3G for Mac:

Since I use Windows also, it’s necessary to be able to access NTFS-3G formatted disk. You may use FAT32 format to be used in both Mac OS X and Windows, but it’s doesn’t allow a single file to be bigger than 4GB. Using this, you can stay in Mac OS X mainly while accessing Windows file system freely.

SynergyKM:

I use more than one computers. If I want to use all of them on the same desk, it’s necessary to use only one keyboard and mouse to be free from annoyance of interchanging between different keyboards and mouses. This app allows to share keyboard and mouse with multiple computers using different OSes. As long as the computers are in the same network, knowing the IP address or the computer name of the main(server) computer which will share its keyboard and mouse is suffice.

Can anyone recommend more apps, or the better alternatives to these, especially for the developers using Mac? I would love to get some comment. Thank you!

[CopyBlogger] Confessions of a Comment Addict by Johnny Truant

ORIGINALLY POSTED IN: [CopyBlogger]

It’s interesting to run into an article about the deeper mindset, truth shared by a bloggger him or herself. Usually the established bloggers don’t show their inner thoughts, while focusing on professional, educational contributions through their posts. But in my case, for being a developer yet to be grown to become truly professional who can contribute significantly, it’s not easy to make regular posts. I wrote about Why it’s hard for me to blog frequently previously and this article by Mr. Truant seems to recognize the beneficial effect of opening up oneself to the readers.

The problem with most blogs and most bloggers is that they’re playing it safe. They’re just “reporting” on things, playing by the rules of what a person should and shouldn’t say in public. If you can buck that trend and talk about what others are feeling but won’t admit, you’ll draw a reaction. Opening up, especially when it’s uncomfortable, will get you more comments.

I guess people often feel difficult to comment on the superior post which may not need any addition or editing. But if the post is about inadequacy of incompleteness of the author or the subject matters, it becomes much easier to add to or edit the inferior post by commenting. Identifying this idea, Mr. Truant listed how to get more comments:

  1. Think of something that you feel or that is bothering/affecting you, but which you are reluctant to talk about.
  2. Ask yourself if other people are likely to identify with it or to feel the same thing, but are similarly reluctant to admit it. There’s little point to confessing to something that only you feel. (So for instance, perhaps you have a deep desire to rub yourself with rats. It seems unlikely that others will share this desire. But maybe that’s me. Maybe I’m out of touch.)
  3. Make your confession, showing yourself in full, naked glory.
  4. Watch the comments roll in.

This works because everyone has foibles, but most people are too preoccupied with looking “correct” or “professional” to discuss them. By finding and talking about these “elephant in the room” topics, you’re being brave on behalf of your readers. You’re being the first person to say what everyone is thinking, but which everyone is afraid to admit. You’re giving them permission to feel the same way, to discuss it, to admit it in kind.

While it’s important in blogging to be able to guide and contribute by sharing special knowledge or providing better solutions to the problems, sometimes it’s meaningful to connect with the readers by having the vulnerable communication, making oneself seemingly weaker. Amazingly, people don’t easily attack or slander the humble and  sincere blogger.

But what people really want, I think, is a friend. Not some know-it-all who pretends to like you just so he can make a sale, but a living, breathing human being who is just as screwed up as you are and isn’t afraid to admit it.

[ReadWriteWeb] The Future of Search: Social Relevancy Rank by Alex Iskold

ORIGINAL ARTICLE: http://www.readwriteweb.com/archives/future_of_search_social_relevancy_rank.php

The article talks about the importance of prioritizing search result, or stream of posts, not based on chronological order, but based on social relevancy, or social network of followers of oneself and people he or she is following.

What we are about to get is a Social Relevancy Rank. Whenever you search streams of activity, the results will be ordered not chronologically but by how relevant each is to you based on your social graph. That is, people who matter more to you will bubble up.

The author brought up improvement ideas for mainly Twitter, or also for any SNS. Main points are:

1. The result of search query, or the front loaded posts should come initially from the relations to myself. But it limits the result, because not everyone has opinion or information about the search query.

This sounds awesome, but there is a problem. “Wilco” works well as a query because the band has just released a new album, but many other queries would return no results. Simply put, your friends on Facebook and people you follow on Twitter can’t possibly have an opinion on every topic you may be interested in. This is a problem of sparse data: trusted opinions are scarce.

2. Since the trusted result from the level-one relations is limited, expanding the network to include the relations of the relations is necessary. This expansion can also be based on likeness of people even outside of the relations.

Another step could be to include people with similar tastes, so-called taste neighbors. This approach is common among vertical social networks such as Last.fm, Flixster, and Goodreads. These networks have ideas about which people, other than your friends, are like you. However, this is a costly calculation and takes time.

3. Using the number of followers as a measure, a few of the relations can be titled as opinion leaders or the influencers among the crowd. Give higher order to their opinions in the search results or the stream of posts.

In the absence of any other metric, someone who is followed by hundreds of thousands of users is likely more relevant to you than someone you don’t know at all. Using number of followers as a weight might be a good way to order the rest of the activity stream.

I think this relevancy rank can improve what Twitter, or stream based publishing systems have been good at. For their currently chronologically ordered search results of stream of posts to be more useful or more easily to be found and processed, the additional sorting mechanism based on this relevancy ranking is crucial. Depends on the level of openness of the service enabled by APIs, the application of this system may come much quicker and may be developed to become superior service than the original.

[Darren Rowse] How I meditate – Examen

http://www.darrenrowse.com/how-i-meditate-examen

I often find it very meaningful for a professional to share his or her belief and how he or she practice it, especially if the professional is not in the field of ministry. Though it is hard to ignore his ministry background, Darren Rowes; the Problogger, shares his personal method for meditation, or Examen.

The meditation is actually an ancient one – it’s called Examen of Consciousness (sometimes just called Examen) and it was developed by St. Ignatious Loyola (that’s a picture of him below – I think he’s blogging).

Examen a Christian meditation but I’m sure people of other faith backgrounds could use much of it with some modification and that even those who don’t practice any religion could benefit from some of the exercise too. I’ll write it up primarily as I practice it (I’m sure there are many variations) and from the Christian perspective but do feel free to adapt and fit it to your own situation.

The point of Examen is to find the movement of God in our daily lives as we review the day that we’ve just had (or are having). As a result I find that it’s best to do at the end of the day (I quite often use it in bed and fall asleep part way through).

I can’t help but consent more with the everyday Christians who are trying their best to diminish the line between non-spiritual or spiritual. In case of Darren Rowes’ understanding of meditation, he loves it because it’s not overly spiritual, but practical activity which can help him to get “a space to process and deal with the crap that life can throw at us and move forward.”

I’m very aware that this meditation comes from a spiritual (and Christian) perspective (although it’s also very grounded in day to day life) – however that’s the perspective I come from so it’s all I’m really able to authentically share.

As I mentioned above – if you don’t share my faith background I still think that much of it can be helpful. Stage 4 in particular is really useful for reflection. As I mentioned in the ‘note’ above – the practice of just setting aside time to think about how you live, react to situations and to notice the patterns that you slip into can be an enlightening one.

I love this meditation because it’s not overly ’spiritual’ and is quite practical. It does force me to stop, still myself and just ‘be’ for a few minutes each day but I find it also challenges me to work on aspects of myself that are slipping and also gives me a space to process and deal with the crap that life can throw at us and move forward.

I left this comment: “Thank you for sharing insightful post. Even though how everyone is different, uniquely created by God, there is some common sense when it’s about the relationship and communication with God. I was gladly surprised at how you described the purpose of meditation from the “Examen”, reviewing perspective. I do learn a lot from your work and personality. God bless you for your beautiful work in blogging and other meaningful missions.”

[Stepcase Lifehack] Scrum for One

http://www.lifehack.org/articles/productivity/scrum-for-one.html

This scheme is exactly what I need for developing my project. Step by step toward each small but important goal.

Scrumming Solo

Seems to me that, with a little modification, those are pretty good principles for anyone with some big projects on their plate – especially if you, like me, have a tendency to get side-railed. Of course, most of our projects aren’t collaborative, and they’re rarely as compartmentalized as computer programs, either. The idea of developing a project by evolutionary steps, with each step creating a potentially usable end-product, simply doesn’t apply to the kind of long-term projects most of us have as individuals – things like writing a book, learning a foreign language, or earning a promotion.

But the idea of Scrum is, I think, very applicable to our personal lives. The whole point is, through a process of constant self-awareness, to identify what’s holding us back, how we can work around it, and where the next few days or weeks should take us. Consider, then, “Scrum for One”:

  • Do what you can with what you have. There are bound to be hang-ups in any project worth doing, and it’s all too easy to look at a project and despair because you don’t have whatever you need to finish it. Well, you may not have what you need to finish, but chances are you have what you need to start, to do at least some of the steps needed to get yourself somewhere close to the finish line. And you can take heart from this peculiarity of Scrum: often, when working under less than ideal circumstances without all the necessities to finish a project, Scrum teams find that either a new solution emerges that’s much more within their grasp or, just as often, that the missing element isn’t really needed in the first place. At the worst, you’ll give yourself the time you need to come up with the missing piece – and meanwhile you’ll be moving inexorably closer to your goal.
  • Constant self-reflection. If you’re a fan of Allen, Covey, or Drucker, you’ve probably already accepted the importance of a weekly review. Scrum for One suggests that more frequent reflection might be helpful – nothing at the scale of a full weekly review, but a few moments of honesty each morning to define the work in front of you and any problems that might be standing in the way. Brainstorm a few minutes to see if you can solve the issue, and if not, put it in your to-do list for later action. A lot of time, just asking “What’s standing in my way?”is enough to trigger a solution – more often than not, the problem lies more in ourselves than in our situation.
  • Work towards clearly-defined, short-term goals. Give yourself a time limit and set a reasonable goal – reasonable, but meaningful – to reach by the end of that period. Projects that stretch out in front of you for months or years are discouraging (which is why so few people write books) while projects that are too small often aren’t very satisfying to complete.
  • Sprint. Sprinting the way Scrum teams do it won’t really work for individuals – you probably have a lot of different roles to play on a day-to-day basis, which means focusing on a single project to the exclusion of everything else is going to be difficult, if its even possible. What you can do, though, is block out a number of hours every day and use them to focus strictly on one project – no distractions, no knocking off early, no nothing until you reach your goal.

[ProBlogger] 5 Ways to ‘Systemize’ your Blogging

http://www.problogger.net/archives/2009/06/15/5-ways-to-systemize-your-blogging/comment-page-1/#comment-4751292

My schedule is not ideal for many people, but remember—I’m not married, not (currently) taking classes, and don’t have a day job. I maintain a midnight-7am schedule for blogging because that’s when I’m able to focus without being distracted—no matter what. I may be able to work undisturbed during the day every once in a while, but by choosing a time to work that is consistent has led to my building a habit around this time. My body now knows at midnight that it’s time to focus, crack down, and produce. Habits are a great “system” to have in place because they can help force efficiency and effectiveness in everything. Get in the habit of writing at least once a day, and start building good habits around your blogging “business” as soon as possible.

I just can’t help but agree, based on my own experience, observation on myself, I need to build the habit around the specific range of hours which enable me to focus and produce.

The ultimate goal of systematization is not necessarily automation—though when executed deliberately and correctly, automation can be a welcome hand in your business’ operation. By systemizing your blog, you are able to begin working “on” your blog, not “in” your blog—to borrow from a popular business expression. Sure, you need to provide great, original content, but understand that there’s more to blogging than what you type (unless, of course, the blog is for your eyes only!)

Since I hope to make this blog open to the viewers and earn enough money to support my autodidactic plans, I must develop professional skills to manage the blog to be a real business.