Docker has been causing a lot of ripples in all sorts of ponds in recent years. I first started playing with it nearly a year ago now, after hearing about it from someone else at work. At first I didn't really understand what problems it was trying to solve. The more I played with it, however, the more interesting it became.
There were plenty of things that I didn't care for about Docker. The most prominent strike against it was how slow it was to start, stop, and destroy containers. I soon learned that if I store my Docker data on a btrfs partition, things become much faster. And it was great! Things that used to take 10 minutes started taking 2 or 3 minutes. Very significant improvement.
But then it was still slow to actually build any containers that are less than trivial. For example, we've been using Docker for one of my side projects since April 2014 (coming from vagrant). Installing all of the correct packages and whatnot inside of a our base Docker image took several minutes. Much longer than it does on iron or even in virtual machines. It was just slow. Anytime we had to update dependencies, we'd invalidate the image cache and spend a large chunk of time just waiting for an image to build. It was/is painful.
On top of that, pushing and pulling from the public registry is much slower than a lot of us would like it to be. We set up a private registry for that side project, but it was still slower than it should be for something like that.
Many of you reading this article have probably read most or all of those gripes from other Docker critics. They're fairly common complaints.
Lately, one of the things about using Docker for development that's become increasingly more frustrating is communication between containers on different hosts. Docker uses environment variables to tell one container how to reach services on another container running on the same host. Using environment variables is a great way to avoid hardcoding IPs and ports in your applications. I love it. However, when your development environment consists of 8+ distinct containers, the behavior around those environment variables is annoying (in my opinion).
I don't really feel like going into more detail on that right now. Let's just say it was frustating enough for me to look at alternatives (more out of curiosity than really wanting to switch away from Docker). This search led me to straight Linux containers (LXC), upon which Docker was originally built.
I remembered trying to use LXC for a little while back in 2012, and it wasn't a very successful endeavor--probably because I didn't understand containers very well at the time. I also distinctly remember being very fond of Docker when I first tried it because it made LXC easy to use. That's actually how I pitched it to folks.
Long story short, I have been playing with LXC for the past while now. I'm quite happy with it this time around. It seems to better fit the bill for most of the things we have been doing with Docker. In my limited experience with LXC so far, it's generally faster, more flexible, and more mature than Docker.
What proof do I have that it's faster? I have no hard numbers right now, but building one of our Docker images could take anywhere from 10 to 20 minutes. And that was building on top of an already existing base image. The base image took a few minutes to build too, but it was built much less regularly than this other image. So 10-20 minutes just to install the application-specific packages. Not the core packages. Not configure things. Just install additional packages.
Building an entire LXC container from scratch, installing all dependencies, and configuring basically an all-in-one version of the 8 different containers (along with a significant number of other things for monitoring and such) has consistently taken less than 3 minutes on my 2010 laptop. The speed difference is phenominal, and I don't even need btrfs. Lauching the full container is basically as fast as launching a single-purpose Docker container.
What proof do I have that LXC is more flexible than Docker? Have you tried running systemd inside of a Docker container? Yeah, it's not the most intuitive thing in the world (or at least it wasn't the last time I bothered to try it). LXC will let you use systemd without any fuss (that I've noticed, anyway). This probably isn't the greatest example of flexibility in the world of containers, but it certainly works for me.
What proof do I have that LXC is more mature than Docker? Prior to Docker version 0.9, its default execution environment was LXC. Version 0.9 introduced libcontainer, which eliminated Docker's need for LXC. The LXC project has been around since August 2008; Docker has been around since March 2013. That's nearly 5 entire years that LXC has had to mature before Docker was even a thing.
Does all of this mean I'll never use Docker again? That I'll use LXC for everything that Docker used to handle for me? No. I will still continue to use Docker for the foreseeable future. I'll just be more particular about when I use it vs when I use LXC.
I still find Docker to be incredibly useful and valuable. I don't think it's as suitable for long-running development environments or to replace a fair amount of what folks have been using Vagrant to do. It can certainly handle that stuff, but LXC seems better suited to the task, at least in my experience.
Why do I think Docker is still useful and valuable? Well, let me share an example from work. We occasionally use a program with rather silly Java requirements. It requires a specific revision, and it must be 32-bit. It's really dumb. Installing and using this program on Ubuntu is really quite easy. Using the program on CentOS, however, is .... quite an adventure. But not an adventure you really want to take. You just want to use that program.
All I had to do was compose a Dockerfile based on Ubuntu, toss a couple apt-get lines in there, build an image, and push it to our registry. Now any of our systems with Docker installed can happily use that program without having to deal with any of the particularities about that one program. The only real requirement now is an operational installation of Docker.
Doing something like that is certainly doable with LXC, but it's not quite as cut and dry. In addition to having LXC installed, you also have to make sure that the container configuration file is suitable for each system where the program will run. This means making sure there's a bridged network adapter on the host, the configuration file uses the correct interface name, at the configuration file doesn't try to use an IP address that's already claimed, etc etc.
Also, Docker gives you port forwarding, bind mounts, and other good stuff with some simple command line parameters. Again, port forwarding and bind mounts are perfectly doable with straight LXC, but it's more complicated than just passing some additional command line parameters.
Anyway. I just wanted to get that out there. LXC will likely replace most of my Linux-based virtual machines for the next while, but Docker still has a place in my toolbox.
For quite a while now, running any sort of systemctl status foo command seemed to take forever on any and all of my systems. That exact command would sometimes take as long as 30 seconds to return complete, despite foo not even being an available service. I noticed it more on my aging laptop than on my other systems, but I just attributed the slowness to my hard drive maybe preparing to fail.
Anyway, I finally got frustrated enough to actually put some effort into seeing what the problem might really be and how I could avoid the terrible delay for something so simple. It dawned on me that the actual status of the service was coming back pretty fast, but getting any recent output from the service is what took forever.
This led me to look into systemd's journald. I checked the /var/log/journal/xxxxx... directory on my laptop. It was massive--4.5GB of logs of whatever. I know better than to just go deleting files out from under a running process, so I looked into ways to simply truncate the logs. This led me to a few pages that all suggested that I modify /etc/systemd/journald.conf to optimize things a bit.
The configuration options that I kept seeing were SystemMaxUse and RuntimeMaxUse. When I set these both to 10M and restarted journald (systemctl restart systemd-journald), my /var/log/journal/xxxxx... directory was nice and tidy again. And systemctl status foo-like commands returned muuuch faster.
I suppose I'll be adding this stuff to my configuration script!
So I've been spending a fair amount of my free time lately learning more about salt, docker, and CoreOS. Salt has been treating very well. I mostly only use it at home, but more opportunities to use it at work are near.
The first I remember really hearing about Docker was when one of my co-workers tried using it for one of his projects. I didn't really spend much time with it until after SaltConf earlier this year (where lots of others brought it up). I'm pretty excited about Docker. I generally go out of my way to make sure my stuff will work fine on various versions of Linux, and Docker makes testing on various platforms insanely easy.
CoreOS is one of my more recent discoveries. I stumbled upon it in the wee hours of the night a few weeks ago, and I've been very curious to see how CoreOS and my fairly limited knowledge of Docker could help me. For those of you who haven't heard of CoreOS yet, it's kinda like a "hypervisor" for Docker containers with some very cool clustering capabilities.
I was able to attend a SaltStack and CoreOS meetup this past week. Most of the CoreOS developers stopped by on their way to GopherCon, and we all got to see a very cool demo of CoreOS in action. It was very cool to see everything in action.
One of the neat projects that the CoreOS folks have given us is called etcd. It is a "highly-available key value store for shared configuration and service discovery." I'm still trying to figure out how to effectively use it, but what I've seen of it is very cool. Automatic leader election, rapid synchronization, built-in dashboard, written in Go.
Anyway, I wanted to be able to use information stored in an etcd cluster in my Salt states. techhat committed some initial support for etcd in Salt about a month ago, but the pillar support was a bit more limited than I had hoped. Last night I submitted a pull request for getting minion-specific information out of etcd. This won't be available for a little while--it's only in the develop branch for now.
Notice that the value for foo.baz is qux for minion test1, while its value is demo for test2. Success!
I work on a test automation framework at my day job. It's Django-powered, and there's a lot of neat stuff going on with it. I love building it!
Anyway, yesterday during a meeting, I got an email from a co-worker who seemed to be in a bit of a panic. He wrote that he accidentally deleted the wrong thing, and, being Django on the backend, a nice cascading delete went with it (why he ignored the confirmation page is beyond me). He asked if we had any database backups that we could restore, also curious as to how long it would take.
Well, lucky for him (and me!), I decided very early on while working on the project that I would implement a custom database driver that never actually deletes stuff (mostly for auditing purposes). Instead, it simply marks any record the user asks to delete as inactive, thus hiding it from the UI. Along with this, nightly database backups were put in place.
I'll be quite honest--I had a moment of fear as I considered how long it had been since I really checked that either of these two things were still working as designed. I implemented the database driver before I learned to appreciate unit testing, and I haven't made it to that piece as I've been backfilling my unit test suite (yet). As for the nightly database backups, I had never actually needed to restore one, so for probably the last year I didn't really bother checking a) that they were still being produced or b) that they were valid backups.
Thankfully, both pieces were still working perfectly. All I had to do was undelete a few things from the database, as I haven't made a UI for this. After doing that, I realized that one set of relationships was not handled by the custom driver. To fix this, I just restored the most recent nightly backup to a separate database and extracted just those relationships I was interested in. And it worked!
This is the first time I've really been bitten by a situation like this personally. I'm very pleased that I had the foresight to implement the precautionary measures early on in my project. I've also learned that I should probably keep up with those measures a bit better. I definitely plan to make some changes to help mitigate the potential for bad stuff to happen in the future. But it looks like I have a good foundation to build upon now.
TL;DR: unseen magic and valid database backups FTW.
My wife and I took the kids out to visit family out in California for Thanksgiving break this past year. It was a fantastic visit. We all had a great time. I even got a fun story out of the first evening there! I made sure to write down the details in my phone shortly after this occurred, and I've decided to post them here for others to enjoy.
My wife's grandfather received a phone call from a "Startech" company (213-330-0187, according to the phone's caller ID). The caller yammered on about having detected a bunch of viruses on grandpa's computer, and he claimed that he was calling to help us get rid of them. Being the resident tech guy, grandpa handed the phone off to me to deal with the situation.
The Indian guy on the other end again explained that he found out that our computer has several viruses and was going to walk us through how to get rid of them. He asked if my computer was turned on, to which I responded that no, the computer wasn't currently on. He asked if I could go turn it on and sit in front of it. I told him I would. While the computer was "booting," he asked how old the computer is. I told him it was maybe three years old. Eventually, I told him the computer was ready.
At this point, he asked me if I saw a key on my keyboard with the letters C, T, R, and L. Obviously, I did. Then he asked if I could see a key near that with a flag on it. When I said that I could see it, he asked me to find the R key. Once discovered, he instructed me to push the flag key and the R key.
I told him that I pushed the keys, but nothing happened on my computer. He patiently asked me to try again. When I again stated that nothing happened, he asked me to describe which keys I was pushing. I told him I held down the flag key and the R key at the same time, and he claimed that it was not possible for nothing to happen when I push those keys.
I believe that's when he instructed me to hold the flag key down with one finger then hold down the R key with another. Again nothing. He asked me to try a few more times, because maybe my computer was just slow. For each attempt, I claimed that nothing had happened, and he muttered something about this not being possible. Mind you, I wasn't even looking at a computer during any if this.
Eventually, he gave up trying to get that dialog to pop up. He said there was another option. He asked which Web browser I use, if it's called Mozilla Firefox, Google Chrome, or Microsoft Internet Explorer. I said. "Uhm, I think it's called Midori..." He was a bit confused, asking me to repeat the name. I did repeat it, and I even spelled it out for him. Apparently it wasn't important, because he just shrugged it off and continued with his script.
He asked me to type into the address bar the following address: www.appyy.com. I told him that I typed it in and it just said "Page Not Found." He was a bit skeptical at first, asking me to verify what I had typed into the address bar. He asked me to try again, again claiming that it is not possible for the page to not load.
That's when I asked him if I had to be connected to the Internet to follow this step, because I couldn't be on the phone and on the Internet at the same time. He let out a sort of exasperated sigh, then asked if there was any other number he could use to call me while I was on the Internet. I told him I only have the one number, and he diligently asked if a had any friends or family who could come over so I could use their phone. I said everyone I know is out of town for the holidays.
Then, trying to be helpful, I asked if maybe he could email me the instructions do I could walk through them after we hung up. He said he would just say them over the phone for me to write down. I told him I was okay with that, and then he started listing off the steps: "the first thing you'll need to do is hang up, then...." That's when I hung up on him. He called back, but we just laughed with each other instead of answering.
This morning I stopped for gas at a gas station that is associated with a grocery store. Buy more groceries, save a few cents off each gallon pumped at their station. That sort of deal. I found a gas voucher in my coat from a grocery shopping trip that should have allowed 25 cents off each gallon, so I figured I might as well use it before it expired.
When I scanned the little barcode on the voucher, I noticed that the display only registered a 20-cent-per-gallon discount. I also noticed that it would let me pump only ~7.5 gallons instead of the 20 that the voucher was good for. Luckily, there was an attendant in the tiny shack for the gas station that early. I approached him and asked what was going on--why I wasn't getting my full discount.
Obviously, he didn't believe my claims and had to see things for himself. He scanned the voucher and saw exactly what I described. Confused, he scuttled off to his shack to investigate. He couldn't figure out the exact cause, but ultimately he decided that someone else also had the same code or something from their own shopping trip. He was kind enough to actually give me the cash value of the 25-cents-per-gallon discount right then and there, so that's cool.
Moral of the story: if you use such gas vouchers, be sure to check the displayed discount with what you see on the voucher. If you notice a discrepancy, maybe you'll be lucky enough to get the cash value like I did! What makes it even more exciting is that I rarely use the full "up to 20 gallons" part of the voucher before the expiration. Bonus!
Earlier this year, I was approached by the editor of Software Developer's Journal to write a Python-related article. I was quite flattered by the opportunity, but, being extremely busy at the time with work and family life, I was hesitant to agree. However, after much discussion with my wife and other important people in my life, I decided to go for it.
I had a lot of freedom to choose a topic to write about in the article, along with a relatively short timeline. I think I had two weeks to write the article after finally agreeing to do so, and I was supposed to write some 7-10 pages about my chosen topic.
Having recently been converted to the wonders of test-driven development (TDD), I decided that should be my topic. Several of my friends were also interested in getting into TDD, and they were looking for a good, simple way to get their feet wet. I figured the article would be as good a time as any to write up something to help my friends along.
I set out with a pretty grand plan for the article, but as the article progressed, it became obvious that my plan was a bit too grandios for a regular magazine article. I scaled back my plans a bit and continued working on the article. I had to scale back again, and I think one more time before I finally had something that was simple enough to not write a book about.
Well, that didn't exactly turn out as planned either. I ended up writing nearly 40 pages of LibreOffice single-spaced, 12pt Times New Roman worth of TDD stuff. Granted, a fair portion of the article's length is comprised of code snippets and command output.
Anyway, I have permission to repost the article here, and I wanted to do so because I feel that the magazine formatting kinda butchered the formatting I had in mind for my article (and understandably so). To help keep the formatting more pristine, I've turned it into a PDF for anyone who's interested in reading it.
So, without much further ado, here's the article! Feel free to download or print the PDF as well.


