HUMBUG logo


HUMBUGers

Feed: rss rdf opml

January 26, 2015

Clinton Roy26th January

Notwork, due to Australia day. Spending an inordinate amount of time trying to find some aircon so I don’t sweat all day long. I did get to pre-poll vote in the morning, so not all aircon hunting time was wasted.

My headphones have died in one ear, time for another set of consumables. The wirleless in the library is hopeless. This combination is making me very unproductive at both tasks I set myself for today.


Filed under: Uncategorized

January 26, 2015 03:50 AM

January 25, 2015

Clinton RoySun 25th January

Finished the Learning to Learn MOOC course. I missed a few of the deadlines due to lca2015, so I’m not not bothering to do the written parts, which does make me feel rather like I haven’t finished the course. It’ll be interesting to see if I can apply the techniques going forward. I’m pretty sure I’ll chase up their book at some point as well.


Filed under: diary

January 25, 2015 05:17 AM

January 24, 2015

Clinton RoySaturday 24th January

Caught up with a friend in the morning.

Booked the local bowling place for my birthday celebration.

Caught up on the ‘learning to learn’ mooc. I’ve missed the deadline on the quiz and the written material, but I’m continuing through with everything else. I should be able to get through the final week of content tomorrow.

Watching more LCA2015 videos.


Filed under: diary

January 24, 2015 05:57 AM

Clinton RoyFriday 23rd January

Work.

A very wet day, I was drenched only about fifty metres from home.

Watching and noting on more lca2015 videos.


Filed under: diary

January 24, 2015 05:54 AM

Clinton RoyThursday 22nd January

Work.

Finished typing up my hand written LCA2015 notes into the humbug wiki. I’ve now started the videos of the talks that I’ve missed.

Went and saw the move “Birdman” and I felt like I was back at BIFF, what a lovely little film, that covers a range of themes, without being complicated.

Home at midnight though, which made for a short night’s sleep.


Filed under: diary

January 24, 2015 05:53 AM

Clinton RoyWednesday 21st January

Work.

Caught up with a close friend this evening. I may well lose her in the coming weeks, so I’m trying to organise a nice night out for her in a few weeks, under the guise of my birthday.


Filed under: diary

January 24, 2015 05:50 AM

January 20, 2015

Clinton RoyTuesday 20th January

Slowly getting back into the swing of things, walked into work at stupid o’clock in the morning. Spending the afternoon at The Edge. Catching up on a few days of this diary.

Gearing up for the LCA debrief at Humbug, trying to not do it so off-the-cuff this year, organising the notes online in our wiki.


Filed under: diary

January 20, 2015 07:39 AM

Clinton RoyMonday 19th January

Waking up in a stupidly muggy Brisbane. Realised how happy I should be at having avoided this weather for a week.

Bussed to work, had to take have a shower when I got into work!


Filed under: diary

January 20, 2015 07:35 AM

Clinton RoySunday 18th January

Windy Wellington!

Breaky and fancy coffee at..the coffee hangar I think? Then trooped back for the free Air New Zealand exhibit at Te Papa.

Headed to the airport quite early as I was completely drained by this point. The temperature and humidity levels back in Brisbane were quite confronting, I got very little sleep this night.


Filed under: diary

January 20, 2015 07:33 AM

Clinton RoySaturday 17th January

New Zealand!

Partook in Geeks On A Train today, from Auckland down to Wellington, quite happy with how it all went. Just about all of the photos in my LCA2015 album are taken on the train.

It was nice disconnecting from the conference and technology for a bit. And I have a feeling that the trip will be quite an important one to remember in the future.


Filed under: diary

January 20, 2015 07:28 AM

Clinton RoyFriday 16th

Auckland!

The morning keynote really did feel like a kick in the guts to all the work that we’ve been doing, and is a horrible tail end to a conference that started with the wonderful community leadership summit. I later quipped that keynotes should be at the end of the day in case the only rational response was drinking.

Fortunately there was a light hearted Paul McKenny talk later in the day that lifted my spirits.

And on an even better note, the main organiser for Geelong is not going to put up with such shit from Linus.


Filed under: diary

January 20, 2015 07:14 AM

January 15, 2015

Clinton RoyThursday 15th January

Auckland!

A good day of solid technical stuff today, with no CoC problems (that I saw at least).

Paul McKenny and Matthew Garrett in one day means a lot of knowledge and enjoyment.

Astronomy BOF that night at the Auckland Stardome, where because we were early enough and there was enough room, we were let in to see two shows for the price of one.


Filed under: diary

January 15, 2015 10:20 AM

January 14, 2015

Clinton RoyWednesday 14th January

Auckland!

Bob Young keynote was a bit blah.

Dinner at Motat was great, I took maybe thirty photos. Lots of Melbourne trams for some reason.


Filed under: diary

January 14, 2015 10:53 PM

January 13, 2015

Clinton RoyTuesday 13th January

Auckland!

Morning keynote by Eben, that’s going to take a few viewings to understand.

Spent most of the day at the Community Leaders Summit thingy Donna was running, ended up taking notes for both sessions, it took more out of me than I thought it would.

A quiet evening as I still haven’t got my sleep schedule sorted out over here.


Filed under: diary

January 13, 2015 10:32 AM

Clinton RoyMonday 12th January

Auckland!

First day of miniconfs, I spent some of my time at the kernel miniconf and some at the Debian miniconf.

That night the ghosts dinner was on, caught up with a couple of Melbourne friends.


Filed under: diary

January 13, 2015 10:28 AM

January 12, 2015

Blue HackersIs depression a kind of allergic reaction? | The Guardian

January 12, 2015 12:12 AM

January 11, 2015

Clinton RoySunday 11th January

Auckland!

Spent the better part of the morning buying shorts that somehow didn’t make the trip with me…

Registered for linux.conf.au, looks like I might get two t-shirts if the second batch of corrected printing comes in on time.

Dinner with old friends at an Indian place here. Managed to thank Paul McKenny for librcu.


Filed under: diary

January 11, 2015 10:54 AM

Clinton RoySaturday 10th January

Auckland!

Spent most of the day at the Auckland War memorial/museum. There’s an emphasis on natural history, Maori culture and conflict history. There’s a lot of stuff in the museum and I was running out of puff by the end of it.


Filed under: diary

January 11, 2015 10:48 AM

Clinton RoyFriday 9th January

Work.

Flew to Auckland for my fourteenth linux.conf.au.

Somehow ended up with a ticket that didn’t give me a meal during the flight.


Filed under: diary

January 11, 2015 10:45 AM

January 09, 2015

Ben MartinTerry 2.0: The ROS armada begins!

It all started with wanting to use a Kinect or other RGBD (Depth sensing) camera to do navigation... Things ended up slowly but surely with moving from a BeagleBone Black and custom nodejs script that I created as the heart to a quad core atom running ROS and many ROS nodes that I created ;)


The main gain to ROS is the nodes that other people have written. If you want to convert RGBD to a simulated laser scan in order to do 2d navigation then that's already available. If you want to make a map and then use it then that code is already there for you. And the visualization for these things. I'm not sure I'd have the time to write from scratch a 3d robot viewer and visualize my cut down 'fake' 2d laser scan data from the Kinect in OpenGL. But with ROS I got the joy of seeing the scan change in real time as Terry sensed me move in front of it.

