existence, refactoredhttps://blog.bryanbibat.net
With kindness comes naïveté. Courage becomes foolhardiness. And dedication has no reward.Wed, 14 Feb 2018 12:51:33 +0000en-UShourly1https://wordpress.org/?v=4.9.414517710My Workout Gearhttps://blog.bryanbibat.net/2018/02/09/my-workout-gear/
https://blog.bryanbibat.net/2018/02/09/my-workout-gear/#respondThu, 08 Feb 2018 21:00:44 +0000https://blog.bryanbibat.net/?p=2287Two years ago, I started working on being fit. I had gotten out of shape after years of being both broke and depressed. A routine checkup showing a higher than normal blood pressure finally convinced me to turn things around.

To tell you the truth, 80% of what got me into shape was a change to a higher-protein diet. And if I only focused on getting more sleep, I’d be in a much better shape than I am right now.

But of course, tasteless chicken breasts and sleep is boring. You can’t copy it in the hopes of adding it to your Instagram. So let’s talk about the last 20%: my exercise regimen.

After doing a bit of research, I found that I couldn’t fit in gym with my schedule. I work early shift so early morning gym would mean going there at 3-4AM, and post-work gym would mean that once I finish working out at 5 or 6PM, I’d get stuck in traffic rather than have a relatively quick 45 minute one-way commute had I gone home at 3 or 4.

The traffic constraint lead me to my main exercise routine: Urban Hiking. It’s what I call going from BGC all the way to my house 7.5km away. I don’t want to call it “running”; while I typically run 4-5km of the route, the hills, varied running paths, and the cars make it very hard to run all the way, especially for a person like me who has no interest in being a runner.

The lessons I learned from being an urban hiker will be in another blog post. For now, let’s go with something more interesting: my workout gear.

After 2 years of half-assed training, I determined the best combination of equipment for me:

Osprey Talon 11 v1 – The key to my afternoon hikes. Without this trail running pack, I’d be limited to just walking home. Sure, I can just leave my clothes in the office and run unencumbered like everybody else, but I’m too lazy to shuttle extra clothes on non-running day. Finding trail running bags can be hard, but thankfully R.O.X. sells Osprey bags and they’re just a couple of blocks away from my office.

Halo Sport Visor – I sweat a lot. My initial attempts at running had me stopping multiple times to wipe my forehead and eyes clear of sweat. A headband would solve this problem, but this isn’t the 80’s so I went with a “visor” that’s actually more of a headband than a visor. At this point, the sweat channels have peeled off (the logo is peeling off too) but it’s still functional as a headband and a visor.

Random cheap dri-fit – for a long time, I was content with just using whatever t-shirt I was wearing for work. Eventually, having a damp sticky back became too annoying and I decided to just get a couple of cheap dri-fit shirts at a nearby running goods store.

Random dri-fit pants – same as shirt, but the pants came from multiple places e.g. Runnr, Under Armor, etc.

Sunscreen – I’m already dark skinned and I’m not under the sun for that long so sunscreen’s a mixed bag: on one hand, it’s kinda annoying to apply and attracts dirt; on the other hand, less chance of getting skin cancer.

Knee support – I rarely use this, but I have it ready for the moments that I feel anything funny on either of my knees. Better safe than sorry.

Generic 500ml water bottle – initially, I thought I needed 1L of water because I was sweating too much. Turns out, that is too much and I can’t run with a lot of water in my stomach. 500ml is ok, and recently I’ve been adding a bit of salt and sugar in the water (because electrolytes).

Running Shoes – no, these aren’t my running shoes. I didn’t show them here because I haven’t used them long enough to properly review them. But having running shoes is a given.

Grip Power Pads – my “warm up” consists of me doing sets of pull-ups and chin-ups at Track 30th. While it doesn’t feel right to complain about a free public exercise area, I have to say that the pull-up bars are pretty bad: they’re uneven and thin making exercises more painful than usual.
After a year and a half of tolerating the pain (and getting some cool callouses in the process), I finally gave up and bought some cheap pads while I shipped something from Amazon. With this I can finally do some straight bar dips.

Osprey Hi-Visibility Raincover – one of the downsides of carrying a bag while running is that I can’t run when it’s raining; I have to get my umbrella out and walk the rest of the way. Osprey has rain covers but R.O.X. doesn’t sell them locally so I had to import this one via Amazon and Johnny Air Cargo.
It works well, and I even got some personal bests running in the rain (apparently overheating is my main weakness even though I sweat a lot). Heavier rain will still seep into the bag, but it’s not a problem since the bag itself is water resistant.

Not pictured is my vivosmart HR fitness band. In my hikes, I mainly use the heart rate monitor to guide me to the (in)correct heart rate zone of 160-180 for anaerobic fun (the correct heart rate for running is 130-150). The step counter and sleep tracker are automatic so I don’t really use (i.e. activate) them, and they provide useful stats. Apart from that, I don’t treat this device as any more than a watch, though having an extra buzzer for early morning alarms and call notifications is also appreciated.

I walk more than a marathon every week

Here are some stuff that isn’t my gear anymore:

Hand towel – for sweat. Didn’t have to use it as much once I got a headband/visor so I stopped bringing it.

