About Me

My photo
Santa Clarita, Ca, United States
I work as a Technology Manager in the Entertainment Industry. My first film was Disney's Dinosaur and have been credited on several films since. I love working on old electronics, especially old radios. I am also passionate about technology and education. I have 4 kids and you can read about us on our family blog.

Friday, September 5, 2014

Some Common Programming Languages

People will often ask me questions like like "How is C different from C++?",  "What makes folks use Python instead of Perl?", "Are Java and Javascript the same?", "What is an HTML programmer?"  Of course, these questions could have long, detailed, technical responses. Though, I find usually that's not what folks want. They simply want a one or two sentence simple explanation.   So, I put together this languages matrix to try and answer these simple questions with simple, one or two sentence answers. I hope it helps.



LanguageTypical UsageNotes
General Purpose Compiled Programming Languages
C Low level system programming. Older language used for Linux/Unix kernel.The foundation of UNIX and the the father of Java, C++, ObjectiveC and C#.  Developed in 1969. Used heavily in the 1970's-1990's.  "Procedurual" (Not Object Oriented)
C++Common language for performance centric tasks. Large API / Vendor support.Object oriented additions to C. Very widely used. High learning curve. Lots of features. First standardized in 1989.
Objective CPrimary development language for Mac OSX/iOS development.Another object oriented language based on C. Has a "dynamic runtime" while C++ is static.  Has notably different syntax than C, C++, and Java.
SwiftSupported by Apple for Mac OSX/iOS development.A newer option from Apple for native iPhone and Mac development.
General Purpose Interpreted or Semi-Compiled Languages
JavascriptAny dynamic web page. Not the same as Java! Built into web browsers.  Used for dynamic web pages in HTML5 as well as almost every web site on the internet.
JavaCross platform and enterprise development.  Minecraft!Well known.  Taught in colleges.  Considered "High Ceremony" since lots of code is required even to do small things. Somewhat similar syntax to C/C++.  Generally does not perform as well as "compiled' languages like C, C++, Objective C.
C# (C-Sharp)Java-Like language for Microsoft Windows development
Runs on a VM just like Java.
PythonA great general purpose scripting language.  Capable of a wide variety of tasks such as  web sites,  database communication, games, and image processing. Integrates with many entertainment industry software packages like Maya, Houdini, and Nuke. Scripting language with clean readable code. Easy to learn and maintain.  Surpassed Java as top learning language in schools.
PerlSystems administration.  Text parsing and data manipulation.Powerful scripting language. Can do a lot with small amounts of code. Often referred to as a "write only" language because loose formatting constraints makes it difficult to read others code.
PHP"Back End" web pagesGenerally used as a server-side language for websites. Code is executed on the server per page request and is usually written to output HTML or other browser interpreted data.
Data Description Languages
XMLData description and transfer language for data files and web sites.
HTMLWeb page description language interpreted by web browsers
JSONData description and transfer  language for data files and web sites.Considered by some to be easier to read than XML. Often used when returning data from web sites.
Application Specific Languages
SQLUsed for database queries to relational databasesRuns within many different brands and types of relational database.
Bash/Tcsh/CshQuick utilities.  Systems administration. Unix automation tasks.Scripting language that runs within the specific UNIX shell environment.
MELApplication specific language for Maya. Used for Maya plugins and automation.Scripting language that runs within Maya. Being displaced by Python.
HScriptApplication specific language for Houdini. Used for Houdini plugins and automation.Scripting language that runs within Houdini
CudaNVidia specific graphics processing language. Used to optimize applications to run on the graphics card. (GPU)
GLSLOpen GL Shading Language. Used in real time tools to offload graphics processing to the graphics card (GPU)Replacement for OpenGL

Thursday, August 21, 2014

Getting Started With Google Classroom

Google recently a new feature to Google Apps For Education - Google Classroom.  Google Classroom is a learning management system that advertises the following features --

  • Paperlessly Create, Collect, Grade, and Return assignments.
  • Real time activity stream for announcements, questions, and  feedback.
  • All assignments on a single page and materials in Google Drive
We took a quick look at creating a simple classroom and adding some content and students.

Creating A Classroom

Creating a classroom is easy.  Log in with your google ID and go to https://classroom.google.com. You will see a plus sign by your login name to create a new class.




You will be asked for the class name and the class name and the class section.  This can be something like "English" and "7th Grade." In our example, we are adding a programming class taught by the technology department.  The name you choose will be used to create Google Drive folders so you want to choose carefully.  You can change the name later, but you'll need to rename the google drive folders that were created.

