A Greening Thumb for Health
One of the things that has come up in the last few years regarding my health has been my dropping Vitamin D levels. This year it has plummeted to as low as I’ve had - and supplements don’t seem to do enough.
So I decided to try my hand at gardening this past year and a bit - and there have been vast improvements in my Vit D levels, fortunately. :)
This is how it looks after one year (This area used to have zero green, since it’s just all bricks)
It’s been an interesting journey. The first things I had planted were mainly culinary herbs, such as Vietnamese Mint, Spring Onion, Peppermint and Spearmint, and they survived the winter of 2016, and I got to see some bloom in spring, along with some stuff like Dillweed.
Spring onion flowers look so interesting! I managed to gather seeds too - I wonder if they would germinate...
Dill flowers are also super interesting, like little explosions of fireworks! Had the fortune of seeing a Hoverfly too. :)
(Feed Your Inner Gardener: Some hoverflies are beneficial insects for gardeners, as their larvae feed on other unwanted garden pests such as aphids.)
Want to know how things are this summer? Read On.
This summer they have continued to grow plenty! I once got a cutting for Rice Paddy Herbs, and, lacking spare pots, I ended up just putting it in a can (with holes in it)! Surprisingly, it’s definitely outgrown its home!
This Year
So after a year, the garden’s pretty healthily grown! So far, a lot of it has been done through cuttings, or from seedlings bought from the local nursery. This time around I have decided to try non-culinary herbs, and move to flowers, fruits (and a vine), as well as growing from seed.
I am curious to see what will come of this next phase of gardening in terms of my health, as well as learning more about plant biology!
For those who are interested in seeing plants grow in a time lapse, watch this space! I have some in progress now, just out of curiosity of how these all behave as they grow. :)
1 note
·
View note
Setting up a SIP intercom system with Cisco 79xx Phones
So a while ago I purchased some old Cisco IP Phones from an office that was clearing out its old stuff. I was interested in setting up some phones around the house as a kind of internal intercom system.
After a week of fiddling and finding out whatever info I could about the models I had my hands on (7941, 7942, and 7962), I finally have them calling each other and working with FreeSWITCH.
I also managed to get images appearing on the screen too! Nifty! Other images I put together for other phones can be found here.
Another great thing is it also breathed some life into my old android phone too - it’s now a wireless intercom, using CSipSimple. Combined with an audio loopback on my PC, I can stream my desktop’s audio straight to a conference call using MicroSIP - now I can afk and still be listening to podcasts, talks, etc...
I certainly learned new skills, and a little about how this phone stuff works!
(Feed Your Inner Techician: For more info on some things I learned in setting this all up, read on below)
I certainly had a bunch of pages to look through, though some provided more useful info than others - I can’t remember all of them haha. But I’ve put a list of some useful links for anyone who’s interested.
Note that this is by no means a complete guide! It’s just some useful info I learned, and I’m also writing it as a means to consolidate the stuff I came across. :)
Key things in my set up:
Something that works as a SIP Server (i.e. FreeSWITCH, or Asterisk both open-source).
Software SIP Client(s) (such as CSipSimple (Android), MicroSIP (Windows), Linphone (cross platform, mobile and desktop versions available) - I used MicroSIP for Windows because it’s portable/no installation required)
Hardware SIP Clients (Cisco 7962, 7942, and 7941 IP Phones) - mine didn’t come with power cords as they were Powered over Ethernet and none of my devices supplied PoE, so I got some random, no-name PoE Injectors I searched up on eBay.
(Only for the Hardware SIP Clients) A TFTP Server such as Tftpd32 (or Tftpd64, which is the 64bit version), which will be sending configurations to the Cisco Phones when they boot up.
Ethernet Cables :P
Tftpd32/64 and Cisco Firmware Files
This little standalone program serves out things like the firmware files for the 7941/7961 or the 7942/7962 phones. They also have the firmware for various other models too.
This is also used to serve out the configuration files to the phones - In my googling about configuration files, I learned that some models use a .cnf extension and format (which is older, I think), and others use an XML format.
Fortunately the configurations for the 79x1 and 79x2 both used the XML layout for their configurations, so I didn’t need to pick up 2 config layouts/structures, though I suspect they would follow a similar structure/pattern.
Tftpd and its DHCP setting
I recall a few guides I read on getting Cisco SIP stuff set up saying that you’d need to turn on Tftpd′s DHCP feature, as well as setting something like option 150 and providing an IP address in Hexadecimal...
For some reason I couldn’t get that working (then again, the posts were like.. 2009? to.. something like 2013?), and the phones weren’t getting IP’s set from Tftpd’s DHCP service.. so I just used my router’s DHCP service instead - in its settings it had a field labelled “TFTP Server Name (Option 66)”, once I filled that in, the phones managed to connect and download their firmware (I was using v9.2.1).
Initially these were using Cisco’s “SCCP” protocol, which I think both FreeSwitch and Asterisk both support, but by the time I figured that out I already had put the SIP firmware onto the phones already. :P
So.. Apparently I didn’t need to use Option 150? Not sure why, but it all seemed to work. Just something to keep note of if you want to try and run into a similar problem even if you follow the guides out there which talk about using option 150.
Cisco 7941/7961, 7942/7962 Configuration Files
I found that the Tftpd server’s logs show that the phones require multiple files when they boot. This list doesn’t include the firmware files and therefore assumes the firmware is already loaded on the phone.
(Note: If the phone receives a configuration which defines a different firmware version than what it has previously loaded, it will fetch it from the TFTP server and flash itself anew. Otherwise, I’m pretty sure if it times out for whatever reason, it will continue to boot to the last firmware that was loaded on it)
The files it seems to ask in the Tftpd log are
CTLSEP<Phone’s MAC Address>.tlv
ITLSEP<Phone’s MAC Address>.tlv
SEP<Phone’s MAC Address>.cnf.xml
dialplan.xml
What I’ve found is that CTL relates to a “Certificate Trust List”, according to this article from Cisco. The phone seems to function fine without it (for SIP at least, dunno about SCCP), and I ended up just making a blank file in the TFTP server’s folder to avoid seeing “Error file not found” logs coming up.
As for ITL, I couldn’t quite figure out what that was - maybe another Trust List? Since I couldn’t get info on it in a reasonable amount of time, I ended up just making a blank file for that too - haven’t seen any problems coming up from this either. :P
The last two, (the XML ones) are probably the main things that affect the phone’s functionality in my case, since the SEP<MAC>.xml file contains all the configuration info such as the SIP server’s location (eg: an IP Address), ports, preferred codecs for calls, auto-pickup feature, speed dial buttons, text that shows up on its screen, extension, authentication, and plenty of other things.
SEP<MAC>.cnf.xml
This article at Brain Overload > SEPXXXXXXXXXXX.cnf.xml nicely documents a lot of settings in the XML file. Definitely bookmark or save if you want to tinker with the settings and want a reference.
I just tinkered with settings for a while until I got something that was working in terms of display and whatnot. One thing I couldn’t figure out for days was why they wouldn’t “register” with FreeSWITCH. Phones need to “register” to the SIP Server so that when someone calls an extension, the server knows ‘where’ to forward the call stream to (i.e. IP address, etc.). If a phone doesn’t register, a caller gets sent straight to Voicemail.
So during these troubleshooting days, I was able to do the following:
Make calls from the phone (eg: calling Voicemail, trying to dial an extension, dialing 9198 and hearing Tetris music streamed back from FreeSWITCH, etc... the FreeSWITCH log/window shows it’s all working.
Leave voicemail for an extension
Call voicemail and successfully retreive/play back voice mail for extensions
I just couldn’t receive calls - FreeSWITCH’s logs shows “Originate Failed. Cause: USER_NOT_REGISTERED”, which also coincides with the phones constantly showing the status “Registering”.
Turns out it had to do with the section in bold below (example code from Brain Overload)
...
<sipLines>
<line button="1">
<featureID>9</featureID>
<featureLabel>100</featureLabel>
<proxy>192.168.3.46</proxy>
<name>100</name>
...
For some context on this section, “<sipLines>“ starts the section that defines the different front buttons to the right of the screen on the 79xx phones - and is required for the phone to function.
All the guides that were top hits in my googling always had an IP Address in the <proxy> tags. Makes sense, of course - Line 1 will talk to the proxy at whatever address is defined there.
Days later I found that another valid entry can be placed in the <proxy> tags:
<proxy>USECALLMANAGER</proxy>
So a lot of examples I saw out there in guides I would see this section, every time (because the phone wont work without it):
<callManager>
<ports>
<ethernetPhonePort>2000</ethernetPhonePort>
<sipPort>5060</sipPort>
<securedSipPort>5061</securedSipPort>
</ports>
<processNodeName>192.168.3.46</processNodeName>
</callManager>
I always wondered what this section did - when I tinkered with it, it didn’t seem to affect much (i.e. it always would stay on the “registering” state). Guess changing the <sipLines> section to “USECALLMANAGER” did the trick. (Hope this might help someone else out there if you run into a similar problem like I did).
DialPlan.xml
The dialplan.xml lets the phone send the entered phone extension/number to the server after a certain time, and after matching a pattern/rule defined in the XML. Search for the title “DialPlan Notes (dialplan.xml)” in this article Voip-info.org > Asterisk phone cisco 79xx for example XML for a dialplan and notes on it too.
For reference the main line I used to test things out were the following entries:
<TEMPLATE MATCH="100." TIMEOUT="0"/>
<TEMPLATE MATCH="101." TIMEOUT="0"/>
<TEMPLATE MATCH="...." TIMEOUT="2"/>
The first two MATCH’s correspond to FreeSWITCH’s default extensions/accounts that it has when it’s freshly installed (i.e. 1000, 1001, 1002... 1009, 1010, 1011... 1019). These are rules whereby once the user enters either “100″ or “101″, and any digit (i.e. the dot represents any number from 0 to 9), the rule will be matched and the phone will immediately (i.e. timeout of zero) send the call/extension request to the server to ring that extension.
The last entry has four dots in the MATCH tag, and 2 seconds time out. This indicates any 4 digits will match this rule after 2 seconds of no other numbers being dialed. So if you enter a number like “2000″ for example, the phone will not send the data/request to the server until after 2 seconds.
Keep in mind you can remap extensions too, sort of like a speed dial:
<TEMPLATE MATCH="19" TIMEOUT="0" REWRITE="1019"/>
This will effectively translate dialing “19″ to call the extension of “1019″ instead.
The 4 examples will also work if they are all present in the dialplan too, just keep in mind that if you have “10″ as a match (with a timeout of zero), it will always trigger before you ever get to “100.”.
NOTE: Keep in mind these rules only trigger when the line is “active”, i.e. you pick up the handset or switch on speaker. Entering numbers before selecting a line wont trigger the rules and dial numbers.
FreeSWITCH
I had initially tried Asterisk, my first impression of it was a bit intimidating, and I didn’t quite know where to start - perhaps someone who is more familiar with PBX/SIP stuff might have, but the thing I wanted to achieve was just an internal phone setup... So I tried an alternative called FreeSwitch.
Turns out FreeSWITCH has a default setup where you can start testing/calling with some preconfigured standard accounts. Once I read some of FreeSWITCH’s Getting Started Guide (before moving to the more hands-on section named “Some stuff to try out!“) I ended up finding the accounts files and whatnot, to get my own set up up and running!
The “Some stuff to try out!” section is definitely a great way to get some SIP stuff up and running quickly and confirming if your setup is on the right track.
I know this is a long post :P
I wanted to kind of consolidate the stuff I learned in the process - as well as document it somewhere in case I forget and end up having to set up these phones from scratch again. Perhaps it might help someone else out there who might want to try a small intercom-like network for themselves. :)
0 notes
Blender: First Steps
So I’d wanted to get into Blender since quite a few years ago. Previously when I tried getting into it, the interface was daunting. Add to the fact that I first learned 3ds Max at the start of 2006 – With over a decade of having a 3D program become so ‘second nature’, it meant there were some hefty obstacles to overcome when switching to another suite of tools.
Mainly, I’m curious to have this as part of my pipeline for my game I’m fleshing out, as a free alternative to 3ds Max. So this is my research/development - like making a proof of concept, but with tools/pipelines instead of concepts/ideas.
The Result
So here’s my first final render from Blender, with a touch of Photoshop to push the contrast and colours up for a more ‘cartoony’ finish.
Needless to say, I’m very happy with what I learned and how it turned out. :)
(Feed Your Inner Artist: For those interested in the approach I took, and the order of things I tried to do stuff, read on below.)
Core/Basics: Mushroom!
So the first project was simply to fulfill the following “knowledge gaps”, all to a basic, but comfortable level:
Navigation: Get around the 3D world space, using both orthographic and perspective views
Modelling: Using tools to edit the geometry of an object
Unwrapping: Unwrapping and saving out the UV template
Applying Materials: Getting the texture to show up on the model
Lighting: Creating some light sources
Rendering: Getting a final image to show
Tangents: More Mushrooms!
During the process of making that 1 mushroom, I had some other little questions bubbling up, so I ended up finding out about the following too:
Particle Systems: Create multiple objects given an area, and vary them
Lighting +1: Previewing lighting without having to render the whole scene, similar to 3ds Max’s “Active Shade”
Rendering +1: Depth of Field to give that nice ‘out of focus’ look.
Modeling +1: Modifiers for smoothing the final result (and adding in creases again), copies vs instances/references
So if you’re curious about either transferring your skills from one 3d program to another, or are just starting out and dunno where to start, this might be of use to you. :)
2 notes
·
View notes
Hello World
Hello!
This will be a place where I will be posting some of the things I dabble in, which ranges things like games development stuff (such as 2D/3D animation, music, programming? anything related really), through to gardening, other art stuff, and any other creative stuff which might be interesting to share.
I’m curious about a lot of things, so there will probably be tangents other stuff posted here too. We’ll see how things roll out :) Eventually I’ll probably sort links out into categories, etc... though first I will need to figure out how to use tumblr :P
The Three T’s - Places to Follow Me
RobustKite -> Tumblr will be where you’ll see me posting more in-depth stuff, since a post can have lots of content in it.
@robustkite -> Twitter is where I’ll have smaller, more frequent little posts, with probably more WIPs (Work in Progress stuff) and behind the scenes tweets.
RobustKite -> Twitch is the place where occasionally I’d stream the stuff I’m working on.
(Feed Your Inner Coder: -> is used for pointing to objects in C++)
For a peek into some current stuff as of this post, read on below.
Current Projects
Currently worth noting is that I am working on fleshing out a production pipeline for a little 2d sidescroller game I plan to make. I’m sure there’s plenty to learn and share with this process - one of my personal goals related to this is to switch from a decade of being a 3dsMax person to Blender3D. I’m currently getting started on it, and I’ll definitely post about those adventures here!
11 notes
·
View notes