I now have 3d control of the robot arm happening, including optional sinusoidal encoding of movements. The fun part is that the use of sinusoidal can be enabled or disabled without any code changes. I wrote that part as a JointTrajectory shim. For something to use smoother movement all it has to do is publish to that shim instead of directly to the servo controller itself. The publish and subscribe parts of the IPC that ROS has are very easy to get used to and allow breaking up the functionality into rather small pieces if desired.


The arm is one area that is ROS controlled, but not quite the way I want. It seems that using MoveIt is indicated for arm control but I didn't manage to get that to work as yet. The wizard only produced an arm that would articulate on one joint, so more tinkering is needed in that area. Instead I wrote my own ROS node to control the arm. It's all fairly basic trig to get the gripper at an x,y,z relative to the base of the arm. And an easy carry over to fix the gripper at a horizontal to the base no matter what position the arm is moved to. But in the future the option to MoveIt will be considered, can't hurt to have two codepaths to choose from for arm control.

As part of the refresh I updated the pan unit for the camera platform.Previously I used a solid 1/4 inch shaft with the load taken by a bearing and the gearmotor turning the shaft directly from below it. Unfortunately that setup has many drawbacks; no ability to use a slip ring, no torque multiplication, difficulty using an axle end rotary encoder IC to gain real world position feedback. The updated setup uses a 6 rpm gearmotor offset with a variable motor mount to drive a 24 tooth brass gear. That mates with an 80 tooth gear which is affixed to a hollow 1/2 inch alloy tube. As you can see at the top of the image, I've fed the tilt servo cable directly into the inside of that tube. No slip ring right now, but it is all set to allow the USB cable to slip through to the base and enable continuous rotation of the pan subsystem. So the Kinect becomes a radar style. One interesting aside is that you can no longer manually rotate the pan system because the gearmotor, even unpowered, will stop you. The grub screw will slip before the axle turns.


As shown below, the gearmotor is driven by an Arduino which is itself connected to a SparkFun breakout of the TB6612FNG HBridge IC. This combo is attached using double sided 3M tape to a flat bit of channel. Then the flat bit of channel is bolted to Terry. I've used this style a few times now and quite like it. A single unit and all it's wires can be attached and moved fairly quickly.



At first I thought the Arudino gearmotor control and the Web interface would be a bit outside the bounds of ROS. But there is an API for Arduino which gives the nice publish and subscribe with messages that one would expect on the main ROS platform. A little bit of python glue takes the ttyUSB right out of your view and you are left with a little extension from the main ROS right into the MCU. I feel that my 328 screen multiplexer will be updated to use this ROS message API. Reimplementing packeting and synchronization at the serial port level becomes a little less exciting after a while, and not having to even think about that with ROS is certainly welcome.

Below is the motherboard setup for all this. Unfortunately many of the things I wanted to attach used TTL serial, so I needed a handful of USB to TTL bridges. The IMU uses I2C, so its another matter of shoving a 328 into the mix to publish the ROS messages with the useful information for the rest of the ROS stack on the main machine to use at its will.


The web interface has been resurrected and extended from the old BBB driven Terry. This is the same Bootstrap/jQuery style interface but now using roslibjs to communicate from the browser to Terry. I'm using WebSockets to talk back, which is what I was doing manually from the BBB, but with ROS that is an implementation choice that gets hidden away and you again get a nice API to talk ROS like things such as publishing and subscribing standard and custom messages.


The below javascript code sends an array of 4 floats back to Terry to tell it where you want to have the arm (x,y,z,claw) to be located. The 4th number allows you to open and close the claw in the same command. The wrist is held horizontal to the ground for you. Notice that this message is declared to be a Float32MultiArray which is a standard message type.The msg and topic can be reused, so an update is just a prod to an array and a publish call. You can fairly easily publish these messages from the command line too for brute force testing.

var topic_arm_xyz = new ROSLIB.Topic({
   ros  : ros,
   name : '/arm/xyzc',
   messageType : 'std_msgs/Float32MultiArray'
});

var msg = new ROSLIB.Message({
  data : [ x,y,z, claw ]
});
topic_arm_xyz.publish( msg );


The learning curve is a bit sharp for some parts of ROS. Navigation requires many subsystems to be brought up, and at first I had a case that the robot model was visualized 90 degrees out of phase to reality. Most of the stuff is already there, but you need to have a robot base controller that is compatible. It is also a trap for the new players not to have a simple robot model urdf file. Without a model some parts of the system didn't work for me. I'd have liked to have won with the MoveIt control, and will get back to trying to do just that in the future. I think I'll dig around for shoe string examples, something like building a very basic three servo arm with ice cream sticks and $5 servos would make for an excellent example of MoveIt for hobby ROS folk. Who knows, maybe that example will appear here in a future post.


January 09, 2015 12:58 PM

Clinton RoyThursday 8th January

Walked to work.

There’s a construction site across the road from work with a huge rigged jackhammer, the noise is bad but the vibrations through the ground are worse.

Caught up with a friend for dinner in the city.

Bought some plastic containers for the storage cleanup in the study, they look like they’re going to work nicely, I just need to buy a few more.


Filed under: diary

January 09, 2015 12:11 AM

January 07, 2015

Clinton RoyWednesday 7th January

Walked to work.

Managed to finally start the Learning to Learn course! I’ve now done all the week one videos and quizzes, which I’m quite happy with. Unfortunately the first piece of assessment is due half way through LCA which is going to be..difficult.


Filed under: diary

January 07, 2015 09:06 AM

Clinton RoyTuesday 6th January

Work.

Finally Mitre Ten was open when I was going past, picked up some lumber so I had something to mount the tool rack to.

Caught up with a friend who had spent Christmas and new years down in Melbourne.

Spent most of the night mounting the took rack, it took much longer than it should have. I need to reorganise one of the bookshelves, and start using it as a storage rack I think.


Filed under: diary

January 07, 2015 01:23 AM

January 06, 2015

Blue HackersBlueHackers at LCA 2015 (Auckland NZ)

BlueHackers will have a presence at Linux.conf.au (this year in Auckland NZ, 12-16 Jan 2015), the awesome John Dalton is organising the BoF (Birds-of-a-Feather) session one evening, and he’ll also have a stash the little BlueHackers stickers that you can put on your laptop to show your support and understanding for mental health. Some stickers may also be available at the LCA registration desk.

Have an awesome time there – unfortunately I can’t make it this year.

January 06, 2015 02:12 AM

Blue HackersDepression Doesn’t Make You Sad All the Time | Meloukhia.net

January 06, 2015 01:56 AM

January 05, 2015

Clinton RoyMonday 5th January

Walked to and from work.

Got grumpy at Mitre 10 again for closing earlier than their website says.

Metered internet at home, so can’t get much done at all.


Filed under: diary

January 05, 2015 09:16 PM

January 04, 2015

Ben MartinOne Small Step for Terry, one giant leap for robotkind.

This evening the BeagleBone Black was finally unbolted from Terry. All the sensors, servos, gearmotors, PWM partial update moosed down RGB DMD screens are controlled from ROS now.

