I cannot believe that an entire year has gone by already, and yet another Maker Faire has come and gone!

It was amazing to see what everybody had on show, and once again it was even bigger than the year before which is absolutely amazing seeing as it is the biggest Maker Faire in the UK!

This year we had some flower badges, snowman badges and Space Buddy kits on sale, and I think a bit of clarification is needed for everybody about that last one. In reality the Space Buddies on sale at the Maker Faire should have been labelled as “Space Buddies Lite”, as they were the same design as the ones I had on my recent Kickstarter campaign, however they are in fact different. The Lite edition comes pre-programmed with 5 tunes, RGB LEDs that flash while the song is playing, a button to change the tune and a button to play the selected tune - that’s it. Programmed in Arduino (with some pure AVR C code mixed in), it will be going up on GitHub soon for everybody to download, view, change, and enjoy. The Kickstarter campaign uses the same PCB design, however it has Infrared data transfer, so the kits speak to each other along with an extra special feature that I have not revealed just yet.

On the day at this year’s Maker Faire some of you unfortunately experienced some issues with the Space Buddies kits, which we managed to fix on the space (or replaced with a working one, depending on how busy we were at the time), I think another explanation is needed for this. The PCBs (Printed Circuit Boards) for these specific kits only arrived with me in the afternoon of the day before, and I was pre-soldering all the surface mount components (the really tiny microchip and resistors) by hand on each board until 5 AM on Saturday morning, preparing as many of them for the faire as I could. Unfortunately I pushed myself beyond my limits, was tired and made mistakes with the boards (more specifically, did not solder all the legs on the microchip to the boards), and unfortunately my helpers were volunteers which did not know how to debug and fix my mistakes, so it was up to me to fix them on the day as and when they happened. I know it is no excuse for the problems, and that I should have tried to have had everything prepared much earlier on, a lesson well learned but I thought it would be worth explaining for those of you experiencing trouble. None of the microchips were preprogrammed, again due to lack of time beforehand so they were programmed on the day after the boards being assembled. Now from what I was informed at the end of the day, that perhaps one or two of you may have been sold some of these kits to assemble at home. Now unfortunately unless you have a 6 pin ISP programmer, these will simply not work. If you are in fact one of these people, please do contact me via email and I will work out a solution with you. There is also the vague possibility that you may have the previous issue as well, so unless you feel comfortable with surface mount soldering, I would really like to send you a replacement PCB with a pre-programmed chip.

Everybody who enquired about customized kits, I am more than happy to make customized kits with practically any design of your choosing, however it does take me time to design these, so a compromise has to be had in that there either needs to be a minimum order number to keep the cost down or alternatively each kit would be marked at a higher price, the physical size is also another aspect to take into account. I am not talking about hundreds of kits however, so do not be put off by me asking for a minimum order, I do my best to be as reasonable as possible, so if you are interested in customized kits with your school emblem or anything else, please drop me an email and we can discuss this further.

Additional workshops will be coming up, and once I have confirmed details about them I will be adding the details up here. I also plan on starting an email subscription list (easy to unsubscribe, and not shared with any third parties) for anybody interested in regular workshops in the Brighton area. If you would like to have a private workshop run for a group of people, I am open the idea of it and do have my own public liability insurance, so please contact me via email.

More kits will be going on sale very soon, of varying difficulties, so please check back. Right now I am concentrating all my efforts in completing everything for my Kickstarter supporters, they are my top priority, however I am making very good progress on that and should hopefully have more kits going up for sale very soon, along with an updated website that with improved documentation/instructions for each kit.

Hopefully that answers a number of questions and addresses any concerns that anybody may have had. If I missed out on anything that you would like more details on, please either leave a comment or contact me via email. Thank you again for all your support at Brighton Mini Maker Faire, and I hope you all had a great day!

I have just launched my first Kickstarter campaign for an electronics kit which teaches more than just soldering.

001

The kit will teach you regular soldering, as well as surface mount. It also comes with a booklet teaching you everything you need to know about basic circuits, sound waves, controlling RGB LEDs, data transfer over infrared LEDs as well basic understanding of programming in C! The kit is completely open source, and the programming headers are exposed so you can completely change the game into whatever you want it to be!

I am basically looking to make a well rounded educational item, and if I can reach at least £1000, I will be speaking to a professional illustrator to ensure the booklet looks that little bit more professional. I have a lot of hopes running on this project, and really hope it takes of well! Who knows, it might even end up on sale in some stores, but here’s to wishful thinking!

Anyway, I would love some support from anybody who can and even if you are unable to support my campaign, please share it with your friends!

https://www.kickstarter.com/projects/297710079/space-buddies

An online friend @skyberrys asked on Twitter a very interesting question.

Hey Maker friends, how frequently do you share progress reports?

I thought that the 140 character limit on Twitter was a bit too short to form a reply, on top of which I thought it was a very interesting question so thought it was worth turning into a blog post.

