My writing often does not flow

Question: I want to write in lyrical styles, not only in conversational styles, but often when I attempt that, in a rush to be done, my writing does not flow. Am I a bad writer, or am I just not editing enough?
Comment: Every good writer was once a bad writer
Comment: What are lyrical styles and conversation styles? Generally, one writes using on style at a time.  Why are you using esses there?
Comment: Can you first name for us three or four writers whose style you admire, and another three or four whose style doesn't work for you?
Answer: Assume you are a bad writer.
Good writers edit, editing more may help you become a better writer.
The other route is practice. Write more often. Write every day.
Stephen King on a talk show was once asked, what advice do you have for people that want to write?
His answer:

Start writing. You have a pen, you have paper, start writing.

But he followed up:

Most people that tell me they want to write, do not really want to write at all. They only want to have written. They want a bestseller, and royalties rolling in forever, and to be invited on talk shows to espouse their philosophy.
But people that want to write, just write. They keep telling stories, even if nobody is listening. And that is what it takes to get there. You have to write, and keep writing, for years, for five years, for ten years, to get good enough to actually start selling your work.
I wrote every day for many years before I sold anything. And I still write every day, because I love writing. And I would still be writing if I had never published anything."

End of quote (as I recall it).
The people that want to have written do not love writing, they are just willing to suffer through it to get to what comes after publishing.
If your writing does not flow, keep writing,  and keep trying things to figure out what makes your good writing flow and what is missing from the writing that does not flow, whatever that means to you. And eventually, you will figure it out.
Answer: Writing in a style that is not natural to you will always feel artificial and flow only haltingly. The writing style that flows most effortlessly is the one you employ in your thoughts and everyday speech. Developing a written style from one's own mental and verbal style will most quickly achieve a naturally flowing and efficient writing style.
If you want to write in a way that is distinctly different from the way you commonly think and talk (at least I assume you don't speak in poetry to your friends or at work), requires the same effort as learning a different language, with the added difficulty that you have to invent the language while you learn it.
If that is what you want, what you need to do is manyfold:

Practice, that is, write a lot.
Read writing in styles that represents or comes close to what you want to achieve, but don't blindly emulate it, instead analyse how it works and try to apply what you learned to your own literary voice.
Get feedback on your writing by readers who enjoy the kind of style you want to write in (feedback by others is detrimental, so don't ask people who don't like lyrical styles!!!). Trust the feedback you get and don't argue with your readers that they just don't get what you are doing. That's like telling native speakers that their feel for their language is wrong because you read something in a grammar book.
Don't expect to achieve mastery right away. You are making learning to write more difficult to you than the average writer (who writes in a style more close to his everyday language) and you will need more practice and be more diligent and hardworking and it will take you many more years to perfect, so prepare for the long run.
Expect a large part of the general public to reject your writing style because they will find it difficult and obscure. Don't expect financial success, as lyrical prose isn't very popular today and doesn't sell well (general fiction requires a language that is clear and unobtrusive, that is, the opposite of what you are attempting).
Answer: Practice.   What is needed is more practice.
One particularly beneficial form is to write pastiches of writers whose lyricism you enjoy.  It teaches a great deal about how to get the words to jump through hoops.
Answer: Read your work out loud.
Lyricism is an auditory perception (the etymology is "words set to music"); you can't really "hear" how something sounds unless you engage your voice, unless you physically experience the sounds of the piece.
Also, reading aloud slows you down and forces you into linear time, counteracting the hopscotch attention that can arise from visual reading. Quite often, when reading a passage aloud, I'll find missing or duplicated words that I did not see when reading (and re-reading) silently. So I think it's valuable for any kind of writing, not just for the lyrical.
Answer: There is a book called Elements of Eloquence, it explains how English word order, cadence, and some other aspects help writing flow. This will help you. But writing read to others with immediate feedback helps a lot.
Answer: Just to add to the other excellent answers:

Practice is king
Self reflection can help (you're already doing well on this front!)
Reading can help too

If you read something and think "that's great writing" then take a minute to re-read it and work out why it is good and if there are any techniques which you might be able to leverage next time you are writing. You might not get meaningful revelations out of every text but you should gain a nugget of wisdom every now and again.
Obviously, you'll need to practice, but you can bolster it with other actions.
Answer:
but often when I attempt that, in a rush to be done, my writing does not flow.

Let me preface this by saying that I'm a rank amateur whose prose skews heavily purple. I write for my own pleasure so that's not the worst problem to have, but reading back makes me feel like I'm just not getting the effect I want.
But it flows while I'm writing.
I can sit down and write a thousand words for the current chapter and the story is in those words. The characters are there, the events are playing out, the plot has advanced. All I need now is some spit and polish to massage the damn thing into something I'd actually enjoy reading.
I struggled with this for a while, trying to write stories that weren't terrible to read, before realising that getting the words out wasn't the end of the process.
How nice that editing has become such a simple thing. We no longer have to worry about running out of ink or blunting our last good quill, we can make any change we want in seconds. We've made the mechanics of editing trivial... even if the process itself is still torturous.

Am I a bad writer, or am I just not editing enough?

As a bad writer myself (trust me on this), I cannot extol the virtues of editing enough. You may be bad, you may not. But the most accomplished authors edit. And not for the fun of it, either.

That said, style is something you can definitely practice. Beyond just editing, try re-writing some of your existing chapters to be more in line with the style you're aiming for. You've already written that part of the story, now write it again - same action, same plot development - in a new 'voice.'
When you read works in the style you're aiming for, how does the text feel? How does it sound in your head? Who is the narrator telling the story? And more importantly: how would that narrator tell your story?
It's like writing dialogue, where you have to get into the feel of the characters to some degree. Casting the narrative voice as a character may let you switch style just as readily.

My writing often does not flow


How can I make a complex object hollow inside?

Question: I've been modeling GT wing for a car to 3D print and I want to model the inner structure in order to print in 4 separate pieces(since it is too large to print in one go).
And I've been trying to make it so that the wing has a thin wall but hollow inside for material and weight saving that looks something like the picture below but with the GT wing if that makes sense.

I've tried converting it to a solid model and made it into a shell model with FreeCAD software and using a modifier like Solidify Modifier to make it a shell-like model for the past few months but none of them worked unfortunately. Solidify modifier seemed to be a somewhat promising method but then a complex model like this makes the mesh intersect with itself when the modifier is applied.

Is there any way of getting away with this self-intersecting problem or a completely different solution to make it a shell-like model?
Comment: can you share your blende file https://blend-exchange.com
Comment: I've added it just now!
Comment: I have no 3D printer myself, but friends of mine do and what I've seen there when trying to print something is that in the printer software you can choose how thick the wall should be and if the object is completely hollow, filled with some structure or completely solid. So I'm wondering if it is really necessary to deal with this in Blender since you don't need it for the model on its own but just for 3D printing. Although the solution might help people who need this for the model itself even though it's a very specific solution presumably only applicable on this object.
Comment: Yes, it is actually necessary in certain aspects. Slicer has this mode called vase mode where it basically prints the outer wall of the object exactly as you explained, also, as you stated already, you could do it by turning off the infill setting too. But what I want to achieve here is that I want to make an inner structure so that I can connect all separate parts after the prints with long shafts or smth. The problem here is that if you turn off the infill setting, it also doesn't fill in the inner structure parts where I want to be durable. Hope that explains the issues! :)
Answer: You were on the right path with the Solidify Modifier. Just set the Offset to $1$ instead of the default $-1$. Offset of $-1$ extrudes inwards but your geometry is too dense already hence it starts intersecting so it's best to extrude outwards with offset positive 1.
But of course this will change the outer dimensions and modify the outer roundness. Your problem is those 2 Edge Loops at the top and 2 at the bottom, so I would dissolve those 4 Edge Loops with X > Dissolve Edges.

Temporarily remove the Subdivision Modifier and Mirror Modifier and then, add and Apply a Solidify Modifier with mode Complex. Now you can add those Edge Loops back again with Loop Cuts using Ctrl+R:

And add 2 supporting Loop Cuts.

Now you can add the Mirror Modifier and Subdivision Modifier back again.
Comment: yes good point. I updated the answer for what I would do instead.
Comment: Thank you very much Harry! You really are a lifesaver!
It worked perfectly as I always expected it to!
Comment: Thanks for the suggestion. But yes, exactly as Akshay pointed out, I would like the model to be thickened inward in order not to mess with the dimension as well as the sharpness of the corners... :'(
Comment: @Brian you're welcome! I'm glad it worked out for you! Just double check if the mirroring worked as well i forgot about it lol
Comment: Yes! When I checked, the lower corner also had the intersection but I was able to get rid of it with your approach! And the mirror modifier also works just fine! Much appreciated :)))
Comment: Although this is the only solution that even I was able to think of, the person wants to print the model. In that case something like this will mess up the dimensions (right?). Is there a way to keep the -1 but still avoid the issues ?


AS3: How to make Parent Function return the selected value of a ComboBox

Question: I'm developing an AIR app that requires a menu to show only during the first run. In it the user will be able to choose the desired language for the app to run in.
I'm displaying this menu without a problem but I need it to stay visible until the "select language" comboBox is changed and then return the selected choice's data value.
My problem is that I can't seem to figure out how to return a value only after the combo box is changed.
function promptFRMenu():String{
FRMenu.enabled = FRMenu.visible = true; //when I detect the app is running for the
                                       // first time, the dialog box is enabled
                                       // and made visible
var peferedLng:String = new String;

    FRMenu.language_CBox.addEventListener(Event.CHANGE, announceSelectedItem);
        function announceSelectedItem(e:Event):void {
                 FRMenu.enabled = FRMenu.visible=false;
                 peferedLng = e.target.selectedItem.data;
                -> return peferedLng;
                //It is the 'parent' function that should return this value but
               // only after it is selected
        }

}