Shades – turned out too annoying to wear, not to mention that the pair I got somehow made things look weird or distorted like a pair of incorrect prescription glasses. Wearing a visor is more than enough to block out most of the sunlight anyway.

Earphones – some people think running without music is too boring. Some people need tunes to pump them up and encourage them to go the extra mile.

Some people aren’t running in busy roads with stretches of non-existent sidewalk and the occasional counter-flow bikes coming in from behind.

And there’s my loadout. As mentioned above, had I focused on my sleep patterns last year, I might have lost more fat and gained a lot more muscle. However, I’m still very happy with my progress overall as my legs are a lot sleeker than they used to and that 5km walks are practically nothing to me right now.

Above is a video of me fixing my PS4’s DualShock controller. It’s 28 minutes long so here’s a write-up:

So I bought a second hand PS4 Slim last year just in time for Persona 5. Worked great in my first run through, but eventually the circle button of the controller stopped responding.

As with any DIYer out there, I applied the first aid for unresponsive electronics: opening the thing and liberally applying contact cleaner to everything. This would clean out the gunk and hopefully make the connections work again.

This worked, but only for a few days. The circle button stopped working even after multiple applications of contact cleaner. I spent about an hour tracing leads with my multi-tester before I found out that the connection for the button in membrane film was broken, probably corroded from a combination of heat and humidity.

After shelving it for a couple of months, I finally went to Ali Express and bought some spare parts: membrane film, and new ribbon cable to replace the cable I accidentally broke during the multiple teardowns. While I was at it, I also got other cheapdoodads for my PS4.

Replacement was straightforward. The only reason it took me about half an hour was my narration and relative inexperience in tinkering with controllers.

End result: I fully repaired the controller for about $30. It’s probably cheaper if I got it repaired in some random repair stall, but the extra spare parts and the experience more than made up for it.

And yes, the controller is still working. So far I’ve played over 60 hours on it while working on a 100% playthrough of Persona 5.

]]>https://blog.bryanbibat.net/2018/02/04/repairing-a-ps4-controller-with-a-broken-button/feed/02279Yamaha AG03-MIKU – a surprisingly useful impulse buyhttps://blog.bryanbibat.net/2017/08/31/yamaha-ag03-miku-a-surprisingly-useful-impulse-buy/
https://blog.bryanbibat.net/2017/08/31/yamaha-ag03-miku-a-surprisingly-useful-impulse-buy/#respondWed, 30 Aug 2017 19:09:57 +0000https://blog.bryanbibat.net/?p=2255Riding on the bandwagon of people going out of retirement for Hatsune Miku‘s 10th birthday, I’m breaking my 2 year writing hiatus to write a review of the only Vocaloid merchandise I own – the Yamaha AG03-MIKU 3 channel audio mixing console.

Before we go into the review, a quick background on how I got to buy the device in the first place.

With the more stable income from my new job, I went on to upgrade the stuff I use everyday. Of course, upgrading my gaming rig was the first on the list, but a year on, there wasn’t really any new stuff I need to upgrade.

My setup then wasn’t bad – I’ve still got a decent Samson Go Mic USB condenser mic that I used way back for voice overs and other recording stuff. But it was getting close to Christmas and I had to spend a part of my bonus on something that I would actually use rather than spend on some other, more impractical impulse buy.

Dedicated audio interfaces like those from PreSonus were too unitask-y for me, not to mention their huge markups from local sellers. For a couple of months, I had resigned myself to getting an the only “cheap” device I could find locally online: okay-ish Behringer mixers with USB out which go for ₱5-₱12K.

Then I remembered Game Grumps once made a video about their setup and revealed they were using a Yamaha mixer/USB interface, specifically the Yamaha MG12XU. This got me looking into locally sold Yamaha mixers, and in the process found out that they were selling hobbyist versions of their mixers – the AG Series.

But that was shut down when I found out that the this line wasn’t even on the local distributor’s radar. International shipping would also push the cost to > ₱10K. So back to Behringer again…

That is, until a random morning when I was searching for similar options to the AG series when I found out about the special edition AG03-MIKU – a Hatsune Miku themed AG03 promoted for webcasting. The cross promotion makes sense as Yamaha built the Vocaloid software, and without Crypton Future Media‘s Miku, Vocaloid wouldn’t have been as popular as it had been in the past decade. This tie-up also gives opportunities for aspiring producers and singers to make more Vocaloid material, benefiting both.

At first I dismissed it – the first page of search results for AG03-MIKU back then showed only Japanese stores (which are hard to navigate and probably don’t ship internationally) and Ebay listings with huge markups.

And they also offer international shipping. All in all, it only costs around ₱8K (₱6K for the item, ₱2K for the priority shipping), well under the ₱10K customs duty-free limit.

(Note: I still had to pay a deposit for the expected ~30% customs fee, but they refunded it later.)

And so I impulse bought yet another device that I may not use that often. I mean, it’s a well reviewed device (it’s essentially an AG03 with a Miku decal and a more vibrant Miku color scheme) and it ups my geek cred (Vocaloid is popular, but not quite poser-geek mainstream yet), but it’s got a limited use case i.e. to replace my old microphone with a setup that is 5 times more expensive in situations that only happen at most once a month.