text:
2020 Inductees Announced
The Colorado Women's Hall of Fame Names Inductee Class of 2020
Ten Extraordinary Women to be Inducted in March
A Secretary of the Interior and Colorado State Attorney General, a journalist and publisher, a frontier physician, suffragists, journalists, educators, head of the U.S. Office of Personnel Management, lawyers/civil rights activists, a community builder and restaurant owner comprise the Colorado Women's Hall of Fame (CWHF) Inductee Class of 2020.
In March, these ten inductees become the next group of extraordinary Colorado women, who have made enduring and exemplary contributions to their fields, inspired and elevated the status of women and helped open new frontiers for women and society.
The 2020 Colorado Women's Hall of Fame inductees include six contemporary women and four historical.
Katherine Archuleta
Growing up in Colorado's San Luis Valley, Katherine Archuleta has had an extraordinary and influential career, including a position in the Obama administration as head of the U.S. Office of Personnel Management, that has changed the landscape for what is possible for women and, specifically, Latina women.
Lupe Brisenño
Lupe Briseño
As the organizer of the Kitayama Carnation Strike, Lupe Briseño demonstrated the strength and power of Latina leadership in Colorado's Labor Movement and helped set the stage for the Colorado Chicano Civil Rights Movement of the 1960s and '70s.
Rosalind "Bee" Harris
Rosalind "Bee" Harris has dedicated her career to elevating communities of color by providing a platform for their voices and their stories with the founding of the Denver Urban Spectrum newspaper in 1987 and the Urban Spectrum Youth Foundation in 2000.
Velveta Howell
Velveta Howell has made many contributions as a life-long champion for social justice and advocacy. She was the eighth African American female graduate of the University of Colorado Law School and the first woman of color appointed as Colorado's Deputy District Attorney.
Marianne Neifert, MD, MTS
Colorado's earliest physician breastfeeding champion, Marianne Egeland Neifert, MD, MTS, has devoted more than 40 years to improving maternal-child health. She helped re-establish breastfeeding as a community norm and advanced the nascent discipline of breastfeeding medicine.
Gale Norton was the first woman Colorado Attorney General (1991-99) and the first woman to be appointed as Secretary of the U.S. Department of the Interior (2001-06) under President George W. Bush. On behalf of Colorado and 45 other states as Colorado Attorney General, Norton helped negotiate the most extensive legal settlement in history: a $206 billion national tobacco settlement.
Mary Lou Anderson
A passionate advocate for cultural arts and arts education, Mary Lou Anderson was an influential leader across Colorado and the nation through her development of programs that engage millions of students, educators, and business leaders in the cultural arts. Anderson founded the National Parent Teacher Association Reflections Program and the Arts Business Education Consortium.
Alida Cornelia Avery
Dr. Alida Cornelia Avery
A graduate of the New England Female Medical College of Boston in 1862, Dr. Alida Cornelia Avery was a professor of Human Physiology and Hygiene, and a Resident Physician at Vassar College from 1866-1874. In 1874 she moved to Denver, Colorado, and is credited as Colorado's first woman to practice medicine while also serving as the Superintendent of Hygiene.
Elizabeth Piper Ensley
Elizabeth Piper Ensley was an African American educator, political activist, and suffragist. Her leadership was instrumental in Colorado's victorious campaign for full voting rights in 1893. Ensley dedicated her career to organizing for women's rights, especially for African American women.
Carolina Gonzalez
Carolina Acuña Díaz González was a Colorado Renaissance Pioneer, renowned for her welcoming home, her active support for the arts and culture, and her uniquely authentic restaurant, Casa Mayan, a "Mutalista" or refuge for 40 years for immigrants in Colorado. González provided accommodations and a safe haven during the Depression for countless youths "riding the rails" to Colorado.
Partnership: Colorado Encyclopedia and CWHF
The Colorado Women's Hall of Fame is delighted to announce its partnership with the Colorado Encyclopedia, a digital encyclopedia to serve as a reliable resource for all those interested in the Centennial State. Visit the Colorado Encyclopedia
Conceived and developed by William Wei, chair of Colorado Humanities' Board of Directors. With support of grants from the National Endowment for the Humanities (2013 and 2019) and the State Historical Fund (2014), the Colorado Encyclopedia has become the leading online reference work on the Centennial State, with more than 700 main entries on the state's history and culture.
According to the competitive Alexa Global and National web traffic ranking analysis, Colorado Encyclopedia already ranks nationally with other long-established, similar-sized encyclopedias of under 1,000 entries; it has also achieved a global rank better than some encyclopedias with many more entries.
The Colorado Encyclopedia's major focus has been education. A quarter of itsentries have been reconfigured for use by 4-12 grade students, with accompanying teacher resource sets and inquiry cards to encourage research on the state's past.
Colorado Encyclopedia is currently participating in the Colorado Women's Vote Centennial, a celebration of the 19th Amendment to the US Constitution (1920), which gave all American women the right to vote.