Back in the year 2000, I had just started to get quite successful with my programming abilities and knew that it would be more than a hobby for me as this was the year that I had created and sold my first game engine. I had been programming from a very young age, originally starting with QBasic, moving onto Pascal, Visual Basic, and then just progressing on from there.

One of the things I had started to do a couple years after this was to publish blog posts with progress reports of either projects I was working on, or sharing with the world some clever code I had written. At one point I was receiving a lot of traffic to the blog with code snippets and I often had people emailing me directly, asking for help. Strangely, I had a separate blog for each type of content I was publishing and one of them for one of my bigger projects at the time received no real visitors, but I still published a minimum of 4-5 blog entries per week on it. Now these blogs had no code that I was sharing, nor anything of interest to anybody else (unless they had interest in using my project), it simply had screen shots, doodles, check lists of known bugs, fixed bugs, features required, features added, and an explanation of what I had achieved on the project at the end of each day. It was more for me than for anybody else, and because I had this blog, I could personally see how fast my work was progressing, which gave me both a sense of achievement as well as the will to continue working on it. I actually enjoyed working on this project, and loved to find and fix the bugs I found in it! In all honesty, I think this was probably the most regular progress reports I had published, and I actually miss that.

These days I start a lot of projects, and either finish them really quickly or get bored of them, put them aside and work on something else. By doing this, and not talking about it much online with progress reports, I do not feel the need to pick them back up and finish them off any time soon, and this is something I am looking to fix this year. I have made 2014 the year of getting things done, I have given myself an actual list of things I want and need to achieve by the year end, and am focusing all my efforts into doing just that. Some of them are easier than others, but I am still pushing through them all.

I needed to get myself some professional business cards so I can try appear more professional, and I have done that with the help of Mair Perkins. I need to update my website to be cleaner, more professional, responsive, mobile & and tablet friendly, as well as add a store so that I can sell directly rather than via third parties such as Tindie and Etsy exclusively (I will still use them, but prices will be cheaper from me directly to draw more traffic to me) - and I am working on this at present. I also have a list of electronic projects I need to finish and add to my new store once it is up, and I will be posting very regular updates once I start on these so that I can make sure that they get done and that people know what I am working on. There are a number of other things on my list, but I am not going to list them all as I feel I got the point across.

Progress reports, for me, should be very regular. Once at the end of every day that you have been working on something, even if you have nothing to actually show people, even if all you did was find 100 bugs which you have no idea how to fix, you should write about it. Give yourself a record of everything that you have done each day, if not to share with other people, then for yourself so that you can appreciate that progress has been made, no matter how small it may be some days.

I haven’t been posted often enough this year! Let’s get out of that bad habit by starting with some of the things I have been working on. Currently I am thinking of making some further tweaks to my web site, as I am still not really happy with it yet ( I won’t go into full detail though ). Anyway, as an excuse to improve my knowledge around CSS3, I thought I would try my hand at converting my logo into pure CSS.

  • Attempt 1 was the way I originally knew (which took the longest funnily enough), with multiple HTML elements and styling upon each of those.
  • Attempt 2 was with a single HTML element, and a LOT of CSS stylings upon it, making use of multiple gradients, and other tweaks to trick the browser into giving me what I wanted.
  • Attempt 3 was with SVG, which was the easiest to do and by far looks the best, on top of which has the benefit of being very easy to scale for bigger/smaller display sizes.

See the Pen Cyber-Lane Logo by Justin Nel (@Cyberlane) on CodePen.


I also got my hands on an Espruino recently, so will be publishing up a lot of code for connecting this board to a number of useful modules I own and may use for much more exciting kits in the near future!

In my last blog post I started to show off something I threw together in OpenSCAD in a few minutes, and I have been playing around with the application a bit more since then. So I had a rough idea in my head of some furniture I wanted to build to improve my bedroom, and since I haven’t touched a CAD application in quite a while, doing it in code just makes sense to me.

Below you can see my updated code where I have basically made use of variables, modules, and color. Personally, I found it very easy and straight forward to follow, however if anybody reading this is struggling to understand it and is genuinely interested, I would be more than happy to create another blog post in the near future explaining how it all works (essentially a tutorial).

// Bed Variables
BedWidth = 156.7;
FooterHeight = 30;
BedBoardThickness = 5;
ThickerBedBoard = BedBoardThickness + 0.2;
InnerSideBeamHeight = 12.5;
InnerSideBeamThickness = 4.5;
UpperSideBeamWidth = 7.5;
SideBeamLength = 201.2;
HeadBoardHeight = 78;
// Shelf Variables
CabinetDepth = 35;
ThinBoard = 3;
ThickBoard = 5;
ShelfSpacing = 20;
TvAreaHeight = 60;
ShelfTotalHeight = 80;
ShelfWidth = (BedWidth-(ThinBoard*2)-ThickBoard)/2;
SupportHeight = FooterHeight-BedBoardThickness-InnerSideBeamHeight;

