Wednesday, March 02, 2022

Web 2 and Web 3

 I've recently begun a training at Blockgames, which is organised by Nestcoin in partnership with Zuriteam. This current cohort is closed for new entries, but you really should check them out using the links. As the title says, this post will be comparing and contrasting Web 2.0 and Web 3.0. I hope it will be simple enough for even newbies to understand. Also, writing helps to articulate one's thoughts and establish what one has learnt – or so I'm told. Anyway, here goes!

What most people call the web is really a set of different services and applications running over the global network that's properly called the internet, and while most people don't care about the difference, it kind of matters a little bit for the purpose of this article, because while there haven't been so many strides in the underlying network itself, as for services and applications running on top of that, things have changed quite a bit since the early days of the web. These changes, while not formalized per se, have been grouped into the categories (or eras, or "versions", if you will) tagged Web 1.0, Web 2.0 and Web 3.0.

In Web 1.0 (the earliest), content was mostly static (except mostly for animated GIFs and the now dreaded and shunned <marquee> element), there were (relatively) few content creators. For the most part, one had to be technically savvy to have or maintain a website. And yes, that was when the job title "webmaster" was a thing.

For Web 2.0, there is a lot of user-generated content (Facebook, Instagram, TikTok, Twitter and other social networks are great examples of this), there's a lot of interoperability (I remember linking my Facebook and Twitter back then, and I think I also got something in place to automatically publish posts on this blog to Facebook) between systems, things are quite usable (from a user's perspective – front-end tooling got a huge boost here), and there is way more interaction by users than there was for Web 1.0 (This is a good time to remind everyone that Gangnam Style forced YouTube to increase the limit on the number of views for a video a long time ago). Web 2.0 really democratized things a lot when it came to content on the web. It also saw the rise of silos of content (any of the above social networks are also examples – anyone recollect Twitter banning former US president Donald Trump? Imagine you were a historian who wanted to preserve Trumpisms. You'd need to request access from Twitter for his tweets (assuming you hadn't had a separate record of all of them)). Silos are centralized (there's one source of truth). If Twitter goes out of business tomorrow, you lose every single tweet you've posted.

With Web 3.0, the web becomes a database, if you will. Specifically as it relates to blockchains, the big feature is decentralized apps that run on the blockchain. Since the blockchain is distributed, there can be several sources of truth, and the blockchain enforces eventual consensus (so there aren't several versions of the truth, just one).

To further illustrate the difference between a centralized (one single source of truth) and permissioned (someone has to let you in) system (Web 2.0) and a decentralized (distributed, many sources of a univeral truth), permissionless (no gatekeeper) system (Web 3.0), let's look at some not-so-savoury incidents in recent times. After the End SARS protests in Nigeria in 2020, an acquaintance was one of several people who had their accounts restricted. In Canada, people who donated to the truckers' protests suddenly found that they could no longer perform financial transactions. In the more recent Russia-Ukraine war, some Ukrainians have found themselves cut off from the regular financial system, and Russians have been cut off from the global financial system, for the most part. Governments control the flow of fiat and the financial systems around them, so that is a centralized and permissioned system. In contrast, cryptocurrency only requires people willing to exchange it, and the internet, or as the cool kids say, "crypto fixes this".

Thanks for staying with me through this.

Monday, March 18, 2013

2013-03-18

Over the weekend, I've taken a little time to put up an application on Google App Engine (sorry, it's not public). Working with App Engine has been a very interesting experience so far. It's definitely not been business as usual, and I've a couple of bumps to prove it.

Here are some of the things I've experienced:
  • Trying to use the deferred library (a way to use push task queues without setting up URL handlers for them) without adding deferred: on in the builtins section of your app.yaml is a source of pain. Your tasks won't execute, and you'll keep wondering why.
  • If you have multiple versions of your app, you need to specify which one gets served as the default. I updated my app from version 1 to version 2, and was surprised that version 1 was still being served.
  • Sometimes, being able to download your application source is a boon.
  • Don't try to run searches on documents which don't have fields you're specifying. In my case, I changed generation of the documents for full text search to add one field, then updated the app. I began getting cryptic errors and was chasing red herrings until I logged in to the console and found the already indexed documents were missing the fields I was searching on.
  • It was a novel experience not being able to run an aggregation query like SELECT COUNT, because App Engine doesn't support such queries. If you want to count it, build your own counters for it.
  • Instead of using per-user namespaces for memcache, it might be a good idea to affix keys with the user ID of the currently logged-in user (for example, for storing query cursors when paging through results).
I'm sure there were other things, but it's almost 5am and I've been up for a couple of hours. Sleepy time.

Tuesday, March 05, 2013

2013-03-05

in my current project, I'm using RapidSMS, and since it's based on Django, it comes with all of Django's testing capabilities, and adds a few. The TestScript class, in particular, is really nice. I've worked with .NET, Java, C, C++, JavaScript and even kicked around Objective-C a little, but this project is the first time I'm really doing serious unit testing (well, there was that one time I did behaviour-based testing for some JavaScript code for another project), and it's showing its value, even though:
  • It's boring. Seriously. I do not look forward to writing tests, but I'm doing it wrong, since I'm writing the tests after I've written the code. Maybe it's because of the way assertInteraction() works in RapidSMS that I think it makes sense to write the tests after.
  • It's eating time. Still, I'm beginning to feel the bite of victory when I see all those dots line up in a row after I do: manage.py test.
Last night, I did a little doodle in Sculptris while watching the Digital Tutors tutorial on Sculptris. It won't win any awards, but I'm beginning to see the attraction in digital sculpting. Since both Hexagon and Blender support sculpting, I think I can easily get my hands full. Speaking of 3D software, I can't remember what got me excited about the upcoming Wings3D 1.5 (no beta/RC for OS X yet — boo!), but I know good things are in store.

Oh, yeah. Take a look at power blade spam in Hexage's Radiant Defense:


Was wondering why GTBank has a lovely mobile site, but to use online banking, you still get to the desktop version of the site:


Plus, the site is Javascript-driven, which negates the use of what is arguably Nigeria's most popular mobile browser — Opera Mini. Take that keypad for entering your internet banking PIN, for instance. Good luck getting that to run with Opera Mini.
I'm not an Interswitch fan, but the company does some things right. QuickTeller now has a lovely mobile site (I haven't tested with Opera Mini, though), and have got over their paranoia by allowing you enter card PINs with an apparently regular text field on mobile.