In the process I replaced the physical pan subsystem with a torque multiplied 6 rpm gearmotor. Its 80-24 multiplication giving 1.8 effective rpm at the pan. Unlike the previous setup, the torque is now so high that you can not manually turn the pan system. It occurred to me that this is also a minor hazard as if you get a finger in the gear mesh it would not lead to a "nice place". This is also now using a hollow 1/2 inch metal tube, so I can add a slip ring to allow the pan and tilt to rotate freely at will. I can also much more easily include an IC based pot to close the pan feedback loop with high precision.

It has been interesting going from a board with so many headers for SPI, I2C, UART and GPIO to a general purpose small desktop motherboard running the show. The upside is that things like SLAM and localization which would be tedious to reimplement myself are now available. It might be fun to play with Monte Carlo localization on an mbed based MCU (target point at around 100Mhz/100kb sram). But that's for another day.

The next trick is bringing together the launch files for each subsystem into a Terry-Main.launch that brings it all up.

Pictures and video are extremely likely to follow.

January 04, 2015 02:40 PM

Clinton RoyThursday 1st January

New years day!

Spent the afternoon at The Edge working on the torso, the heart is taking a lot longer than I thought it would. I’ve basically finished the complicated part of the top with all the in and out hoses, I think the bottom half will go much faster.


Filed under: diary

January 04, 2015 11:20 AM

Clinton RoyFriday 2nd January

Picked up some cheap storage stuff at Mitre Ten in the morning, still have to buy some lumber to attach it to, will probably order in one or two more units as well. It’s a wall mounted metal cleat system for storage trays.

Work.

