Programming and life. If you think programming IS life, seek professional help.
A seriously overly optimistic view of the situation.
Mayhem’s flagship should be depicted as having two broken masts and three large holes below the waterline. Were it possible to depict the cannonballs having been replaced by rancid marshmallows, that would also be helpful.
I’m more likely to win the next six consecutive national lotteries than to see a Brexit that actually benefits ordinary Britons (or anyone else not already wealthy). And I have no plans to buy tickets.
The people you have to handhold, lead, and try to plead with about your humanity are not “potential allies”. They are far from allies.
You cannot win respect from people who demand you demean yourself or they will harm you. Respect is not in their equation at all.
For the minorities who constantly want to ‘be nice’ to their Chinese friends, or they won’t listen to you.
Dear Spotify,
I am NOT in China. Please for the love of God, STOP with your Mandarin advertisements.
Chinese Privilege is having even international companies cater to you and your language despite it being streamed in a multiracial country.
Isn’t one of the official languages of Singapore Chinese??? That’s like getting upset when you hear announcements in Flemish & French in Belgium? I’m sincerely asking, not trying to be a jackass
Tamil and Malay are also official languages. In face, Malay is the NATIONAL LANGUAGE. So why aren’t there Malay ads?
It’s so convenient that the ads just happen to be in Mandarin.
You might not be trying to be a jackass, but your dismissive question sure made you sound like one.
Maybe the Chinese market is bigger? Idk.
Romansch is an official language of Switzerland but hardly any of its media is in it because it has such a small market.The fact that you insist on continuing to defend Chinese language supremacy in Singapore really says everything. You can’t even be bothered to try to understand why this is upsetting to minorities, or that your ridiculous excuses have been used to erase and deny us representation for decades. You have nothing new or original to say here, you are actually spouting rhetoric that racists do all the time.
When you sound similar to racists, maybe it’s time you stop and think about who you really are.
If Singapore isn’t in China yet, you see the signs all around saying “We’re working on it”.
This last GE really was about whether or not we wanted Singapore as a multicultural, democratic, independent state, or whether we were happy with our continuing acceleration into the suffocating embrace of the PRC.
Those of us of a certain age recall when the God-King LKY cried on television at a singularly opportune time. He may have lost his chance to be God-King of a unified Malaya, but for his dynasty, a to-be-unified China awaits.
Is this why you did your NS? I didn’t think so.
Bet no one quote these today.
Nobody like those on the right side of the panel, anyway. None with access to larger audiences than will fit in their dorm room. Nobody who puts their principles ahead of their creature comforts.
Civilisation died a bit over forty years ago. All we’re doing now is bouncing the rubble and paying for the sound effects on credit.
Power is rarely just. People tend to forget the second half of Lord Acton’s observation on power:
Power corrupts, and absolute power corrupts absolutely. Great men are very rarely good men.
Quran 5:32 (via bonnniebennett)
Reminding us that “Islamic State” is nearly as Islamic as, say, Dr Hannibal Lecter.
like how much more obvious does this need to be made for people to get it?
this isnt even an exaggeration
like at all
And that’s a Very Good Thing™ for both language communities. Yes, it’s good to know both languages and to use each where they make sense. But They’re Not The Same Thing. Obvious, yes?
Abe Voelker wrote a blog post in which he sang the praises of the Kleisli Gem to, in effect, let you write Haskell code in your Ruby. He started out by demonstrating a “naive” validation object for validating an uploaded image according to four criteria, verifying that the image:
In addition, he states a requirement for “a JSON-friendly version of the validation return value as the website is uploading the image via Ajax”.
Fine. Easy enough, without resorting to exotic “Reese’s Pieces” language concoctions.
The Gist copied at the end of this post is what I’d consider a first draft of a rewritten AvatarValidator
class. It’s a somewhat more readable version of the original; both are still
massive SRP violations. They do too much; they have leaky abstractions
through and through. But this is still an improvement:
The original code
made was clearly a classic
command pattern,
but implemented in a massive nested-if furball. You had to squint to see that it
was implementing a stepwise state machine, with subsequent states being
implemented as ever-more-deeply-nested if blocks.
In the first replacement,
the #validate method
(inside the guard clause) is a sequence of calls to private methods with
intention-revealing names that (should) make it easier to find what you’re
looking for, or to understand the overall process.
The original code
has inline, nested if statements whose else clauses each build and return
literal strings, more than doubling the length of the #validate method
(lines 10-33) compared with the new implementation.
Changes to the original output messages do not originate in a “single source of
truth”, which complicates
and adds risk to change; are you sure you’ve done everything and only what
you set out to do? (Remember, there are no tests yet.)
In the new code, any validation error detected will raise a RuntimeError whose
message encodesan identifier for the error, along with a single relevant data item. The
handler
for that RuntimeError calls a private method
that centralises all text strings for error messages, making it easy to change
later if needed (e.g, for i18n).
The original code
passes in an uploaded_file parameter, which is assigned to an instance variable
(at line 7). That ivar is then used, duck-type style, to find its size (by calling
the #size method at line 12) and by calling the path method of the return
object from uploaded_file’s #tempfile method at line 15).
In contrast, the first whack at a replacement AvatarValidator has a nested
class, AvatarValidator::UploadedFile,
which reports the #size (needed for validation) and produces a MiniMagick::Image
instance
of the data in the uploaded file (however that file was specified,
whether as a blob of data, a filename or an instance of AvatarValidator::UploadedFile itself).
AvatarValidator still has repetitive code. The internal validation-step methods (#verify_file_size, #validate_image_format, #verify_allowed_format, and (to a slightly lesser degree) #verify_image_dimensions) each follow the same pattern: bail out if we’re valid, or call #fail_with if we’re not.#verify_image_dimensions method, Assignment Branch Condition size for verify_image_dimensions is too high. [16.16/15] is one I have learned to take seriously. RuboCop’s default trigger value of 15 is in fact higher than what you should see if, say, you were following Sandi Metz’ rules.A new iteration of the rewrite will soon address these problems, and produce code that is neither a straw man to provide a convenient excuse to switch languages, nor code that would budge the WTF-O-Meter® at your team’s code review.
Change is good. Change is a sign of life. Change that moves you towards your goal is a Good Thing™.
Change that makes you run around the same circle over and over again is not such a Good Thing.
OpenSSL has had security Issues for quite some time. Recently, like in the last year or so, it’s been getting updated more regularly as problems get addressed.
“Good”, you say. “Secure data is what the Internet relies on, isn’t it?” Well, no; not exactly. And closer to home, every Ruby developer dreads seeing that message from their package manager of choice saying “Your openssl version has been updated”.
Because, if you’re using a version manager like RVM or rbenv, that means you get to go reinstall every Ruby version you need to run on your system.
Here’s basically what I do. I’m using rbenv with a current production Ruby of 2.1.4 on a Mac; your setup will differ based on how different your system is. (Translation: Don’t come crying to me if this doesn’t work for you. You’re smart enough to use Ruby; you’re smart enough to fix it, with a little help from DuckDuckGo):
Step 1: Run rbenv versions. This presently gives me output of
system
2.0.0-p481
* 2.1.4 (set by /usr/local/rbenv/version)
2.2.0-preview1
Step 2: Nuke from orbit. (Note that I’m running on OS X 10.8.5… yeah, yeah…)
$ rbenv global system
$ rbenv rehash
$ ruby --version
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]
$ rm -rf $RBENV_ROOT/versions/*
Step 3: Reinstall “main” Ruby version and systemwide Gems. The `say “All done” is so Daniel tells me when it’s done, so I can go do other things and come back.
$ rbenv install 2.1.4 && say "All done"
$ rbenv global 2.1.4
$ gem install rails rspec simplecov pry-{bloodline,doc,docmore,byebug,stack_explorer,rescue,theme,pretty-numeric,highlight,editline,git} awesome_print bond jist jeweler lotusrb lotus-{model,helpers} padrino padrino-{assets,flash} rubycritic && say "all done"
$ rbenv rehash
$ gem cleanup
Step 4: Lather; rinse; repeat for every other Ruby version needed on the system. Remember that openssl is statically linked into Ruby and it has to match the current (latest security-update-driven) version on the system.
$ rbenv global system && rbenv rehash
# ...
$ gem cleanup
$ rbenv global 2.1.4 && rbenv rehash
Now you can get started on what you set out to do this morning… after tea break.
For More hijab Stuff ▶▶☪ http://muslimwomenwearclothestoo.tumblr.com ☪◄◄