Monday, October 14, 2013

Unusual R&D Companies

When you think of Disney what do you think about?

Movies, books, maybe a theme park right?

Did you think about them as an R & D company? I know I didn't.

But lately they've been coming out with some really interesting things. The latest being Paper Generators.

http://www.disneyresearch.com/project/paper-generators/

The theory behind it is that you rub paper and it generates electricity to light up things, (or deal with e-ink displays/etc)

I'm really impressed, I wonder what other companies are doing some interesting R&D that you wouldn't expect. Do you know of any? please tell me!

Wednesday, October 9, 2013

Hacker Scouts

I love the idea, and I would be interested in supporting (teaching?) if someone wanted to get something like this kicked off and running.

http://www.garratt.info/blog/hacker-scouts-is-awesome-technically/

Tuesday, October 8, 2013

Data Books

Here is a list of good books for Machine Learning, Data Analysis, etc.

http://blog.yhathq.com/posts/ten-data-books.html


Open source Natural Language Processing book too (linked above anyways, but I don't mind duplicating)

http://nltk.org/book/

Thursday, October 3, 2013

HN post on getting the word out on an idea links

Seems like some good ideas, biggest takaway is to figure out your target audience, and make sure to market to them as your primary source, but sometimes other areas find them interesting too.

https://news.ycombinator.com/item?id=6488822


This is kinda my way of bookmarking something I'm interested at the same time, hope you find it an interesting read like I do.

Tuesday, September 24, 2013

Is it a job?

When you go to work, is it easy to fall into and discover half (or all) of your day gone? If not, are there times that happens? 

When I get to work and start solving a problem, and follow up with building it, I find myself hours later not realizing its time to go home.  Other times I come in and dread doing some of the work, for me as long as the times I am doing what I love happen more than the not, I consider that a win, and sometimes wonder if it is even a job I'm at. Is it just some one who wants to pay me to keep doing my hobby?  Many people say that of you make your hobby your job then it won't be fun anymore. I guess my question is this, does your hobby excite you? Do you find passion in it? I personally would be surprised to find out you are.

Then again I have an addictive personality (why I stay away from bad stuff :)), when I like something I'll keep doing it until I'm forced to stop, I love building things and engineering things, and unless someone makes me stop I'll probably just keep on trucking.

What do you love doing, could you make that a living? I think there are all kinds of possibilities out there. Don't think you can find a way to make it work? Ask me, maybe I'll have an idea!

Monday, September 23, 2013

Cc2541 ti bluetooth mcu

This may work for a replacement to my arduino/Bluetooth combo for music glove, need to install eagle to view for size http://t.co/nzGrj1LBKa

And may need to adjust circuit, ideally I would like coin battery usage

Pressure Sensor

Don't have time to watch this right now but may be a solution for my fingertip buttons http://m.instructables.com/id/eTextiles-How-to-Make-a-Pressure-Sensor/

Wednesday, September 18, 2013

My thoughts on Projects and Learning

While I was mentoring one of my good buddies, we talked about projects and the like a lot. It was interesting, and I came to the conclusion that there are 2 primary types of learning when you're out there on your own. There is learning for the sake of learning, and learning to accomplish a goal (which is not learning in this case). I'll talk about each a little and what I think about them.

School Learning
Learning for the sake of learning is going through an entire API just to read up on it. Learning all the details of a language just to know it. One of the benefits of doing this is that you end up having a deeper toolbox to give you more understanding of the underlying structure.  In some cases this learning may actually give you ideas because you didn't even know that particular aspect of an API or language worked that way or existed. Often times it simply allows you to recognize patterns of problems as well, if memorization is involved. The downside is that it's slow, if you spend the time to read every little bit of an API, or language, by the time you are ready to use the language (or API) they may be out dated.

Real Life Learnin
When you start a job in the real world, you don't just take the tools you learned in school and use them and nothing else. You start picking up new things constantly, and usually (unless you work at a really cush job) you won't be given the time to spend reading every bit. What you find is that you define your problem, break it into pieces, determine what pieces you know and which you don't. From there you research enough about each piece to complete it. The benefits of this approach is the quick feedback loop. You discover quickly what works what doesn't, what's easy what isn't. You also can start hitting a wider variety of items in your toolbox. You don't get the depth of school learning, but unless you are writing a very complex piece of software, or debugging, a cursory understanding is sufficient to complete the task usually.