The Edge is still on it’s 5pm holidays closing hours :(

Worked on the pychecker code.


Filed under: diary

January 04, 2015 11:11 AM

Clinton RoySaturday 3rd January

Spent the morning and early afternoon at Toowong library, which is a bit different for me.

Finished working on the pychecker assert code.

Afternoon was at Humbug, Marco gave a preview of his linux.conf.au talk. We gave him as much feedback as possible I think.

(We thought) our usual curry place was shut for the holidays, so we went to Sichaen Bang Bang at Kenmore, which was good for a change. The food was good and the Chinese whisky was amazing.

Poked a few people about pycon things, I’d like to get the spreadsheet up and working for this year ASAP.


Filed under: diary

January 04, 2015 11:08 AM

Clinton RoySunday 4th January

Spent the afternoon at The Edge working on my paper torso, got the heart finished so that’s three organs done.

Starting to think about linux.conf.au packing, tonight is the final opportunity to do some washing before I fly out on Friday.

The rest of the workmates will be back at work tomorrow.

I was hoping to start the Learning to Learn course today, will have to do that tomorrow night.


Filed under: diary

January 04, 2015 11:02 AM

December 28, 2014

Adrian SuttonSonos’ Support is Brilliant

I’ve spent the evening emailing back and forth with Chris from Sonos’ tech support about a strange issue I’ve experienced where the Sonos app can’t connect to the playbar (on both OS X and iOS). It turns out the problem is that my DLink wifi access point doesn’t handle multicast traffic properly – Chris knew that almost immediately but took me through each step carefully checking every assumption and taking the time to ask about settings in the terms DLink uses instead of generic ones. By the end of it all I had a solid understanding of what the problem was and a simple way to describe it to DLink’s support to see if it could be fixed. A little creativity on my end has even given me a good work around.

Normally support teams do just enough work to determine that it’s not their product at fault and then fob you off to the other company. I really appreciate the extra time Chris took to make sure I knew he was doing everything he could.

Even more impressive, all this happened on a Sunday night on the weekend between Christmas and New Year – getting responses almost immediately.

So if you’re considering a wireless speaker system – go buy a Sonos. The whole company is working hard to make it awesome for you and it shows.

December 28, 2014 10:53 PM

December 26, 2014

Adrian SuttonDisabling Internal Speakers on a Panasonic TV

My wife and I gave each other a Sonos playbar for Christmas to improve the clarity of our TV. The initial setup was excellent – clearly stepping through each required step and very cleverly detecting the type of TV remote I have and automatically reacting to it’s volume controls so I can carry on using the TV remote as usual.

The only problem is that my Panasonic TV doesn’t provide a way to disable the internal speakers. So the playbar and the TV were both outputting sound which sounds pretty awful.  There’s two ways to solve this:

  1. Configure the Sonos to respond to a different remote (or different buttons on your TV remote such as those for a DVD or video play you don’t use). Then simply turn the volume on the TV all the way down and don’t use the normal volume buttons anymore.
  2. Access the secretive hotel mode.

The secretive hotel mode is mentioned in a bunch of places on the internet but apparently Panasonic denies it exists (unless you’re a hotel I guess). To access it on my particular version I had to hold down the -/V button on the side of the TV and press “AV” on the remote three times.

A menu then pops up providing access to a few settings including a maximum volume. Enable hotel mode and set the maximum volume to zero and you’ve effectively disabled the internal speakers.

Now when you use the volume controls both the TV and Sonos will respond but the TV volume is limited to zero so the volume bar appears on screen but the TV speakers never activate.

This gives the ideal setup – a sound system that provide significantly improved sound from the TV without any extra remotes or other complications.

December 26, 2014 05:38 AM

December 06, 2014

Adrian SuttonDecision By Consensus

Rich Bowen – We’ve Always Done It That Way:

Principle 13 in the Toyota Way says that one should make decisions slowly, by consensus, thoroughly considering all options, and then implement those decisions rapidly. We believe a similar thing at the ASF. So to people who have only been around for a short time, it looks like we never change anything. But the truth is that we change things slowly, because what we’re doing works, and we need to be sure that change is warranted, and is a good idea.

I’m a big fan of decision by consensus. It doesn’t mean everyone agrees (consensus does not require unanimity) but it does ensure that the bulk of the team are all on board and moving in the same direction.

It does take longer – much longer. And it requires investing a lot more into the decision making process, having debates, doing research and planning out how things will actually work. In the end though it’s worth it to avoid having the decision undermined by people resistant to the change or having decisions made too independently and then having people heading off in different directions.

Just don’t forget that one of the best ways to build consensus is by running a trial. It’s much easier to plan out a trial (including a rollback plan) and gain consensus for running it than for making the change permanently.

Another example of Less Haste, More Speed.

December 06, 2014 10:04 PM

Adrian SuttonLess Haste, More Speed

Jeffrey Ventrella in The Case for Slow Programming:

Venture-backed software development here in the San Francisco Bay area is on a fever-pitch fast-track. Money dynamics puts unnatural demands on a process that would be best left to the natural circadian rhythms of design evolution. Fast is not always better. In fact, slower sometimes actually means faster – when all is said and done.

Jeffrey’s right in suggesting that we sometimes need to go slower to go faster, unfortunately he makes the mistake of believing that committing and releasing in very short cycles is the cause of these problems:

My programming style is defined by organic arcs of different sizes and timescales, Each arc starts with exploration, trial and error, hacks, and temporary variables. Basically, a good deal of scaffolding. A picture begins to take shape. Later on, I come back and dot my i’s and cross my t’s. The end of each arc is something like implementation-ready code. (“Cleaning my studio” is a necessary part of finishing the cycle). The development arc of my code contribution is synonymous with the emergence of a strategy, a design scheme, an architecture.

This kind of design and development arc is completely independent of how often the developer commits or how often a release is taken. As you speed up your commit and release cycle, you mostly shouldn’t change the design and development process of any given change you simply reduce the size of the change. By tackling much smaller problems at a time it’s much easier and quicker to go through the full arc of understanding, experimenting, scaffolding, building and tidying.

Part of making each small change is considering how it fits in with and modifies the overall system design. Bad development teams forget this and wind up with an awful mishmash of designs all cobbled together, but that’s a reflection of the team’s design ability, not of the process. Good teams gradually adjust the system design as they go, sometimes in subtle ways sometime with more radical changes. Doing so means the system design is optimal for each stage of its life.

Commenter mmlac nails it:

Maybe [the machine-gun committer] IS doing the same as you, just sharing the progress with the team, so people can spot obvious mistakes earlier and see the approaches and stop him in time if they have more experience with the way they are trying to go?

You are basically advocating waterfall. And the issues you face have nothing to do with the speed of coding and the number of commits.

That’s not to say that there isn’t value in the saying “Go slower to go faster” but the much better way to phrase it is “Less Haste, More Speed”. It’s not about going slow, it’s about not rushing and doing a good job. It means taking the time to break down large changes into smaller, simpler incremental changes so you don’t have to deliver them all in one go. It means considering what adjustments to the overall system design are required for each change to make it fit in well.

And it means committing and releasing more often. Regularly investing time to prove things are completely finished and sent off to users instead of building that time up as technical debt because you’re attempting to make too big a change at once.

You don’t go faster by simply trying to go faster – you go faster by identifying and eliminating bottlenecks which requires you to do things that individually appear to make you go slower but make the overall system go faster. Committing and releasing regularly (continuous integration and continuous deployment respectively) are solutions to the bottle neck of horrendous merge and release processes that result from not doing them regularly enough.

December 06, 2014 09:54 PM

December 04, 2014

Blue HackersGender Acceptance

A very nice example of gender acceptance by parents.
Public acknowledgement in this way is awesome – well done to them!
And I figure the “tidy your room” is pretty much a “all is fine and normal, getting on with it” statement. Awesome.Source: Courier Mail (Brisbane AU, December 2014)

December 04, 2014 03:38 AM

December 02, 2014

Adrian SuttonThe One True Language

Lawrence Kesteloot has an excellent post Java for Everything.

About a year ago, though, I started to form a strange idea: That Java is the right language for all jobs. (I pause here while you vomit in your mouth.) This rests on the argument that what you perceive to be true does not match reality, and that’s never a popular approach, but let me explain anyway.

There are two key realisations that are vital to understanding why this argument has merit and the first one is right there in the introduction: what you perceive to be true does not match reality. As Lawrence notes:

The problem is that programmers perceive mindless work as painful and time-consuming, but the reality is never so bad. Here’s a quote from a forum about language design:

It really sucks when you have to add type declarations for blindingly obvious things, e.g. Foo x = new Foo(). – @pazsxn

No, actually, typing Foo one extra time does not “really suck”. It’s three letters. The burden is massively overstated because the work is mindless, but it’s really pretty trivial.

Every developer knows the mantra that code is only written once but it’s read many times, yet we focus on the number of keystrokes required to do something or the number of lines required. Besides which, the time required to type statements is almost never the limiting factor for how fast code can be written – it’s almost always dwarfed by the amount of time required to think about what the code should be doing and how it fits into the architecture.

The second key realisation is how powerful consistency is:

This focus on a single language has had an interesting effect: It has encouraged me to improve my personal library of utility functions (teamten.jar above), since my efforts are no longer split across several languages. […] I can now confidently invest in Java as an important part of my professional and personal technical future.

Being consistent in your choice of language allows you to learn it in much greater detail, become more familiar with a wider range of its available libraries and idioms and get a big return on investment when developing tools or libraries to pave over any rough spots.

None of this implies however that different languages aren’t better suited to different tasks. It just means that the benefits from switching languages is generally overstated and the costs generally understated. Thus, it should be far less common for switching languages to be worth it.

There are times when switching languages makes a lot of sense. For example, if your one true language in Java and you need to write code that runs in a web browser, Java is such a poor fit that it is worth switching languages.

Similarly, it doesn’t have to be Java that’s your one true language – C# would probably make more sense if you primarily worked with Windows environments and C would be better if you were a kernel programmer.

Ultimately it’s not so much about what choices you make, rather that it’s about correctly weighting the factors that go into those choices. We need to be aware of the innate bias we have towards overvaluing the elimination of immediate pain and undervaluing longer term benefits.

December 02, 2014 02:04 AM

November 28, 2014

Ben MartinFingerTech Mecanum meets Actobotics

Sparkfun sell some nice little omniwheels made by FingerTech Robotics. These come with a grub screw mount for a 3mm axle. While it is said around the webs that one might drill out the mount to accept up to a 6mm axle, I wanted a more flexible solution for mounting these wheels onto an Actobotics structure. It turns out that the four screw mounts (using what I think are x-40 screws) are in an extremely close location to the four screws on the Actobotics hub mount. Unfortunately it was a tad hard for me to get a hold of longer x-40 screws to attach the hub mount, so I ended up taking the wheel apart and replacing the standoffs with the Actobotics ones. The result is shown below:


The below shows the mecanum wheel taken apart. The three standoffs you see vertical in the image are the original ones from the wheel. These are about 1 inch long, so you'll be wanting some 1 inch actobotics standoffs to replace them with. When you unscrew the original standoffs then the hub mount part (centre of the red alloy), will be able to fall out and be removed. This lets you screw the Actobotics standoffs on and then on the other side use slightly longer bolts to attach the hub mount to the wheel to get the assembly shown above.


Apart from a clean 6mm hookup for the stepper motors that I plan to use, this is a handy modification allowing the 1/4 inch hub mount or other sizes to be substituted in instead. This is handy if you want to switch from 6mm to 6.35mm (1/4 inch) axles as you can easily change your mind just by changing the actobotics hub mounts.

November 28, 2014 11:20 PM

November 24, 2014

Paul GearonFaux Pas

The conference I attended last week was a pleasant excursion away from the confines of telecommuting. Other than the technology and systems presented, I particularly enjoyed meeting new people and catching up with friends. I think it really helped me focus again, both on work and on my personal projects.

That said, I disappointed myself with a conversation I had with one woman at the conference. She had released some software that is a brilliant example of the kind of systems that I am interested in learning more about, and I am looking forward to investigating how it all fits together. So when I saw her passing by I took the opportunity to introduce myself and thank her.

After the initial part of the conversation, I asked where she had traveled from, and she replied, "London," though she had originally come from elsewhere. I have other friends who live in and around London, and the cost of living in that city always seems prohibitive to me, so I asked about this. The response was that it wasn't so bad for her, and that she thought it was a nice place to settle down.

Without thinking, I took my cue from the phrase "settle down" and asked if she was married. She was very nice and replied no, but it was clear I had made a mistake and I allowed her to leave the conversation soon after that.

My initial reaction after this was to be defensive. After all, "settle down" is a phrase often associated with one's family, and many of us at the conference were married, so it didn't seem that harmful. But that it just one of those psychological tricks we pull on ourselves in order to not feel bad about our mistakes.

The fact is that this was a young woman on her own in a conference that was predominantly male. A question like this may be innocent enough in other circumstances, but as my wife pointed out, it can be threatening in an environment with such a strong gender disparity.

The tech industry has a major problem with its gender imbalance, and those women who remain are often treated so poorly that many of them choose to leave. I am particularly galled at my actions because I want to be part of the solution, and not perpetuating this unhealthy state of affairs. My actions were inadvertent, and not on a level of some of the behavior I have heard of, but if we want to see things change then it puts the onus on those of us who are in the majority to make things better. When it comes to the constant difficulties women and minorities face in the tech community, that means trying to improve things down to the subtlest level, as they all accumulate for individuals until they decide they don't want to be a part of it any more. And if that were to happen, we would be much poorer for it. Diversity breeds success.

I'm writing this as a reminder to myself to do better in the future. I'm also thinking that it may add to the voices of those who want to see things change, so those who haven't thought about it yet will give it some consideration, and those who have will be heartened by someone else trying... even when he gets it wrong.

By following the conference on twitter, I saw that this woman went on to enjoy the rest of the conference, and I hope that my own mistake is something that she was able to quickly forget. If she ever reads this (unlikely), then I wholeheartedly apologise. Personally, I hope that this lesson stays with me a long time, and I always remember to make a more conscious effort about where I take the conversation in future.

November 24, 2014 04:31 PM

November 23, 2014

Ben MartinTerry: Updated Top Shelf

The Kinect is now connected much closer to the tilt axis, giving a much better torque to hold ratio from the servo gearbox. I used some self tapping screws to attach the channel to the bottom of the Kinect. Probably not the cleanest solution but it appears to mount solidly and then you get to bolt that channel to the rest of the assembly. For a closer look the Logitech 1080 webcam is mounted offset from the Kinect. This should give an enjoyable time using the 1080 RGB data and combining the VGA depth mask from the Kinect into a point cloud.


The camera pan/tilt is now at the front of the top shelf and a robot arm is mounted at the back of the shelf. The temptation is high to move the arm onto a platform that is mounted using threaded rod to the back of Terry. All sorts of fun and games to be had with automated "pick up" and move tasks! Also handy for some folks who no longer enjoy having to pick items up from the ground. The camera pan/tilt can rotate around to see first hand what the arm is doing, so to speak.


The wheel assembly is one area that I'm fairly happy with. The yumo rotary encoder runs 1024 P/R and it is attached using an 8:1 down ratio to give an effective "ideal world" 13 bit precision. Yes, there are HAL effect ICs that give better precision, though they don't look as cool ;) The shaft of the motor is the axle for the wheel. It is handy that the shaft is not right in the centre of the motor because you can rotate the motor to move the wheel through an arc, and thus adjust the large alloy gear until it nicely mates with the brass gear on the rotary encoder.



