If you’ve done nothing wrong, then you’ve got nothing to hide.
Wrong. Nothing ever justifies giving up your
human rights
, especially to
prove lack of wrong doing, and any government that asks you to do so is not
your friend.
Terrorism has become a weapon used against us by those elected to lead to keep
us
compliant, like blinders you’d put on a horse. The threat just keeps growing
and growing instead diminishing, despite the money and lives we throw at
it. Terrorism is the new Communism, and the
NSA PRISM program
and the
Patriot Act
are the modern day overreactions equivalent to
McCarthyism and
the
Red Scare.
Besides 3 months interrupted to finish degree requirements, and including an
internship, I’ve been at Mozilla for about 8 months now. After reading a
blog post
of another software engineer’s experience at Microsoft, I count my
blessings. Reading that article set off too many alarms in my
head. It was well written, and I sugguest you go
read it, but my takeaway
was that that any big name corporation people dream about working at is
actually quite dystopian, and I do not feel that that is the case here.
The other day I was thinking about the function for performing dynamic memory
allocation in the C standard library, malloc. From the manual pages,
If successful, the malloc() function returns a pointer to allocated memory. If there is an error, it returns a NULL pointer and sets errno to ENOMEM. One of the most common errors
when using malloc is not checking for allocation failure. The allocation is not
guaranteed to succeed and trying to use a NULL reference can lead to program
crashes.
I would like to die on Mars…
Well, isn’t that forward thinking? Granted, the full quote
I would like to die on Mars, just not on impact is meant to sound hopeful of
his company,
SpaceX. I agree that some day, humans
will be buried on Mars. But is it forward thinking, enough? Does it push the
needle to where it needs to be pushed? Does it strive for innovation and push
our imagination like Star Trek did? Or is it just a realistic goal for SpaceX?
Ever since I learned about
Just In Time Compilation
from the various
Ruby VMs
and
JavaScript VMs,
I’ve been inspired. I could tell you all about how just in time (JIT)
compilation worked, and how it could give your interpreted language a speed
boost. It was so cool. Well, it still is! There’s a ton of research going on
around JIT compilation. But the problem for me is that I could never figure
out, let alone guess, how it was being done. How could you compile code at
runtime, and then execute it? I asked
Benjamin Peterson
about how he had learned so much about JITs, and he referred me to
pypy (a Python JIT)’s source. But digging through source
was too much; I just wanted a simple example I could grok quickly. So I’ve
always been left wondering.
Over the past few years, there’s been certain
paradigm shifts
in web development. When you think of milestones that really changed how
development on the web was done, the two biggest were
Ajax
and
HTML5. Development was identifiably
different before and after such technological advancements. There were
some who initially
doubted
the technologies, but I’m sure such doubters eventually
saw the light.
After spending time working on applications for Mozilla’s upcoming mobile
operating system, Firefox OS, and talking with my fellow employees, I feel that
the mobile web is another one of those shifts in how we
approach web development that looking back will be an identifiable point in
time where we can say that we did things differently before and after.
So in that sense, I want to share some of the insights I’ve found to
help other developers wrap their heads around how developing for the mobile web
isn’t their traditional cup of tea.
On an interview with
Square, I made the mistake
of stating that one of the benefits of working with JavaScript over C is
that functions are
first class
in JavaScript, therefore they may be
passed around. To which the
interviewer replied, “Well, C can do that, what about function pointers?” What? Luckily, I
was able to get out of that jam by guessing that JavaScript had a nicer
syntax.
While I was taught some C in university, we had never gone over function
pointers or more in depth topics such as
static
or
dynamic
linkage.
I was so embarrassed that my expensive (read
overpriced)
degree had not taught me more about
the C programming language, especially from the Computer Engineering
department that focuses on software AND hardware. On my exit
interview with the dean, I was very opinionated on the amount of C that
was (or wasn’t) taught at my university. His argument was that there
are only so much of so many languages you can cover in a university, which
to some extent is valid. My problem has been that I’ve enjoyed learning
many different programming languages, though I didn’t really get it the
first time around (with Java). I think knowing many different languages
and their respective paradigms makes you a better programmer in other
languages, since you can bring a
Ruby Way to
Rust or a
JavaScript functional
style into C.
Last week, the Internet community
lost a member in the on going war
against the copyright industry. While I’ve never met the deceased, or
even heard of the deceased before his suicide, I’m horrified. I’m
horrified that the government we are asked to put so much faith in,
would give someone, not that different from myself, such a
ridiculous sentence.
That I could be thrown away, locked away from the things that
I love for 35 years, for freeing information that
should
have been free, and was later
made free.
It’s all about
closures. Understanding
scope is paramount to coding.
What can you access and what can’t you access. Closures allow us to
access variables that otherwise might be awkward to pass into a
function. Closures can help us out of tricky situations, but can
confuse those from backgrounds with (typically)
statically typed languages that
may not support closing over variables.
Rust is an up and coming systems level programming language being
developed at
Mozilla. Let’s take a look at the
syntax of closures in Rust, but first let’s see how closures are
implemented in some other, more popular languages.