Shooting Colors

I found this toy I’d played around a few years ago, dusted it off a bit, and thought of displaying it here. My friend Héctor usually likes playing with graphics and animations, and this was an excercise simpler than what he was doing at the time. I did work on some more complex animations, but I lost them to bitrot. If I build or find more of these toys I’ll be uploading them here; I find them entertaining, and it was educational to build them.
Animation (JavaScript with canvas) after the break.
Source: https://gist.github.com/iajrz/2d317dda2f746388a3c190743b1aeda9

Continue reading Shooting Colors

Last year’s goals, this year’s goals

Died a quiet, dignified death. I didn’t write all the posts I wanted to write – not even half. I did polish my skills on many areas, but I didn’t really lean into pursuing my other goals. Can’t even remember them.

This year, I’ll try something different.

I will take (or have taken) about a pic a week – so far, so good. Still need to recoup pictures taken for me by others, so I can put them together. I want to have at least 40 pictures by the end of the year.

I will learn 12 songs on bass. I have yet to start the lessons. I hope I can manage, as I already almost-play the guitar and will be tutored. By the end of February I will have started the lessons.

I will fix or improve two things at home per month.

I will build a new house for my dogs. This time, I’ll take care to document the process properly and write a blog post, which I didn’t do last year.

I will start working out. I expect to have at least 6 months of working out during the year.

I will write at least once a month in this blog. Oh, look at the time. So far, so good… :^)

I will look back on this around November or December, see if anything is salvageable and what needs to be discarded.

Online Income Report August 2016

I kept on with the same business as last month, using Fiverr.

I started the month strong by identifying my usual customer’s needs and delivering an app to meet their future needs. It paid off nicely, but took longer than I expected – . Besides that, I looked for no further work, but my client asked me for one more tiny script a few days ago.

Online Income Report
Source Amount
Fiverr $100
Total: $100
Lifetime Income: $172

Among the lessons learned, though were these two:

  • Don’t rely on JSFiddle to provide certain JS tests – especially if you need to use cookies and, more obviously perhaps, if you need to deal with the URL. Setting up a subdomain or some such should be trivial, and is something I’ll be getting into over the next few days. I want to be particularly careful about the TLS, which I want to have enabled for all of my domain.
  • Fiverr delays payouts for 24 hours when you change your information, so set up your PayPal or other payment method with some time.

In the plans for the future – well, this few bucks are enough to fuel my infrastructure needs for the immediate future, so I’ll be dedicating more time to building a business which doesn’t pay relative to development time invested, but instead pays relative to a product’s performance. Hopefully by September or October’s income report this will be all set and have its own space in the income report, even if it only plays a small part.

The time needed to get odd jobs in Fiverr isn’t really worthwhile for me. If I were building bigger things, the story would be different, but I have my day job and business to build, so I can’t really expect to have so much time to schedule… thus, my project scope is necessarily limited. I will keep accepting comissions, especially from my established customers… only not actively seek them out so much.

I have decided not to include the expenses in the reports… it makes no sense in my context because I’m only documenting part of my income, and the expenses supporting that business are payed for by undocumented income. Maybe in the future, for the new business line I’m building.

This is all for now.

Online Income Report July 2016

I started a side business, with only a handful of hours per week, of earning money online with software-development related work. I started in July 18th, with the goal of creating at least one, but preferably a few, side income streams. This is my income report on that, inspired by TrueValhalla, Bay12Games and others’ reports.

I’m not counting my day job income here, or the work I’ve done for clients I’ve got in meatspace.

I want to also document my experience and experiments with different platforms, to serve as an aid for anyone wanting to explore this path.

Here’s what’s happened so far:

I started by going on Fiverr to see what the rage is all about. Some fellows I know have created a healthy revenue stream using this site, so I guessed it was as good a place to start as any. I created a “gig”, which is… well, at the beginning I didn’t get it, so I’ll lay it out for you so you can have a running start.