Lower down near the wheels is a second distance sensor which is good for up to around 80cm distance. The scan rate is much slower than the Kinect however.


Things are getting very interesting now. A BeagleBone Black, many Atmel 328s on board, and an Intel j1900 motherboard to run the SLAM software.

November 23, 2014 08:25 AM

October 31, 2014

Ben MartinTerry 2.0 includes ROS!

What started as a little tinker around the edges has resulted in many parts of Terry being updated. The Intel j1900 motherboard is now mounted in the middle of the largest square structure, and SSD is mounted (the OCZ black drive at the bottom), yet another battery is mounted which is a large external laptop supply, the Kinect is now mounted on the pan and tilt mechanism along with the 1080p webcam that was previously there. The BeagleBone Black is moved to its own piece of channel and a breadboard is sunk into the main 2nd top level channel.


I haven't cabled up the j1900 yet. On the SSD is Ubuntu and ROS including a working DSLAM (strangely some fun and games getting that to compile and then to not segv right away).

I used 3 Actobotics Beams, one IIRC is a 7.7 incher and two shorter ones. The long beam actually lines on for the right side of the motherboard that you see in the image. The beam is attached with nylon bolts and has a 6.6mm standoff between the motherboard and the beam to avoid any undesired electrical shorts. With the two shorter beams on the left side of the motherboard it is rather securely attached to Terry now. The little channel you see on the right side up a little from the bottom is there for the 7.7 inch beam to attach to (behind the motherboard) and there is a shorter beam on this side to secure the floating end of the channel to the base channel.



The alloy structure at the top of the pan and tilt now has a Kinect attached. I used a wall mount plastic adaptor which with great luck and convenience the nut traps lined up to the actobotics holes. I have offset the channel like you see so that the center of gravity is closer to directly above the pan and tilt. Perhaps I will have to add some springs to help the tilt servo when it moves the Kinect back too far from the centre point. I am also considering a counter balance weight below the tilt which would also work to try to stabilize the Kinect at the position shown.



I was originally planning to put some gripper on the front of Terry. But now I'm thinking about using the relatively clean back channel to attach a threaded rod and stepper motor so that the gripper can have access to the ground and also table top. Obviously the cameras would have to rotate 180 degrees to be able to see what the gripper was up to. Also for floor pickups the tilt might have to be able to handle a reasonable downward "look" without being too hard on the servo.

There were also some other tweaks. A 6 volt regulator is now inlined into a servo extension cable and the regulator is itself bolted to some of the channel. Nice cooling, and it means that the other end of that servo extension can take something like 7-15v and it will give the servo the 6v it wants. That is actually using the same battery pack as the drive wheels (8xAA).

One thing that might be handy for others who find this post, the BeagleBone Black Case from sparkfun attaches to Actobotics channel fairly easily. I used two cheesehead m3 nylocks and had to force them into the enclosure. The nylocks lined up to the Actobotics channel and so the attachment was very simple. You'll want a "3 big hole" or more bit of channel to attach the enclosure to. I attached it to a 3 bit holer and then attaced that channel to the top of Terry with a few threaded standoffs. Simplifies attach and remove should that ever be desired.

I know I need slip rings for the two USB cameras up top. And for the tilt servo as well. I can't use a USB hub up top because both the USB devices can fairly well saturate a USB 2.0 bus. I use the hardware encoded mjpeg from the webcam which helps bandwidth, but I'm going to give an entire USB 2.0 bus to the Kinect.

October 31, 2014 08:27 AM

October 21, 2014

Adrian SuttonSo you want to write a bash script…

Before writing any even half serious bash script, stop and read:

Any other particularly good articles on writing reliable bash scripts that should be added to this list?

October 21, 2014 02:43 PM

October 15, 2014

Ben MartinSliding around... spinning around.

The wiring and electronics for the new omniwheel robot are coming together nicely. Having wired this up using 4 individual stepper controllers, one sees the value in commissioning a custom base board for the stepper drivers to plug into. I still have to connect an IMU to the beast, so precision strafing will (hopefully) be obtainable. The sparkfun mecanum video has the more traditional two wheels each side design, but does wobble a bit when strafing.


