No Place for the Spear Fisher

I hear people ask the same question almost every time I am at the bate shop down the street. Granted I got there a lot, but that is really beside the point. I assume that the question is asked time and time again when I am not actually there. Next time I am there I will ask the owner and see if this assumption is correct.

Spear fishing.

For some reason people seem to think that it is a noble form of fishing.

They also think that they are better than they are. Easy spearfishing? Nope, there is no such thing.

And unless you have a boat you aren't got to get to spots where you will find the fish.

Sorry but beach diving in South Easy Florida, or anywhere for that matter is more than simply swimming out and filling your cooler in clear shallow water then coming back in and enjoy a grill party on the beach.

I really do not know where people came to this thought, maybe because Florida is God's paradise on earth. But it is another assumption.

Real spear fishing is a lot of work and you will end up in a lot of crappy conditions. I know, I actually liked it when I was in my twenties, fit and hungry. And I have been all over, and if there is an easy spot out there and I do not know that it exists, then it is a well guarded family secret.

One thing that plays a role in making this a hard form of fishing is that the visibility on the shore here changes from day to day. Heck, we dangle out in the ocean it even changes from hour to hour with the tides.

Once you have been doing it for a while you will notice that the wind and weather conditions can usually indicate what your chances are for the trip. But before you call yourself a pro, you will need to be able to judge how well your chances are once you are out on the reef. Sometimes I would go expecting to have some good visibility only to be met with a white out.

Other times it was the complete the opposite.

But this holds true for all forms of fishing. Sometimes I would get skunked swimming up to a mile out (ambitious and dumb I know). But then the opposite has also happened, and I caught some of my biggest fish right off the beach.

I leave the bikini at home now unless I am going for a swim.

If you are thinking about it, look for nice active reefs where you have better luck at good visibility and good fish. They are all over, but I stayed around Miami, sometimes traveling to Boca.

There are 3-4 reefs all the way up the coast here. So things are pretty easy.

The right spots are a matter of going out and swimming around to find the areas that collect the fish you're after.

I will add that you should check the local laws of the beach you plan to launch from before doing so.


Is An Associate’s Degree Worth It?

While, I will say that I know some, not many, who have only pursued an Associate's Degree working as programmers, they all got in to the business at the end of the 90s to the early 00s. Most of them landed jobs in big corps looking for people as that was a time of expanse. Today, that has changed a lot and I don't know what the job market is like where you are. Then there was little saturation, while today there is a lot and it it is quite possible that the market is sufficiently saturated with people with 4-year degrees that in your area, a 4-year degree is necessary. But that does not mean that that is the case for everywhere, nor, is it always true.

What that translates to is that an Associate's Degree is only worthless if somebody else has a degree that trumps it.

I can't speak for your situation, but knoing the ciriculum I feel that there are only four classes that are essential if you pursue an Associates Degree.

They are:

  • Algorithms
  • Data Structures
  • Software Design & Architecture
  • Theory of computation

One thing that taking the courses, getting the degree, and proving that you are compitent is all about is, dedication.

Companies want to know that you have what it takes, and quite frankly, unless you are a whizz and impress somebody in the company, somebody in HR won't really care.

But if you go the route of Associate's you should learn everything that you can on your own. VMWare, is easy to learn, but most companies will be looking for people comfortable with the tech. And if you don't make the effort to learn it, you won't get exposed to it with the above courses.

If you make the effort to expand your knowledge, you can learn just about everything else on your own and usually do with or without a degree, however the aformentioned courses would be the most important in school.

With that being said, have some personal projects and you may be on par or a little ahead of the average Compute Science undergrad in the job market, however it will probably affect your negotiation or consideration for some jobs with inflexible requirements.

Still, I wouldn't worry too much about it since there are a lot of jobs out there, and employers are well known for asking for the moon when it comes to entry level jobs.

Just make sure that you have a good understanding of what the job market is like in your area. Then be well aware what is needed in your area to get your foot in the door and make sure that you hit the right beats, otherwise you will be the odd one out that HR skips over becuase you don't fit their criteria. And beleive me, you need to hit the right notes with them.

As an example, of this I've seen them do things like skip an applicant with a Phd in hardware engineering becuase it was a computer science post and they didn't have a computer science degree. I wished him the best.

Getting your foot in the door is the hard part, but once you are in, if you have the fundamentals down and are a good fit, you shouldn't have a problem.


Where To Begin: AI

AI is a huge field. Do I need to say that again? To give you any specific idea of the size of the topic, I will say that much of what people thought they knew has been reworked a number of times. And modern AI approaches don't necessarily have much to do with the old notions. And in fact it is well outside the scope of my post today.

If you have questions, or would like me to expand it it. I will need to know which part of AI you're interested in. And we can go forward from there.