I don't know how other people cope with using MTP devices, but I think the protocol sucks. For instance, the screenshots folder on my phone shows files with zero bytes. And when I tried copying the folder using Android File Transfer to my computer for this post, all the files had a size of zero bytes. And I cannot count how many times I've changed the filesystem on the phone, but AFT or Windows still shows the unmodified filesystem when browsing the device.


This is why I'm sincerely grateful for AirDroid. Here's the same folder as above in AirDroid:


Nonzero file sizes. AirDroid is a lovely piece of engineering. Well, that's all, folks!

Tuesday, February 26, 2013

Google Translate vs Human translate

Google-translated page (from German)

English version of text by page author
I say human translate wins.

Saturday, February 23, 2013

Looking at what goes in

Just this morning, I sat down to get some work done, and wanted to get a drink. I opened the fridge, and something like this greeted me:



I initially thought it was because I didn't get my glasses, but it's rather clear that most of the bottles of water have a decided blue tint to them. In fact, only the second bottle from the left on the top row – the one closest to the light – is unsealed. It's probably been refilled from the (faulty) water dispenser.

I'm not sure how the factory achieved the blue look, but I have to ask myself, is it really safe for consumption? And it's got me thinking a little more about what I take in, and not just in the way of food and drink, either. Who has my ear? What has caught my eye? What am I thinking about? And is any of it safe for consumption?

To be clear, I've nothing for – or against – the water bottling company. They just happened to be a (decidedly graphic) platform for the last paragraph.

Friday, February 22, 2013

Before you forward…

BlackBerry (or WhatsApp or ) broadcasts. Chain emails and text messages and instant messages. Status messages. Retweets. Modern technology is a wonderful way to let people know what we know (or at least, what we think we know). But sometimes, I wonder if we take the time to think about what we want to share before sharing.