This creates a simple class with an home page.




As you add more classes, you can get to them from the "hamburger" on the upper left.


Google classroom will automatically create a google drive item to store your content and to receive assignments from students. 

Adding Content To Your Class


Once your class is created, you need to start adding content.  You can add files, items from Google Drive, or YouTube videos.  You can also post links to external content. The front page of the classroom will have stream where you can put data.  In our example classroom, we borrowed content from external sources.  Here is a lesson added from YouTube.



Adding Students To Your Class

Now that you have some content,  you will want to start adding students. An important caveat to know here is that all students will need to have an e-mail address within your Google domain. You have two ways to add them.

1) Manually add them yourselves by inviting them through the Google Classroom web page. I found this method to be rather tedious.
2) Send them the invite code from google classroom and have them enroll themselves.

Once you have some students, you an start trying it out in your class and seeing if it works for you.

Monday, March 10, 2014

Mac Tech 2013


Star Trek Bridge!
Folks form http://newstarship.com/ were there to display their Star Trek Bridge.  You could sit in the chairs and get your photo taken.  They were looking for volunteers to help with their effort to make the touch screens interactive.








Notes From Talks

Dave Maclachlan - iOS Development at Google. How we make it work.
  • They use Sen Test, OC/Test, SC Test
  • He wrote Cover story for code coverage
  • Unit tests are the best documentation your code will ever had.
  • Things Apple has done with XCode 5 are really nice.
  • Having the number of tests without having coverage is not very useful.  XCode can use GCov.
  • There is a NSUserDefaults setting that configure observers for code coverage.
  • When working in real time at 60FPS, you have 16 msec per slice. Mac dispatching takes 4 of the 16 Ms so he uses C++.
  • Good speaker, but the material was pretty deep and specific to unit tests and coverage.

Gwynne Raskind - Intro To Internals
  • Talking about the internal hardware design of the Mac from a high level.
Peter Hosey  - Building Great User Interfaces
  • Users are broken in that they are afraid of the computer.
    • They have been trained by bad interfaces.
  • Respect The User
    • A person is not a machine and should not be forced to think like one.  The machine should conform to the user, not the other way around.
  • Help The User
    • It is never the user's fault. The app should guide the user. If the user does the wrong thing, it's your fault.
    • Everything you tell the user should be actionable - even if the action is "wait".
    • Gestures are verbs, akin to keyboard shortcuts.
  • Problems in your app are your fault, not the users.
    • Kill Gestures: The problem with Gestures is that you need to know that they are there which means you need a tutorial.  This means it's best not to use them.
    • Kill Dialog Boxes : Dialog boxes will yank the user from the think they are trying to do.  Dialog boxes can be a problem.
    • Kill Documentation : If you have to explain your application, there is a problem.  Fix the app instead of explaining the problem.
    • Care about the little things - they all add to become the difference between good and great.
    • An example of little thing - setting the keyboard type to use the "@" symbol on the login screen.
    • Another Example : Dialog box on empty trash.  For one, it's a dialog box. Secondly,  you have to cancel to know what you will do.
    • Test your app on regular, non technical users.
    • Kill Verbs that can be replaced with nouns.
  • Not a bad talk. Peter always does well. Would be good to see this from an actual IXD person though.

Jim Rea; Constructing Lexers With Ragel and Objective C
  • Gave a talk in 2010 about maintaining a code base. This year he's rewriting Panorama in Objective C.
  • He writes tool used by Spreadsheets, Databases, Programming Languages.
  • Allow the user to create formulas that will operate on values. Take a string and convert it to tokens.
  • Parsing -> Tokenizing : Tokenizing can be done by char, NSScanner, NSRegularExpression.
  • Also can use lex, yacc, bison, etc.  He's using Ragel which targets Objective C and supports Unicode.
  • Ragel recommends that you install Mac Ports and use that to install their application.
  • Showed examples of writing grammars and then handshaking with Objective C methods to parse formulas and numbers.