redpajama_set_name: RedPajamaCommonCrawl


text:
Sabah Fakhri (), nom artístic de Sabah al-Din Abu Qaws (Alep, 2 de maig de 1933 - Damasc, 2 de novembre de 2021), fou un cantant tenor sirià.

Amb més de 50 anys de fama i popularitat com a cantant, Sabah Fakhri destaca per haver transformat i popularitzat les muwaixxahat i les qudud halabiyya, dues formes musicals tradicionals àrabs. Va ser molt conegut tant pel seu fort vocalisme, per l'execució de les maqamat i per les seves harmonies, com per les seves actuacions carismàtiques.

Biografia
Sabah va néixer a Alep, Síria. Es va matricular a l'Acadèmia de Música Àrab d'Alep. Després va estudiar a l'Acadèmia de Damasc, on es va graduar el 1948. El seu nom artístic «Fakhri» li fou donat pel seu mentor, el dirigent nacionalista sirià Fakhri al-Barudi, que el va animar, essent encara jove, a quedar-se a Síria i no viatjar a Itàlia. Una de les seves primeres actuacions va ser el 1948 al Palau Presidencial de Damasc, davant del president Shukri al-Quwatli i del primer ministre Jamil Mardam Bey. A diferència de molts altres artistes àrabs, mai va estudiar o treballar al Caire, i de fet insistia que la seva fama enllaçava amb el patrimoni artístic de la seva pàtria, Síria.