Apart from the current requirements the new robot is also really heavy, probably heavier than Terry. I'm still working out what battery to use to meet the high current needs of four reasonable steppers on the move.

October 15, 2014 01:23 PM

October 10, 2014

Blue HackersBlueHackers @ Open Source Developers’ Conference 2014

This year, OSDC’s first afternoon plenary will be a specific BlueHackers related topic: Stress and Anxiety, presented by Neville Starick – an experienced Brisbane based counsellor.

We’ll also have our traditional BlueHackers “BoF” (birds-of-a-feather) session in the evening, usually featuring some general information, as well as the opportunity for safe lightning talks. Some people talk, some people don’t. That’s all fine.

The Open Source Developers’ Conference 2014 is being held at the beautiful Griffith University Gold Coast Campus, 4-7 November. It features a fine program, and if you use this magic link you get a special ticket price, but the regular registration is only around $300 anyhow, $180 for students! This includes all lunches and the conference dinner. Fabulous value.

October 10, 2014 05:47 AM

October 08, 2014

Ben FowlerBloody LILO!

I replaced a disk in my server today. It has a fairly complicated disk setup, and I had to replace the first disk in the array, which also has a (non-RAID) boot partition. The disk replacement and array rebuild went fine. But I hit a snag, when trying to figure out how to successfully re-run LILO. Would somebody mind explaining to me how "Fatal: Incompatible Raid version information on /dev/md0

October 08, 2014 12:57 AM

October 04, 2014

Adrian SuttonDon’t Make Your Design Responsive

Every web based product is adding “responsive design” to their feature lists. Unfortunately in many cases that responsive design is actually making their product much harder to use on a variety of screen sizes instead of easier.

The problem is that common CSS libraries and grid systems, including the extremely popular bootstrap, imply that a design can be made responsive using fixed cut-off points and the design just automatically adjusts. In reality making a design responsive requires tailoring the cut off points so that the design adjusts at the points where it stops working well.

For example, let’s look at the bootstrap documentation and in particular the top menu it uses. The bootstrap documentation gets it right, we can shrink the window down right to the point where the menus only just fit and they stick to the full size design:

Menu remains full-size for as long as it can fit.

Menu remains full-size for as long as it can fit.

If we shrink the window further the menus wouldn’t fit anymore so they correctly switch to the hamburger style:

Menu collapses once it would no longer fit.

Menu collapses once it would no longer fit.

That’s the right way to do it. The cutoff points have been specifically tailored for the content. There are other stylistic changes as well as these structural ones – the designer believes that centred text works better for headings on smaller screens for example. That’s fine, they’re fairly arbitrary design decisions based on what the designer believes looks best. I’m focussed on structural issues.

To see what happens if we ignore let’s pretend that we add a new menu item:

Our "New Item" shown correctly when the window is wide enough.

Our “New Item” shown correctly when the window is wide enough.

But now when we shrink the window down, the breakpoint is in the wrong place:

The "New Item" menu no longer fits but causes incorrect wrapping because the break point is wrong.

The “New Item” menu no longer fits but causes incorrect wrapping because the break point is wrong.

Now the design breaks as we shrink the window because the break point hasn’t been specifically tailored to the content. This is the type of error that regularly happens when people think that a responsive grid system can automatically make their site responsive. The repercussions in this case aren’t particularly bad, but it can be significantly worse.

Recently Jenkins released a rewrite of their UI moving it to using bootstrap which has unfortunately gotten responsive design completely wrong (and sadly I’m yet to see anything it’s actually improved). Browser widths that used to work perfectly well with the desktop only site are now treated as mobile browsers and content wraps into a long column. What’s worse, the most useless content, the sidebar, is what’s shown at the top with the main content pushed way down the page. At other widths the design doesn’t fit but doesn’t wrap leaving some links completely inaccessible.

It would be much better if people stopped jumping on the responsive design bandwagon and just designed their site to work for desktop browsers unless they are prepared to fully invest and do responsive design right. Mobile browsers are designed to work well with sites designed for desktop and have lots of tools and techniques for coping with them. As you add responsive design and other adjustments designed for mobile you take responsibility for making the design work well everywhere from the browser onto yourself.  Using predefined breakpoints from a CSS library is unlikely to give the result you intend. It would be nice if CSS libraries stopped claiming that it will.

October 04, 2014 04:17 AM

September 26, 2014

Adrian SuttonSafely Encoding Any String Into JavaScript Code Using JavaScript

When generating a JavaScript file dynamically it’s not uncommon to have to embed an arbitrary string into the resulting code so it can be operated on. For example:

function createCode(inputValue) {
return "function getValue() { return '" + inputValue + "'; }"
}

This simplistic version works great for simple strings:

createCode("Hello world!");
// Gives: function getValue() { return 'Hello world!'; }

But breaks as soon as inputValue contains a special character, e.g.

createCode("Hello 'quotes'!");
// Gives: function getValue() { return 'Hello 'quotes' !'; }

You can escape single quotes but it still breaks if the input contains a \ character. The easiest way to fully escape the string is to use JSON.stringify:

function createCode(inputValue) {
return "function getValue() { return " +
JSON.stringify(String(inputValue)) +
"; }"
}

Note that JSON.stringify even adds the quotes for us. This works because a JSON string is a JavaScript string, so if you pass a string to JSON.stringify it will return a perfectly valid JavaScript string complete with quotes that is guaranteed to evaluate back to the original string.

The one catch is that JSON.stringify will happily JavaScript objects and numbers, not just strings, so we need to force the value to be a string first – hence, String(inputValue).

 

September 26, 2014 01:21 AM

September 22, 2014

Adrian SuttonSoftware is sometimes done

In Software is sometimes done Rian van der Merwe makes the argument that we need more software that is “done”:

I do wonder what would happen if we felt the weight of responsibility a little more when we’re designing software. What if we go into a project as if the design we come up with might not only be done at some point, but might be around for 100 years or more? Would we make it fit into the web environment better, give it a timeless aesthetic, and spend more time considering the consequences of our design decisions?

It’s an interesting question – if we had to get things right the first time, would we do a better job? If our design decisions were set in stone for all time would things be better?

The problem is, we’ve already asked this question and decided that in fact designing things up front and setting it in stone doesn’t work as well as releasing early and often with short feedback cycles so that we can adjust as we go. It’s waterfall vs agile and it turns out agile wins.

That said, there’s a difference between being rushing a sloppy job out the door and doing things well with an iterative cycle to adjust to learning.  An short feedback loop is there to let you learn and improve, not to let you release any old thing and get away with it. We need more software developed by doing the best job possible with the information available, combined with a short feedback cycle to gather more information and continually raise the stakes for what’s possible.

It can be romantic to look back and think that we used to do a better job because things were more permanent, that software used to be done, but it’s just not true:

When Windows 95 came out, it was done. Yes, there were some patches to it, but they were few and far between, and in general quite difficult to come by. But of course, then the Internet and App Stores happened in full force, and suddenly we decided that “Software is never done”. In some sense this is certainly true. There are always bugs to fix, things to improve, more features to add, unused features to remove — and of course, the SaaS model makes it all so easy. But I wonder if we’ve taken this a bit too far.