A gig is a unit of work you can readily perform for a fixed price. It’s not intuitive what to create for a gig when you’re a software developer; if you were a translator, it would be something like “Translate x words” for a certain price. So what’s up? I recommend setting up a simple, skeleton project, and you can deliver that for a certain price. For instance, a functioning skeleton Android app — which opens, closes, and maybe has some sort of menu — can be a gig. So You will “Deliver a bare bones Android app” for $5. All features above that are charged separately, and you can add the most common ones as “extras” people can opt to get. Like “Google Account Login” for an extra $10, or “User profile module (including backend)” for $20. I’m writing random prices here, of course; you should watch the market and decide what price you can charge, and if that price is worth your while.

There’s an “extra” I want to warn you about: the “Extra Fast Delivery”. I was experimenting with enabling the extras and forgot about to disable this one. This caused me some major pain as a couple of gigs overlapped; this was exacerbated by the few weekly (and therefore few daily) hours I have allotted for this side business. This drove me to be working at a bad time while sleep deprived in order to deliver on time. One of the orders was late; but I did manage to warn the customer in advance, and there was no harm done.

Besides that, I’d like to point out something else: whatever you’re charging, Fiverr keeps 20%. The report is money after that 20%. They take a lot, really, but the fine grained segmentation of markets means you’ll likely be in the first 10 submitters for any given buyer request. Of course this means a lot for visibility. From what I’ve gathered in these few days, Fiverr is a higher volume, lower margin market.

I picked a very tight niche for my gig: write tiny tweaks and scripts. This made the pool of work available for me tiny; I think I struck lucky with the person who hired me – all the gigs were with the same client.

One last thing before the numbers: After you’ve earned the money, there’s a clearance period. My first order was on July 18th, and it clears on August 3rd. The rest of the money will clear little by little until the 12th.

Online Income Report
Source Amount
Fiverr $72
Total: $72

And that’s it. I didn’t count the hours I worked on this. The first gig I took was underpriced in order to get me started as quickly as possible. I’ll see what happens this month; I’ve half a mind to use this funds, which will get transferred to PayPal, to fund side projects intended to generate passive income, and half a mind to keep full tabs of the money moving in and out of these little projects. Let’s see how comfortable I feel with this by next month. Oh, yeah, I mean to make this a monthly installment. Let’s see how that goes.

Retrospective: Live Code Streaming 2

Today we built up on the previous progress (see what it was here)

I had my twitter app credentials stored somewhere they’d not be streamed, and developed a bit of code to read and use them without showing them on screen. It’s important that those data don’t make it into a code repo! Afterwards, I used the tweepy API to create a stream following a “track”, which is just what we need to get all publications of a particular hashtag.

What remains is to really flesh out the twitter client, make it store the relevant data (see what data is really available), and get what I need.

It seems it won’t be too long – and it’s been longer than needed because I’ve been explaining things.

If you’re reading this, I want you to know that the process has been with trial and error; we found a bug in tweepy’s documentation (it’s fixed in master, which is not published yet), for instance, and I had to work out how to do things properly.

I invite you to join me on the next live stream, I will write on my twitter (@iajrz) when the date is defined.

The lives we project

When using any form of communication we choose what to highlight or not about ourselves.

Social media is heavily skewed towards people having lives full of peaks, be it really good (mostly) or really bad times that can be empathized with.

This is not new – this also happens whenever there’s any kind of meeting happening aftera long time without seeing certain groups of people… be it people you studied with, or distant relatives.

Unlike before, we’re positively bombarded with that kind of phenomena now – the price we pay for being ever more connected, ever better able to communicate with little regard for space and time, and with very little cost. This is a superstimulus.

This is likely to have amplified emotional impacts – if you’re happy with yourself, you’re bound to be happy for other’s successes. If you’re insecure, then not only will you have to see that one person whose life you thought was certainly not going to be more amazing than yours at that rare meeting… you’re going to be hit time and again with that kind of slap, and it’s not hard to see how we’d be left reeling.