When you set out to learn what approach do you find most useful? Do you use one or the other? Maybe a hybrid approach?

Why I decided to become an Engineer, or Why do I do what I do

When I was going to school, I would ask other students occasionally why they chose Engineering. Often times the answer was "My father or mother is an engineer, so that's why I decided to be an engineer". Occasionally, I would get a "I liked to take things apart so I figured ...>Engineer". Rarely I would get a "I don't know, someone said I should be".

While there is no right or wrong answer, doing it just because someone told you to just doesn't seem quite right. Doing it because you look up to someone is a pretty cool way to get into it, although without that curious nature I think you're pretty limited. I'm sure there are tons of awesome engineers who are engineers just because someone they looked up to is an engineer. And I'm sure people look up to them even now (which is pretty cool). If I were to pick a reason someone should become an Engineer I would have to go with the second choice personally. If you have a curious nature and like to look at how things work, thats headed in the right direction for what I think makes a Rockstar Engineer.

But this post is about why I decided to become an engineer, so I'll tell you (by the way, if you are an engineer, or well anything, tell me about what made you decide that career choice!). Way back when, I moved to Albuquerque to work on Flight Simulators for Lockheed Martin, it was a pretty cool job, but I was hired as a Tech, and thus was supposed to do "tech" stuff. This meant only hardware, even if I looked at the software and found a problem I wasn't allowed to fix it. A "degreed" engineer was supposed to fix it. I really loved how you could control something physical with software (re: I/O and robots, and lots of embedded stuff). I decided going back to school was the only way I would get to play with that stuff professionally. Back I went.

A number of years later (working full time and occasional semesters of full time) I managed to get my Computer Engineering degree from UNM. Just having that piece of paper opens a lot more doors I think. However, if you don't have a curious nature and want to learn more and more. You'll start running into more and more doors closing as time goes on. Just having a piece of paper might get you to an open door and talking to someone (especially in the early days of your degree), but if you're not constantly bettering yourself, and pushing yourself to learn more, you'll find you're falling behind.

Why do you do what you do?

Monday, September 16, 2013

Class Inheritance Problems In Python

I was trying to play around with classes a little the other day I ran into some problems.

I tried to call a function on a child, that calls the parent and uses the self attribute. It wasn't having it.
I got the error
AttributeError: Class Instance has no Attribute ''

After some searching I came across this post, it was a little confusing but I think I finally got it.

http://stackoverflow.com/questions/16528171/attributeerror-child-object-has-no-attribute-name

Here is an example of the result in action:


*Notice I had to do Animal.__init__(self) for the function to work. It took me quite a while to figure this one out.

Tuesday, September 10, 2013

School, Learning, And What to do with it.

People complain about having to take classes they don't think they'll ever use. And I fell into that camp for a long time, in fact until about 2 days ago I fell into that camp. What changed?

I became a little more enlightened. You see, I don't need to use almost anything I learned in school, except for some of the solid basics, you know, reading, writing, arithmetic. Its when you start trying to solve harder problems that people don't ask you to solve, that you discover that using those tools makes things easier.

I'll give you an example.

I was working on testing some code, it's pretty complicated, and it requires lots of inputs, it outputs 3 values. Now to figure out how to get a particular output can get kinda tricky. So analyzing the function, if you can reduce the number of inputs that change the particular output that will make your job easier.