Vendor Forum : Adobe
  • With creative cloud being in the cloud, how is it deployed?
  • Creative Cloud Packager
  • They have tools AAMEE, AUSST. They come together.  Home base update server.
  • RUM - Remote data manager. Remotely invokes the Adobe updater.
  • XDA - Exceptions deployer.
  • Adobe CS4 would have taken 400 floppy disks.
  • AAMEE 3.0 caused some problems for educational users.
  • With creative cloud, the apps still live on the user's system. They are still installed locally. Users are not required to sign in to each machine. You do not need to be on line to use the software.
  • Services such as shared storage and sync settings are in the cloud.
  • Creative cloud licensing for the enterprise is serial number based.  The serial number based solution does not count your launches. Adobe does not monitor what is launched when.
  • Talk of using serial numbers for installs. - They are "serialized". You can be serialized with a small number of users. They are going to trust you to manage your users on your own and not exceed concurrent users.
  • This was a good talk if you are someone who has to deploy Adobe products to a large enterprise. I had no idea they had so many tools to help manage deployments.
  • There was some mention of using Sassafras to manage license usage.
  • Currently they expect that you need at least 100 users to be an Enterprise account. Though, they know there are people that are smaller and want to work off line.

Consuming Web API's the TDD Way : Luis Solano @luisobo
  • Going to talk about good practices for networking code and real life testing scenarios
  • Also going to talk about underlaying principals of TDD
  • It's unfortunate that TDD has test in the name since it's really a design tool.
  • He is using a testing framework called "QE" which has an "it" block. Uses Objective C.
  • Tests must be isolated form undeterministic and slow dependencies such as the network, changing data, or databases.
  • Tests should not be coupled with implementation details.
  • You don't want to have failing tests while modifing both the tests and the implementation.  If you do, "git reset --hard"
  • He released an open source tool called Nocilla that allows you to "stub the internet".
  • Mentioned "Charles Proxy"
Joe Workman : Automating Business
  • He started as developer working at companies, and doing projects on the side.
  • He started charging and folks bought things. He then wrote a book.
  • If doing something more than one time, figure out how to automate.
  • Suggests using a Ticketing system instead of keeping things in E-mail.  He uses ZenDesk.
  • Suggests against using PDF for documentation. Use live web pages.
  • He suggests using Video Tutorials as much as possible.
  • The video should talk you through the work flow.
  • When hiring support staff, it's good to recruit customers. They are already your advocates.
  • There is a package maker for Terminal commands (similar to mac ports).  http://brew.sh
  • XCode ships with xcode-select, xcrun, xcodebuild
  • He went through and automated everything in his life with Ruby.  Before Ruby, he used Perl.
  • There were some automation talks at WWDC this year.  Changes in Apple script eleminated need for the TELL statements.
  • XCode Bots are a new thing in XCode5. They are new.  Allows some build automation like Jenkins.
  • Test Flight and Hockey App can be used to deploy tests.
  • He's never met the support folks that meets for him. One in Vegas one in Minnesota.  He pays his guys $15 per hour. 1099 contractors.
  • Cocoapods.org - Cocoapods allows you to use other folks open source tools in your project. "Ruby Gems for Cocoa".
  • It's worthwhile to hire contractors to build more stuff. What about hiring junior people cheaply, like High School folks.
  • Fresh Books is a good program for running your business.
  • They use BitBucket for tracking bugs.
  • Some talk of Tcsh, "Fish Shell", Csh, "Oh My CSh", Zsh.
  • joeworkman.net