module bed_frame() {
        union() {
                translate([0,0,0]) {
                        cube([BedWidth,ThickerBedBoard,FooterHeight]);
                }
                translate([BedWidth-UpperSideBeamWidth,ThickerBedBoard,FooterHeight-BedBoardThickness]) {
                        cube([UpperSideBeamWidth,SideBeamLength,BedBoardThickness]);
                }
                translate([0,ThickerBedBoard,FooterHeight-BedBoardThickness]) {
                        cube([UpperSideBeamWidth,SideBeamLength,BedBoardThickness]);
                }
                translate([UpperSideBeamWidth-InnerSideBeamThickness,ThickerBedBoard,(FooterHeight-BedBoardThickness)/2]) {
                        cube([InnerSideBeamThickness,SideBeamLength,InnerSideBeamHeight]);
                }
                translate([BedWidth-UpperSideBeamWidth,ThickerBedBoard,(FooterHeight-BedBoardThickness)/2]) {
                        cube([InnerSideBeamThickness,SideBeamLength,InnerSideBeamHeight]);
                }
                translate([0,SideBeamLength+BedBoardThickness,0]) {
                        cube([BedWidth,BedBoardThickness,HeadBoardHeight]);
                }
        }
}

module tv_stand_shelf() {
        cube([ShelfWidth,CabinetDepth-(ThinBoard*2),ThinBoard]);
}

module tv_stand_mid_shelf() {
        cube([BedWidth-(ThickBoard*2),CabinetDepth,ThickBoard]);
}

module tv_stand_long_shelf() {
        cube([BedWidth,CabinetDepth,ThickBoard]);
}

module tv_side_panel() {
        cube([ThickBoard,CabinetDepth,ShelfTotalHeight+TvAreaHeight+1]);
}

module tv_stand() {
        union() {
                // Top Board
                translate([0,0,TvAreaHeight+ShelfTotalHeight+(ThinBoard*2)]) {
                        tv_stand_long_shelf();
                }
                // TV Base Board
                translate([ThickBoard,0,ShelfTotalHeight+ThinBoard]) {
                        tv_stand_mid_shelf();
                }
                // Bottom Board
                translate([0,0,0]) {
                        tv_stand_long_shelf();
                }
                // TV Backing
                translate([0,0,ShelfTotalHeight+(ThinBoard*2)]) {
                        cube([BedWidth,ThinBoard,TvAreaHeight]);
                }
                // Foot Board
                translate([0,CabinetDepth-ThinBoard,ThinBoard]) {
                        cube([BedWidth,ThinBoard,ShelfTotalHeight]);
                }
                // Left Panel
                translate([0,0,ThickBoard]) {
                        tv_side_panel();
                }
                // Right Panel
                translate([BedWidth-ThickBoard,0,ThickBoard]) {
                        tv_side_panel();
                }
                // Mid Divider
                translate([(BedWidth-ThickBoard)/2,0,ThickBoard]) {
                        cube([ThickBoard,CabinetDepth-ThinBoard,ShelfTotalHeight]);
                }
                // Left Shelves
                translate([ThinBoard,ThinBoard,ShelfSpacing]) {
                        tv_stand_shelf();
                }
                translate([ThinBoard,ThinBoard,(ShelfSpacing*2)+(ThinBoard)]) {
                        tv_stand_shelf();
                }
                translate([ThinBoard,ThinBoard,(ShelfSpacing*3)+(ThinBoard*2)]) {
                        tv_stand_shelf();
                }
                // Right Shelves
                translate([ShelfWidth+ThickBoard+ThinBoard,ThinBoard,ShelfSpacing]) {
                        tv_stand_shelf();
                }
                translate([ShelfWidth+ThickBoard+ThinBoard,ThinBoard,(ShelfSpacing*2)+(ThinBoard)]) {
                        tv_stand_shelf();
                }
                translate([ShelfWidth+ThickBoard+ThinBoard,ThinBoard,(ShelfSpacing*3)+(ThinBoard*2)]) {
                        tv_stand_shelf();
                }
        }
}

module tv_stand_support() {
        union() {
                translate([ThickBoard,CabinetDepth+ThickerBedBoard,0]) {
                        cube([BedWidth,ThickBoard,SupportHeight]);
                }
                translate([0,0,0]) {
                        cube([ThickBoard,CabinetDepth+ThickerBedBoard+ThickBoard,ThickBoard]);
                }
                translate([BedWidth+ThickBoard,0,0]) {
                        cube([ThickBoard,CabinetDepth+ThickerBedBoard+ThickBoard,ThickBoard]);
                }
        }
}

translate([5,35,0]) {
        color("Brown", 0.6) {
                bed_frame();
        }
}
translate([5,0,0]) {
        color("Green", 0.4) {
                tv_stand();
        }
}
translate([0,0,0]) {
        color("Blue", 0.4) {
                tv_stand_support();
        }
}

Once again, here is what the code has generated for me.

001