Sabah Fakhri és un dels pocs cantants àrabs que ha assolit una certa popularitat arreu del món tot cantant només en àrab. El seu nom està registrat al Llibre Guinness de Rècords per la proesa que va fer a Caracas, Veneçuela, on va cantar durant 10 hores seguides, sense pausa.

El 1998 Fakhri va esdevenir membre del Parlament sirià com a representant dels artistes.

Interacció amb l'audiència
Quan actuava, Fakhri insistia a interactuar amb l'audiència. Abans de cantar, s'assegurava de tenir una bona atmosfera tot comptant amb bon músics i amb un sistema de so apropiat. Mentre actuava, demanava que els llums es mantinguessin encesos, per poder interactuar amb l'audiència. Deia que l'audiència jugava un paper clau per treure fora la creativitat de l'intèrpret. L'audiència havia de ser conscient de la música i la poesia, de manera que valoressin millor la música que els oferia.

Principals obres
Fakhri va cantar moltes cançons tradicionals d'Alep, basades en els poemes d'Abu-Firàs al-Hamdaní, d'al-Mutanabbí i d'altres poetes. També va treballar amb compositors contemporanis. Alguns de les seves cançons més populars són:

 Yā Hādī al-'Ess / Mālek Yā Ḥelwa(t) Mālek
 Khamrat el-Ḥobb
 Yā Ṭīra(t) Ṭīrī
 Fōg el-Nakhal (cançó iraquiana)
 'Adduka al-Maigāss
 Yā Māl el-Shām
 Muwashshaḥ Imlīlī / Yā Shādī el-Alḥān
 Eba'atlī Jawwāb
 Ah Yā Ḥelō

