Categories
Technology

Safe Browsing

I keep a log on my router to track network activity originating from within my firewall -a healthy dose of paranoia combined with the fact that there still is one virtual PC running Windows on my network. And so from time to time I check the logs, not so much the detail but the quantity. All good. Today, on a fresh log, before I really started doing anything I did notice one odd detail: TCP Packet – Source:192.168.10.8,50096 Destination:209.85.227.109,25 – [SMTP rule match]

Odd because I hadn’t sent out any emails yet. Odd because that’s an unfamiliar IP address (even I did send out emails). Odd because I send emails over SSL (a different port entirely). And so the trace went:

* A quick check on the IP revealed the domain: 1e100.net and location Los Angeles. Definitely nothing I’m associated to. I think.
* A Google search (oh the irony) on 1e100.net and it turns out, this is a Google address.
* Your browser sends out “relatively” anonymous data to Google about your browsing habits- at least something like that: Safe Browsing Policy

Back to DEFCON 4.

Categories
Business Technology

iTrainedToday Tech

The technology behind iTrainedToday is a nice mix. In fact, the chosen technology has enabled it to finally come to life.

For a web application with persistence, you need basic moving parts: UI, backend persistence (ie. database), server-side middleware to translate the communication between the UI and the persistence. Straightforward for the most part except that things are really straightforward once you dive into the belly- except of course if you live in belly in which case everything’s straightforward but just takes time.

UI: html standards, css standards, javascript and all the various frameworks available and then there’s browser issues. iTrainedToday chose jQuery with jQueryUI as much as possible to lift all the UI interaction. Simile is the only other major JavaScript component but a crucial one. It’s what displays your recent data in one consolidated view.

Server: this is where things can get expensive. ASP.NET, Rails, Django, PHP and more all need to be hosted *somewhere*. And hosting costs money. In addition to the hosting costs there are bandwidth limitations/costs involved. A minefield (unless of course, you play in minefields all day long in which case it’s just a field). Hello, Google AppEngine. Love it or hate it; it’s still pretty sweet to get going with. And whenever someone says “it’s pretty sweet to get going with” they mean “it’s great for prototyping”. I don’t mean that. It’s serving athletes nicely (and simply) and ticking along… prime-time? I’ll let you know when it starts paying for itself in a big way.

Persistence: Google AppEngine handles that for me too. I don’t really need to grok the ins and outs of what that tech is in the tiniest detail. It’s interesting to know, but it’s more important for me to know that: a) it works and b) how to work with it. Storage techies get their hands dirty in the detail ‘cos well, that’s what they do. It’s not really what I do (most of the time).

And then beyond all the moving parts is the brain behind it. Can the brain handle mixing strongly typed dynamic scripting languages with the weakly typed variety and hurdle UI intricacies with usability issues while keeping an eye on security, optimizing the bottleneck (database calls) all the while focusing on the problem domain at hand? Mostly 🙂

Categories
Business Technology

>_bodyFit

What started out as a simple utility project soon turned into geek nectar. bodyFit for the BlackBerry is born to the world of software.

Now, body fat percentages and body mass indices along with waist-hip ratios and daily “am-i-getting-fat” questions in general tend to irritate me. Just get on with training hard and having fun doing what you do and the results will be there; don’t major in the minors. At least, that’s my attitude. That said, there still *is* space for trending/tracking your body shape and that’s where >_bodyFit comes in.

iTrainedToday has a vision to make tracking your training as simple and as unobtrusive as possible- sticking to the basics, without falling for the hype of fashionable health trends which really don’t last more than a 3-4 months. For example, back in the 70’s experts were advocating a balanced diet of carbs, protein and greens (70/20/10- or thereabouts) and guess what: it’s still the simplest, healthiest and least complicated way forward. But this is not a health blog…. 🙂

Body fat percentage equations is where this geek got curious and stayed motivated in producing >_bodyFit.

Besides the all-famous Jackson-Pollock equations, I soon discovered equations for the young, the old, the plump, the athletic, the sedentary and the normal (whatever that means). They all use different combinations of skinfold measurements, tape measurements, weight, height and age and are all varingly (in)accurate. The goal of >_bodyFit was to use as many of the equations as is possible and applicable based on the data input. Then, according to my reasoning, you have at least 3 different results which should correlate closely with one another in order to provide you with a more comfortable picture than just a single absolute number based on one formula that’s also being used on someone with a completely different profile to you.