Was it worth it?

Hell yeah.

Let’s start this review with the features that I bought it for: the mic input and the USB interface.

Unfortunately, there isn’t much to say about them. The mic input accepts both XLR and 1/4″ phone connectors in a combo socket, and supports phantom power for condenser mics in case I would like to upgrade/switch to AT2020. Without boring you about technical details, all the other knobs (like the gain/level) and buttons (like the PAD, COMP/EQ, EFFECT) all allow you to adjust the mic input to make you sound better, and they do their job fairly well.

The USB audio interface is just another (albeit very high quality) audio interface. Install the drivers and plug it in and it works. I can now use an XLR mic for Skype calls, game stream voice over, and karaoke sessions alone in my room.

An expensive, occasionally used setup. A perfect example of a self-Christmas gift.

At least until I noticed this thing:

When you plug in the mixer and install the drivers, your computer can also treat it as playback device. That audio interface goes both ways, and this knob controls the volume of the sound input from your computer, and output it to the monitor headphones and/or speakers.

In other words, I accidentally bought a DAC, something that was also on my wish list. And trying it with my other Christmas self-gift an HD 600, the headphone output is powerful enough to drive the mid-to-high range headphones. So it’s also an amp, giving me a budget DAC/Amp for free!

Headphones also lead us to the feature I use the most: the monitor knobs.

With these, I can adjust the volume of my speakers and my headphones independently. Having an analog knob for quick volume fine tuning is already a big thing, but that’s not the biggest use for me: it’s switching between speakers and headphones on the fly.

I have wide soft ears and I can’t wear headphones all the time. Even the lightweight HD 600 can become annoying after a while. So my default is lower quality speakers (I haven’t upgraded yet to studio monitors) when I’m just watching Youtube videos or quick games, and I used to switch to headphones when I’m listening to music or gaming seriously via the Windows audio settings. It’s a lot easier in Windows 10, but it doesn’t beat two quick flicks of knobs.

And finally, the last feature that I got to use extensively: the other 2 input channels.

Normally, a producer would use those two channels for musical instruments. I don’t know any instruments, but I found a good use for them: external audio input.

With 1/4″ to RCA adapters, I can connect the mixer to one of my karaoke machines. And with a 3.5mm TRS to RCA adapter, I can connect my PS4 (via the controller), my 3DS, and basically any device with audio to the mixer. Once connected, I can also adjust their volumes with the knob, saving myself the hassle of having to go to their respective volume settings and adjusting them.

—

Before we move on to the other features, let’s talk about the back connectors.

The USB type-B plug on the right is the main connector. It’s just USB 2.0 connection, but it’s more than enough to transfer audio at it’s maximum sample rate while at the same time powering the device.

A quick check shows the mixer draws 1.5W while playing music and picking up audio, lower the max draw in the specs (2.5W).

Thanks to its low power draw, you have a portable mixing setup by powering it using a power bank and a micro-USB cable connected to the socket on the left.

(I actually did this in a Christmas party where they had a “bring your musical instrument for the jamming session”. As a vocalist, a mic with a preamp + mixer is my “instrument”. The end result was much better than I expected.)

With the correct cable and software, you can also use the type-B socket to plug in your iPad and record a jamming session. But I don’t have the proper cable and I’d rather use a laptop for it anyway.

—

Now on to the features I don’t use.

This toggles how the device mixes the audio. The Dry sends the audio from the channels dry (ie. not mixed and not affected by the volume level setting), Input Mix sends the mixed audio that you hear in the monitors sans the computer sound, while Loopback also mixes in the computer sound (everything you hear in the monitors is looped back so it’s more accurate, but may cause feedback in some software/setups). I generally just leave this in Input Mix or Loopback.

You can use the first 2 sockets you have a headset with mic that have split connectors, and you can use the last socket for input from any audio device. I don’t use these sockets because the other sockets can do the same and are better – the headset sockets are inferior to XLR in and monitor outputs, and the you have no knob to control the AUX volume and it is just line level.

I also don’t use the bundled and downloadable software. Sure there’s the Cubase AI audio software license and the 39 day license (a Miku pun for the uninitiated) for Vocaloid and Miku, but my audio software is enough for my needs right now. Then there’s the software to setup COMP/EQ and sound effects which I just set to presets (COMP/EQ for male vocalists, hall echo effect).

The only software I had to tweak was the USB driver to lower the sample rate (192kHz is overkill) which also reduces the latency (it’s impossible to sing when latency is too high, but that’s for another article).

—

Final verdict:

It is what it is, a webcasting starter kit. Pair it with decent mics, instruments, and musical talent and you’re now ready for YouTube / NND. Pair it with OBS and a console or gaming rig, and you’re set to be a Twitch streamer. And if you don’t have a DAC yet and want clean sound, it can easily fill in for one.

That said, it’s a jack of all trades, and it carries the usual drawbacks. For example, if you’re just in it for voice over work, it would be better to find a cheap audio interface or a decent second-hand interface. You can also get mixers with > 6 channels for far less than ₱8K if you just want a mixer. And if you want really good DAC/Amps, you can get much better ones for a few thousand Pesos more.