Premis
Fakhri va rebre l'Orde sirià del Mèrit en Grau Excel·lent de mans del president sirià Baixar al-Àssad com a reconeixement per la seva tasca de fer reviure el patrimoni artístic de Síria.

Distincions
  : Gran Cordó de l'Orde del Mèrit Civil iraquià.
  : Comanador de l'Orde del Cedre libanès.
  : Gran Cordó de l'Orde d'Ouissam Alaouite marroquí.
  : Gran Cordó de l'Orde del Mèrit Civil omanita.
  : Gran Cordó de l'Orde del Mèrit Cultural tunisià.

Referències

Enllaços externs
 Sabah Fakhri Home Page

Morts el 2021
Persones d'Alep
Cantants asiàtics
Morts a Damasc
Tenors
Cantants en àrab

redpajama_set_name: RedPajamaWikipedia


Olympic Poker Club Estonia OlyBet poker news.
Olympic Entertainment casino courrendlin Group AS with its subsidiaries.
Olympic Casino Akropolis Vilnius in Vilnius.Club Eurovea Home Facebook.The Colossus Casino Club Dublin.Tai pasilymas ne tik turnyr žaidjams, bet ir grynj.Usually at Olympic Park Casino poker room cash games start around.Casino Malta Poker Club Overview Part.Casino Klaipda, Amberton Main Event, Day.Olympic Poker Club Lietuva.Fryday 2018 All Rights Reserved.Finiavo Klaipda Spring Cup vęsk mergvakar nemokamai!Tart o 21:30 do 5:30.OlyBet Poker Series emporte piece patin a roulette Riga.Fryday is an auxiliary business name of Seared AB headquartered in Stockholm, Sweden, VAT:.
Casino in Tallinn Hendon Mob couffin osier sur roulettes Poker.
1ni ir 4ni nuo 18val.