Jeanette Lee : WiFi Design 
  • #rukusgirl  jlee@ruckuswireless.com
  • Channels 1, 6, and 11 suck
  • Lots of AP's are on these channels and they collide.
  • Power drops as an inverse square of distance.
  • With the 802.11 protocol, if someone else is on their channel, they have to stop transmitting.
  • Each channel is 20 Mhz.  There is now a 5Ghz Spectrum.  There is a lot more spectrum and more capacity.
  • The individual channels are 20Mhz wide and do not overlap.
  • These frequencies are also used for RADAR. If you hear something on that channel that sounds like RADAR, you are required to vacate for 30 minutes. These are called DFS events.
  • You can have more access points not using the same channel.
  • They use multiple antennas - called beam flex or beam forming. They try to make it directional.  Another trick is to try and transmit slightly out of phase and get a node where the person is sitting.  You can get 3db gain this way.
  • The client has to support beam forming and give feedback to tailor the signal.  Though, there are no clients that do this so they have to do implicit beam forming where the AP Guesses.
  • 802.11 MCS Rates - Your throughput will change depending on spacial streams.
  • MIMO Technology - You need multiple antennas. Inputs/Outputs/Spacial Streams i.e. 2x2x1
  • Option Key + WiFi on the Mac shows you what your Mac is doing. RSSI is not very usful.  MCS Index is important.!  SNR and MCS will tell the real story.  Data rate will always be changing.
  • Example Slide RSSI: -31, Transmit Rate: 27, MCS Index: 1
  • Mine Currently: -50, Transmit Rate: 216 , MCS Index: 15
  • "inSSIDer" is a good tool.
  • 802.11ac : 5Ghz only. GIgabit Wifi. Must be done in hardware.
  • 802.11n was supposed to support 4x4, but stopped at 3x3.  Best to wait till Wave 2 of 802.11ac.
  • 5Ghz goes about half the distance with the same data rate. 2.4Ghz
  • Indoor AP's can run up to 1W, outdoor can run 4W.
  • "Sticky Client Problem" - A client that connects to an AP, then moves.  The client has to decide to let go of the AP and use a new one.
  • With Apple, around and RSSI of 80 is where the client goes to a new AP.
  • With sparse AP's, lowering the power may help to make sure only clients that can actually talk to the AP's are connecting. Though, if you have sticky clients, it does not help.
  • A Wireless controller will not help with the "Sticky Client" problem becuase the AP can not force them to go somewhere else.  They end up writing a lot of code to deal with bad clients.  They then kick the client off the AP when the signal gets too low.
  • For the conference, they have 16 2x2x2 access points. They are all using 2.4 and 5Ghz.  Their pipe is 90 Megabits Per Sec.
  • In this hotel, they had bad jacks.
  • Hotel turned off their AP's where the conference is happening. Though, there is a ton of 2.4ghz traffic which made it un-usable.
  • On channel1, there are 30 overlapping AP's.
  • She had a client in Portland that had interference problem. They were in the middle of the woods. She went there with a spectrum analyzer. 2.4ghz went red for 10-15 minutes. Turns out they had 11 microwaves all going off at 3PM every day.
Jamie Newberry : Designing Engagement
  • I really liked this talk.  I asked Jaimee to come give it for our team.
  • @jaimeejaimee  bests.com jaimeejaimee.com
  • Worked for Black Pixel after using them when she worked at Zappos.
  • She's been doing all mobile stuff since 2010.  She has a UX background.
  • You have to find out both who you are, and who your customers are.
  • Been doing design work for the last 17 years.
  • Ask the question, "If my product were a celebrity".
  • When looking at a web form, think about the personality with the colors and symbols. For example, the login on Oprah's site vs a more playful one on Carbonmade.
  • Personality informs everything!
  • The OnBoarding process is really important.  Introduce the concept.
  • Empathy Rules.  It's way more important than disruption.
  • Simplicity is very hard. Editing, taking things away, is difficult.
  • Define Your Objectives
  • Games define their objectives. They don't cram everything up front.
  • The personality of the product should be everywhere. i.e. Release notes, button text, etc.
  • Bug reports should be fun as well.
  • Example of Photomojo making a connection emotionally.
  • Honesty is Important.
  • Talked about Twitter moving from "What are you doing" to "What's happening"  A simply change in copy changed the possibilities with the product.
  • Flickr has a downtime message that is a coloring contest.
  • Review Your Product - Do a sweep. Think about.  There are Cheap, Delightful, and Engaging things you can do you to your product.
Angel M. Stone (TSE At Walt Disney Studios) - Documentation Can be a beautiful thing.
  • Documentation is important, but it can also be fun and interesting.
  • She likes doing documentation because it allows her to come to conferences, lowers the bus quotient, and helps her remember things.
  • Documentation is changing.  No more simple text documents or even word documents.
  • She's a fan of video documentation.
  • She worked at a Catholic university and made videos for the Nuns.
  • Think about the audience of the documentation.  What is the scope of their expected knowledge?  How often will it be updated. ?
  • Know your clients - Know what your clients can and can't do.
  • Know your team
  • Pretend you are doing this task for the first time. (She didn't say it, but this is akin to putting yourself in the users shoes)
  • Don't be boring. - No one wants to see your documentation if it is boring.
  • She does not like Wiki's.
  • Their help desk system comes back with "Have you tried doing this"... As they add more knowledge, they have more people clicking on the "have you tried" links.
  • Separate documentation from what the product is, and how you use it.
  • Folks went around and talked about documentation that was problematic.  i.e. Stick notes on the client's monitor, text translated from Russian, Old documentation for an old operating system.
  • Error messages often need translation.
  • She started talking a tiny bit about cognitive research.
  • She still uses pages for documentation and builds her templates in pages.
  • Zen Desk - Useful for integrating help. A lot of effort can go into making the site useful.
  • One of the teams is publishing all their documentation as Google Docs in Read Only mode.
  • Someone mentioned folks printing documentation and putting it on the wall and then it goes out of date.  To me, it seems this is done because 1) Docs are hard to find. 2) Fear they go away.  Angel said she fixes this by visiting users.
  • She's been using Camtasia because it has editing built in such as Title cards.
  • She walked through using Camtasia to record some documentation.
  • She has "Stems" and the stems need to be named accordingly.
  • Someone mentioned iFixIt and that they have a tech writing handbook.