Overall, I’d recommend this product. Just go with the plain AG06 if you don’t want to look like a weeaboo.

]]>https://blog.bryanbibat.net/2017/08/31/yamaha-ag03-miku-a-surprisingly-useful-impulse-buy/feed/02255zero – a mathematical HTML5 puzzle gamehttps://blog.bryanbibat.net/2015/07/27/zero-a-mathematical-html5-puzzle-game/
https://blog.bryanbibat.net/2015/07/27/zero-a-mathematical-html5-puzzle-game/#respondMon, 27 Jul 2015 05:29:06 +0000http://blog.bryanbibat.net/?p=2226Two weeks ago, I challenged myself to make a game that features pattern recognition and numbers. After a week of thinking up of ideas, coding, public testing, and tweaking, here’s the result:

]]>https://blog.bryanbibat.net/2015/07/27/zero-a-mathematical-html5-puzzle-game/feed/02226Why Programming Competitions Could Be The Future (But Probably Won’t)https://blog.bryanbibat.net/2015/07/07/why-programming-competitions-could-be-the-future-but-probably-wont/
https://blog.bryanbibat.net/2015/07/07/why-programming-competitions-could-be-the-future-but-probably-wont/#respondMon, 06 Jul 2015 17:18:53 +0000http://blog.bryanbibat.net/?p=2202(Disclaimer: This post features somewhat stronger opinions that the usual so I have to be clear that while I manage the programming competitions in DevCon, the sentiments in this post do not represent the organization’s.)

Algorithm/Programming Competitions: the other type of “Hackathon”.

When you see the word “hackathon” nowadays, it refers to the one where a bunch of people are gathered into a single venue and form groups to work for a couple of days on ideas that they pitched at the beginning and end with a final pitch to see how good their prototype and idea is. Best pitch wins.

On the opposite end there’s the original OpenBSD type of hackathon. People are still gathered in a single venue, but there is no pitching – just coding. It can be a directed coding venture, like in the first hackathon where they worked on some parts of the OS. It can also be a creative, free-form one, like Global Game Jam where game developers make any game for 48 hours as long as it’s somehow related to the theme.

There can also be prizes in the latter, but it’s mostly a fun exercise for developers. And there’s no business stuff and pitching to worry about.

Programming Competitions have nothing to do with these two. It’s only because hackathons have become somewhat famous spectacles recently that people think that “get programmers in a single venue and make them code” automatically makes it a “hackathon”.

A programming competition is a race. First team to make programs that can solve the contest problems wins – it’s as simple as that. No pitching. Strict rules. And a lot shorter than most hackathons.

—

I believe that Programming Competitions have the most potential out of these three programming events…

Programming competitions are an objective test of programming skill. If your program doesn’t solve the given problem, you won’t get a point for it.

Compare this with college. As weird as it may sound, you can graduate with an IT-related degree without knowing how to program, whether through deception or through plain incompetence of the school. And this happens more than we’d like in the industry.

Let’s imagine programming competitions somehow become famous throughout the country in a few years time. Not basketball-level fame, but maybe soccer-level. Say there’s a persistent online Philippines-only HackerRank-like competition where anyone from the top-tier universities down to the remote colleges can test their skills. Assume that the anti-cheating and user-verification measures are good enough that graduates can put their “programmer level” on their resumes and that employers will honor it.

Imagine what would happen if students are confident of their programming skills that some of them even show them off. Imagine its impact in the industry and the academe.

It’s going to be a crazy world, won’t it?

Certainly a bigger impact than what the other hackathons can do.

—

…but given what we have right now, there’s very little chance that potential will be reached.

The opportunity is there, but there are hurdles that may be too much for anyone interested in taking it.

First problem: no one cares.

Just a quick background: I’m not a competitive programmer. I solved programming problems (Project Euler, topcoder archives) back in college just for fun. I never practiced for or competed in any live event other than the odd Google Code Jam where I never intended to pass multiple rounds.

But I understand the importance of testing students for their programming skill. After the DevCon Code Challenge Cup, I decided to code a quick online judge in Rails and in mid-2013 started to hold mini-programming competitions in various schools around the country. You can try out a demo here.

And after 2 years of doing this, I’ve had a couple of striking revelations.

One of those was how little people cared about programming. Sure, the people who invited us were really grateful to have the opportunity to test the programming skills of their students, but very few of the organizers were curious about the problems given to the contestants. I would understand the hands-off approach if they were school administrators, but many of those who invited us were IT students and teachers.

None of them reviewed the problems before I gave them to the contestants, checking if the problems were too easy or too hard or simply out of scope of their curriculum. Only a couple of them asked me about the problems after the contest even though that would have been the best time to ask for advice to improve their programming skills.

And there you go, the reason why we’re churning out weak IT graduates: the people in position don’t care about things that they should be passionate about.

The previous problem is compounded by the problem at the other end: a lack of understanding of the relative skill levels of programmers.

Programming isn’t a sport, it’s a skill and a craft. It’s not easy to gauge programmers and we are left to use vague terms like “beginner”, “skilled”, and “expert”.