Often the young can be most insecure, but also, at this point, the young are heavy users of social media… and while projecting better or more interesting lifes than they have (by choosing to highlight the good times), they can trigger an attempt to compensate from other people, creating a vicious cycle.

Perhaps turning off our social feeds and focusing on chats would be better? Or parhaps we should narrow down our social circles. In any case, a good way to break this is to stop skewing the way you present your life – in which case stopping to do it may be the least painful way to do it. Or trying to feel better about ourselves would make it more joyous to see someone else be absolutely killing it out there.

In any case, thinking about this and taking a grip on the situation may help you feel better and have improve your days, raising your quality of life.

Projecting Conciliation

In some cases getting someone to think in a way similar to yours or changing your mind is especially important. Besides the usual value for your correct reasoning, there’s an immediate decision at hand which is directly dependent on the result of a conversation or argument.

Being non confrontational is really useful in these situations, but requires particular sharpness and preparedness. You need to understand the issue as well as possible, and a quality I can’t quite defined but have observed recently… it’s a mixture of believing in the best cognitive intentions of your counterpart, as well as trusting their smarts and being genuinely curious. There may be other factors that further help you get into the right frame of mind.

The behavior I’ve observed in people who work like this – I’m not particularly good at this approach, although I’ve somehow pulled it off on some rare occasions – is an apparently open but directed curiosity which drives everyone into the meat of the business and enlightens everyone… and is equally likely to change anyone’s mind, except that the driver, the one projecting conciliation, has a deep understanding of the issue at hand that makes them especially likely to be closer to a good answer to the problem at hand.

This kind of attitude, which is also very calm in the conversation, is the best I’ve seen to steer important meetings in the right direction – whatever it might be. It costs a lot of effort, but practice makes master… perhaps doing it in non-crucial subjects is a good idea from time to time.

Retrospective: Live Code Streaming 1

Yesterday I streamed for some minutes while starting the process for building an application which consumes the twitter API.

I’ve not used the tiwtter API before, and I’ve not consumed any APIs from Python… the point is to demonstrate how to learn something new on the run, and how straightforward or not things may turn out.

Up to now, I’ve found out that app.twitter.com is where you register the application, and I chose tweepy as an SDK.

I read on some of the documentation for the proper application behavior, such as the backoff protocol and their unique HTTP 420 error.

Reading on-screen is awkward, I’ve tried to make it lively by commenting on the content and pointing out what calls my attention. As it turns out that reading documentation and exploring is a part of development, I don’t want to hide it from the viewers. There are already a ton of streamers who use their known tools to work on straightforward problems… I hope to enhance the experience bringing to the table something I’ve not yet seen.

As I announced some time ago, this stream is scheduled for Wednesdays at 8:00PM, UTC-4. Next time I’ll have the needed parameters to authenticate to the twitter API and will go on from there, without showing the actual secret values.

If you’re not very experienced and have Spanish as your mother language, I recommend you join the stream and the chat, where we can discuss the information and implementation.

Learn Ruby The Hard Way

I’m working through the book as a break from other work, and it’s pretty good. It’s aimed to someone getting initiated in programming, which makes it rather easy for me to breeze through the excercises.

What I like most is that the book, just like the rest of the “Learn Code the Hard Way” series, is organized around excercises. You type code, then poke it to break it, fix it and improve upon it.

A good read, and by proxy so is Learn Python the Hard Way, on which this book is based.

Schedule

I usually hate schedules. I like to do things at the moments I feel like doing them.

This results in not being prompt – which often ends with things being forgotten, creating the need to write down and check lists of things to do, which is not a happy overhead. Some times, this results in things not getting done in the optimal timeframe.

Because I need to get some things done – specially my latest goal of bringing little joys to lots of people – I will now adopt a schedule.

I announced on Facebook some weeks ago I’ll be live coding a twitter bot in python. That’s going to be Wednesdays at 20:00 UTC-4. The rest of the schedule is not publicly available – or of public relevance, for that matter. So I’ll keep it to myself.

I’ll talk about the effects it actually has – but I predict I’ll be able to get side projects done at better than present rate.