Some Random Notes From Talks:
  • There is a desire from folks to "Learn Terminal" - A new talk for next year?
  • Listening to some folks, I wondered if a talk on Learning Spaces would be useful.

Python For The Sysadmin By Matt Schnittker And Greg Neagle
Greg and and I gave a presentation about python programming for the Mac sysadm.  The talk was well received.  Here is some Twitter feedback.





Some folks suggested that it would be good for us to give our python talk at UofPenn. Greg and I applied and will be presenting as a pre-conference workshop!!


Evening Events.
Mac Tech keeps you busy all day.  They feed you breakfast, lunch, and dinner, and plan evening activities well into the evening.  They want to make sure that everyone has a chance to talk with peers and share ideas well beyond the formal learning presented in sessions. One of the trips was to the Endevour Shuttle at the California Science Center.









Friday, November 15, 2013

What The Fox Say?

For those that don't have an army of kids keeping you informed on what is hot on YouTube, here's what's winding it's way through my kid's school this week - "What does the fox say?"




As with any YouTube hit, the amazing parodies quickly spawned.  Here's an SNL skit.


Friday, November 1, 2013

Some Books I've Enjoyed


I really enjoy Audio Books.Here's a few that I think are exceptionally good that others might enjoy as well.   




Monday, May 13, 2013

Learning Spaces In Cyberspace

We humans are naturally social creatures.  Communication is the glue that binds us.   It is only natural that the digital world we have created reflects our love to communicate.  We have been communicating for hundreds of thousands of years.  Have the ways we communicate stayed constant? Are there fundamental things we do that are innate in who we are?

 

 Learning Spaces

I found a similar question being proposed by Dr. David Thornberg  in his article Campfires in Cyberspace: Primordial Metaphors for Learning in the 21st Century  Much of our learning happens through communication so this seemed to be relevant.  He categorized learning into three different  categories called "Learning Spaces". Each learning space serves a different purpose and a successful learning experience requires all three of these.

Learning SpaceLearning FromPurposeReal World Examples
The Campfire (Lecture Space)An ExpertOne person telling a story.Lectures, Radio, Television
Watering Hole (Collaborative Space)Each OtherMany people discussing a topicPanel discussions, Meetings, Telephones
Cave (Reflective Space)YourselfA place to be alone and think or research.A walk in the park, Reading a book

For example, at a conference, you learn more if you have a chance to go to Presentations (Campfire), Discuss ideas with others (Watering Hole), and think about the the things that were presented and what they mean to you. (Cave).

 

Learning Spaces In Cyberspace

In the digital world, we see examples of all three as well. The most successful communication applications have a clear mapping to a learning space.

Learning SpaceTypes Of ServiceDigital Examples
The Campfire (Lecture Space)PushBlogs, Twitter, Facebook Timeline
Watering Hole (Collaborative Space)InteractiveE-Mail, Jabber, Yammer, Skype, Facebook Chat
Cave (Reflective Space)PullResearch tools like Wikipedia or Google

 

Google Apps For Education

SCVi Charter School makes use of Google Apps For Education which provides us with some great communication tools. Some of these tools include :
  • Blogs : One person speaking to a group over time.  Postings are generally like journal entries and have a specific publish date, though they can be modified.  People can post comments, but everyone can see them so they are like an open forum.
  • Groups: This is meant to be an area for discussion. It's interactive. Not good for "publishing" content as much as it is a way to have a searchable archive of conversations. You can have conversations go out through e-mail or have folks log on to see them.  They are not publicly visible like a blog usually would be.
  • Sites: A place to publish different kinds of content.  Can be changed regularly. No inherent time associated with a posting.  Gives the most flexibility. Comments and discussions can probably be worked into this.  
  • GMail: Google's E-mail service.
  • Docs : Provides the ability to work collaboratively on content.
These products are intuitive because they can be mapped to learning spaces.