And anyone who conducts a programming competition to non-competitive programmers will see that “beginner” is not adequate for describing college students. They’re all beginners, but the difference between their skill levels can be great.

Yes, that’s a euphemism for “college students suck at programming”.

Go to the demo link above and read the problems (if it’s still in Practice mode, wait until the Contest mode starts). Even though the problems can be answered by anyone who has just taken CS classes on Java programming and algorithms, in our experience only students from the big 3 universities were able to consistently answer more than 7 questions within the time frame. The next tier of universities can answer around 5, while the rest even struggle with 3.

If aren’t a programmer and don’t know how easy it is to answer just 3 in that list of problems, let’s just say anyone taking a good Programming 101 class should be able to do that in 4-5 lab sessions.

So yeah, most college programming classes are horrible. If you’re going to hold an open (non-invite only, non-ACM-ICPC) programming competition today, you ought to lower the difficulty of the questions. Otherwise, many of your contestants will get very low scores.

You don’t want that to happen. Put yourself in the shoes of someone who either was just curious or was pressured to join the contest. What will they think when they leave the event getting only one or two correct? Will they look forward to the next competition? Will they help promote future events?

Maybe, but probably not.

Even now, I still occasionally get cases where contestants get depressingly low scores (especially if I’m not familiar with the school). We’re lucky that the contests are confined within the schools so we don’t need to worry about negative publicity, but this brings up another point: unless you’re like me who can conduct more than one contest a month, most programming competition organizers do not have the experience of holding contests on a regular basis to learn from their mistakes.

Combine all these three points and you’ll have an idea what will happen when someone conducts an open programming competition in the same manner as the other hackathons.

Venue, logistics, sponsorships… no problem. Then they’ll find people who had past programming competition experience to be the judges and write the problems for them. But since it’s the first time for all of them, the judges will write difficult problems and the organizers will not look at the problems.

Fast-forward to the end of the event. Many teams joined, but only a few of them were competitive programmers. One of the latter won, and the rest were left with a score of 1 or 0.

There won’t be any negative PR (it’s not like it was a bait-and-switch), but there won’t be enough positive buzz either to make a bigger and better follow-up event. Instead of spreading the word and encouraging more people to join in the future, many will just go home and say “eh, at least I tried” and leave it at that.

On to the final point.

When you’re in my shoes as someone who has programmed over half of my life (a good chunk of that professionally) and as someone who recently has conducted programming competitions, you’ll come to hate programming competition-level problems.

I hold programming competitions in schools to show students that they need to understand their programming skill level and work on improving that to the point that they are comfortable with it even under pressure. This is the skill that I want to cultivate into students, and it will do well for them as they enter work.

But there comes a point where the problems are just too tricky that it’s no longer a test of programming skill, but a test of knowing trivia from Computer Science and Math that you will almost never get to use in the industry.

Simply put, high level programming competition skill does not equate to high level software development skill.

High level programming competition also relies on quick hacks – computationally efficient, but ultimately ugly kludges. Good Software Engineering requires you to avoid these hacks lest they become technical debt that will cripple your system and your team in the long run.

This pitfall of forgetting the original goal of having open programming competitions can be avoided as long as your organizers and judges are developers from the industry whose years of experience have removed any romantic feelings for CS trivia in favor of more pragmatic approaches to software engineering. But then again, there are far fewer CS/SE hybrids (i.e. well versed in both) in the local scene than Developer/Designer “unicorns” so good luck finding them.

—

Long story short, Programming Competitions are one of those things that look great on paper, but immediately reveals why no one does it the moment you try to do it on your own. (see also: local Developer Bootcamps)

Can anything be done to address the problems above and push these contests forward and take Philippine IT students’ skills to the next level?

Of course. But it’s going to take a much more dedicated and passionate group of people than what we have right now.

]]>https://blog.bryanbibat.net/2015/07/07/why-programming-competitions-could-be-the-future-but-probably-wont/feed/02202On Tech Event Video Coveragehttps://blog.bryanbibat.net/2015/06/29/on-tech-event-video-coverage/
https://blog.bryanbibat.net/2015/06/29/on-tech-event-video-coverage/#commentsMon, 29 Jun 2015 13:49:15 +0000http://blog.bryanbibat.net/?p=2189I just finished the months long processing of the RubyConf Philippines 2015 videos so I guess it’s a good time to do an article on covering tech events as an amateur.

As far as I know, I’m the only amateur videographer in the local tech/developer scene. All other videos of events are either taken by camera phones or are done by paid professionals. Compare this with photography: there are still camera phone pictures, but many events have amateur photographers with decent gear. Why is this so?

It’s not because videography is expensive. Yes, if we look at the equivalent video cameras for DSLRs, you’ll get into the P50k+ range. But you can get somewhat decent cameras for much less like the point-and-shoot equivalent that I use. Overall, my current gear is cheaper than a typical hobbyist photographer’s gear; even the “pro-level” device, the RØDE VideoMic Pro, just hovers around the price of typical lenses.

If amateur videography isn’t expensive, why aren’t we seeing more people taking videos of events?

It’s simply not fashionable.