Windows 95 may have a been done, but Windows was not. Otherwise we’d still be running Windows 95. We’re kidding ourselves if we think that anyone at Microsoft ever thought that Windows 95 would be the last thing they ever released, that the OS would never change in the future.

Even if we consider Windows 95 as a standalone thing that is “done”, would you run it today? Of course not, by modern standards it’s horrible. The same is true of every other piece of unmaintained software I can think of, it may have been good enough or even the best for a long time after it became unmaintained but eventually it falls behind. Eventually it stops being “done” in the sense that it doesn’t need any further work and becomes “done” in the sense that no one uses it anymore.

 

September 22, 2014 12:26 AM

September 21, 2014

Adrian SuttonCI Isn’t a To-do List

When you have automated testing setup with a big display board to provide clear feedback, it’s tempting to try and use it for things it wasn’t intended for. One example of that is as a kind of reminder system – you identify a problem somewhere that can’t be addressed immediately but needs to be handled at some point in the future. It’s tempting to add a test that begins failing after a certain date (or the inverse, whitelisting errors until a certain date). Now the build is green and there’s no risk of you forgetting to address the problem because it will fail again in the future. Perfect right?

The problem is that it sacrifices the ability to easily isolate the cause of a failure. You can no longer revert changes to get back to a working baseline because the current time is a factor in whether your tests pass or not. You can no longer run historical builds through CI which you may need to do as part of supporting clients on older versions.

It also inevitably leads to false failures as the time points are almost always arbitrary and estimated time lines for completing tasks often slip. So the board goes red and the response is to just suppress it again.

Continuous integration isn’t there to remind you to do something – it’s there to tell you if your build is ok to ship to production or not. It doesn’t make sense to say that a build is ok to ship to production now but not ok to ship in a week’s time. If production is going to blow up in the future because of a bug in the code you want to the board to be red now, not when production actually blows up. And if the client is prepared to accept the risk and leave the problem unfixed then it’s not yet a requirement and doesn’t need tests asserting it – just put a card in the backlog for the client to prioritise and play when required.

If you need to remember to do something, either put a task in the backlog or on the current story board to do it or put a reminder in your calendar. Keep CI focussed on telling you about the state of your code right now – if it’s broken it should be red, if it’s not broken it should be green. Not broken until next week should never be an option.

 

September 21, 2014 11:59 PM

September 16, 2014

Blue HackersQuitting cigarettes

Why is it having mental illness and smoking go hand in hand. I’m looking closer to getting a foot in the door with my dream job doing something I love. I also plan to quit smoking again with my fiance and two friends. It’s not going to be easy but I went seven months not smoking. I really don’t enjoy it and it costs too much. That and every cigarette takes eight minutes off my life. I’ll keep you readers of bluehackers posted about the job. I’m excited..

September 16, 2014 05:03 PM

September 14, 2014

Blue HackersMore exercise and happiness

So I managed to last one hour the.other say doing boxing related exercises. After I had cooled down I felt great. Those endorphins are so good for me. I want more but I’m not good at wanting to exercise..

September 14, 2014 07:55 PM

September 10, 2014

Blue HackersLosing weight

Today I officially have begun trying to lose weight. Medications and poor lifestyle choices have put me at very.high risk of diabetes. I also have high cholesterol. Not good. I did 30 minutes of intense boxing exercise. Thanks Ben S. He’s my best man for my wedding and a friend for roughly 8 years.

September 10, 2014 08:39 AM

Ben MartinGetting a feel for Metapolator and Cascading Parameter Values


Metapolator is a new project for working on font families. It allows you to generate many fonts in a family from a few "master" cases. For example, you could have a normal font, modify it to create a rather bold version and then use metapolator to generate 10 shades on the line between normal and bold.

I have recently been reading up on metapolator and how to hack on it. So this post describes my limited understanding of what is a fairly young project. So warnings inline with that are in place; errors are my own, the code is the final arbitrator etc.

Much of the documentation of Metapolator involves the word Meta, so I'm going to drop it off this post as seeing it all the time removes its value in terms of semantic add.

At the core of all of this polating are parameters. For example, after importing a font and calling it "normal" you might assign a value of 100 to xheight. I am assuming that many of the spline points in the glyph (skeleton) can then be defined in terms of this xheight. So the top of the 'n' might be 0.95*xheight.

A system using much the same syntax as Cascading Style Sheets is available to allow parameter values to be set or updated. Because its parameters, its called CPS instead of CSS. So you might select a glyph like 'glyph#n' and then set its xheight to be 105 instead.It seems these selectors go right down to the individual point if that's interesting.

In order to understand the CPS system I decided to start modifying a basic example and trying to get specific values back out of the CPS system. The description of this is mainly to see if my playing around was somewhat along the lines of the intended use of the CPS system.

For this I use a very basic CPS

$ cat /tmp/basic.cps
 
* {
     label : 1234;
     xx    : 5;
}

glyph#y penstroke:i(0) point:i(0) {
     xx    : 6;
}

$ metapolator dev-playground-cps /tmp/basic.cps

The existing dev-playground-cps command makes its own fonts up so all you need is a CPS file that you want to apply to those fonts. In my case I'm using two new properties, the label and 'xx' which are of type string and number respectively.

A default value of 3 is assigned to xx for all points and each point and glyph get a unique label during setup.

I found it insightful to test the below with and without selectors that modify the 'xx' property in the CPS, and at both levels. That is, changing the xx:5 and xx:6 in the above CPS to be xxno1:5 and xxno2:6 and seeing what the below printed out. The xx.value makes the most sense to me, show me the default value (3) if nothing is set in any CPS to override it or show me what the CPS has set if it did any override for the point.

element = controller.query('master#heidi glyph#y penstroke:i(0) point:i(0)')
console.log('element:', element.particulars);
console.log('element:', element.label);
console.log('element:', element.xx);
computed = controller.getComputedStyle(element)
console.log('label: ' + computed.get('label'));
console.log('xx.base   : ' + computed.getCPSValue('xx'));
console.log('xx.updated: ' + computed.getCPS('xx'));
console.log('xx.value  : ' + (computed.getCPS('xx') ? computed.getCPS('xx') : computed.getCPSValue('xx')));


The above code is also pushed to a branch of my mp fork at cps.js#L213

I found that a little tinkering in StyleDict.js was needed to get things to operate how I'd expected which is most likely because I'm using it wrong^tm.
The main thing was changing getCPSValue to test for a local entry for a parameter before using the global default StyleDict.js#L93.

I might look at adding a way to apply a CPS to a named font and showing the resulting font as pretty json. For reference this will likely have value and valuebase showing the possibly CPS updated value and the value from the original font respectively.

September 10, 2014 05:03 AM

September 09, 2014

Blue Hackers7 Things You Shouldn

http://www.huffingtonpost.com/2014/02/17/things-not-to-say-to-some_n_4781182.html

If you’ve ever suffered from severe anxiety, you’re probably overly familiar with the control it can have over your life. And you’re not alone — it affects a sizeable percentage of the population.

Learning more about anxiety and stress can be really helpful.

September 09, 2014 11:20 PM

September 07, 2014