Learning SpaceGoogle ProductExample
The Campfire (Lecture Space)Blogs, SitesA single storyteller publishing content.
Watering Hole (Collaborative Space)GMail, Groups, DocsCollaborative work or communication
Cave (Reflective Space)Google SearchResearch tools that allow you to discover on your own

 

Another Example : Jive SBS

Jive SBS is a "Social Business Software"  that is often used inside companies to facilitate internal communication.  One clever thing about Jive is that intrinsically provides different avenues for different learning spaces. Here's a few of the Jive content types that  map to learning spaces.

Learning SpaceJive  Content TypeDescriptionTypical Content
The CampfilreBlogsOne Person talking to a group over timeMeeting Notes,  Reports, Events
The Watering HoleDiscussions, PollsInteractive discussions outside of an e-mail threadProblems, proposals, new ideas
?DocumentsCollaborative living documentationDocumentation, Policies, Procedures

Notice that it's not clear if a Document is a Campfire, Watering Hole, or Cave.  The problem here is that, unlike Google Docs, the Jive docs to not allow real time collaboration.  This keeps it from working very well as a watering hole.  This also makes it confusing for people on when to use documents at all.  This divergence from our naturally understood methods of communication is bound to cause confusion.

Summary

So, When looking at how you communicate in an organization, the closer you can come to using our intrinsically understood learning spaces, the more likely you'll be able to find something that works.

Saturday, April 20, 2013

How To Speak Teenager


Does your middle or high school student seem to be speaking a language all their own? Do they have words in their vocabulary that you aren't sure even exist?    Keeping up with it all can be a bit of a chore. For folks who are finding difficult to keep up, maybe this will help. 
  • Yolo - You Only Live Once
  • Although you would expect this to be used  in situations where one is being encouraged to take a risk or explain a mistake, it's often used  as a synonym for good. i.e., "that movie was so yolo". The actual intention has to be derived from the context.
  • Swag - Ridiculous Clothing or Behavior - Secretly We Are Gay
  • This term is usually meant as an insult to say a person is behaving badly or wearing ridiculous clothing or jewelry. It's usually used in phrases like "That guy is oozing swag." or "You are dripping with swag".  Note that for people over 30, Swag used to mean the stuff you get at conferences or things given away at parties.  This meaning appears to have expired, but it's similar  in that it can refer to little shiny trinkets of stuff.
  • Pawned - Owned, Defeated
  • This is pronounced "powned" and is a derivative of PWNED from Leet. The person who was "pawned" is the one who lost a game, argument, or competition. It's typically a very solid defeat. i.e. "12 frags in a row, I totally pwned him". 
  • Hash Tag - "#" meant to signify an interest, significance, or subject in a phrase
  • Hash tags are used on social media and chat applications to signify a subject or interest. i.e.  "Having dinner with old friends is such #goodtimes." Using a hash tag allows others to "follow" conversations about this subject and search on when a subject was discussed. In most cases, hash tags can be created "on the fly" and be whatever you want them to be.  This can be used in speech as well. If you spend some time in a middle school classroom you may hear the word used repetitively to give emphasis to what someone is trying to say. For example, "that minecraft mod is so hash tag awesome".
  • Noob -  Someone with little knowledge, experience, or ability.
  • Noob often also implies that someone thinks they know more than they actually do. This is usually used as an insult. For example,  "He's such a Noob!". If you want to add extra emphasis, you can call them a "Nooblet", like.  "You are totally a Nooblet!" 
  • R-Tard - Retard, someone who is not intelligent.
  • This is just a newer version of the age old insult, "retard".
  • LOL -  Laughing out Loud" or sarcastically, 'I don't really care. "
  • LOL started as a texting shortcut for "Laughing Out Loud".  It is used in spoken language as well by just saying the letters "LOL" or sounding it out "lol".  Over time,  it became so over used, it started to be used sarcastically.  Now, when used,  it could mean either that the speaker thinks that something you said is funny, is signaling a complete lack of interest, or just has nothing to say and wants to break the silence.   i.e.  Teacher: "Class, we have a paper due tomorrow." - Student to his friend: "LOL".
  • XD - "XD Face", from the emoticon XD.
  • The XD emotocon is a smiling face with crossed eyes. When used in spoken language, you can say "XD Face" or just "XD". It is similar to LOL in that it can be used as an acknowledgement, or to show that you were entertained by what someone else has said. 
So, now when your kid walks into the room and says, "Hash Tag YoloSwag".. you'll at least have some idea of why the other kids all start laughing.