No, this isn’t a dig at camera owners who use their devices as status symbols. It’s just the blunt truth: videography takes way too much effort compared to photography.

Let’s look at what happens when you cover a meetup talk – the most basic thing a tech event videographer will record.

First you’ll need to deal with the hassle of having to bring a tripod to the venue as the crappy ones that fit in your bag won’t be stable enough for taking videos.

Then you’ll have to sit in a corner for the entire talk… if only that was that easy. You can’t just sit there playing with your phone or move away and chat with the people in the back. You have to focus the whole time, sometimes you’ll have to pan towards the speaker, other times you’ll have to zoom to the projected code. The worst part is that you can’t even speak or comment or heckle because it’s going to be obvious in the audio (watch the RubyConf lightning talks for some examples where I stopped caring about it).

Speaking of audio, it’s a whole different beast compared to videos/images. You can’t fix it in post production, and if you don’t have external microphones like my shotgun mic, you’ll have to place your camera much closer to the speaker to lessen background noise.

Then there’s the post production. Fortunately for talks, it’s just trimming off excess video and possibly re-encoding to get a smaller sized video for a faster upload.

Finally the upload. Hope you’ve got good broadband like mine. If not, you may have to do what I did before PLDT fixed the line in my area and shove the videos into a netbook (to save electricity) and let it upload all day.

And that’s just a user group meetup talk. What about more complicated events like a developer conference?

First you’ll need more cameras: one for the projector, and another for the speaker. Panning between the two isn’t good enough. You might even need a third camera taking a wide shot for backup purposes.

The audio is also slightly more complicated here. Having a shotgun mic really improved the quality of the audio in my usual videos but it alone isn’t enough to get good audio – I ended up not using the shotgun mic audio in the RubyConf videos and instead used the backup camera audio because the latter was in a better position to pick up the speaker and audience audio.

RubyConf PH’s video post-production was much more complicated, though. I got over 150GB of video which, over the course of 3 months, I converted and stitched together to make 21GB of 720p video. I don’t have plans to purchase professional video editing software so I had to make do with Blender VSE, which unfortunately is single-threaded when rendering the final video. Hence the 3 month delay.

tl;dr:

Hand over a camera to a random person and ask them to take pictures of an event and many will be happy to do that for you.
Hand over a video camera and tell them to cover an entire talk (not just random B-rolls) and they’ll give up less than 5 minutes in.

1 – Hi-res slide recorder that goes in between the presenter’s laptop and the projector (records hi-resolution output of exactly what is seen during the presentation, including slides, videos, live coding, etc.)

1 – Audio recorder that takes an auxiliary out from the house sound system to provide a crisp, clean audio track

This brings up another requirement for video coverage: manpower. Not only does a professional setup require expensive equipment, it also needs at least 2 operators to work properly.

I’m still surprised that I was able to pull off RubyConf PH on my own with what little gear I had with only minimal problems.

—

This article’s already a bit long but I still haven’t covered one common comment I hear in the local tech scene regarding videos:

“I hope someone streams this event.”

To which I just shut up instead of explaining why this makes me ಠ_ಠ internally.

First off, you need at least 2Mbps for good quality streaming. Most venues do not have those speeds.

Then there’s the camera. If you want decent video for your event, you’ll need a $200+ video capture device that you would connect to your video camera. Don’t have one? You’ll have to settle with webcams then.

Even if you skip both, being ok with crappy webcam video and occasional lag, you still have the real main problem:

Nobody is watching.

Try to watch streams of events and you’ll see that even the biggest local tech (i.e. non-mainstream) events get less than 50 viewers. Once you realize this, you shouldn’t be surprised that I don’t bother with all the effort to stream events.

—

So to sum it up, videography is hard; everyone says they want video coverage, but in the end no one really watches videos.

]]>https://blog.bryanbibat.net/2015/06/29/on-tech-event-video-coverage/feed/12189First draft/installment of my new Ruby deployment book now outhttps://blog.bryanbibat.net/2015/06/09/first-draftinstallment-of-my-new-ruby-deployment-book-now-out/
https://blog.bryanbibat.net/2015/06/09/first-draftinstallment-of-my-new-ruby-deployment-book-now-out/#respondTue, 09 Jun 2015 04:08:54 +0000http://blog.bryanbibat.net/?p=2183I’ve always thought that Rails’s “Deploy” page is one of the weakest parts of the Rails website – it’s just a bunch of links with no explanation unlike, say, the Active Job guide. Online tutorials also don’t help, mostof them rely only on Heroku (which recently changed the behavior of their free tier to require 6 hours of sleep per day).

Beginners are left with:

Buy a book like Agile Web Development With Rails 4 or Rails 4 in Action which have chapters on deployment.

Read through the docs of the links on the “Deploy” page and do everything by trial and error.

Scour through the countless tutorials online and hope the one you’re working on is correct.

In short, newbies are pretty much screwed.

So I decided to give my own take on the “Ruby deployment for Dummies”. Unlike your usual tutorial, I wouldn’t just focus on the “How to” but also the “Why”. I’ll also look at the various alternatives for the different components of your Ruby server.