And it’s not the actual number that matters so much as the trend in that same process, with the same tools using the same technique. By consistently recording your measurements using the same calipers, by the same person at the same time of day you get a more accurate reflection of progress. Weigh yourself in the morning after waking up and then just after lunch. Don’t be too shocked if you picked up a kilo or even 2. It doesn’t mean you need to go on a diet straightaway. Tomorrow morning, you’ll be right back down again. Point is, the body fluctuates- a lot. Again, don’t major on the minor changes- but keep your focus on the bigger picture *over time* in order to create an authentic strategy. >_bodyFit will help you do exactly that.

Categories
Business Technology

iTrainedToday

Today is a good day ™ iTrainedToday has been released for early adoption and community testing/feedback. Built on Google’s app-engine, iTrainedToday is a free service for athletes wanting a simple yet informative site to record their training data. It uses Simile for displaying your training data in a easy-to-peruse fashion which, hopefully, encourages you to keep training when you start seeing massive blanks in your efforts 🙂

iTrainedToday is useful for part-time athletes, experienced athletes who just need to keep the recording habit up, weekend gym warriors and even the more dedicated fitness enthusiast. This is alpha, but your data will be preserved as we move the application into newer versions so feel free to start using and giving feedback.

Categories
Business Technology

Catchit

There is the popular coding challenge whereby the developer/hacker/gunslinger/coder has to create a piece of usable software in less than N hours (usually 24). You may have heard about it, read about it or actually even done it. There’s usually pizza, coke, coffee, energy drink and loud music involved and also cleverly disguised as an all-night party for binary miners. Nonetheless, if hosted to your linking, the challenge is a great way to flex some brain and skill. And it’s exactly how >_catchit was born.

The mission: create a usable, as shelf-ready-as-possible BlackBerry application within one working day: typically 6-8 hours of productive coding. The only absolute minimum requirements are: source control and an automated build process. Mission accomplished.

Remember when cellphones first came out and they suffered multiple personality order? Couldn’t decide if it was a mobile phone for communicating, an anti-mugging personal protection unit or a military grade close-quarter offensive device (I’m referring of course to it’s 2 foot aerial and 4kg of rugged manufacture). Yes, they’ve come a long way since then. But the thing I most remember about the early days of mobile phones was how they nurtured and flourished your rudeness.

You’d be talking live, face-to-face, in person when all of a sudden a phone would ring. No matter how deep the conversation or how mid-sentence you were, that was it. Conversation abandoned. Code Red! Pick up the phone! Yes, we’ve come a long way too since then (well, some of us at least). So >_catchit has been designed to help you catch those badly-timed calls when you don’t have to leave your caller hanging and you also don’t want to interrupt the “now”.

When activated, if you choose to ignore an incoming call, a screen will present you with an option to send a pre-populated text back to the caller immediately. You can alter the standard text if you like, or just send as is. Neat. In automagic mode, it’s even less obtrusive. Your caller automatically gets a text. Deactivate it, and there’s no more >_catchit. It also works with missed calls, if you want it to.

And that’s >_catchit complete. One full working day, one working product including user documentation (this post). And yes, you can safely download it from here by pointing your BlackBerry at this link.

Categories
perspective Technology

HOWTO: Adopt Agile

I’ve heard the stories, read the reports, discussed and debated, disagreed and agreed, worked together and against each other; i think there may even have been blood spilled at one stage? I vaguely remember something about a keyboard and a dwarf… Indeed, if there ever was a word in the software industry which could raise the room temperature, it’s the little word “agile”.

HINT: If you ever find yourself listening to a techie and he/she/it is boring you with details from another universe and you don’t have a clue as to what they’re talking about (or what language they’re using even if it does sound remarkably close to your mother tongue), just randomly blurt “Agile!”- then stand back or run.

One of the concepts in agile is iterative development because iterative processes help achieve a goal efficiently by giving you the flexibility to change your trajectory as the goal itself moves. If you’re aiming at a goal that never moves, then this story is not for you. Also, check your goal for a pulse- it might be dead. Hence, it makes ironic sense to adopt agile in the same manner: iteratively. That is assuming you want to adopt it at all because if you don’t then there’s no point in proceeding any further. There are none so deaf and blind is how i remember the expression…

And the processes, practices and insights that agile opens us up to- testing, refactoring, pairing, reviews, continuous integration, dry, yagni and company- are also metaphors for adopting the very process itself. And even deeper, the metaphor for every software project should also be embraced for setting up your own company’s adoption of agile. Can you feel the power of recursion starting to make your head throb?

So think of adopting agile as a software project on its own and take it from there. Create stories like “get Paul* to integrate more than once a day consistently”. Get team players to estimate on the story. The team players in this case are those who actually want to get agile ticking along (volunteers). So it’ll probably take 2 weeks before Paul gets it right. Maybe if Igor* took the story he could “convince” Paul inside a week? Create your storyboard, organise the flow, derive a project plan, split it up into more iterations (if need be)- the usual. Then “code”.