You might have seen those status messages on Facebook where your friend says they want to stay privately connected to you. Or the BBM broadcast about cosmic rays from Mars. Or the message that Yahoo! servers are full, and unless you forward a certain message, your account will get deleted. Sadder still are the messages that say things like “For each person you forward this email to, XYZ Corp. will donate USD 0.01 to ABC”. I remember a tweet about an accident on the Third Mainland Bridge in Lagos, which I shared, and was later proven to be mostly untrue (the accident did in fact occur, but nobody ended up in the water).

It might be spitting into the wind and being overly obvious, but we really should realize that we shouldn't trust everything we read or hear. Some things are people's opinions. Some of them might be mistakes. Some, like this post makes clear, can just be from people taking advantage of other people's emotional responses to what they read (by the way, I think the post's author is making a very valid point).

At the very least, mention while sharing that something has not been verified. That should give people's natural cynicism a chance to kick in. And avoid blowing up (especially for effect) whatever you choose to share. If you heard that three cars crashed together, resist the impulse to exaggerate. When it's bad news, bigger is definitely not better. Panic over exaggerated claims often causes much more damage than the actual event itself (anyone remember the explosions in Ikeja Cantonment some years back?).


Wanderings, 2013-02-22

This post will contain "geeky stuff". You were warned.

Blender 2.66 released

Blender 2.66 was released yesterday. Some of the changes:
  • Cycles strand (hair) rendering;
  • Rigid body physics simulation (no more recording in the game engine!);
  • Dynamic topology;
  • New and more accurate particle fluid solver (I wonder why the new one is called the "classic" solver?);
  • Support for Retina displays.
You can view the release log here.

Lessons, failures and question marks at work

I've been working on a project that uses RapidSMS (and hence, Django), and I've had some ups and downs with it that I consider worth sharing.

rapidsms-admin.py no longer works

If, like I have, you've used RapidSMS before (in the grand days of version 0.9.6a) and you're upgrading beyond that version, I've news for you (if you've never upgraded beyond that version): rapidsms-admin.py does not work anymore, at least for creating new projects. Go to the RapidSMS documentation site and read the installation instructions. Yes, I know: the documentation on setting up a new project shouldn't be under installation instructions, but we live in an imperfect world. Oh, and you'll need Django 1.4 or greater.

Python's extended slice syntax is all sorts of awesome when you need it

An example is much clearer than explaining:

>>> # a rather contrived example, but please bear with me
>>> mylist = ['a', 1, 'I', 'b', 2, 'II', 'c', 3, 'III']
>>> mylist[::3] # starting with the first element, pick every third element
['a', 'b', 'c']
>>> mylist[1::3]
[1, 2, 3]
>>> mylist[2::3]
['I', 'II', 'III']

Guido's time machine is alive and well. Don't ask what I needed this for, by the way. Oh, and if anyone has an excellent solution for displaying code snippets on Blogger, I'm all ears.

By myself, I broke Django's ListView (I think)

I set up a ListView for my project, but I kept getting an empty page, even after I confirmed that I had data in my database. Of course, when you have to communicate progress, an empty page isn't terribly convincing that you're not just sitting on your behind. After going back and forth with it, I decided to ask in #django on Freenode, and it was confirmed my code and template had correct code. After some more kicking stuff back and forth, it turned out that even though I had set the context_object_name on the class, Django was still going with the default, object_list. So if you set up a ListView and things aren't working as they should, this may save you a couple of head-scratching moments.

Blowing things up with syncdb and createsuperuser

I like my development environment. But sometimes, it can be really annoying. Every time I drop and recreate the development database for a Django 1.4 project, I'd naturally want to run manage.py syncdb to recreate the tables and whatnot. But on my development machine, the environment variable LANG is not set, which causes creating a superuser with the management script to blow up. There are a couple of fixes:
  • Set the environment variable before creating the superuser using the management script
  • Do a little code-jitsu to do that.
The second is my preferred choice, especially since a friend has drummed into my head the usefulness of having local settings in a local_settings.py file. So, by way of helping someone else, and in order to remember, I add these lines to my local_settings.py:

import os

os.environ['LANG'] = 'en_US.UTF-8'

Found this fix on this Stackoverflow post (first comment on accepted answer). This has been fixed in Django 1.5, so until you upgrade, keep using the workaround.