One way of solving this problem is attempting to plot the inputs, and the outputs and look for commonalities. This was my first attempt at solving this problem. After speaking with a fellow colleague (You know who you are, if you want to be credited I'd be happy to link to you), he suggested that I could write a search algorithm. You see, I had completely forgotten about finding "maximum" and "minimum" values, I even think I heard about it in my Machine Learning class, but unless you are actively searching out these problems it's easy to forget that there are solutions you've already learned about.

Even better my colleague suggested that that particular line of code might be to prevent the variable from causing out of bounds (WITHOUT EVEN LOOKING AT THE CODE, THAT'S HOW GOOD HE IS). How did he know this? He listened to the signals. I mentioned things like Cosine and Sine were being used in the function. He knew at a high level what KIND of calculations were going on. So he made the guess that it could be protecting. He was right!

So all I can tell you is to keep actively seeking out those problems and using those tools we were taught. I was wrong. I can admit it.

On Converting Ada to Python Pt 1

So rather than using Overloaded operations on each kind of "type" you would want to make the class (which I'm using as types now) have the operation.
I.E.
Ada:
   function Convert_to_Something(This : in Dog) return Animal is
   begin
      return This.Animal
   end Convert_to_Something

Python

(in class definition)
class   Dog:
   def Convert_To_Something(self):
      return self.Animal


How they're called:
Ada:
   Convert_to_Something(This)
Python
   .Convert_To_Something()

Thursday, August 29, 2013

My New Hammers

Sometimes you come across something that you just find really interesting. Like making lists out of lambdas. While playing around with sets in python at work I came across map, filter, and reduce functions, I thought these were neat but at the time had no use for them. Lo and behold, I decided I needed map a few days ago.

Map
Suppose I've got a fun list like this: (In Perl)

@a = ("blarg.raw","blewy.raw","breqs.raw","blraw.raw");

suppose I want to strip .raw off each element of the array?

@a = map { s/\.raw//; $_ } @a

Guess what @a looks like now? Yea you guessed it:
@a = ("blarg", "blewy", "breqs","blraw")

I happened to need this in perl, so thus the perl syntax.

Filter
While talking to a buddy he mentioned that he was taking two lists, finding the smallest element of one list, and then kicking any elements that were smaller from the second list. Sounds like a job for Filter to me!

I haven't tested it but based on my understanding something like this should work:

lowestElement = 10
yourList = [1,2,3,10,45,6,7,8,876,543,3245]

yourList = filter((lambda x: x > lowestElement), yourList)

guess what yourList looks like now?

yourList = [10,45,876,543,3245]

Pretty awesome right?

Now I hadn't suggested it to my buddy but I'm thinking that we can somehow use reduce.

Update: (12/5/13)
If you want to "mimic" a similar functionality as filtering you can kind of use map, in this case here is an example:
@a = map { m/.*\.raw/ () : $_} @a;
so in this case if we match "raw" in the name, then we can toss it out, otherwise we can store off the value.This allows us to reduce to only a set of files that don't already contain .raw, we can also do other operations.in place of the regex match, but I wanted to keep this around for reference (I actually needed to use it today)

Reduce
I'm not even remotely sure if this could work, but reduce keeps using elements in your array.

Something like this *might* work for him

firstList = [2,3,4,5,6,7,8,10]

firstList = reduce((lambda x, y: y if x>=y else x), firstList)

So the idea here is that we compare each element, to eachother, find the smaller of the two, and then get rid of the other.

I think that's pretty neat, and I expect the result to be 2 in the above example.

Thursday, August 15, 2013

Communication through space

I have to assume that communication through space will have to be limited by the speed of light (unless black holes will somehow provide "warp points" to send data faster through space, or shortcut it I suppose).

I was thinking about if we took a space craft and gave it a bunch of little beacons whose job is to simply transmit any message that it receives to any other beacon it can reach. We could put a time stamp on it (using our Absolute Time we have calculated), and each beacon when it see's it can determine if it's forwarded it on or not. This is all cool and stuff, but if we assume that we're restricted to even radio waves for speed (not light), we could conceivably send something out that is constantly transmitting, eventually due to distances and these restrictions, when we receive things from it will begin to distance themselves. Imagine listening to transmissions from years in the past that are being heard for the first time? Imagine if someone took off from earth, and once they were say a distance of 50 earth years transmission time (so we get their transmission 50 years after transmission), we start hearing a new form of music, or hearing about discoveries. We would literally be listening to echoes from the past. New discoveries from the craft could be getting transmitted to us and we would be discovering them years in the future. I for one find this facinating.


Some of the upcoming posts are a bit inspired by Elon Musk's big ideas, If you don't know who he is take a look at his wikipedia page, I think some of the goals he has are amazing, and I agree that we as a society need to start focusing our efforts on big ideas, and not on the next fart app. A collegue and I have been chatting about space travel and how amazing it would be to make it to Mars, so we started looking into it, I don't know much of anything about it, but who knows, maybe I'll learn something, and maybe you will too.Either way, knowing more about a wider range of technologies makes us better as a human race, fart apps, don't. 


Wednesday, August 14, 2013

Navigation in Space

I don't know much about this subject and most of these thoughts are things that just came to me as I was thinking about it.

Aircraft have flight management systems to determine how/where to go and in the most economical ways, etc. I can only assume that the same goes for space. The biggest differences being that on earth we travel and we have gravitational constants that are known, and we can estimate different things like drag, etc, we have to determine where we are with respect to other aircraft in order to stay safe (I believe this is ADS-B stuff, correct me if I'm wrong). In space you have to worry about other aircraft (assuming space gets busy out there), still, but now you have to calculate where you're going to be at different times, where other planets are going to be (this is for long distance space travel). Gravity of each of those planets, using our current systems we can determine what speeds we need to increase/decrease to in each phase of our travel (I won't call it flight, because to me that implies aerodynamics and dealing with things like drag/etc),so we can miss a planet, all together, or avoid the most of it's gravity, also we could use them to our advantage to make turns while maintaining forward thrust only (don't waste fuel on pushing side to side). Obviously my last post Absolute time plays a part in this whole mess, if we don't have a constant time wherever we are, calculating these things will get very tricky.

Some of the upcoming posts are a bit inspired by Elon Musk's big ideas, If you don't know who he is take a look at his wikipedia page, I think some of the goals he has are amazing, and I agree that we as a society need to start focusing our efforts on big ideas, and not on the next fart app. A collegue and I have been chatting about space travel and how amazing it would be to make it to Mars, so we started looking into it, I don't know much of anything about it, but who knows, maybe I'll learn something, and maybe you will too.Either way, knowing more about a wider range of technologies makes us better as a human race, fart apps, don't. 

Tuesday, August 13, 2013

Absolute Time

According to wikipedia...

Absolute, true and mathematical time, of itself, and from its own nature flows equably without regard to anything external, and by another name is called duration: relative, apparent and common time, is some sensible and external (whether accurate or unequable) measure of duration by the means of motion, which is commonly used instead of true time ...
https://en.wikipedia.org/wiki/Absolute_time_and_space

So this got me to thinking, suppose we were really into space travel, suppose our super fancy atomic clock that was set back on Earth to the relative time there, and our super fancy clock broke. Uh Oh, how can we know where earth will be at any moment in time?

Some things that I think need to be overcome to determine an "absolute" time:

  1. Mapping trajectories of ALL universes
  2. Planet/stars etc.
I think if you have those two things we could then say that if a particular planet we were nearby is in a particular location with respect to another say 2-3 planets/universes, we could then triangulate where we were with respect to the rest of space. Unfortunately I just don't see a way of getting around using "relative" positions in space to determine absolute time.

One thought I had was suppose we took a radioactive item, encased it so it was safe for human use, and then we setup a monitor, and on day 1 it read the decay and we initialized the value, then as we move through space we have a pretty accurate clock, that isn't dependent on factors such as magnetism, or other things, the problem goes back to "what if it breaks", how can we get back?

Taking off from somewhere in deep space and "hoping" that a planet isn't in your way when you take your straight line path is going to be problematic.This is why we need an absolute time calculator. With that you can create a "FMS" of sorts for space that will calculate positions of planets in your trajectory, as well as different gravitational pulls as you move through space. (in Theory)


Some of the upcoming posts are a bit inspired by Elon Musk's big ideas, If you don't know who he is take a look at his wikipedia page, I think some of the goals he has are amazing, and I agree that we as a society need to start focusing our efforts on big ideas, and not on the next fart app. A collegue and I have been chatting about space travel and how amazing it would be to make it to Mars, so we started looking into it, I don't know much of anything about it, but who knows, maybe I'll learn something, and maybe you will too.Either way, knowing more about a wider range of technologies makes us better as a human race, fart apps, don't. 

Sunday, August 11, 2013

Some thoughts on attempting success in a large organization

Large organizations typically are all about the benjamins. (Some are not ONLY about the benjamins, but ultimately in the end, at least enough benjamins to stay afloat).

If you want to do well in a company like this you need to think of ways to do one of two things.

1. Make them more money.
This is where having ideas for new products and ways to bring in more revenue come into play. Look for areas of opportunity, what things do potential customers struggle with daily, that you/your company can fill the hole with a "new" product. Sometimes this happens because you've found something that you do daily that could be made easier and boom new idea. I think this is sort of how Trello came along, it was frustrating keeping track of where everyone was on projects/etc, and Fog Creek came up with something to make it easy. Now it's a product their customers can use.

2. Save them more money.
I HATE sitting around on my butt doing things that computers should already be doing. Working in a software company, there are too many times I have to watch test scripts run and do things when they pause. Finding ways to "fix" these pauses, so you don't have to have your butt in a seat is a money saver, and companies like that. One of my latest "money savers" was writing a wrapper that used auto hot key, so now whenever a script needs the user (note: me/collegues) to do something, we just have the auto hot key utility do it for us. It saves engineer hours, and sanity (if you're anything like me you hate the idea of wasting your precious time sitting and waiting for some "dull" event to occur just so you can do some dull thing to make the next event occur!).

How do you do these things?
Always be cognizant of your surroundings, look for opportunities. If you see something you think would be neat to try, go for it. If you have to do it a little on your own time to get a proof of concept by all means. Now if you're spending months of it, I would at least bring the idea up to see if it sparks interest, and possibly get paid specifically to do it (otherwise you're giving away your time to a company that has no vested interest in you other than "Wishes to avoid training someone new" which I may talk about someday).

Every day when I sit down and look at what I'm doing, I think to myself, how can I avoid having to do things that I don't find fulfilling, I can't always automate things, but I'll be darned if I don't try whenever I think it makes sense. We are engineers, not monkeys, and to be honest making us sit in front of a PC and act like monkeys just doesn't make sense. So lets do something about it, make a change and see what happens. I think you'll find that if you make it simple (easy for everyone to use), and it works, you'll at least attract some attention, and maybe even some more interesting projects. I have always said, you make the work you do what you want it to be. So make it!

Saturday, July 27, 2013

Latest Projects

I received a Raspberry Pi for fathers day, so I've played around a little with it. So far I've built two projects, and they're located at github.

This is a wrapper to download a mRSS feed and then play it in a random order on your Raspberry Pi
https://github.com/onaclov2000/omxrssplayer

This is a Text to Speech wrapper, that uses google to do the translating, it could really do some improvement, by counting the letters, then splitting on or before the 100th letter (space).
https://github.com/onaclov2000/pytts

I'm working on using the code from this link:
https://github.com/raspberrypi/firmware/tree/master/opt/vc/src/hello_pi/hello_font
to try to overlay a news feed of sorts over the OMXrssplayer (wrapper) app I wrote.

I would like to keep working on the pytts, and get a pystt (speech to text), and then have it listen to my voice and do things (kinda like Jarvis from Iron Man :) )

I thought it would be fun to setup a chatbot and then connect all three, so I say something, it relays it to the chatbot, which responds, then it converts that to speech, so it can talk to you!

Anywho if you like it, and want to start building up components that would be cool, let me know, I would love to build it to work with Wolfram Alpha too, but even more I'd like for it to have a learning algorithm so it can be taught, and/or learn. (I like AI, but don't know much about it yet).

Friday, June 28, 2013

Back in the Day.

Found this gem on my old Angelfire website, pretty awesome. Many that brings back memories, there is even another site called neocities starting up that is hoping to emulate geocities. I loved building some simple webpages on angelfire, although their banner stuff, is a mess. Pretty cool though.