Blue HackersAnxiety Attack felt like Heart Attack :-(

I had my first anxiety attack the other day. My lady was off picking a wedding dress. I was looking after our son whom was asleep and it just came on. I got our neighbour who luckily was home that day in his garage working on his cars. It felt like a heart attack. It stopped me from moving my right shoulder properly. I guess now I know I need help, more than a psychiatrist can help with (as they only prescribe medication if you did not know already). I’m looking into a Physiologist. I pay for private health with an awesome company called ahm. I don’t ever want to return to needing to go into hospital though. This will be a short post, but never discredit anyone who says they suffer anxiety as it’s a serious thing that causes actual physical pain. It wasn’t until the GP gave me the all clear I felt better again. Oh, and now I wear glasses as I’m short sighted from many years of looking at computer screens.

September 07, 2014 01:22 AM

September 02, 2014

Blue HackersFollow up

I have a mental illness. From consuming weed for those years. I have major depression & anxiety. I also get paranoid about germs/what people think of me/my health. I think sometimes I make things worse for myself. The best thing that has ever happened is meeting my lovely Becci. She definitely has taken my unwell self and made me well. I had long quit the weed. But recovering from heavy usage takes the brain a while. Years in fact. I have been in and out of work. Fired for having a mental illness (CBA) and more recently as in last year my mother doused herself in gasoline and set herself alight. I haven’t walked easy street. But I try to keep my head up and wits about me. I have a family to care for an my grandparents who helped raise me quite a bit. Well a lot.

September 02, 2014 01:00 PM

Blue HackersA bit about “jlg”

I’m 29, Male from Sunny Brisbane (sunny at the moment). I was born in Adelaide, SA, Australia in a hospital called Modbury hospital. It’s still there. I have one son. I also have a daughter who by law I am not legally allowed to see as I am not on the birth certificate but I’m 99.99 percent sure I’m her father. Her name for the record is Annabel. I’m unsure of spelling. Our son (mine and Bec’s) is being raised with so much love and care and I only wish the same for my daughter. I should mention I’m no street thug or criminal. I actually have no criminal record. I survive on $500AUD a fortnight currently as of right this moment. Which is not much for a overweight male. I don’t really have any vices per say but I don’t use computers so frequently at my age of 29 I have short sighted vision. I should mention I don’t have diabetes.

My story is a common one I think? Man meets woman (Steve Cullen) my bio dad. Has sex, finds out has baby and does runner. I have to this day never met my bio dad. I have seen a photo when I was younger. He was some bald dude. I don’t think much of  him and I actually don’t speak much of him. My mother was awesome and she still is, albeit after her last suicide attempt. I will get to this later. I should mention I was a heavy smoker of cannabis from 2003 to 2007.  I attended a place called HUMBUG. Ironically it was a friend I made called Daniel who got me into marijuna. He would write code, I’d hack computers. We kind of worked as a team. Because the trust was set by us consuming so much (I will call it weed). I’m not proud of my drug usage but little did I know my Mum was a heavy user of other “drugs”. She was also in the army. For roughly 6 years she taught Army service men and women about english/maths etc. As she was a UniSA educated teacher. I on the other hand am self taught. From a young age I was somewhat unwillingly writing phish attacks but for chat websites. I would call these fake logins via HTML. I did this all roughly during High School. I admit freely that the school network was a joke. That doesn’t mean I abused it. I just made sure I couldn’t use their computers by inputting ASCII characters alt+256 the invisible char into the login screen I was using. It was Novell and it would not log in if you entered this char quickly without teacher looking then you’d get moved say to a girl you liked and flirt with her…. :-o)

For the sake of keeping things realistic and true I was actually very frigid. I dated some real nice girls I just couldn’t even get any courage to do anything more than sitting near them. That obviously changed in my final few years. I have always been anti-authority because I actually had 0 parent supervision for most of my teens. I would sit infront of my IBM Aptiva listening to god awful rap music I won’t mention online. I would sit reading RFCs, reading how to write HTML then thinking outside the box and doing what’s now called XSS (aka cross site scripting). Yahoo was one I did, obviously I have never been the type of guy to go hey here’s my handle and here I am LEA track me down. I prefer doing these things without an identity I always have, always will. I am a free lance individual. Whilst I sympathize with various well known hacktivists. I do not go out of my way to engage them.

I think this is enough for now…I will update soon. It’s 10.37pm I know not that late but all this writing has exhausted me. More later.

September 02, 2014 12:37 PM

August 28, 2014

Ben MartinTerry is getting In-Terry-gence.

I had hoped to use a quad core ARM machine running ROS to spruce up Terry the robot. Performing tasks like robotic pick and place, controlling Tiny Tim and autonomous "docking". Unfortunately I found that trying to use a Kinect from an ARM based Linux machine can make for some interesting times. So I thought I'd dig at the ultra low end Intel chipset "SBC". The below is a J1900 Atom machine which can have up to 8Gb of RAM and sports the features that one expects from a contemporary desktop machine, Gb net, USB3, SATA3, and even a PCI-e expansion.


A big draw to this is the "DC" version, which takes a normal laptop style power connector instead of the much larger ATX connectors. This makes it much simpler to hookup to a battery pack for mobile use. The board runs nicely from a laptop extension battery, even if the on button is a but funky looking. On the left is a nice battery pack which is running the whole PC.

An interesting feature of this motherboard is no LED at all. I had sort of gotten used to Intel boards having blinks and power LEDs and the like.
There should be enough CPU grunt to handle the Kinect and start looking at doing DSLAM and thus autonomous navigation.

August 28, 2014 12:15 PM

August 27, 2014

Daniel DevineMailbag: Windows Developer Program for IoT

/blog_images/galileo/6.jpg

So yeah, this is not something you'd expect to see here right?

Basically, I just heard that Microsoft was giving away free Intel Galileo boards and I signed up for shits and giggles and did not really expect to be granted one.

Part of the signup process (which I think is still open) is stating what you plan to build with the board. I can't remember exactly what I wrote, but the one thing I do remember mentioning was investigating security related problems and solutions in the Internet of Things (IoT) space. A month or so later and I still find the topic interesting so that's what I'm going to do.

Read more…

August 27, 2014 07:53 AM

August 26, 2014

Blue HackersAbout your breakfast

We know that eating well (good nutritional balance) and at the right times is good for your mental as well as your physical health.

There’s some new research out on breakfast. The article I spotted (Breakfast no longer ‘most important meal of the day’ | SBS) goes a bit popular and funny on it, so I’ll phrase it independently in an attempt to get the real information out.

One of the researchers makes the point that skipping breakfast is not the same as deferring. So consider the reason, are you going to eat properly a bit later, or are you not eating at all?

When you do have breakfast, note that really most cereals contain an atrocious amount of sugar (and other carbs) that you can’t realistically burn off even with a hard day’s work. And from my own personal observation, there’s often way too much salt in there also. Check out Kellogg’s Cornflakes for a neat example of way-too-much-salt.

Basically, the research comes back to the fact that just eating is not the point, it’s what you eat that actually really does matter.

What do you have for breakfast, and at what point/time in your day?

August 26, 2014 02:00 AM


Last updated: January 26, 2015 10:15 PM. Contact Humbug Admin with problems.