Sunday, February 17, 2013

Unverified: Employment opportunity at Red Star Express

Job Title: SYSTEMS ENGINEER
Location: LAGOS
The job:
- Comprehensive maintenance of all hardware
- Management of servers and internet connectivity
- Provide I.T support to all users
- Third party relationship Management
The candidate must have/be:
- B.Sc/HND Engineering (Electrical, Computer)
- Minimum of 3 years relevant work experience in a structured organization
- Basic oral and written communication skills
- Exchange server management skills
- Willing to travel.
- Ability to multi-task
- Age: 28 - 32years
Interested and qualified candidates should send their C.V (soft copy only) to cvs@redstarexpress-ng.com.  Multiple applications would be disqualified.
Application closes 21st February, 2013.
Only shortlisted applicants will be contacted.

The Perfect Mate

Got this from a newsletter, and decided to share:

A young lady visited a computer dating service and requested, "I'm looking for a spouse. Can you please help me to find a suitable one?"
The matchmaker said, "What exactly are you looking for?"
"Well, let me see. Needs to be good looking, polite, humorous, sporty, knowledgeable, good at singing and dancing. Willing to accompany me the whole day at home during my leisure hour if I don't go out. Be able to tell me interesting stories when I need a companion for conversation and be silent when I want to rest."
The matchmaker entered the information into the computer and, in a matter of moments, handed the results to the woman.
The results read, "Buy a television."

Men Only deodorant studio render

Still a work in progress. But I was dilly-dallying over completing it, so here it is. Yes, I know it's crap. Textures need major adjustment. No, it's different than the real deodorant body spray.


You might call it a revisit of one of these:


Wednesday, February 13, 2013

Naira MasterCard working on Amazon

One of the more pleasant surprises I got after migrating to a Mac was finding out that Apple has a localized store, and receives payments using local cards, or at lease the Naira MasterCard that's quickly becoming the de facto debit card here in Nigeria.

I also got a pleasant surprise wanting to pay for an Android app, and it turned out that Google Wallet also accepts payments using Naira MasterCard.

However, until last week, I avoided buying anything on Amazon, because Amazon had issues with local cards. In general, all my “purchases” on Amazon were books which were on “offer” (USD 0.00, just to be clear). However, last week, I missed getting one book that was free and had gone back to its original price, and wanted to at least get the sample. For some reason (habit, I guess), I clicked on the button to buy instead of the one to send the sample to my device.

I'd already added my card details, but never bothered to remove them from my Amazon account. I was initially appalled that I'd make such a mistake, but when I got the usual email from Amazon with the usual yadda yadda, I just hoped I wouldn't have issues with future “purchases”. When I later launched the Kindle app on my phone, instead of my purchase, I saw a book with Amazon's excuses.

But to my surprise, the payment actually went through, and my bank debited me. I've since gotten value for the payment, and apparently it still works, because I bought another book, and have got that too.

I guess this is good news for someone.

Friday, January 25, 2013

Gamble WIP

Tried to make some more progress on the scene I was working on today. A little modeling, but mostly more scene elements and lighting.


Thanks to Design Devil for the card textures. The HDRI was from the sIBL archive, the suits symbols from the OpenClipart library and the table texture from CG Textures. Obviously, the scene still needs work.

Here's a close-up of the chips:


And here's a render from an old scene. Was digging through my old laptop and found it :)

And another render while I was writing this:

Ooohh! Shiny! Now to make some more cards and simulate the chips falling naturally, either in the Blender game engine or using a recent build with Bullet Physics integrated. And maybe a die or two.

Thursday, January 24, 2013

Room WIP

Started playing around with 3D again, particularly Blender. Here's my latest WIP:
Whiskey WIP

Monday, January 07, 2013

Thought-provoking

A friend posted this on Facebook this morning, and it's a rather instructive read. Enjoy.