It’s only the first part so it’s free to read and download. I expect to finish this book by late August.

Please buy the book so I can get out of mini-writer’s blocks and push it out earlier. LOL

]]>https://blog.bryanbibat.net/2015/06/09/first-draftinstallment-of-my-new-ruby-deployment-book-now-out/feed/02183My Filipino Dishes (with Science!) pt 4: Tinolahttps://blog.bryanbibat.net/2015/01/30/my-filipino-dishes-with-science-pt-4-tinola/
https://blog.bryanbibat.net/2015/01/30/my-filipino-dishes-with-science-pt-4-tinola/#respondThu, 29 Jan 2015 19:43:20 +0000http://blog.bryanbibat.net/?p=2170In this series of posts, I’ll be discussing the different Filipino dishes that I’ve been cooking and experimenting on for quite some time now.

I will only show pictures of the ingredients. I’m leaving the “take a picture of the dish” to the foodies. Go to Google Image Search if you want pictures of the dishes.

—

I hate Tinola. I hate HATE Tinola. I’ve gone through college and years of work and I’ve never ever ordered Tinola at the turo-turo and cafeteria. I’ve always wondered why people like this dish of tasteless rubber chicken and even more tasteless soup.

Then, just like Giniling, I was asked to cook Tinola for the household.

And so I went around the internet, looking for recipes and stories about cooking Tinola.

And that night I had the best Tinola in my life.

It was then that I figured out the problem with Tinola: Bistek has one subtlety (cooking time) that can make or break the dish; Tinola has a lot more than that. It was easy to see why a lot of Tinola sucked after I learned those subtleties.

Step 5: Add the malunggay and cook for another 2 minutes (just to blanch the leaves) and serve.

—

Before I discuss the subtleties, I’d like to point out this one of those recipes where full mise en place is sub-optimal. There is enough time between steps to prepare all of the ingredients:

Peeling and mincing garlic, onion, and ginger can be done while waiting for the fat to render.

Peeling and chopping chayote can be done while the stew is simmering.

Stripping/plucking malunggay leaves from its stalks takes a crapload of time. Start doing it before you add the chayote or you might end up with overcooked chayote by the time you’re done.

—

Subtlety 1:sangkutsa

You know why you’re getting tasteless “rubber” chickens in your tinola? It’s probably because the recipe you’re using only told you to put all the ingredients in a pot and simmer for 30 mins.

This doesn’t add flavor or even texture to your chicken. Heck, you might be better off microwaving it.

The solution: sangkutsa. The word can mean “marinate”, but here we use its other meaning: stir-frying in rendered fat.

Done right, sangkutsa essentially turns our rubber chickens into skinless fried chickens. The texture is better, and the slightly browned meat has better flavor thanks to our old friend Maillard reaction. Even the browned residue will be useful later: apart from flavor, it also gives the stew its brown tint as the pot is deglazed in the long simmering period.

Subtlety 2: native chicken vs broiler chickens

Another theory why we tend to get tasteless Tinola is because the chickens themselves are tasteless. Tinola predates the modern broiler chicken and it’s safe to assume that most recipes were meant for “native” chickens. Compared to native chickens, broilers have less skin-to-meat ratio and in turn will have less fat and flavor per weight.

There are a couple of ways to get around this:

Bouillon cubes – as I mentioned before, chicken stock is rare locally so we’ll have to settle with bouillon cubes or other similar seasonings (e.g. “Magic Sarap”, MSG) to enhance the existing patis/ginger/garlic/stock flavor.

Chicken necks – they don’t have a lot of meat so people avoid them, but you’ll get extra skin and the bones give you extra flavor as stock if you use them here.

Subtlety 3: cooking time

Like Bistek, simmering Tinola for a long time improves the quality of the dish. This is normal for most types of chicken soup – long cooking time allows the connective tissue to break down and add flavor to the stock.

Even though Wikipedia notes that chicken soups take 1-3 hours to cook, 45 minutes works well for me. I’m pretty sure it’s because of the pre-cooking in sangkutsa, though if I had to cook native chicken I’ll probably extend the simmering time by 15-30 mins to get more flavor out of the well-used connective tissue.

Subltety 4+: more flavors

Apart from stock and chicken fat itself, there are still other subtleties in the flavor area.

First and foremost is the ginger. It was only when I looked for recipes that I found out that ginger is one of the key ingredients – and yet all of the Tinola I had before never even had a hint of ginger in them.

I’m not saying you should overdo the ginger and make your soup taste like salabat, but you should at least use enough to make the person eating taste and feel some of the heat from the ginger. If you can’t decide how much ginger to use, just remember that Tinola is a cold-weather dish.

Speaking of heat, most recipes call for dahon ng sili (chili leaves) to give more depth to the hot ginger stew and I would suggest beginners to use that instead of harder to prepare malunggay. I prefer the latter mainly because I can get fresh leaves from the virtually unkillable zero-maintenance malunggay trees our backyard.

On to the other vegetable aspect, most recipes also call for unripe papaya instead of chayote. They become the same texture in the end, but I personally don’t like unripe papaya in my tinola. I have a sweet tooth so I prefer chayote’s slightly sweet undertones over papaya’s bitter aftertaste. People who grew up on bitter dishes (e.g. Ilocanos with their Pakbet and Papaitan) usually prefer the former, though.