Today I will just be giving you a general overview, and if you want to continue your study I would recommend you get Ben Coppin's book Artificial Intelligence Illuminated. From what I remember about the book though, it doesn't look into some common machine learning techniques which is where the modern shift is going. These techniques focus on pattern recognition and function approximation.

It's a good book for getting your feet wet with the ideas of "Big Spaces" and searching, but you'll probably have to look elsewhere in a more complicated text for those ideas (I will suggest one in a moment).

The reason that I suggest it is because it is a good starting point and it offers a nice high-level overview of the field while not getting bogged down in details that are irrelevant for somebody just starting to learn about the subject.

As it is Ben Coppin's book offers a good starting point, but once you're ready for something more substantial you could pick up the book AI: A Modern Approach. You should be warned before opening, it is for all intensive purposes filled with graduate-level text.

Programing AI

Most people don't like to read about theory, well, I guess I can't blame them. But hands on is really only sensible once you have a basic understanding (at the very least) of what the subject entails. Only then is it easier to go forward.

The nice thing about AI is that you can dabble in just about any language.

So as far as languages go, at the starting level it doesn't matter. For some reason people always suggest Matlad. And I can imagine that there are lots of resources out there for Matlab because of this popularity, but, I'm not a big fan of that language, therefore I will not point you to anything specific. If you have knowledge of, or are willing to learn Lisp, there are excellent resources for AI programming, like Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp.

Boiling It Down To the Basics

You can't go anywhere without understanding how to get their. And to get a better grasp on AI it is extremely important to learn linear algebra.

Linear algebra and maybe differential calculus are a strict minimum for whoever wants to do anything even vaguely scientific.

But let me get back to the point, if you know basic computer science, AI can be pretty accessible.

You're right that AI is a huge field, so it can be difficult to get into.

My advice is to find something you like and go ahead and try it. Nothing will be lost if you decide that you do not enjoy it. You will have gained some experience and that is what is important. Start by trying to code up the algorithms you have been exposed to and play around with them.

Try extending the models that are featured in the books that I have suggested and expand on them with ideas of your own and then compare the performance.

One aspect that I foud extremely engaging was one that you may wish to explore are the philosophical ideas in AI, especially if GAI is what you'd really like to focus on.

Neural Networks

Neural networks are not the only kind of AI that you will encounter. In the old fashion sense, there are at least three kinds of AI. These are: Symbolism, Connectionism and Behaviorism.

Cognitive psychology and neural biology are gigantic fields, but they're also not with their introductory texts if you have interested in exploring them on a superficial level.

I won't go into them, but there are unconventional computing ideas that may influence the field, particularly biological and biologically-inspired computing. This aspect of classification may be obsolete because modern algorithms have become more encompassing.

Symbolism comes from the oldest formal inference system called logic, Connectionism is come from biological neural networks, and Behaviorism is actually a methodology of psychology. I don't want to be verbose, check these terms by google or something else.

I personally wrote an AI program in Haskell, and am a Haskell missionary. And to be honest, Haskell itself is worth learning, if only for the advanced type system that it exposes.

But as I said. For the basics, even the simplest languages can help get you started.


My Ten Most Useful Suggestions

  1. Get on GitHub, get your code there
    • Some people suggest only putting things on Github that you want to show off, but personally I have tons of small stuff on mine, and I think it's better to get something up rather than waiting for the perfect project.
    • Just make sure everything you put up runs, and is well written, with good, long, and descriptive variable names, and also write good files, even for basic stuff. Include command to run, libraries you need, and expected input/output.
  2. Write a web app that hits a database
    • 90% if not more of the jobs you will be doing will be writing code that pulls data from a database and puts spits it out into a browser.
  3. Network before you need a network
  4. Create a profile, connect to class mates, maybe professors. Connect to co-workers or people you meet at user groups. Create a network before you need a network. LinkedIn isn't magic but it's a way to persist the network.
  5. Know Linux
    • Debian and or Redhat. Linux or at least Unix-type systems are incredibly common. Microsoft even uses Linux! You can only increase in value by knowing them. Any large platform or service provider that isn't Microsoft is going to be using some variation of Linux. If you don't at least have some basic knowledge of the console, you will look pretty dumb.
  6. Get your site hosted, blog about software stuff, put your resume online
  7. Manage your career (no one will do that for you), figure out what's hot, what gets you paid for where you want to live
  8. Never be afraid to admit you don't know something
  9. Don't lie or be an asshole, it's a small world
  10. Know a little bit about a lot of things and a lot about one thing. Or to quote Thomas Henry Huxley:
    • “Try to learn something about everything and everything about something.”
  11. Never stop learning (this is a bonus suggestion)

And LinkedIn is useless. Don't waste your time getting recruiter spammed.