When I was an undergraduate, I knew a fellow who was studying to be an engineer. I resented him bicos his Grade Point Average was so high; he never scored less than 95% in any of his courses; when we shared a table during physics practical his measurements were so precise, his readings were so accurate, and his writing was so beautiful that he scored a 99A on the course. While I struggled through school, this guy seemed to glide to a first class, and I hated him. I hated him bicos I would study for long hours, wrestling with my textbooks and trying to make sense of my notes, while he had time to join a drama troupe, play football for the school, and attend events in school…and still maintain a 4.99 cGPA! I remember I used to pray to God to give me his kind of talent so that I could score high too, but my grades just seemed to remain below average.
A few years later I found out that this guy whom I hated so much for being a genius, had to repeat 2 classes in primary school for being slow. I also found out that after the 1995 JAMB exams, while we were at home playing around and waiting for admission, he was in school studying his brother’s notes and textbooks, solving test questions and attending classes like he was a student. By the time we started our 100 levels, this guy had solved every math, physics and chemistry problem in all the textbooks, and past questions from previous exams…up to 20 years ago! So in essence, what was new work to us was merely revision for him.
Many times in life we look at successful people and wish we were like them. We tell ourselves that those doing better than us are “talented” and “gifted” and “blessed”. But while this may be true in some cases, I have found that most of what we call “talent” is just hard work, dedication and focus. The grace of God is there to help us do our work…not do our work for us. The blessings of God are there to empower us to get wealth…not make us lazy. 2 Timothy 2:15 reminds me that for me to be approved, then I must study. Success is never a fluke my friends, the person you are today is the person you were preparing to be 5 years ago. So this new year, let us set our goals with Proverbs 22:29 in mind, and be like my friend whom I once resented, but now respect and appreciate so much. Happy New Year

Tuesday, December 11, 2012

To all the ladies I had non-consensual sex with, I'm sorry

Two things before you throw that stone: first, you might want to back away if you're a lady. There are things I will mention you may not be comfortable reading. Second, I haven't ever raped anyone. So take a seat and allow me explain.
I was having a conversation with a friend (below) about the love of God, and how God's idea of love can be radically different than ours. And as I said that, I realized that I'd been guilty of non-consensual sex with people I've seen, at least, if what Jesus says has anything to do with reality.
I have had this conversation in my head with Jesus in a thousand and one different ways, with just as many different arguments. "But she's hot. Look at that body. You made that body. And look, I have a boner already. What am I supposed to do with it? I'm just looking, not touching. Heck, you made me. You know what turns me on, and I'm majorly turned on here. Besides, body no be firewood na."

You know what's really galling, though? No matter what I say, He still just looks at me with that "are you done hedging?" look. I have never been able to get Him to excuse the lust. Yes, that's just what it is: Lust. Degrading women to just tits, thighs, asses and a hole between their legs since whenever (that was my second choice of title for this post, by the way).

And you know what the worst part of it is? Lust cannot be satisfied. Never. It always wants more. Real women will, at some point, never be enough, no matter how many one ends up sleeping with. And every guy who indulges his mind in sexual fantasy will eventually have issues relating with real women.

Maybe Jesus did know what He was talking about after all. Wish I could write more, but my sleep-deprived brain is longing for a bed. Later.

Friday, November 23, 2012

Vacancies at the Empowerment Centre

I received an email from The Empowerment House about vacancies, and decided to share wholesale. I am not affiliated with The Empowerment House, and have never attended any of their programs. I wish any applicants the best; the application deadline expires in a week. The email content follows.

The Empowerment centre is a Christian Ministry which includes KA TV (DSTV channel 345) which aims to revitalise the Christian TV experience in Africa by showcasing wholesome inspirational, educative, informative and entertaining programmes for the whole family showing various genre of programming including Christian reality TV shows, Musical shows, Drama, Talk shows etc. It also includes Empowerment house a church ministry with a vision to empower lives and transform society in accordance with Acts 1:8 and Empowerment college, a life changing school of Leadership & Management, Ministry, Business and Marriage.

VACANCIES


  • Chief Administrative Officer
  • Front desk Executive
  • Personal Assistant to CEO
  • Media Executive
  • Business Development Manager
  • Head of College
  • Office Assistant
  • Studio Production Executive
  • Driver
  • 3D/2D Graphics Artist (Still, Motion & Website)
  • Security Operative
  • Audio Production Executive
  • Editing Executive
  • Transmission executive