I'd really appreciate any help.
Cheers!
Answer: This works for me, I am using FB Burrito w/the Hero SDK
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:s="library://ns.adobe.com/flex/spark"
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
    <fx:Script>
        <![CDATA[
            private function _handleChange($event:Event) :void
            {
                trace($event.target + " // CHANGED // " + $event.target.selectedItem.value);
            }
        ]]>
    </fx:Script>

    <mx:ComboBox id="comboBox" rowCount="5" labelField="label" prompt="Select One" change="_handleChange(event);">
        <mx:dataProvider>
            <s:ArrayList>
                <fx:Object label="One" value="1" />
                <fx:Object label="Two" value="2" />
                <fx:Object label="Three" value="3" />
                <fx:Object label="Four" value="4" />
                <fx:Object label="Five" value="5" />
            </s:ArrayList>
        </mx:dataProvider>
    </mx:ComboBox>

</s:Application>

Answer: you can't return a function from an event handler.  also a function can't return a function from a nested function like that.  further, a function will return a value as soon as it's invoked - you can't defer it until an event occurs.  and just a piece of advice, it's generally not good practice to nest named functions like that.
i'm not clear on the net result you want to achieve, but you probably want something closer to this:
var peferedLng:String = new String;
function promptFRMenu():String{
  FRMenu.enabled = FRMenu.visible = true;
}
FRMenu.language_CBox.addEventListener(Event.CHANGE, announceSelectedItem);
function announceSelectedItem(e:Event):void {
   FRMenu.enabled = FRMenu.visible=false;
   peferedLng = e.target.selectedItem.data;
  // do whatever you want to do with peferedLng here
}


How does a DHT in a Bittorent client get "bootstrapped"?

Question: If I have a torrent w/o any trackers in it, and I just started a bittorent client so I have no peers yet...how do I know who to first connect with in the DHT?  It seems like I would have to know at least ONE node in the DHT to get started....
Answer: The mainline DHT bootstrap nodes are router.utorrent.com and a CNAME to it, router.bittorrent.com. Port 6881.
Comment: Thanks! This might be the only place on the web where the full addrs are given in plain text.
Comment: If you look at the DNS those resolve to the same location with router.bittorent.com being a CNAME to router.utorrent.com. They are the same node.
Answer: When a BitTorrent client connects to DHT, there is an initial place that it goes to find peers.  With the original BitTorrent client, there was a url to bitorrent.com that would help get things started.  I tried looking up the reference but I couldn't find it.  Once you've established connections with other clients, then you can do an announce on the DHT network to find peers for the torrent you're looking for.
Here's a link to the BitTorrent specs that discuss DHT.

A trackerless torrent dictionary does
  not have an "announce" key. Instead, a
  trackerless torrent has a "nodes" key.
  This key should be set to the K
  closest nodes in the torrent
  generating client's routing table.
  Alternatively, the key could be set to
  a known good node such as one operated
  by the person generating the torrent.
  Please do not automatically add
  "router.bittorrent.com" to torrent
  files or automatically add this node
  to clients routing tables.
Comment: You `announce` on the DHT network? I thought you did a `get_peers()` or even the abstract `get()` to find peers?
Answer: the graph at the bottom of this DHT monitoring project site shows

dht.transmissionbt.com
router.utorrent.com
router.bittorrent.com

as bootstrapping peers
Comment: BitTorrent has published the source code so now you can run your own DHT bootstrap machine: https://github.com/bittorrent/bootstrap-dht
Comment: @stk that link is broken (first miss-configured ssl, then page missing).
Comment: Uhm, no. Links _by themselves_ are bad. You have to put the relevant information in the answer itself, which I clearly did. Those bullets _are the quote_. The link is just a reference to the source.
Comment: @ctrl-alt-delor well, this answer is more than _7 years_ old, it happens... anyway, in cases like this, try digging it up at the Wayback Machine: https://web.archive.org/web/20120508202413/https://dsn.tm.uni-karlsruhe.de/english/2936.php
Comment: That is why links are bad. (links are also good, but in this case they can be bad), it can be good to add an image or a quote as well as a link.
Answer: In BiTTorrent, you have three main options:

Torrent File: some torrent files can embed nodes for you to link into the DHT with (in fact, it's recommended when making a torrent file)
Hardcoding: Some torrent clients hard code a few bootstrap nodes (like the ones mentioned by stk). These are usually run by companies and organizations with long-running servers.
PEX / Peer Conversations: You can usually ask for DHT nodes from the people you are downloading other torrents from (if your clients understand eachothers language. ie some versions are incompatible).
Answer: Transmission uses a hardcoded bootstrap node for dht if there is no other way to get peers:
bootstrap_from_name( "dht.transmissionbt.com", 6881, bootstrap_af(session) );

I guess each torrent client uses their own bootstrap node.
Answer: For the record, Deluge also uses hardcoded boostrap nodes:
dht_bootstraps = set(
    lt_bootstraps.split(',')
    + [
        'router.bittorrent.com:6881',
        'router.utorrent.com:6881',
        'router.bitcomet.com:6881',
        'dht.transmissionbt.com:6881',
        'dht.aelitis.com:6881',
    ]
)

Answer: A client can learn about other DHT-capable peers through it's interactions with them.  A peer's support for DHT is advertised in it's Handshake.  Once a client discovers at least one good, well-connected DHT peer, it can navigate the DHT to find more and closer DHT peers.  It will remember these peers, called nodes in DHT-speak, between restarts of the software and maintain/update the list continuously while it is running.  In the worse case where a client knows of no good DHT-capable peers, it will require you to download a tracker-based torrent so it can hopefully contact a few good DHT-capable peers it learns about through the tracker.
Update:
For it's initial list of DHT peers, as @Seppo points out, a torrent client can use one or more hard-coded DNS names to find the addresses for well-known peers, and it may also include a hard-coded list of peers as a final fallback as well. One limitation of DNS, however, it no port information is provided so a default port of 6881 is generally assumed whereas other means support peers operating on different ports.
Answer: Here are the primary nodes I've come across.
dht.transmissionbt.com 6881
router.bittorrent.com  6881
router.bitcomet.com    6881
dht.aelitis.com        6881
bootstrap.jami.net     4222


Translating "win against all odds"

Question: Does the phrase "non obstante omnes, vinco" have a coherent meaning?
I wanted it to mean something like "in spite it all (or) against all odds, win/conquer!".
I want to get this phrase engraved in Latin.
Answer: Salve,
I can't exactly figure out your phrase. I am getting after not hindering (obstante is ablative absolute?) all [difficulties], I win. I don't know exactly why you are using the ablative, if omnes was also in the ablative it would have made a bit more sense grammatically and would mean something more like "everything not hindering, I win."
To deconstruct your Latin phrase more, nōn negates obstante, which is a present participle in the ablative. There is nothing else in the ablative singular, thus it is modifying nothing. Omnēs could be nominative or accusative plural. It cannot be the subject of vinco as vinco is first person singular, not third person plural. I can see how you are using omnēs to be something like in spite of all, but I don't know if this is fully clear with the current phrasing. Moving on to vinco, it is a verb in the first person singular present active indicative, thus it translates as I win.
Caesar uses the phrase "Erat ob has causas summa difficultas" (De Bello Gallico 4.24), which translates as "it was the height of difficulty on account of these reasons." You could lift some of this and say something along the lines of erat summa difficultas, tamen vīci (it was the height of difficulty, nevertheless I won).
You seem, however, to be looking for something a little more impersonal. The original phrase, "win against all odds," is in the imperative so, instead of vinco, maybe vince, which commands one person to win, or vincete, which commands multiple people to win. So this would yeild something along the lines of multī et magnī casūs, tamen vince! (many and great misfortunes, nevertheless win!, or, in better English, dispite many great misfotunes, win!)
Hope some of this helps.
Answer: According to the context, against all odds could be something unhopped for, or simply unexpected, which can be rendered by in-speratus (un-hoped). So I would translate it as ex insperato vici (I suppose it makes more sense to conjugate it to the perfect).
Comment: Can you expand on this answer a bit?

Translating "win against all odds"


asp.net panel alternative

Question: Guys, I am trying to find a nice panel like control for ASP.NET. I'd like something that is skinned, similar to this control: http://demos.devexpress.com/ASPxperienceDemos/RoundPanel/Appearance.aspx
However, I would like something that is free or at least low price (I don't need a $1,000 control toolkit just for a panel). Any one have any suggestions?
Comment: AjaxContolToolkit will help you...
Answer: How about a div with rounded corners on a web-kit browser? IE is losing market share rapidly, so I wouldn't worry too much about it.
If you really must support rounded corners on IE, I suppose you could use something like the jQuery rounded corners plugin. I'm sure other JavaScript frameworks have similar features.
Comment: BTW, I'm really excited about CSS3, and HTML5.
Comment: +1 from me. you dont need $$$ to do some fancy stuff. Some good CSS will just do the magic for you
Answer: Hai,
Ajax Rounded corner around a panel ajaxcontroltoolkit its free
Answer: I actually found a pretty good javascript program to make some pretty nice rounded divs with a drop shadow: http://www.ruzee.com/blog/shadedborder

asp.net panel alternative


Do you have to put containers or cabinets in a dormitory?

Question: If you put containers or cabinets in a dormitory do dwarves even use or claim them? I know in barracks they do but what about dormitories?
Answer: Nope but good quality ones act as room enhancers.
Its like placing ≡statues≡ in your meeting hall.
Answer: On a purely technical level, the only furniture needed in a dormitory is the bed to define it. Anything else, including the door, are optional.
On a more useful level, cabinets will be filled with clothes, so yes they are useful; containers (bags, chests and coffers) are not used at all in dormitories - you can build them, of course, but no dwarf will ever put an item in them. Incidentally, this is the polar opposite of hospital behaviour, where containers hold everything and cabinets are ignored.
As a final note, cabinets in dormitories may cause the game to not release the resident dwarves' hold on their worn out clothing. This was certainly the case in 0.34 and 0.42, where deconstructing cabinets resulted in a sudden massive amount of unowned xsocksx and so on, which could be dumped in an atom smasher -- or sold to traders, because even with the price penalty from being worn, clothing is absurdly valuable in DF.


Should I split data into train/validation/test before feature scaling and feature selection or after?

Question: I'm working on a project, I finished data preprocessing, and I found an article where it says that feature scaling and feature selection should be done after splitting data, some other articles say it should be done before. I also found an article that suggests splitting data first and then preprocessing it. I'm a bit confused, does anyone know the real answer? Thank you.
Comment: Hi @bihu, Do data pre-processing before splitting, this will keep experiment pipeline streamlined. You can do it after splitting too, but then you will have to repeat the pre-processing process. While doing pre-processing before data split, ensure no leakage of target occurs.
Answer: In general, test data insights should not affect our decisions, and test data should not leak into model training process.
What happens when we perform certain actions before splitting?
Exploration: if we split the sets ourselves, we assume the distributions having no significant differences, so performing exploratory analysis on the full data is acceptable.
Feature selection: once again, if we assume the distributions to be roughly the same, stats like mutual information or variance inflation factor should also remain roughly the same. I'd stick to selection using the train set only just to be sure.
Imputing missing values: filling with a constant should create no leakage. Strategies like filling with mean values result in a leakage (albeit a minor one, if it's a school project, reviewers are known to often turn a blind eye on that).
Dropping outliers: if we expect the real input data to be filtered the same way, it can be done before splitting. Otherwise it's just cheating (we exclude observations that are hard to predict from all sets).
Feature encoding: depends on the encoding strategy. OHE shouldn't result in a leakage, target encoding would make a huge leak.
Feature engineering: if we operate within a single observation (like, adding two features' ratio), there's no leak. If it's based on other observations somehow, it's a leak (this applies to most scaling methods just as well). If it considers target too (e.g. SymbolicTransformer()), the leak becomes really huge.
Answer: Strictly you should not act as if you know things in your test set.
If you want to perform min-max scaling (for instance) you should fit the min-max scaler to your training set. Then use this to transform your training and test set.
Perform feature selection in the same way.
(I say training and test because the validation will be part of the training)


Modelling in python and scoring in MATLAB?

Question: I have model objects either pickled object or H2O POJO. Is it possible to call those objects and do the scoring in MATLAB?
Comment: Scoring as in - you run the model normally in python, perform the predictions in that code in python and then perform the prediction scoring in MATLAB.  (i.e. not the model training with cross-validation in MATLAB). Yup?
Comment: @grochmal Yes indeed I do modelling in python and save my model object there. Then I wanna use this model object in MATLAB to do scoring.
Comment: Wait, by "scoring" you mean executing the model on new data (that is available only in MATLAB at that point in time), yes? i.e. perform the prediction on data that the python code did not see, or is not able to see.  Not "scoring" the model based on predictions it already did. (P.S. "scoring" is quite an overloaded word).
Comment: Same data will be in MATLAB in production and the model object will be used to predict. But this is not relevant to my question. I just wanna learn if I can use my pickled or POJO object, created in pyhton, in MATLAB.
Comment: you can't by default run one language in another but that does not mean there aren't workarounds. Yet, workarounds may be slow, or moreover, need a good deal of work to not be slow. I'm trying to weight the possibilities (and don't want to give a correct but useless in practice answer). So probably the last one: How fast the resulting classification need to be?
Answer: <code>"Data.p" #yours pickle file
[data]=pickle.load(open("Data.p","rb"))
</code>


How was higher education done before the university system?

Question: I know the university system as it is understood today dates at least as far back as the 13th century or perhaps even to the time of Charlemagne, Alcuin of York, et al., but how was higher education handled before universities? Was it by private tutoring?
Comment: There was the Great Library at Alexandria. It was immediately adjacent to "The School of Hard Knocks".
Answer: As with many things the history of higher education is not well known since accounts may be scarce or missing altogether. Early evidence indicate that schools existed in Egypt where, primarily, boys would learn to read and write etc. One has to remember that such skills were not for the masses. Religiously connected schools also emerged where religious texts were handled and copied. Theological and medical teaching was also done but very little else. evidence of mathematics have been found so there were also schools, perhaps aiming at architecture, astronomy , etc. relevant for the culture. None of these has a degree at the end but was likely based on apprenticeship and mastery evaluated by the teachers. Similar evidence for teaching exists in all older cultures and seem to focus on maintaining order in the social and cultural basis for society.
There seems to be a big step when considering Greek education which was far more comprehensive than the pragmatic education earlier. In the city states of ancient Greece specialized schools emerged where teaching circled around very specific topics such as the Hippocratic school of medicine on Cos. This specialization seems to have continued with the well known Greek philosophers/scientists such as Aristotle, Plato etc. and teaching progressed in directions envisioned by these founders. In other words, there was no single systematic way for schools to teach and operate.
In the Roman world subjects were ordered in groups that we can recognize today: I grammar rhetoric, dialectic; II geometry, arithmetic, astronomy, music; III medicine, architecture. This was how the liberal arts (defined as theoretical and intellectual activities by the Greeks) were seen. The subjects have of course survived to modern times although organisation has changed. So education became more organised but the education was not open and still served a purpose for maintaining government rule. Out of the post-Roman world came the first universities as stated in the question where education became even more organized and eventually including fixed degrees.
This answer is loosely based on the excellent book: The first universities by Olaf Pedersen, Cambridge UP, 1997. I strongly recommend it!
Comment: The only educational history book I'm familiar with is Patrick J. McCormick's [_History of Education_](https://archive.org/details/historyofeducati00mccouoft), but I want to check out _The First Universities_! Thank you for the reference
Comment: Yes, there are probably several books so thanks for the one you mention. I am interested in the subject so I will also check that one out.
Answer: It depends on what you mean by higher education.
Degrees are highly inflated nowadays, now practically everyone and his dog has a PhD, or at least a BSc.
100 years ago passing final exams in high-school practically was the terminal degree for most administrative positions. Much fewer people went on universities, mostly engineering, doctors and such.
If you go back a couple of hundred years you realize that very few profession actually needed university degree, and universities were mostly scholarly centers for philosophy and religious studies. Most engineering didn't even exist 500 years ago, and what existed was taught by professional communities through apprenticeship, not by universities. So what you call higher education is defined very much by the post-industrial area.


Why is the indefinite article correct in "We had the/a customer in the other day..."?

Question: As an ESL learner, I learned that we use an indefinite article a/an for some unspecified objects, while the for specific things.
And I encountered the following sentence that asks me to choose the right article.
"We had the/a customer in the other day who wanted to buy chocolate-covered ants."
First, I thought it should be the, since the speaker is mentioning about the specific person who wanted to buy chocolate-covered ants.
But the correct answer is "a", so I want to ask in what sense it is an unspecified person.
Comment: Another stupid test! We'd need far more context to know whether the definite or indefinite article is more likely. And it really is a case of what's ***likely*** in any given specific context. I don't think the "less common" choice would ever actually be "incorrect", but without a full context the question is just pointless.
Answer: We also use the indefinite article when a person or thing is mentioned for the first time. The speaker refers to 'a customer' (a person they didn't know) and then tells us something about them. If they need to mention that person again, they might say "Do you remember the customer who wanted to buy ants? S/he came in again today to ask if we had them in stock yet."
Comment: Yes, it should be 'the person', because, if they have given something to you, you _have_ some previous knowledge of them.
Comment: Thank you very much! I have also one more question pertinent to this. Is it then right to say "I am looking for a person who gave me this."?
Comment: I know what you mean, but I don't really think "for the first time" is necessarily a good general piece of advice - you can see how it has inspired the OP to ask about "...a person who gave me this".
Comment: @stangdon I guess it should have been "the person." If possible, could you please let me know the difference between the two?
Comment: Obviously the *speaker* knows which customer he's talking about, or he wouldn't be able to mention them in the first place. That in and of itself licenses the speaker to use ***the*** even if he knows perfectly well that his audience know nothing about that customer or his request (using ***the*** rather than ***a*** in that situation is a perfectly natural way for the speaker to emphasize how "memorable" that customer was ***to him***).


inserting audit logging entry for user login

Question: I am using the grails 1.3.7 with audit logging plugin. I want to capture user login event like "user:PSam logged in at .." in the logs and since plugin does not have onLoad event defined, I am adding it to the domain classes and populate my own audit table entry in this event.
So in grails user domain class I do as follows
def onLoad = {
        try {
         Graaudit aInstance = new Graaudit();
         aInstance.eventType= "User Log in"
         aInstance.eventDescription = "User logged in"
         aInstance.user_id = username
         aInstance.save(flush:true);
          println "username="+username
          println aInstance;
        }
        catch (e){
            println(e.getMessage())
        }
    }

I am having two issues here...
1) the username property defined in this domain class as an attribute is coming up as null
2) it throws an exception saying: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here
Is there another approach to be taken here?
and also can use the plugins audi_log table to populated my onLoad() events entries?
Thanks in advance
Answer: Wrap yoyr logic in transaction:
def onLoad = {
   Graaudit.withTransaction {
      try {
       Graaudit aInstance = new Graaudit();
       aInstance.eventType= "User Log in"
       aInstance.eventDescription = "User logged in"
       aInstance.user_id = username
       aInstance.save();
        println "username="+username
        println aInstance;
      }
      catch (e){
        println(e.getMessage())
      }
    }
}


Skills in resume

Question: Should I mention in my resume (medical) I'll send to potential employer skills that I can't perform that well? Though before I'll get to work I'll take practical course and probably will improve myself in those skills.
Comment: Possibly relevant: http://workplace.stackexchange.com/questions/67452/how-honest-should-you-be-in-a-job-interview
Comment: Just make sure you don't overstate your skill level.
Comment: Already having exposure to something is a huge plus. You don't have to say you're an expert, just say you have some experience or whatever is appropriate for your level of skill.
Answer: No.
Never lie in a resume, but there's no reason to mention skills you don't have. I never mention the fact that I can't pilot an aeroplane, for example.
The resume is only there to get you an interview. At the interview, if they ask you about this particular skill, you can tell them about where you are with it.
Comment: Well,I said I am not that good, but did not say I can't perform them. I have done them but because of gap of practise  and lack of experience, at the beginning I might need time adopt to those skills.
Answer: It would be appropriate to just write about the skill you are good at. This would implicitly let your recruiter know about your skill set. Keep it focused.
Also if when I say I am not good at certain things, doesn't it implies, I am good at rest? This will make resume confusing and awkward.
If you are already pursuing some course to improve on some skills, you can mention about the courses, to let them know what you are heading towards.
During interview if asked, or in a situation, you can discuss your level and comfort with skills.

Skills in resume


Can a headless zombie eat your plants?

Question: In Plants vs Zombies, often, when a zombie loses its head, it continues making munching motions.  I usually freak out and bomb them with something when they get that close, but I'm curious if it continues to damage your plants.
Comment: I could swear they can still hurt the plant with their hands until they fall down, but then again, I vaguely remember (somehow) determining that once they lose their head, nothing happens.
Answer: When a zombie loses his head it is a signal that he is really dead now and it doesn't do any further damage to your plants.
Comment: Just for reference - while it can't do any **damage** directly, it can still be a negative influence, since the headless body - until it falls - will still absorb your plants' 1 or 2 shots thus shielding any zombies behind it.
Answer: No, once the zombie is dead it won't to any more damage, regardless of what the death animation might look like.
Comment: True, sound != damage.

Can a headless zombie eat your plants?


Difference between Statistics and Machine Learning?

Question: What would I learn as a Ph.D Student in Statistics that I wouldn't learn and vise-versa in Machine Learning Ph.D program?
Comment: Note it is vice versa...
Comment: From a purely business perspective, statistics is what you do. Machine Learning is what you tell your client you're doing
Answer: Machine learning is a quickly developing branch of technology, based on some basic statistics but also including elements of computer science, high performance computing, etc.
Unfortunately, ML/AI is currently a buzzword and many departments want to have a course on it assuming it will attract students and bring money. This means that when it comes to taught courses, there is no consensus yet what should definitely be included and how the course can be structured. There are examples of ML courses drawing significantly from the classical foundations of Statistics, courses more focused on use of software, more vocal courses with significant discussion of ethics / legal issues around artificial intelligence. Similarly, a PhD project in ML can be either highly theoretical (e.g. proving a convergence or stability of training), or highly practical (e.g. building 100s of NNs until one of them does better than others for some reason), or whatever else.
Statistics is a more established science, which has many applications. Depending on the area of applications, there may be some variations (e.g. Medical Stats may be slightly different from Statistical Physics), but the core methods are still the same, largely based on probability theory, calculus and linear algebra. I would not expect a PhD thesis in Stats to avoid maths completely  (something which I can not say about ML).
Answer: Statistics is a tool with many uses. It is, at its core, unrelated to machine learning, so, in a statistics degree you might never hear anything about machine learning.
On the other hand, many techniques of machine learning depend on a fairly deep knowledge of statistics, so you'd better come to such a degree program in machine learning already knowing at least the basics of statistics. In fact, the basics may not be enough, depending on the faculty of the program and their preferred toolset.
Answer: What is called "machine learning" is essentially just statistical prediction, but coming at it from more of a computer-science background, with a greater focus on non-parametric algorithms, divergence measures, and big data problems where computation issues become a concern.  The field includes many standard statistical techniques, but many of the algorithms in use are complex non-parametric algorithms where the full statistical properties of the algorithms are not yet known.  The field seems to have arisen as a consequence of computer scientists entering into the field of statistical prediction, and approaching that field in a different way to the traditional statistical field.  There is less emphasis on foundational theory (though that is changing) and more emphasis on algorithm development and computational issues.  There is a greater emphasis on non-parametric models and simulation, with theoretical underpinnings framed in terms of properties of divergence measures.
Since machine learning is essentially replicating one subject within statistical analysis, there is a huge cross-over in material between these fields, and anything in either field can be regarded as also useful to the other.  Indeed, arguably machine learning is not even a new field at all; just a new approach to an old field, with slightly different points of emphasis.  In any case, machine learning is likely to focus less on foundational issues in probability theory and statistics, and more on computation and programming of a particular 'toolkit' of predictive methods (e.g., sparse models, neural networks, classification algorithms, random forests, etc.).  Theoretical underpinnings of machine learning are presently in development, and tend to focus on the mathematics of divergence measures, with convergence often framed in terms of 'order' arguments framed in classical computational terms.
In terms of what you are likely to learn in each PhD program, that is largely self-driven, so there is no reason you cannot learn material from one field while formally enrolled in the other.  Indeed, regardless of which you pick, I would strongly recommend that you try to learn as much as possible about both.  If you become a statistician (like me) then it is useful to have familiarity with the material in machine learning, and if you go into formal computer science and machine learning, it is useful to have familiarity with probability theory and statistical science.  The mathematical foundations in a statistics PhD will focus more on measure theory and probability theory, and the applied work will focus more on traditional parametric and nonparametric models, whereas in machine learning the mathematical foundations focus more on broader divergence measures (e.g., Bregman divergence), and the applied work focuses on certain types of nonparametric methods that are on the fringes of traditional statistics.
Answer: Both are about getting answers from data, both can lead to good jobs (if you are good at them), and makes a lot of sense to take courses from both fields.
Statistics is more about theoretic foundation (in Probability theory), and methods that are consistent with that theory. Expect math-heavy coursework and dissertation. Likely branched out from Math department, more suited to academic types.
Machine Learning is more of a bag of tools, without much theory as to why some of them work. Expect homeworks and dissertation that focus on programming. Probably branched out from Computer Science; more suited to industry types.
If you are considering specific programs, look at their "placements" page, i.e. what kind of jobs their recently graduated Ph.D's get.
Comment: I'd push back on ML being a bag of tools, especially at PhD level. You'd certainly need an understanding beyond just using high-level apis with little thought about what's going on. Recreational/enterprise use of ML is very different to a PhD.
Comment: what is math? proofs all day?
Comment: yes, statistics will involve more proofs, like consistency of your estimation method. ML will involve more programming.
Answer: Doesn't it rather depend on what is the precise topic of your research? I am currently researching a subject as a member of my university's school of mathematics and statistics, but, for my subject, I need to know quite a bit about ML, and, as it happens, fluid dynamics.
Surely it is a bad idea to tie yourself into a narrow discipline prematurely.
I am in the UK, so coursework generally is not a feature of a PhD programme.


Do dropped items in Ingress decay?

Question: If I drop an item in Ingress, will it be there until someone picks it up, or is there a chance of it decaying? I realize the danger of someone unexpected coming along and picking things up, but does anyone know if items will eventually disappear on their own?
Answer: On Jan 9th, Niantic leaked a document suggesting that the next update will make dropped items have a 12 hour lifespan.
Source: http://www.nianticproject.com/?id=sc208b

"Objects dropped out in the world will lose cohesion and disintegrate
  in approximately 12 hours"
Comment: This is now the correct answer.
Answer: I have had a feeling they do, but cannot confirm it 100%, but it seems I was wrong, after Christmas I am going to check items dropped in November if still there I would say that dropped items do not decay
Right now I can confirm dropped items stay alive for at least 14 days.
I am dropping keys and media files I don't need at difficult to access locations (high speed train rails) and I am pretty sure they won't be picked up. I will keep testing it.
Update 1: 8 days decay free.
Update 2: checked on a very old dropped media item 2 weeks ago and still there
Update 3: All items dropped before 24.12.2012 decayed - removed or maybe picked up, but this is highly unlikely
Comment: I use very difficult to access locations, like high speed train rails, then train is so fast there you can barely see the item and there is no other normal way to get close to the item.
Comment: I honestly forgot I asked this question here. I know they made some changes to items in the last server side update, along with inventory limits, so I'm accepting this answer. Thanks for the updates. I heard rumors they implemented item decay with those changes, but haven't heard details or confirmation.
Comment: I'm not sure there is a true way of knowing, someone could see your dropped items and pick them up and it just looks like decay.

Do dropped items in Ingress decay?


Scala: Mixing traits with the "same" abstract type member

Question: I have been looking at the paper on the type system of Java and Scala being unsound. To better understand the problem, I have been trying to play around with a smaller related problem.
I have the following types:
class Parent
class Child extends Parent
class Grandchild extends Child
class GrandGrandchild extends Grandchild

Here are some traits with constrained abstract types:
trait LowerBound[T] extends{
  type M >: T
}

trait UpperBound[U] extends{
  type M <: U
}

I understand that the problem arising here is that the types T and U in UpperBound and LowerBound are not related. So mixing them can be problematic.
I can see that I can create an object/val by providing the abstract type:
object FamilyMember extends LowerBound[GrandGrandchild] with UpperBound[Parent] {
  type M = Child
}

but I fail in defining a trait like the following:
trait FamilyTreeConstraint extends LowerBound[GrandGrandchild] with UpperBound[Parent]

I get:

overriding type M in trait LowerBound with bounds >: A$A131.this.GrandGrandchild;
   type M in trait UpperBound with bounds <: A$A131.this.Parent has incompatible type

Now if I didn't have any concrete types, the parameterised FamilyConstraint would be equivalent to:
trait UpperLower[T,U]{
   type M >: T <: U
}

on which I understand the error. as T and U are unrelated.
But the Family Constraint type above is not abstract and actually has concrete types. Ie I would have imagined the compiler to end up with this:
trait UpperLowerConcrete{
   type M >: GrandGrandchild <: Parent
}

Where I would be allowed to refine M as Child or GrandChild .However it doesn't turn into above and gives the same error as the abstract case.

Why?
Also, am I right in thinking that type-refinements are applied first and then type-constraints are checked?
Answer: I don't know the reasons for this behavior but from my experience it is often necessary to explicitly override type  definition inside a sub-class/trait if its constraints are changed. What I mean is that once you specify restrictions for M explicitly in your FamilyTreeConstraint, the compiler is satisfied
trait FamilyTreeConstraint extends LowerBound[GrandGrandchild] with UpperBound[Parent] {
  override type M >: Grandchild <: Parent
}

See it online


Kubuntu 11.04 dpkg interrupted

Question: I ran 'sudo dpkg --configure -a' in a terminal.  I was shown a DOS Menu Looking blue panel with some choices relating to keymap selections.  I am not able to enter any data.  How can I fix this problem?
Answer: With the Tab key you should to be able to pick the correct selections.

Kubuntu 11.04 dpkg interrupted


Netflix filter / review downloads?

Question: Is it possible to either filter or at least review Netflix movie downloads based on criteria like movie rating, nudity, obscenity, violence, etc?
Comment: What do you mean by reviewing movies based on those criteria?
Comment: reviewing downloads, i.e. categorizing previously downloaded movies based on those criteria.
Answer: Yes and no. There are some options available. If you're looking at a movie's description, you can see what "kind" of a movie/show it is (this is under This Movie Is:). You can't get anything closer to what you're asking for but I usually use that as a pseudofilter.

Netflix filter / review downloads?


Mechanical Property Responsible for Folding

Question: I was wondering on which property does a material's tendency to fold depends upon.
When we push a metal plate, it seems to move forward. However a rug would start to fold and form crests. A piece of paper moves forward but folds very easily when an obstacle is present in its path.
 This tendency to fold seems to be dependent on dimensions of object as well. A very large metal plate would fold in presence of a 'push' force.
 This tendency also seems primarily dependent on friction and any other component of force towards the opposite direction( opposite to direction of movement).
Can this tendency be quantified? If such a topic of discussion already  exists then please share the link or name of book.
Answer: Yes. It's compressive failure. There are three main strengths considered in evaluating material strength; tensile (stretching), compressive (opposite of stretching), and shear (cutting).
What you are calling "folding" is usually called "buckling" or the sudden sideways deflection of a structure.
Think of your paper as a sideways column. Load is applied until it exceeds the compressive strength of the column, at which point the column buckles. Continued application of load will result in further deformations.
Answer: Elasticity has a lot to do with it.
Some materials respond with bigger displacements when stressed than others.  In the case of a rug, it's a lot easier to make a rug bend than a piece of metal, because the rug is more elastic (that also has to do with it being a lot of thin fibres while metal would be a thick sheet that has to take all the stress internally).  Paper is similar, it has a lot of thin fibres as well and therefore can easily bend (paper is also thin as a whole).
The thick plate can bend a little bit elastically, but to get it to fold like paper you have to do "plastic deformation" such that it wouldn't naturally want to go back to it's original shape.
The reason that a rug wants to bend easier than paper does have to do with friction.  Note that friction force $F_f = \mu N$ where $\mu$ is the friction coefficient and $N$ is normal force.  Normal force is just weight $N = mg$.  The carpet has more weight, so the friction force is higher.  This makes it easier to bend than to slide, the same as if you increase papers friction by weighing it down.


Salt in boiled meat

Question: Is there a way to estimate consumption of salt when dealing with the boiled meat? I.e. I had 500 grams of meat, boiled in 2 litres of water, with 5 grams of salt diluted in that water. If the water is to be discarded, how much salt will be left in the meat?
Comment: My non-scientific answer would be "almost nothing", since meat generally *loses* water during boiling rather than absorbing it. That's why it comes out so dry. Salt would normally be absorbed *with water*, as in brining.
Comment: See also http://cooking.stackexchange.com/questions/27407/how-much-salt-is-absorbed-by-meat-during-brining
Comment: This is probably going to be pretty difficult to answer - the answer depends on the exact quantities (and the kind of meat, and so on), and I doubt there's a nice simple formula or anything, just the various specific circumstances someone's bothered to test in a lab.
Comment: The upper limit of salt absorption should be easy to establish- if you assume that the meat is about 75% water, then the concentration of salt would be 5g*(500g*0.75)/(2000g+500g*0.750)=0.789g, or 789 mg salt. This is assuming that the meat salinity has reached equilibrium with the cooking water, which is a huge if.
Comment: @Aaronut: When making a beef roast, I usually make a fond by boiling unsalted meat in unsalted water (and reducing the result to about a cup of semi-liquid). I have learned to not to cut corners and buy ready-made fonds, because when I reduced those, they contained too much salt and the sauce got too salty. So boiled meat does absorb salt. Undermining that is the fact that the meat this boiled without salt tastes terribly bland. Even the kids don't want it.
Answer: Short answer: Not really.
Doing some armchair math, you have two liters of water and 55g of salt, which is about 0.25 liter. That gives you 12.5% the amount salt as there is water in your original solution. The logical solution would be to then cook the meat, then measure the quantity of salt afterwards, right?
However...
That would assume that the absorption and dilution were one-way, i.e.: water-to-meat (as in reverse osmosis to filter water, for instance). In reality, it goes both ways.
The meat, while cooking, will release blood and other body fluids (like oil from the fat) which also contains a certain amount of sodium, and so your post-cooking solution will be "dirty" and that makes it nigh-impossible to get an accurate reading of how much sodium was absorbed vs. released.

Salt in boiled meat


QGIS 3.0 Vertex Tool Grayed Out

Question: I have a simple line added as a layer from a KML file.  I can select the features and show numerous nodes.  It is in edit mode.  Normally I would expect to be able to delete a node, split a line, etc. but none of the advanced digitizing works.  The vertex tool is grayed out.  I get the error "CAD tools are not enabled for the current map tool".  I have scoured Google and am at a loss.
Comment: related: OGR driver https://gis.stackexchange.com/questions/22673/why-cant-i-edit-kml-gml-layers/22678#22678
Answer: To enable vertex editing your layer needs to have a column set as Primary Key. This is not possible in some data formats.
Answer: Not probably the correct way to do things but I selected Vector/Geometry Tools/Simplify/Run in Background.  This created a new layer titled "added geom info" which I was then able to edit with the Vertex tools.  Hopefully someone can answer why I needed to go to that additional step as it is not intuitive.  The KML file was created from Google My Maps highlighting a route so it must have to do something with the line being a coordinate or something?
Answer: I had same problem- Imported a .kmz polygon and it could not be edited.  Solution is to go to vector-Geoprocessing-dissolve.  As default, a new layer named 'Dissolved' is created. This can be edited.
Rename this to your original file and delete the imported file.
Answer: I imported a kmz file from Google Earth and had the same problem. I was able to solve it by exporting the map on QGIS and saving as ESRI shapefile. With this you can successfully use the vertex tool.

QGIS 3.0 Vertex Tool Grayed Out


Camera with Custom View

Question: My Application uses camera, I would like to add overlay over the camera preview. For example, I want to use a picture frame when I use Camera, also I would like to add a custom bar for camera operations. Kindly help me to do the same.
Comment: Try this http://stackoverflow.com/a/34433045/3908884
Answer: You might be trying using UIImagePickerController. But I know this one solution to your problem. You can do it easily using AVCamCaptureManager and AVCamRecorder classes. Apple has a demo program build on its developer site here. It is named AVCam. In simple words what it does is when you click to open the camera, it calls the classes and methods which are responsible for opening the iPhone's camera and record video or capture audio. It calls the same classes which are called by UIImagePickerController. So your camera will open and start taking input.
Now, if you open the xib file of that AVCam project, you'll find a small UIView object. This view is responsible for displaying the camera's feed. You can resize that view as per the size you want and the camera's input will be displayed in that much area. You can also put the frame image around it as per your choice.
It worked for me when I wanted to resize the camera's input feed and capture photos. I hope it works for you as well.
Comment: @Roshit http://stackoverflow.com/questions/27824481/creating-custom-camera-with-square-view-on-ios
Comment: I tried to resize the `AVCamPreviewView` into a square. The view resized correctly, but inside the `AVCamPreviewView` the camera feed shows up inside a small rectangle. It's as if the aspect ratio is set in somewhere but I can't find where to override it.
Comment: @KatedralPillon Even I just walked into the same issue. Did you manage to find a solution?
Comment: Well. I got the aspect ratio fill part of it. `[(AVCaptureVideoPreviewLayer *)[self.previewView layer] setVideoGravity:AVLayerVideoGravityResizeAspectFill];` .. This ensures the Preview displayed is cropped to how we want. But the output Video is yet not cropped. Guess I am missing something.
Answer: Create a UIImagePickerController from code, adjust its properties, add an overlay onto it, and with you controller, control whatever you want on that overlay : custom controls, overlaying images, etc...
That gives something like this :
self.picker = [[UIImagePickerController alloc] init];
self.picker.sourceType = UIImagePickerControllerSourceTypeCamera;
self.picker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;
self.picker.cameraDevice = UIImagePickerControllerCameraDeviceRear;
self.picker.showsCameraControls = NO;
self.picker.navigationBarHidden = YES;
self.picker.toolbarHidden = YES;
self.picker.wantsFullScreenLayout = YES;

// Insert the overlay
self.overlay = [[OverlayViewController alloc] initWithNibName:@"Overlay" bundle:nil];
self.overlay.pickerReference = self.picker;
self.picker.cameraOverlayView = self.overlay.view;
self.picker.delegate = self.overlay;

[self presentModalViewController:self.picker animated:NO];

OverlayViewController is the controller that you must write to control everything you add onto the overlay.
pickerReference is a property you can keep to send orders to the camera. For example, you could call the following from an IBAction coming from a UIButton placed onto the overlay :
[self.pickerReference takePicture];

Comment: Be careful when posting copy and paste boilerplate/verbatim answers to multiple questions, these tend to be flagged as "spammy" by the community. If you're doing this then it usually means the questions are duplicates so flag them as such instead.
Comment: I had problems with Auto Layout when setting the cameraOverlayView property directly. Instead I had to use `[self.picker.cameraOverlayView addSubview:self.overlay.view]`
Comment: @Kev : Ohh, ok, sorry, I'll take care of that. How do you flag a question as a duplicate ? I don't see that option in the flag proposed status ?
Comment: @Oliver - optionally just post a comment, such as "Possible duplicate to this questions  "
Comment: How do I handle method calls in an overlay to not get this message: Presenting view controllers on detached view controllers is discouraged
Comment: @LukeIrvin:Hello, sorry but I won't be able to help you for the moment : I've never met this error, and due to the need to change my Mac to upgrade to iOS6 (no money for that), I do not have the last XCode & SDK installed, wich I suppose is the origin of the message.
Answer: Read the UIImagePickerController Class Reference, that's right in the documentation…
There are properties for this, especially the cameraOverlayView and showsCameraControls properties.
So you can hide the controls, provide a custom overlay view, and add subviews to this custom view to add custom buttons, frames, etc.
Answer: Swift 3 version for answer from Oliver:
self.picker = UIImagePickerController()
self.picker.sourceType = .camera
self.picker.cameraCaptureMode = .photo
self.picker.cameraDevice = .rear
self.picker.showsCameraControls = false
self.picker.isNavigationBarHidden = true
self.picker.isToolbarHidden = true

// Insert the overlay
self.overlayViewController = self.storyboard?.instantiateViewController(withIdentifier: "Overlay") as! OverlayViewController

self.picker.cameraOverlayView = self.overlayViewController.view
self.picker.delegate = self.overlayViewController
self.navigationController?.present(self.picker, animated: true, completion: nil)

OverlayViewController protocols:
class OverlayViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate

Camera with Custom View


How to recover my system from a failed upgrade due connection lost?

Question: So the other day I wanted to upgrade Ubuntu but my laptop lost internet connection half-way, and now Ubuntu is only half-upgraded and I can't access anything anymore... I can't reconnect to the internet as this function is not there anymore (due to the half-upgrade I guess), and when trying to click on anything or search for anything nothing happens...
Do I have to set it up again fully now? And if so, how can I save all my data and stuff?
Answer: If you can't connect to the internet because the function is missing, you will most likely have to re-install Ubuntu. That said, backing up your data is easy as Ubuntu install discs have a live session you can use to access files on the computer.
Just boot up the install disc (I recommend the 13.10 release, so you don't have to upgrade again) and choose Try Ubuntu. Let it complete loading and you can now navigate through all your files. Just plug-in a USB drive with enough space on it, and copy all the stuff you need to the new drive. Safely remove the drive and start your installation.
PS: Next time, be sure to upgrade when power is connected, internet is stable and you have the time for it to complete.
Comment: Thank you very much!! Will try it asap! (And this time I do have a much better connection ^^)
Oh, and if you don't mind, one more question: Last time when I installed Ubuntu, I had the problem of only having 30gb of storage available, and I don't know why... What did I do wrong? I heard that there are two ways to install Ubuntu, and apparantly I did it the wrong way back then...?
Comment: Sounds like you may be dual booting. 30 GB is plenty for Ubuntu though, aslong as you don't install a ton of games. What partitions are on your drive?


Firebug incorrectly reporting status of cookies

Question: An ASP.net 4.0 site I have is required to run under SSL all the time.  We have configured .Net to return SSL cookies like so:
<authentication mode="Forms">
  <forms cookieless="UseCookies" requireSSL="true" />
</authentication>

and
<httpCookies httpOnlyCookies="true" requireSSL="true" />

When I view the cookie information in Chrome it says the cookie is Secure.  When I view it in Firefox's Web Developer toolbar it says it is Secure.  Also have tried the FireFox plugin called "View Cookies" which again says Secure.
However if I view the cookies in Firebug by going to Firebug > Net > HTML > Cookies it says that none of the cookies are secure (the Security column is empty).  The very odd thing is that if I go to Firebug > Cookies it says the cookie IS Secure.
Am I misreading what the Net Tab in Firebug is telling me?  Should it not say the same thing as the Cookies tab?
Answer: This is a bug in Firebug, which I fixed lately. The fix will be included in Firebug 1.12a5.
Sebastian


Is it possible to assign shortcuts to launch applications?

Question: I need some short cuts to launch applications, as opening them from the dash takes time. Is it possible to launch applications from a custom key combination?
Comment: Pressing `Super` + a number key will open the application at that position in the dock.  Hold `Super` and you will see this.
Comment: Yes, but it works for only for application in Unity. I want to know about other rarely using applications like artha, system monitor. I don't want them to be in unity bar always
Comment: I'm writing a solution now.
Answer: Pressing Super + a number key will open the application that is at that position in the dock.
TIP: You can find this out as well as lots of other keyboard shortcuts by pressing Super.

If you would like keyboard shortcuts for applications that are not in the dock, or would like a custom key combination that doesn't involve the Super key, then follow the following instructions:

Open System Settings.
Choose Keyboard.
Go to the Shortcuts tab.
Choose Custom Shortcuts from the left (it's at the bottom of the list).
Click the + button at the bottom of the window.
In Name, type a name for the shortcut.  E.g. "Open Firefox".
In Command, type the command you want it to execute.  (For a program it is likely to be the program name in lowercase.  Mozilla Firefox is "firefox".)
Click Apply
Find your new entry in the list (the large box).
Where it says "Disabled" click your mouse.
Press the key combination you want it to be assigned to on your keyboard.

To change your key combination, just go the the Shortcuts section of Keyboard and click on the key combination it is currently assigned to, next to it's entry.
To remove your key combination, click it (not the shortcut, the name) and press the - button, next to the + button.
Comment: Any idea why super with number keys would not work as you described? For me super will open a search for applications and not show any shortcuts. Similarly super + a number does not start the corresponding application.
Comment: In 18.04, the shortcuts are in Settings -> Devices -> Keyboard.
Answer: You can create keyboard shortcuts(key bindings) to jump to your preferred apps quickly using jumpapp.
What's nice about jumpapp is that it opens that app if it is not open already.
jumpapp takes advantage of the fact that Ubuntu allows you to create custom shortcuts for any terminal command at Settings > Keyboard > View and Customize Shortcuts.
note : Because jumpapp works best with X11 window manager, you will need to switch from Wayland(default window manager) to X11 window manager using instructions here or here


Linux hard disk repair tool

Question: what's the recommended hard disk repair tool if the RAID array on my Linux server is corrupted (I/O errors when listing directories)?  Are such I/O issues recoverable?
Comment: is it is raid (unless you mean striping) you just replace the one disk and rebuild the array. If it is the FS that is corrupted, you need to name the bloddy fs. We are not psychic
Comment: Please post a sample of the error messages. It is important to determine if they are signs of filesystem corruption or disk failure. Also, please describe your RAID setup.
Answer: Actually, I would recommend ddrescue or dd_rescue (two different utilities that do similar things) for pulling off all the data you can possibly get from the HD. The wiki I pointed to may contain other useful information as well.
You can basically use these tools to get a disk image of your RAID partition, then fsck a backup of that image in case some of what was lost was important meta-data. They will try very hard to get as much data as they can from the drive.
Answer: Hardware errors can't be repaired with software, sadly.
If you want to recover the data (or just dump it for backup), try TestDisk or just plain ol' dd.

Linux hard disk repair tool


How to efficiently (and aesthetically) display an evolving publications list on your webpage?

Question: I'm building a personal website where I'd like to list my publications. Perhaps one of the most efficient ways to do that would be to use or build something that pulls data from an online bib file, and lists entries. I found BibBase, but it has only a few options for display styles, and seems difficult to use if you want something that's also visually pleasing. Short of actually building the html page on your own, what are some common methods that people find useful for this task? How about any websites that you think do this very well?
Answer: (this is close to a shopping question, so I see some danger of this being closed - however, I think the question comes up for enough people in academia that it warrants an answer here)
What I have found most efficient is to indeed generate the publication list from a hosted bibtex file. The solution that I went for is to have a repository at Github Sites where I can commit my bibtex file (and any other static resources I want in my web page, including pictures and preprints), and then I generate the actual publication list using JavaScript code I extracted from the bibtexify project.
The result looks like that, which I find visually quite pleasing:

A live version is available on my website. To get access to the code you can clone my public GitHub repo. Then the actual publication list can be rendered on any website using some JS/CSS code. This should work either in a stand-alone Web site, integrated into whatever your university uses for hosting (as long as JavaScript / CSS code is allowed), or a CMS such as Wordpress.
Advantages of this approach:

Easy to update (just update the bibtex file and commit it)
Responsive (also works nice on mobile etc.)
Very few assumptions on the hosting environment - it just needs to support JavaScript and CSS.

Disadvantages of this approach:

Setting everything up is a bit hacky as you need to plumb together some JS/CSS code (but once it works I found the solution to be quite stable)

If there is interest I can try to find some time to write more detailed instructions on how to set everything up.
Answer: Some use Google scholar. The advantages are

that much data are already gathered by Google itself
high chances that people know how to use it
it is professionally designed and will be updated from time to time
it calculates some metrics
not much effort
Answer: I think the answer to this depends on how many new publications you get per month/year/whatever.
If you are early-career and it is only a few, then the most "efficient" way is probably to manually maintain a web page (whether that is by editing HTML, or editing a Wordpress site, or whatever). The overhead of setting up an automated system will probably take years to pay back, by which time it will be obsolete in some way anyway - and some monitoring and intervention will probably be required anyway so that Google Scholar's notions of what a "publication" is don't make it to your page.
If you are a senior academic who, through co-authorship, publishes multiple times a month, then this may work out differently.


Can I use two brands of RAM?

Question: I have a corsair vengeance 8gig DDR3 RAM in one slot. I want to upgrade it with same speed and capacity but with other brand. Does they work fine? Or I have to use the same brand? TIA
Answer: Most likely yes....

if the specs for the RAM are the same - size, speed & timings
if the motherboard supports both sticks

If you have problems, you may be able to mitigate it by tweaking BIOS settings, but many motherboards will compensate for minor discrepancies (ie. lowering timings). You should be fine to trial it - you are not going to break anything. In fact, it will most likely work initially, but you will find the issue will be stability under load.
However, you are unlikely to be able to get support if you have any issues for OEMs - they will likely insist you do not mix & match, and will probably recommend Matched Pairs (sets of sticks that have been tested to work well together).

Can I use two brands of RAM?


PtIJ: why a twisted 6

Question: In many of the cloth uses of the mishkan  it says that you should use שש משזר "a twisted 6". What is this? A 9 perhaps? What's the special significance of a twisted 6 and not just a 9?
This question is Purim Torah and is not intended to be taken completely seriously. See the Purim Torah policy.
Answer: Yes, this refers to what is commonly known as a 9.  However, as noted in my answer to PTIJ: Worst post contest: 5778, the Torah cannot mention nine, due to the known Maamar:

Why was six afraid of seven?  Because seven ate nine!
(למה שש פחדה משבע? כי שבע אכל תשע! (תרגום שלי
Answer: A twisted 6 is actually an 8, not a 9, as the some of the other answers have suggested. It's pretty simple to see that. Just extend the top of the 6 and twist it around until it meets the bottom.
A twisted 8 is extremely useful when making a stein knot which is a form of a figure 8 (or twisted 6) knot. Wikipedia says:

It is used to secure a rope that is already passed around a post or
  through a ring. It is quick and easy to tie and untie. It is a device
  rigging rather than a true knot.

The curtains of the mishkan were fastened to rods, so, it made sense to shape them as 8's or twisted sixes.
Answer: It's an allusion to the third temple.
Ok, let me explain.  First, it's a six, which is two threes, one for each temple we've already had.  We know that a cord of three strands is not easily broken, and that R' Yochanan says the third strand is Hashem, Who is the reason we built the mishkan and temples at all.  So "three" connects Yisrael to Hashem.
But sheish, six, tells us that three wouldn't be enough, and that we'd need to do it again -- two temples, so six cords.
But as this answer says, six really means nine.  Which is three sets of three, so the two temples of the past and the one yet to come.
And that one will endure, because a cord of three cords of three surely cannot be broken.

PtIJ: why a twisted 6


Can the work done by friction on the whole system be positive?

Question: Suppose there is a plank on a smooth surface and a man is standing on one end of it. The surface of plank is rough. Now the person starts to move towards the other end with some acceleration and the plank also starts to shift to keep the COM stationary as the only forces acting here are all internal. Now my question is,as the direction of the friction force on the man is in the direction of the displacement of man and same is the case with plank. Then in this case isn't work done by friction on the whole system coming out to be positive which should not be happening as if it is the case of static friction then the net work done should be zero and if it is the case of kinetic friction then the net work done should have been negative? Also please tell me whether the friction present here is kinetic or static.
Answer: Static friction can indeed do positive work, as can kinetic friction.
In your example the friction is static because there is no slipping. The important quantity, however, is not the displacement of the person, but the displacement of the material at the point of application of the force.
As the person walks forward along the plank the plank goes backward and the foot of the person also goes backward. So the force on the person is forward but the displacement of the foot (the point of application of the force) is backward, so the work done on the person by the static friction is negative.
In contrast, the force on the board is backward and its displacement is also backwards. The plank accelerates and increases KE. The static friction force on the plank does positive work.
Comment: I am not able to comprehend how kinetic friction can do positive work. Won't it always act opposite to the direction of motion for any body? Then isn't $\vec{F} \cdot \vec{s}$ necessarily negative?
Comment: @Sid consider some bulk material, like sand, being dropped onto a horizontal conveyer belt. The sand initially has no horizontal velocity while the belt does, so there is slipping and acceleration. The slipping means it is kinetic friction. The kinetic friction force on the sand is in the direction of the horizontal acceleration and velocity so the work is positive and the sand's kinetic energy increases.
Answer: I would strongly recommend re-contextualizing from
"This force does work on that thing with energy."
To
"This thing with energy does work (transfers power to) this other thing with energy by means of that force."
Much confusion and error may be avoided by doing this.
For example:
The system's translational kinetic energy does positive work on the system's thermal internal energy by means of the force of kinetic friction between blocks A and B.
The system's thermal internal energy does negative work on the system's translational kinetic energy by means of the force of kinetic friction between blocks A and B.
The two sentences above are the exact same statement. They have no differences whatsoever.
Further subdivisions are possible, e.g. the kinetic energy associated with block A may do positive or negative work on the kinetic energy associated with block B, and so on.


Assign multiple roles , overlapping capabilities

Question: What happens if i assign let's say 2 different (custom) roles to a user that both of which have the same (custom) capability?
Comment: @JacobRambo : it seems quite reasonable to me to have Roles share capabilities.
Comment: user will have all the capabilities. Why would you want to do this in the first place you should just make one custom role with all the capabilities needed to avoid confusion.
Comment: That seems reasonable to me too. But the OP is asking about assigning a user multiple roles. What would be the need for a user to have more than one role? I didn't even think that it was possible by default to do that in wordpress.
Comment: If you understand "Roles" as "groupings of capabilities" which is the only way they make sense to me, then it is not hard to imagine wanting to put someone in two different groups.
Answer: I am pretty sure that nothing would happen other than the user would have the capability in question.
Think about it. The default Roles share many capabilities-- Authors, Editors, and Administrators all have edit_posts, for example. All roles (usually) have read
The same system manages both default and custom roles/capabilities, so there really should be no problem.


How large of a value should a weight have in a neural network?

Question: If you're assigning random values to the weights in a neural network before back-propagation, is there a certain maximum or minimum value for each weight ( for example, 0 < w < 1000 ) or can weights take on any value? Could a network potentially have weights of 0.1, 0.0009, and 100000?
Comment: Neural networks generally use random initialization for the weights. The weights take on values so that the sum of the weights times function values is 1. There is some good reading out there on how it all works, but it's basically just a probability model.
Answer: One of the problems that can occur when training a neural network is known as the exploding gradient problem. A poorly initialised network could lead to a large increase in the norm of the gradient during training. These larger values will basically run the weights out of the number precision of the computer, resulting in NaN values.
This post gives more information on the exploding gradient problem and how to solve it. A related post discusses different initialization strategies.


Class Level Property for Django model in Python

Question: I have a Django model storing some infrequently changed but often used data.  I'm looking for a pattern so that I can refer to them as kind of static class variables, eg, like SomeModel.Bar or SomeModel.Baz.
At the moment I'm using a staticmethod like so:
class SomeModel(models.Model):
    name = models.CharField(max_length=100)

    @staticmethod
    def Baz():
        #retrieve from cache or lookup Baz item
        return baz

Meaning I refer to the items as SomeModel.Baz() but this just doesn't quite feel right.  I just get the impression that I'm doing something wrong.  I don't want to make it a property, as I don't want an instance to refer to the item.
Can anyone point me at a pattern or example to show me is I can implement a class level property in this way?  Or tell me why I should be doing something totally different?  Thanks :).
Answer: If you want some logic for model which doesn't belong to particular row, write custom model manager.


How should the bhakti of god be done?

Question: How should we do bhakti of god ? Should we continously keep chanting the name of god in whatever free time we have ?
In what way bhakti of god should be pursued ?
Answer: I have given below some tips from Srimad Bhagavata Purana.
Prahlada's nine points of devotion

Hearing about Vishnu, singing about Him, remembering Him, serving Him,
saluting Him, being His servant, being His comrade, and surrendering
oneself and everything that is one's own to Him – these are the nine
aspects of Bhakti or God-love. If man could be trained to practice
devotion characterized by these nine features that indeed would be the
highest education he could have.

Srimad Bhagavata Purana VII.5.23-24
Serving Others with love

I abide in all beings as their inner-most soul. Disregarding My
presence within them, men make a show of worshiping Me through images.
If one disregards Me present in all as their soul and Lord but
ignorantly offers worship only to images, such worship is as
ineffective as a sacrificial offering made in ashes. A man who
persecutes Me residing in others, who is proud and haughty, who looks
upon God as the other – such a person will never attain to peace of
mind. If a man disregards and persecutes fellow beings, but worships
Me in images with numerous rituals and rich offerings, I am not at all
pleased with him for proffering such worship. A man should, however,
worship Me in images, side by side with discharging his duties, which
include the love of all beings, until he actually realizes My presence
in in himself and in all beings. As long as man is self-centered and
makes an absolute distinction between himself and others (without
recognising the unity of all in Me, the Inner Pervader), he will be
subject to the great fear of Death (including every form of
deprivation of self-interest). So, overcoming the separateness of a
self-centered life, one should serve all beings with gifts, honor and
love, recognizing that such service is really being rendered to Me who
reside in all beings as their innermost soul.

Srimad Bhagavata Purana III.29.21-27
Definition of Bhakti

When all the powers of man's senses, which are ordinarily frittered
away through external contacts, are purified through devotional
practices and dedicated action, and they get naturally focused on
Isvara (Sattva) exclusively, without any extraneous and self-centered
motivation, and with a firmness which an obstruction can overpower –
that state of mind is called Bhakti, or the highest form of devotion
for the Lord. Such devotion is superior even to Mukti. It burns up the
covering of ignorance in a person just as fire burns up objects put
into it. Some endowed with such Bhakti do not aspire for Moksha or
even oneness with My being.; for their delight consists in serving Me
and in working out My will. They therefore congregate together and
honor Me by adoration and participation in My works.

Srimad Bhagavata Purana III.25.32-34

How should the bhakti of god be done?


What does the old starship do?

Question: I just got the old starship, but I don't know what it does. I want to know before I lift off in case I die or something.
Answer: It seems (according to this site) that:

As you're wandering the map you will eventually come across a W. This is the landing spot of An Old Starship, which you ultimately have to
    fix up. Its hull needs work and its engines need upgrading; both
    require Alien Alloy. As you've probably discovered, Alien Alloy is
    quite rare…

… but, ultimately, worth it. A Dark Room's final challenge hinges upon
  worthy engines and a strong hull. Add a point to Engines and your
  ship's responsiveness will improve. Add a point to Hull and you'll be
  allowed another hit. Another hit in what sense, you ask? Simple
  enough…
… you're headed into space.
Once you take off you'll wind up in a fast-paced space sequence,
  soaring through what appears to be an asteroid belt. You need to dodge
  and weave through increasing numbers of space rocks and blast out into
  space. How much time you spend pumping points into Engines and Hull is
  up to you, but at least five points in each is recommended, if not
  more. It costs a lot to purchase Alien Alloy you don't find, so if you
  do come across any in the field, make bringing it back to your village
  a first priority.
Weave through the asteroids successfully and you'll complete the game…
  and loop back to the beginning. No rest for the weary.

So no, you won't die. You actually get something good out of it.
Comment: The question is what happens with the "old starship" specifically
Comment: @TrentHawkins Yeah my bad.
Comment: Now you've cut and pasted *way* too much to answer the question.
Comment: I think that all of this is beneficial to anyone who looks for this answer.
Answer: If you die while in space you will go back to the village and not lose anything. For example, if you had the hull to 7 and the engine to 6, and then you died in space, then when you go back to the village you will still have the hull to 7 and the engine to 6.
hope that helps.
Comment: What that does have to do with the "old starship" in the asked question?
Comment: The hull and engine upgrade points this answer is referring to are the components of the Old Starship.  This is a valuable piece of info, as the alien alloy required to make these upgrades is super difficult to come by.
Answer: It sends you into space, where you have to dodge debris to get to higher levels of the atmosphere, then escape the planet. Hitting too much debris will put you back on Earth and you lose all the alien alloy you've invested in it. After escaping, it resets your game, so in a way you do die.

What does the old starship do?


What are some of the challenging problems to adapt to map reduce framework?

Question: I have developed around 20 jobs on map reduce including the pagerank algorithm. I never found any challenging problems to adapt to mapreduce framework online. I would like to improve my skills. Is there such a guide?
Answer: What you are looking for is Data intensive programming task. Here is a similar question already posted at StackOverflow.  I thought of suggesting this project because corpus from wikipedia is easily available, but as you can see it is already in progress.
Run a squid reverse proxy and collect the logs of those over a period of time. Now use those logs and try to derive meaningful interpretation of those and store them in suitable database for querying. This could be good project to do.


Do I need to worry about timing attacks in Base64 encoding/decoding of private keys?

Question: Do I need to worry about timing attacks in Base64 encoding/decoding of private keys?  This is a common operation (ex.  PEM keys) and is variable time in typical implementations.
Comment: It may be worth to notice that the private key material to be base64 encoded/decoded is commonly ASN.1 DER encoded. DER encoding may also reveal some information via timing differences, as well.
Comment: @user4982 True, but DER is TLV encoding. The length of the value may be disclosed, but the value itself is not as likely to be exposed. Knowing the length of e.g. the CRT parameters may make it slightly easier to get to the key, but it would be very tough to get the key value that way.
Answer: Yes, kind of. The encoding does depend on the individual bits so there could very well be timing differences. Note that the differences would be pretty small; encoding a byte is likely much faster than e.g. modular exponentiation. But as even block ciphers are vulnerable it may very well be possible, especially since table lookup may be implemented.
The solution however is also very standard: before storing the keys you first wrap the keys with a symmetric cipher. The key can be derived from a strong passphrase. Most of the time when private keys are stored in PEM format (which is just the ASCII armor) they are encoded in PKCS#12. As the encoding after the wrapping and the decoding before, you should be secure against timing attacks against base 64. Obviously the block cipher is much more likely to be protected against timing attacks (but don't forget to verify that).
In principle PKCS#8 could also describe an encrypted private key, but that doesn't seem to be used much. PKCS#12 can be used to encrypt the private key and store the certificate (chain) for the public / private key pair.
If you directly store them in PKCS#1 or PKCS#8 format (without encryption) you should make sure the system itself is secure - especially with regards to file access.
Comment: PKCS12 is certainly common in DER, but not in PEM that I've seen. PKCS8 PEM is (fairly) common in things using or compatible with OpenSSL, but PKCS8 has optional pw-based encryption -- and [the  privatekey encryption in PKCS12 *is* PKCS8](https://tools.ietf.org/html/rfc7292#section-4.2.2).
Comment: @dave_thompson_085 Usually the PKCS#8 structure is only the **inner** PKCS#8 structure. That doesn't contain encryption. PKCS#12 on the other hand is a software token format where password encryption is usually performed. But I'll edit the answer a bit to show this. Do you often encounter PKCS#8 encrypted keys?
Comment: @MaartenBodewes PKCS #8 for the most private key formats stores public key (as a part of the private key). [RFC 5958](https://tools.ietf.org/html/rfc5958) is an update to PKCS #8, which allows to store also public key explicitly (but this extension does not seem very common currently). PKCS #8 encrypted keys are seems from time to time, especially in applications where you would want to password protect the private key, but storing certificate is necessary or possible due to how the key is used.
Comment: (@user4982) In OpenSSL `req -newkey` `pkcs8 -topk8` `pkcs12 (import)` (since 2010) all generate PKCS8 encrypted (and PEM) by default; only `genpkey` defaults to unencrypted and I've not yet seen anyone else (other than OpenSSL site) even mention that. So yes I do see PKCS8 *mostly* encrypted, though certainly not always. But on the whole I do see PKCS12 more, which always encrypts the privatekey; it *usually* encrypts the cert(s) also, though weakly and unnecessarily.
Answer: Yes, you do need to worry about timing attacks in Base64 encoding and decoding. A naive implementation either does a table lookup (which is vulnerable to data cache timing attacks) or a range-based calculation (which is vulnerable to branch prediction and code cache timing attacks).
The leak is small, and does not reveal complete information (e.g. table entries that fall within the same cache line might be completely indistinguishable). But this can leak enough of the key material to reconstruct the key, especially with RSA keys where the private key has a lot of redundant information (private exponent and CRT parameters). Util::Lookup: Exploiting key decoding in cryptographic libraries by Sieck et al. observed some common implementations in ideal conditions for a timing attack (attacking a secure enclave from the non-secure operating system running on the same processor) and managed to recover RSA private keys with a single trace of Base64 decoding.
As of mid-2021, this paper lead several cryptographic libraries to switch to a constant-time implementation of Base64 encoding and decoding. However, some still use a table-based implementation as I write, notably OpenSSL.
There are several ways avoid timing side channel leakage from Base64 decoding of private keys and other cryptographic objects:

Use binary DER encoding instead of PEM encoding.
Use a constant-time Base64 implementation.
Encrypt the PEM-encoded data with PKCS#8 or PKCS#12 encryption. This doesn't improve security at rest if the encryption key is stored with the encrypted data, but it does prevent leakage from Base64 decoding, since any leakage would only reveal unexploitable information about the encrypted key (assuming that the decryption process itself doesn't leak).
Answer: For secret material stored unencrypted in Base64 format, yes Base64 encoding or decoding is a potential side channel. So is compressing the data (something that OSes may do to conserve RAM or disk).
The amount of information that could be extracted by timing attack (rather than by some other form of side channel, like power analysis) depends a lot on how much foothold the adversaries have in the system, and on the Base64 code. If adversaries can run code on the same CPU (thus same caches) as the one repeatedly running the encoding or decoding, and can time that attacked process to exquisite precision, then it's reasonable to fear a lot of secret data leaks. For a pure timing attack (loosely defined as one where adversaries can't act on the computer attacked, and only get timing measurements) against standard encoder/decoder, that's much more difficult. For said timing measurements thru a packet-based communication network similar to Gigabit Ethernet or slower, and key size 128-bit or more, I'm dubious.
Doing almost anything on unencrypted data in a standard computer opens to many risks, including side-channel attacks. The best solution is to keep sensitive and unencrypted data out of standard computers (e.g. generate and keep that data in a Smart Card), or in standard computers out of reach of attackers. That's a reason why key ceremonies best practices when using a standard computer include using one with no network connection (including no wireless interface), and zeroizing everything before (bringing any OS or code from read-only media) and after use.
Answer: The only inevitable data dependence in Base 64 encoding or decoding is on the length of the value being encoded or decoded.
Encoding

Extraction of 6-bit value by bit shift and masking: constant time.
Conversion from 6-bit to a character: indexing into a 64-character table, constant time.

Decoding

Conversion from a character into a 6-bit value: indexing into a 256-byte table, constant time.
Insertion into decoded data by bit shift and ORing: constant time.
Comment: Indexing into a 256-byte (or even 64-byte) table is not necessarily constant time. CPU cache lines can be e.g. 32 or 64 bytes. A timing attack could tell the difference between using only parts of the table and using it all.
Comment: You're right that length is the only *inevitable* timing side channel (at least as an upper-bound). But most implementations, including yours, are not constant time since they rely on array lookup with a secret index, which isn't guaranteed to be constant time on many CPUs.
Comment: This is not a constant-time implementation.  Indexing into a 256-byte table is vulnerable to cache-based timing attacks.  See [Cache-timing attacks on AES](https://cr.yp.to/antiforgery/cachetiming-20050414.pdf) by D. Bernstein.