Having trouble with Paul? Pair-up with someone. Tag-team it. Refactor. Check in your working “code” regularly. Review what’s been done. Write new stories. WARNING: You might actually start having fun. Role-playing is an essential survival trait of almost every developer. It’s addictive and to pretend that you’re actually the software is going to be a little mental for some, a little esoteric for others but hysterical for a geek. Oh, and don’t be surprised if your developers start to get a little carried away and come dressed as hexadecimal numbers to work. Just keep a straight face and say “Ah. Good morning, 1.6A09E667”.

On the serious flipside, when you start to setup a project plan for adopting agile in this manner you also get to eat your own 0xbaadf00d; practise agile more; refine valuable skills; learn lessons; incorporate it into team culture; get an empirical idea of how close you are to hitting the mark and have a working team at all times (this is most serious). All the feel good fluffy things you want to hear.

And on the negative, less fluffy, pessimistic , dark and evil side of things, when you start to overrun your estimates badly on a lot of stories, you also start to get some really good feedback on when to can the adoption and/or start again or try a new tact. Ok- that’s actually good news too. But how much you try will depend on the strength of the character flaws in your project leader.

And before you know it, you’ll be miles away from being the perfect agile team. Indeed, just like software, there’s always one more feature you can add or take away. There’s always that one routine that can be a little better. And over time, you need to make changes that help you stay relevant and marketable and profitable. It’ll always be perfectly imperfect. And so you keep coding, creating and evolving something even more beautiful (and useful) than you ever imagined in your wildest electric dreams.

Categories
Business Technology

zaFin Statistics Update

zaFinTools has been updated with a new function: the statistics calculator. Given a dataset, zaFinTools will give you a descriptive breakdown of the numbers, statistically speaking, by working out and displaying the following information in one go:

Length, Median, Mean, Sum, Sum of Squares, Minimum, Maximum, Range, Variance, Standard Deviation, Co-variance, Mean Absolute Variation, and then the 3 quartile positions and values.

Shew.

Download zaFin for BlackBerry.

Categories
Technology

ActiveRecord and Thrift Part Deux

I posted about AR and thrift earlier (or late last year) and was reminded this morning that I didn’t follow up that post with the solution. So here it is: Download spike code.

Now it has been a while since i solved this, and the versions may have changed since then, but I do remember that the “tricksy” part was boot-strapping ActiveRecord. That was done using the supplied boot.rb. Once that’s done, you can happily run the thrift server daemon based on textbook instructions and the rest is history. Your models and all the ActiveRecord learnings you’ve had with rails can be re-used quite happily.

Happy coding.

Categories
Technology

Online JSON Parser

A tres useful link for playing around with JSON parsing and data structures; a design tool if you like; the aptly titled Online JSON Parser.
And a useful library for Java ME. In fact, at the bottom of the landing page for JSON.org, there’s a list of implementations for a host of languages.

Categories
perspective Technology

Context Switching

It’s expensive, mentally and resourcefully, but it’s rewarding. It also isn’t easy, which is probably why it’s not advocated by the populous, but it is rewarding. And it’s filled with all sorts of risks and dangers, but definitely rewarding. Rewarding if you get it right.

After months on Rails (web), Python (web), Objective C (iPhone) and C# (web) projects, i’ve settled my teeth into a juicy little BlackBerry project. It’s taken a lot of mental effort to switch, and in particular, switching to the following:
* the language: Java. New syntax, keywords and run-time nuances in memory management
* the frameworks J2ME and RIM: what do they offer where are all the packages
* the IDE (Eclipse): how does it work and how to customize your environment/experience, and then what else does it offer that no other IDE to date has offered
* the BlackBerry device: where, what, how does it do the things it does
* the unit tests (jmunit cross bunit): new language, new platform, new test harness, same procedures (more or less)
* runtime debugging tools with the simulator and component packs
* mobile development: patterns, architectures, design and development principles
* the UI: a whole new playing field where the only place in the world Managers are your friends
* automated building and testing (still getting there)
* code control and IDE integration

Every day is filled to the brim with slow progress punctuated by episodes of breakthrough bubbles, although a the days wear on, the bubbles are more frequent and the productivity increases naturally on a curve on its own.

The end result: another framework, platform, language, set of tools available at my fingertips to enable me to express a solution to a problem and then successfully execute that solution without too much limitation.

Spin-offs include restless nights, lots of “aarrggg’s”, a lot of debugging and a whole lot more muttering which usually starts with “now how do you do that?”. And that right there has been one of the greatest little nuggets- tackling a project like a n00b, a grom; with all the enthusiasm naivety brings, but with experience (ok, age).