The Empowerment Centre recognises that the quality of its staff and their contributions represent its most significant asset in fulfilling its mission. We wish to attract staff who are keen to join and who, once here, will feel proud to be contributing to our success. In return, our aim is to ensure that the career and personal potential of staff is rewarded, recognised and developed in a properly resourced and supportive environment.

The Empowerment Centre considers all our staff as Christian ministers using their skills to minister in the 21st century world, only spirit-filled Christians who are ministry inclined need apply. You should also note that The Empowerment Centre is affiliated to a church ministry. Successful applicants must be comfortable with the ethos of the ministry and are required to be part of the ministry, anyone who is not able to meet this requirement for any reason need not apply for any of the positions.

Interested candidates should request for detailed job description and application procedure for the interested post from careers@empowermenthouse.com, please state interested post in email as application procedure varies for different posts.

Only Applications sent in the required format will be considered. Completed applications should reach us by 5.30pm on Friday, November 30. No telephone job enquiries please, Please note that only shortlisted candidates will be contacted. Location for all job vacancies is Lagos and Salaries are negotiable (Depending on experience).

Friday, November 09, 2012

Mommy's kiss

Two days ago, it seemed my little brother was not well. Today, he was rather cranky, and after my sister left for work this morning, I found him crying on the staircase for her and for his mother. I was already carrying his baby brother, but managed to carry him as well and get downstairs, where his mother was. Unfortunately, I misjudged our collective width and he hit his head on the door and wailed a little louder. Yet, when he saw his mother, he got quiet really quickly.

No doubt you've had such an experience growing up — maybe not with mommy, but with someone else — someone whose touch, whose voice, whose words — any, or all of these could calm your troubled heart and reduce even physical pain to bearable limits. Maybe even now, you still have such people around you, even though you're grown and have learned not to cry in the open (for the most part, anyway).

I never really realized it before now, but hurting people need more than just medicine. They need care. I was wondering what it would be like to have a major illness and have the best medical treatment delivered with surgical precision and in a cold, detached manner. I have no idea what it would be like, but I don't want to experience it.

The human spirit can endure a sick body, but who can bear a crushed spirit?
— Proverbs 18:14, New Living Translation

Keith Moore, in his message series A Fighting Spirit, talks about the importance of a fighting spirit to recovering from life-threatening illnesses. I do not seek to downplay the importance of a fighting spirit, but care can stir up or strengthen a person's fighting spirit (please see my previous post, Love's Roof, for an example). That's what happens when Mommy comes with a kiss and a Band-Aid for a scraped knee — that kiss and hug will do wonders beyond what just the Band-Aid would do.

Am I advocating for dumbed-down, watered-down truth? No. NEVER, EVER compromise on the truth of God's word. But where your doctrine and your preaching, your facts and figures and proofs from scripture fail, maybe a kind word or two, a hug and a listening ear will accomplish more for healing broken hearts and bodies than you could ever think possible. And the more the hurt, the greater the need for that care.

Thursday, November 08, 2012

Love's Roof

Love bears up under anything and everything that comes, is ever ready to believe the best of every person, its hopes are fadeless under all circumstances, and it endures everything [without weakening].
— 1 Corinthians 13:7, The Amplified Bible

I don't remember when exactly, but I was lurking around the interwebs and found Ann Voskamp's post on how to make any relationship better, and in it, she talks about the Greek word stego used in this verse. I remembered it today, because I saw a tweet by Pastor Poju Oyemade of Covenant Christian Center, and I realized just how apt the word, roof describes what love does to us. Love's a roof, a covering. Not when you love, but when you believe you are loved, or to use very bad English, you've the lovee, and not the lover.

A few weeks ago, I had a chance to talk to someone, and they were going on and on about my happiness, about how I deserved it and how it mattered, and I really wasn't in the mood to listen to them. One thing led to another, and they said that in my last relationship, I was happy. I discarded the idea (and the conversation), but I recalled that a few months into that relationship, someone else said they saw me smiling a lot more, and that they were sure that my girlfriend was good for me.

Looking back, I realize that I felt someone special loved me, and it was sufficient to change my outlook on life. My circumstances weren't that great, but they felt bearable because I believed I was loved. I definitely went overboard in making that relationship my primary source of happiness, but that was my safe zone, my hiding place.