The last thing I’m going to touch is the rice water. Due to the other factors affecting the taste of the stew, I honestly can’t tell the difference between Tinola made with plain water and one made with rice water. Theoretically the rice starch should thicken the broth but I really don’t have the patience to make 2 batches at the same time and compare both. However, since I’m typically the guy washing and cooking the rice before cooking the ulam, saving the rice washings for Tinola couldn’t hurt.

—

As a side note, I never thought I’d write a 1000+ word essay on a dish I hated until last year.

After waking up at 4AM to the n-th “How do I fix the SSL problem in RailsInstaller/RubyInstaller?” in both project’s mailing lists, I stopped watching AGDQ for a couple of hours to spin up new Windows 7 virtual machines to upgrade RailsFTW to deal with those problems.

]]>https://blog.bryanbibat.net/2015/01/11/railsftw-v0-19-now-out-with-rails-4-2-0-and-rubygems-ssl-fix/feed/02160Notes on Setting up a Rails Server in 2015 (Ubuntu 14.04, Nginx, Passenger, Ruby 2.1, PostgreSQL)https://blog.bryanbibat.net/2015/01/03/notes-on-setting-up-a-rails-server-in-2015-ubuntu-14-04-nginx-passenger-ruby-2-1-postgresql/
https://blog.bryanbibat.net/2015/01/03/notes-on-setting-up-a-rails-server-in-2015-ubuntu-14-04-nginx-passenger-ruby-2-1-postgresql/#commentsSat, 03 Jan 2015 01:57:23 +0000http://blog.bryanbibat.net/?p=2150I spent a decent amount of time last month playing around with scripts for setting up a Rails server from scratch. Turns out that the whole process is simpler than what I had to go through 7 years ago when I was learning how to install LAMP from scratch.

There are a bunch of other stuff that you need to setup like ssh/sshd/firewall and mail/postfix settings but these commands pretty much covers all the software you need to install before you setup a production app. For example, here’s the rest of the commands for setting up Redmine:

Othertutorials already cover most of the commands above. Instead of repeating them, I’ll just be going through some quick notes about the process, explaining my approach and mentioning some gotchas.

Why install Passenger and Ruby from apt repositories?

It’s much faster than installing from source.

It’s also easier to update via apt-get upgrade.

Why Passenger instead of Nginx + Unicorn/Puma/etc?

Aside from the reasons above, it requires less configuration and it’s good enough for most cases.

The only way I’d consider other setups is if you need rolling restarts or more control over your memory usage.

Why use BrightBox’s repo instead of RVM/rbenv or install from source?

Most production servers only need one version of Ruby installed so I don’t see a reason for using version managers. They might make sense in staging servers for testing multiple versions, but not in prod.

Gem installation isn’t a problem since you’re going to use Bundler anyway i.e. after installing and having bundle available system-wide, you can have it install gems locally via --path like in the example above.

So that leaves us with manually installing from source. However, as mentioned above, installing via apt is just more convenient. The BrightBox packages may sometimes not be up-to-date (DevCon is running in preview 2.2 right now), but they tend to update a few weeks after a major release.

Security: why allow root login via ssh?

For newbies, this makes sense: preventing people from logging in as root is a great way to prevent hacking attempts. In reality, we’re not totally preventing remote “root” log-ins – we’re prevent logging in as root because we want our SysAds to log in as a sudo user so all of their actions can be logged.

For simpler systems, it may be better to just allow remote root login as long as public keys are used, hence “PermitRootLogin without-password“.

Why is the deploy user not a sudo user?

It’s not really for security reasons. Yes, having a basic pasword-less user does make our apps secure, considering that Passenger automatically switches the user to the owner of the app, but my main reason for not making deploy a sudo user is because it doesn’t need it.

It doesn’t need sudo to install gems, bundle install --path installs to a local folder.
It doesn’t need sudo to restart the app server, touch tmp/restart.txt does that.

It’s just a simple constraint I added to make sure I’m isolating the deploy user to deployment tasks.

And besides, some of you might notice how insecure deploy is when it comes to…

Why is the deploy user a superuser for PostgreSQL? Why use Ident/Peer auth instead of a password?

Same reason as root login: personal server, no need for extra security than needed. If the attacker somehow logs in as deploy, the DB is screwed either way.

In other words superuser + peer auth is about as secure as the usual password approach while also easier to setup (by just a few commands LOL).

Config files

There’s nothing special about most of the config files edited via vim in the scripts above. The apt source and default nginx site config file would just contain the recommendedsettings. The database config can just contain three lines: the environment (production:), the adapter (adapter: postgresql), and the database name.

As for the main nginx config file, apart from being edited as recommended by the docs, there’s also one big gotcha that will prevent your app from running in Passenger:

execjs gotcha

If your app is using sprockets and you’re using an external JS runtime like NodeJS, your app may not run because Passenger can’t find a valid JS runtime via execjs.

Reason? Execjs looks for NodeJS with the PATH, and environment variables like PATH are not automatically used by Passenger.