The KJV renders this verse: Beareth all things, believeth all things, hopeth all things, endureth all things.. Looking at the language, it seems that it's implied that storms will come: if something is going to bear (up under), then definitely, something's coming up top. This points to why I caved in when that relationship ended: the roof that was taking all the hits from the storms I was weathering was removed, and I didn't have a fallback roof.

This week, I read a tweet that reminded me of God's love for me (1 John 4:16). For some reason, in a world that went crazy and refused to make sense since, that has become a bastion of hope. When I'm tempted to look back at what I've lost, and despair things will ever get better, spending some time to think about God loving me has been my new crutch, and it's served me better than pornography or masturbation ever did.

I haven't arrived, but I've left. Perhaps sometime soon, I will really laugh without reserve, not because I'm trying to distract myself, but because I'm healed, because I know that God loves me.

I'm glad I've a new roof. Beats getting exposed to the elements.

Sunday, November 04, 2012

Ignorance Required

For a couple of days now, I've been playing around with OpenLayers. Since it's been my first foray into anything related with online maps in general, I've had to pick up things at a much slower pace than I'd normally be comfortable with. One of the things I needed to do was to find out how to create a color-coded map, like this.

There was just one problem: I had no idea what that kind of map was named. And I can be really weird (just silently pass by) about being precise about things like names and spelling. So, I logged in on IRC and asked something like: hello. let's say i had a map and wanted to color regions based on some characteristic (average household income, for example). what's this called, and how may i go about doing this? in both the OpenLayers and Python channels on Freenode (#openlayers isn't very active in my opinion, but someone in #python might have done something similar).

After about 20 minutes with no answers, I realized that I was letting my desire to be on target (so know you know I can be perfectionist) manifest as a fear of looking like an ignoramus (yay! I know long words!), and for me, there are few things I'm probably scared of like being made to look like a fool, either by myself, or someone else. I decided to take the risk of looking like an idiot and google openlayers color coding. from one of the links displayed, I saw the word choropleth in the page text and so googled that. It turns out (like my machine learning lecturer is fond of saying) that was exactly what I wanted to do, and googling openlayers choropleth has, as is usual in today's world, overloaded me with information. As an added bonus, I found out about Natural Earth, which will probably be a very useful resource in future.

In the style of Box of Crayons' Great Work Provocations (a short, daily — working week only — newsletter on doing great work and which I highly recommend), how are you allowing a fear cripple your development? What can you embrace with courage today?

Have a great week ahead.

Thursday, November 01, 2012

Stand Out from the Crowd

I was lurking around as a guest on one of the forums Google leads me to, and I saw this post and decided to reproduce it wholesale here (without permission). Let's discuss this (Twitter, G+, comments) after the jump.

STAND OUT FROM THE CROWD

'Don't become so well-adjusted to your culture that you fit into it without...thinking...' Romans 12:2

A man walking into a bank held the door open for the lady behind him. Instead of thanking him, she said, 'You don't have to hold the door because I'm a woman.' Smiling, he replied, 'I'm not doing it because you're a woman, I'm doing it because I'm a gentleman.' As believers we do what we do because of who we are 'in Christ', not because of how society thinks we should act. John says, '...The Holy Spirit...lives within...so [we] don't need anyone to teach [us] what is true...' (1John 2:27 NLT). In his book 'Hope Again', Chuck Swindoll says: 'In the Marine Corps...our troopship carried us...onto Japanese soil...For many of us, it was our first visit to a foreign country. We were surging with excitement...Our company commander called us together...and...said..."Remember, for the first time in your lives, you're the foreigners. This isn't your country or your culture...you're the minority. These aren't your fellow citizens; they don't speak your language. They know nothing of your homeland except what they see in you...Act in a way that the Japanese people will gain a good impression of your country."...As Christians,...our citizenship is in heaven...We belong to the kingdom of God...We need to be on our best behaviour, otherwise people will get a distorted perception of what our homeland is like...Our earthly culture is pagan to the core...God left us here for a purpose...to demonstrate what it's like to be a member of another country, to have a citizenship in another land, that we might create a desire for others to emigrate.' Think about it!

Bob Gass


Edit: I checked out Bob Gass' site and realized it's today's devotional.