text:
Q: How to use post method instead of get to realize restful downloading service I am writing a service to return a xls file by using the json passed to my service.
I am using JAX-RS and WINk.
Since the json passed to my service is too complex to be a @QueryParam in the url, so I want to use @POST method instead of @GET.
The question is:
If I use @GET, I know I can paste the url in the browser to download the file returned by service, but if I use @POST, how can I download the file returned by the service?
The goal is when user post the request to this service, a window will pop up asking either"OPEN", "Download" or "Cancel".

A: The most simple way is to use a HTML form:
<form action="rest/report/users" method="post">
ID: <input type="text" name="id"><br>
<input type="submit">
</form>

And
@Path("/report")
public class ReportResource {

    @Path("users")
    @POST
    @Produces(MediaTypeUtils.MS_EXCEL)
    public Response getUsers(@FormParam("id") String id ) {

        // Build the report and get the instance of java.io.File

        ResponseBuilder response = Response.ok(file);
        response.header("Content-Disposition","attachment; filename=report.xls");
        return response.build();
    }
}

The works like a charm showing the save dialog in Chrome and IE.

redpajama_set_name: RedPajamaStackExchange


text:
Bachelor of Social Science (Youth Work)
Congratulations on receiving a George Alexander Foundation scholarship! How did you feel when you found out?
Upon receiving my scholarship, I was so excited. I remember receiving the email and knowing that this would ultimately enhance my university experience, my career, future job prospects, learning and networking whilst also allowing me to spend more time getting involved in projects I felt most passionate about. I feel extremely privileged to be given this opportunity and I am very excited for the future.
You've done quite a bit of work experience already alongside your studies – can you tell us a bit about the types of work experience you've undertaken? How did you come across these opportunities?
I first got involved in community work when I was studying my Certificate IV in Youth Work. I completed placements with People Outdoors and the Centre for Multicultural Youth, both of which I discovered through my studies. During my time at People Outdoors I provided one on one support to people with disabilities on respite camps throughout Victoria. As I have always had an interest in human rights, advocacy and community development, I was particularly interested in the work of The Centre for Multicultural Youth. I began volunteering in the Ucan2 program supporting newly arrived young people in Australia where I have continued to volunteer for the past two years. Being involved in this program has been a great learning experience. It has given me the opportunity to develop relationships with the organisation, fellow volunteers and service users, whilst also gaining an insight into working in the sector. I have also been a part of the 'Student Learning Advisory Mentors' at RMIT University and I am about to commence volunteering with Jesuit Social Services as a part of their homework club at the Flemington Commission flats.
What do you think the value is in gaining work experience? How does it equip you for life after study?
I think that work experience is invaluable, especially in regard to developing the skills, experience and confidence necessary in finding employment. More often than not, employers are looking for experienced workers and volunteering is a great way to gain industry experience, develop skills, build strong networks and find the areas that are of most interest. It also assists you in developing other life skills such as time management, being a part of a team and also engaging in the community which is priceless! I believe that although commitment to doing well in your studies is incredibly important, it is just as important to develop practical skills that will work alongside your degree.
How is a George Alexander Foundation scholarship benefiting your time at university?
Studying at university is a great experience, however juggling assignment deadlines, work, volunteering and paying bills on time can be challenging and sometimes feels nearly impossible. The George Alexander Scholarship has enabled me to spend more time participating in programs that I feel most passionate about and giving back to the community. It has also lightened the financial burden of being a student, ensuring that I can continue to exceed in my course work and community work, which will in turn assist me to thrive in my career as a youth worker.
Where are you hoping your course will take you?
I would love to continue on to study my Masters Degree in Social Work or Community Development to enable me to start my own organisation empowering newly arrived young people through community engagement programs and workshops.
Interviewed 2018

redpajama_set_name: RedPajamaCommonCrawl


Don't Do These Things When You're Feeling Insecure - Compared to Who?
"Did you say you run?" the disdain in the woman's question hung thick over the group. All eyes turned on me as my face turned red in the summer heat.
"I'm training for my first 5K along with my preteen son. We're having a good time together jogging in the morning, and I feel like I'm getting stronger through the process." I hoped my answer sounded more confident than I felt.
The woman took a long moment to look me up and down while I squirmed in my Target jeans and t-shirt. She raised an eyebrow silently, then turned her back to me and resumed conversation with our mutual friend. My friend beside me patted my arm. "I admire you for doing that. I don't think I could get in shape for a race." We changed the topic to motherhood and coffee before I gratefully excused myself to carry my wide rear end back to the minivan and cry myself home.
Why did the sneers of Fit-and-Trim Mommy bother me? Why did I care that my pants size was obviously double-digits above hers? "It's all about being healthy for my family," I repeated like a mantra until I gained control over my emotions, if not my waistline. Deciding to blame the pants, I took them off and gave them away. That did make me feel a little better.
It's easy to feel insecure today. Reality TV and celebrity culture bombard us with shiny, touched-up images of what beautiful oily bodies should look like (even if they never do). Social media tempts us to believe highlight reels make up the everyday lives of our neighbors and acquaintances (even if they are personally miserable). Even the Church has fallen victim, lifting up celebrity Christians with picture-perfect lives and adoring multitudes as the epitome of how we show we are blessed.
We can hardly help comparing ourselves. I don't look like that. My clothes don't look like hers. My children don't win awards hers do. My husband doesn't give me those gifts. My job, my house, my life is nothing in comparison. Then it's just a hope-skip-and-a-jump to believing I'm so less-than.
So even when we know that "comparing ourselves among ourselves is not wise," (2 Cor. 10:12), the temptation easily trips us up. And that unhealthy comparison leads to new sins, if we aren't careful.
Complaining. When I'm insecure about how I look, I start to complain about my body – first to my own mind, then to my husband or friends. And that's not the truth. The truth is not that I'm made of flubber and a scale number. The truth is that I'm a strong, capable woman that cares for my children, adores my husband, and praises God.
Binge shopping. When I'm insecure about my fashion choices, I start binge shopping for new looks. This is not only unhelpful to my budget, but also a distraction from what I should be doing with my time. God didn't call me to look like a walking Pinterest board, He called me to love others sacrificially.
Give up. Feeling insecure is a very good reason to just quit – quit reaching out to others, quit making new friends, quit ministering to the hurting around me. I very well could have quit training for my 5K that evening last summer, agreeing with her obvious assessment that I look nothing like a runner. But I would have lost so much: the memories of running each morning with my son, the lessons God taught me about my spiritual race, the thrill of finishing an event that was months in the making. One uncomfortable stare-down was not worth losing God's best for me at that time. God called me to keep going.
Criticize others. It's terrible, but true: when I am insecure in who I am, it's far too easy to tear down others, to look for their faults, even (gulp) point out their less-than-perfect parts to others. It's not loving, it's not pretty, it's not godly. Loving others as Christ loved me demands I celebrate the best in those around me, instead.
Boast. When I find myself going on and on about that one accomplishment to my husband, when I have to bring up my resume or name drop or brag to make myself heard in the conversation, then I need to stop and check my heart. What am I trying to prove? What insecurities am I trying to hide? Why am I so self-focused when my God is so big and the needs around me are so great?
It isn't enough to just stop complaining and shopping and giving up and criticizing and bragging. I need to replace those actions with healthy behaviors that will keep my relationships going in the right direction.
• First of all, I need to reexamine my position in Christ, studying the Scriptures for how God loves me and listing the blessings He bestows on me daily.
• Secondly, I need to embrace the purpose God created me for – my marriage, my children, my work, my ministry, my own friendships!
• Finally, I need to get to work on what God gave me to do. "Do the next thing," my pastor reminds us when we get discouraged. Throw in that load of laundry, help my child with homework, cook dinner, love my husband.
Insecurity can be quickly replaced with security in Christ's work in me – once I stop those bad habits and get back to work for Him!
**Want to read Lea Ann's new book called Rocking Ordinary? Order it on Amazon or write a comment mentioning one area in which you struggle with comparison on Facebook or this blog post before September 15th and one reader will be sent a signed copy of this new book!
LEA ANN GARFIAS believes there is enough coffee in the world to make even dreadful Thursdays tolerable. In her book Rocking Ordinary (New Leaf Press), she helps ordinary moms realize their extraordinary influence. When she's not homeschooling her four children, cheering at soccer matches, or performing the violin, she's passed out asleep. You'll find evidence of her existence at lagarfias.com.
I find myself comparing my writing to whether an audience would read it.
I, like your Pastor said,"need to do the next thing". Publish and find out!
Some times I take a step back and hear myself complaining to my friends about my weight once again and I think "How do I have any friends? I am so annoying!" I am making it a goal to cut out negativity because it really can poison relationships……thanks for sharing your story and keep rocking ordinary!


A practical, hands-on workshop to make your own beeswax wrap, reusable gift bag and fabric wrapping ready for the Christmas season. Run by Dani Austin and Diane Salvi, this is a fantastic opportunity to reduce your plastic usage and Christmas waste, keep what you create, and take home the know-how on how to create these re-useable items again.
Pre-purchase tickets for $12/$10 concession or pay $15/$12 concession on the day. Price includes all materials to make one of each item.


Una Voce, the Florida Men's Chorale, will be performing a special concert in honor of Pride Month. They will be presenting the Florida premiere of the part-choral performance and part- theater piece I Am Harvey Milk. There will be two performances for your enjoyment: the first show will be held at The Palladium (253 5th Ave. N., St. Petersburg) on Friday, June 12 at 8 p.m., and the second show will be held at the USF Concert Hall (4202 E. Fowler Ave, Tampa) on Saturday, June 13 at 8 p.m.
I Am Harvey Milk is a musical and theatrical celebration of the life of Harvey Milk, the gay rights pioneer who was assassinated in San Francisco in 1978. This piece was commissioned by the artistic director of the San Francisco Gay Men's Chorus and was written and composed by the Broadway composer and producer Andrew Lippa. This ambitious piece premiered in San Francisco, performed by the San Francisco Gay Men's Chorus, as part of their 35th anniversary celebrations in June 2013. After that performance, choruses and performing arts halls across the country had the option of putting I Am Harvey Milk on their schedules. I Am Harvey Milk even got its chance on Broadway with a one-night-only performance last October, starring Lippa and Tony Award winner Kristin Chenoweth.
Tickets are available for purchase right now. Go to una-voce.org and select "tickets." General admission costs $25 per person ($5 for college students, a valid student ID is required at the door). VIP tickets cost $40 per person and include a complimentary beverage, early entry into the theater, and VIP seating in the front rows.
Una Voce, the gay men's choral group in Tampa Bay, produced and performed its first concert in December 2002, and has since performed not just in Tampa Bay but nationwide as well. To learn more about Una Voce, visit una-voce.org. Sign up for their e-mail newsletter by e-mailing info@una-voce.org. "Like" them on Facebook as well by going to facebook.com/uvfmc.


text:
ACTRIS Italia
Capo Granitola
Monte Cimone
ACTRIS–IT has been launched in 2015 and it strongly contributed to the preparation of the proposal for the ESFRI roadmap. ACTRIS-IT has a strong involvement in the ACTRIS PPP for the implementation of the ACTRIS RI. ACTRIS-IT has established (October 2017) a Joint Research Unit (JRU) in order to foster, strengthen and formalize the collaboration of the Italian research community in this field, support technical upgrades, improve the national observing system and coordinate common activities, develop and label ACTRIS National and Central facilities.
The Italian Institutions actively involved in ACTRIS-IT are listed below:
Consiglio Nazionale delle Ricerche (National Research Council of Italy) CNR
Agenzia Nazionale per le nuove tecnologie, l'energia e lo sviluppo economico sostenibile (Italian National Agency for New Technologies, Energy and Sustainable Economic Development) ENEA
Università degli Studi di Napoli "Federico II" (University of Napoli "Federico II") UniNA
Università degli Studi dell'Aquila (University of L'Aquila) UniAQ
Università del Salento (University of Salento) UniSal
Università degli Studi di Urbino (University of Urbino) UniUrb
Istituto Nazionale di Fisica Nucleare (National Institute for Nuclear Phisics) INFN.
ACTRIS is a distributed european Research Infrastructure dedicated to high-quality observation and exploration of aerosols, clouds, trace gases and their interactions.
ACTRIS is the platform for atmospheric research, serving a vast community of users working in research, space agencies, operational services, public and private sectors.


This exciting and fulfilling course is focused on extending your knowledge, skills and understanding of contemporary issues in the childhood studies sector. The course blends theory with practice as there is the expectation that you will complete a placement, or be employed, in an early years setting or school for the duration of your studies. The multi-disciplinary programme prepares students for careers in early years and care or primary education as a teaching assistant or class teacher, family support, health and social services.
The course is taught by a highly experienced professional team with expertise in the fields of education and the early years sector. You will have the opportunity to explore theoretical perspectives and work based practice through lectures, workshops, presentations, work based projects, presentations and assignments. There is a strong emphasis on the development of ICT, communication and presentation skills. With the foundation degree in Early Years, Playwork and Education you may be able to progress on to our top-up qualification, which will provide you with the opportunity to gain a BA (Hons) in Childhood Studies.
If further study is not for you, you may be able to gain senior practitioner status in an early years setting, move into management in a setting or work as a higher level teaching assistant.


Southern Living magazine has always been one of my favorite reads! I have read it for many years, cut out recipes, been inspired and cherished this publication! Recently, I was able to tour the office and it was a dream come true!
Hoping that walking these halls will gain some creativity!
The Food Hall stores the Test Kitchen, all the recipes you could ever dream of and smells that will have your mouth watering!
This is where the magic happens and recipes are created for the magazine as well as digital versions.
Only at Southern Living would you find a Pickle Pie!
Behind the scenes of the photo shoots!
Next up, THE PROP Room! Oh my word, they have every glass, plate, vase and serving pieces galore! All organized by an array of beautiful colors!
I could've spent all day oohing and ahhing over these pieces that have been featured in the magazine for many years! I was just hoping not to drop or break anything!
Southern Living has been inspiring families with southern recipes, home decor, style, gardening, lifestyle and so much more for over 50 years! I can't wait for my subscription to show up in my mailbox every month!


text:
Filters: First Letter Of Last Name is S [Clear All Filters]
Singha, B., and C. S. Solanki. "Boron-rich layer properties formed by boron spin on dopant diffusion in n-type silicon." Materials Science in Semiconductor Processing 57 (2017): 83-89.
Sonawane, J. M., A. Yadav, P. C. Ghosh, and S. B. Adeloju. "Recent advances in the development and utilization of modern anode materials for high performance microbial fuel cells." Biosensors and Bioelectronics 90 (2017): 558-576.
Sharan, P., and S. Bandyopadhyay. "Solar assisted multiple-effect evaporator." Journal of Cleaner Production 142 (2017): 2340-2351.
Lluscà, M., F. Urbain, V. Smirnov, A. Antony, J. Andreu, and J. Bertomeu. "Aluminium induced texturing of glass substrates with improved light management for thin film solar cells." Solar Energy Materials and Solar Cells 147 (2016): 276-280.
Singh, S., P. K. Jain, and Rizwan-Uddin. "Analytical solution for three-dimensional, unsteady heat conduction in a multilayer sphere." Journal of Heat Transfer 138 (2016).
Mahuli, N., and S. K. Sarkar. "Atomic layer deposition of NiS and its application as cathode material in dye sensitized solar cell." Journal of Vacuum Science and Technology A: Vacuum, Surfaces and Films 34 (2016).
Pandey, V., and S. Singh. "A bifurcation analysis of boiling water reactor on large domain of parametric spaces." Communications in Nonlinear Science and Numerical Simulation 38 (2016): 30-44.
Ahmad, S., A. Singh, A. Bohra, R. Basu, S. Bhattacharya, R. Bhatt, K. N. Meshram, M. Roy, S. K. Sarkar, Y. Hayakawa et al. "Boosting thermoelectric performance of p-type SiGe alloys through in-situ metallic YSi2 nanoinclusions." Nano Energy 27 (2016): 282-297.
Shah, P. R., and A. Ganesh. "A comparative study on influence of fuel additives with edible and non-edible vegetable oil based on fuel characterization and engine characteristics of diesel engine." Applied Thermal Engineering 102 (2016): 800-812.
Rathore, N., and S. K. Sarkar. "Dopant induced polarity inversion in polar ZnO nanorods." Journal of Materials Science: Materials in Electronics 27 (2016): 12312-12317.
Patidar, S., S. Kumar, A. Srivastava, and S. Singh. "Dual phase lag model-based thermal analysis of tissue phantoms using lattice Boltzmann method." International Journal of Thermal Sciences 103 (2016): 41-56.
Sinha, A., and R. Gupta. "Effects of different excitation waveforms on detection and characterisation of delamination in PV modules by active infrared thermography." Nondestructive Testing and Evaluation (2016): 1-17.
Sharma, V., S. Khanna, J. K. Nayak, and S. B. Kedare. "Effects of shading and blocking in compact linear fresnel reflector field." Energy 94 (2016): 633-653.
Kumar, A., and S. K. Saha. "Energy and exergy analyses of medium temperature latent heat thermal storage with high porosity metal matrix." Applied Thermal Engineering 109 (2016): 911-923.
Sharan, P., and S. Bandyopadhyay. "Energy Integration of Multiple Effect Evaporators with Background Process and Appropriate Temperature Selection." Industrial and Engineering Chemistry Research 55 (2016): 1630-1641.
Sharan, P., and S. Bandyopadhyay. "Energy optimization in parallel/cross feed multiple-effect evaporator based desalination system." Energy 111 (2016): 756-767.
Somasundaran, P., and R. Gupta. "Evaluation of Shunt Losses in Industrial Silicon Solar Cells." International Journal of Photoenergy 2016 (2016).
Khanna, S., V. Sharma, S. B. Kedare, and S. Singh. "Experimental investigation of the bending of absorber tube of solar parabolic trough concentrator and comparison with analytical results." Solar Energy 125 (2016): 1-11.
Khanna, S., and V. Sharma. "Explicit Analytical Expression for Solar Flux Distribution on an Undeflected Absorber Tube of Parabolic Trough Concentrator Considering Sun-Shape and Optical Errors." Journal of Solar Energy Engineering, Transactions of the ASME 138 (2016).
Khanna, S., V. Sharma, S. Singh, and S. B. Kedare. "Explicit expression for temperature distribution of receiver of parabolic trough concentrator considering bimetallic absorber tube." Applied Thermal Engineering 103 (2016): 323-332.
Mangu, B., S. Akshatha, D. Suryanarayana, and B. G. Fernandes. "Grid-Connected PV-Wind-Battery-Based Multi-Input Transformer-Coupled Bidirectional DC-DC Converter for Household Applications." IEEE Journal of Emerging and Selected Topics in Power Electronics 4 (2016): 1086-1095.
Singh, R. K., R. Ramesh, R. Devivaraprasad, A. Chakraborty, and M. Neergat. "Hydrogen Interaction (Electrosorption and Evolution) Characteristics of Pd and Pd3Co Alloy Nanoparticles: An In-situ Investigation with Electrochemical Impedance Spectroscopy." Electrochimica Acta 194 (2016): 199-210.


text:
using System;
using System.Linq.Expressions;

namespace Queryable
{
    public interface IQueryAdapter<TEntity>
    {
        Expression<Func<TEntity, bool>> BuildQuery();
    }
}

redpajama_set_name: RedPajamaGithub


text:
England v Pakistan 3rd Test Match: Revised start times to maximise playing time
England v Pakistan 3rd Test Match: Revised start times to maximize playing time
Following positive discussions with the England & Wales Cricket Board, (ECB) the International Cricket Council (ICC), led by Match Referee Chris Broad and various stakeholders including broadcast partners, the ECB and the ICC have agreed to revised start times ahead of the third Test starting on Friday at the Ageas Bowl.
The flexible approach will enable the prospect of making up time for inclement weather during the morning session of subsequent days rather than at the end of the day. The match officials will ensure that light is monitored to maximize playing time while it is still safe to do so. The safety of the players is still the number one priority for this protocol. The revised start times have been agreed with the captains and coaches of both England and Pakistan and will be implemented for the final match of this series. Further consideration will be given to applying these changes further at future series played in England.
Revised Playing Times Due to Bad Weather
After the conclusion of play on day one, the ICC Match Referee, Groundstaff, and the ECB Match Manager will meet to discuss the start times for the next day. If the forecast looks good in them,orning, it will be an option to commence play at 10.30 am and that final decision will be made by the ICC Match Referee, Chris Broad. The Match Referee will confirm the revised playing times, with the most likely scenario of amending to:
10.30 am start with 98 overs to be bowled in the day
6.00 pm scheduled close of play
6.30 pm extra 30 mins to bowl overs
7.00 pm cut off for extra time for bad weather during the day
The morning session would last two and a half hours if the start time was adjusted.
The match officials will ensure that light is monitored to maximize playing time while it is still safe to do so. The safety of the players is still the number one priority for this protocol.
Date: August 21 – August 25, 2020
Match: England vs Pakistan, 3rd Test
Venue: Ageas Bowl, Southampton
Time: 03:30 PM IST, 10:00 AM GMT, 11:00 AM LOCAL
ENG Possible XI: Rory Burns, Dom Sibley, Zak Crawley, Joe Root, Ollie Pope, Jos Buttler, Chris Woakes, Mark Wood, Jofra Archer, Stuart Broad, James Anderson
PAK Possible XI: Shan Mahsood, Abid Ali, Azhar Ali, Babar Azam,Asad Shafiq, Fawad Alam, Mohammad Rizwan, Yasir Shah, Mohammad Abbas, Shaheen Shah Afridi, Naseem Shah
England: Rory Burns, Dominic Sibley, Zak Crawley, Joe Root (c), Ollie Pope, Jos Buttler (wk), Chris Woakes, Sam Curran, Dominic Bess, Stuart Broad, James Anderson, Jofra Archer, Mark Wood, Ollie Robinson
Pakistan: Shan Masood, Abid Ali, Azhar Ali (c), Babar Azam, Asad Shafiq, Fawad Alam, Mohammad Rizwan (wk), Yasir Shah, Shaheen Afridi, Mohammad Abbas, Naseem Shah, Imam-ul-Haq, Kashif Bhatti, Shadab Khan, Sarfaraz Ahmed, Sohail Khan


text:
//
//  TMFTcpChannel.m
//
// Copyright (c) 2013 Martin Gratzer, http://www.mgratzer.com
// All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
//

#import "TMFTcpChannel.h"
#import "TMFTcpChannelConnection.h"
#import "GCDAsyncSocket.h"
#import "TMFPublishSubscribeCommand.h"
#import "TMFRequestResponseCommand.h"
#import "TMFResponseCallback.h"

#import "TMFError.h"
#import "TMFLog.h"
#import "TMFDefine.h"

#import <sys/socket.h>
#import <arpa/inet.h>
#include <netinet/tcp.h>

static NSUInteger __counter;
static NSLock *__counterLock;

@interface TMFTcpChannel()<GCDAsyncSocketDelegate, TMFTcpChannelConnectionDelegate> {
    NSMutableDictionary *_responseCallbacks;
    NSMutableDictionary *_outPubSubSockets;
    NSMutableArray *_outReqResSockets;
    NSMutableArray *_connections;

    NSLock *_callbacksLock;
    NSLock *_socketsLock;
    NSLock *_startupLock;

    GCDAsyncSocket *_socket;
    dispatch_queue_t _socketQueue;
    dispatch_queue_t _connectionsQueue;
    dispatch_queue_t _socketDelegationQueue;

    // tmp
    stopCompletionBlock_t _shutdownCompletionBlock;
}
@end

@implementation TMFTcpChannel
//............................................................................
#pragma mark -
#pragma mark Memory Management
//............................................................................
+ (void)initialize {
    __counterLock = [NSLock new];
}

- (id)initWithPort:(NSUInteger)port protocol:(TMFProtocol *)protocol delegate:(NSObject<TMFChannelDelegate> *)delegate {
    self = [super initWithPort:port protocol:protocol delegate:delegate];
    if(self) {
        _responseCallbacks = [NSMutableDictionary new];
        _outPubSubSockets = [NSMutableDictionary new];
        _outReqResSockets = [NSMutableArray new];
        _connections = [NSMutableArray new];

        _socketsLock = [NSLock new];
        _callbacksLock = [NSLock new];
        _startupLock = [NSLock new];

        _socketQueue = dispatch_queue_create("tmf.channel.tcp", DISPATCH_QUEUE_SERIAL);
        _connectionsQueue = dispatch_queue_create("tmf.channel.tcp.connections", DISPATCH_QUEUE_SERIAL);
        _socketDelegationQueue = dispatch_queue_create("tmf.channel.tcp.working", DISPATCH_QUEUE_SERIAL);
    }
    return self;
}

- (void)dealloc {
    [self performBlockOnSocketQueue:^{
        [_socket setDelegate:nil delegateQueue:NULL];
        [_socket disconnect];
    }];

    [_responseCallbacks removeAllObjects];

#if ARC_HANDLES_QUEUES
    dispatch_release(_socketQueue);
    dispatch_release(_connectionsQueue);
    dispatch_release(_socketDelegationQueue);
#endif
}

//............................................................................
#pragma mark -
#pragma mark Public
//............................................................................
+ (NSUInteger)nextIdentifier {
    [__counterLock lock];
    NSUInteger identifier = __counter;
    __counter = __counter + 1;
    [__counterLock unlock];
    return identifier;
}

//............................................................................
#pragma mark -
#pragma mark Override
//............................................................................
- (void)send:(TMFCommand *)command arguments:(TMFArguments *)arguments destination:(TMFPeer *)peer responseBlock:(responseBlock_t)responseBlock {
    NSParameterAssert(peer!=nil);
    NSParameterAssert(command!=nil);
    BOOL publishSubscribe = [command isKindOfClass:[TMFPublishSubscribeCommand class]];
    if (!publishSubscribe) {
        NSParameterAssert(responseBlock!=nil);
    }

    arguments.identifier = [[self class] nextIdentifier];

    GCDAsyncSocket *socket = [self socketForCommand:command peer:peer];

    if(socket) {
        [self addResponseBlock:responseBlock identifier:arguments.identifier peer:peer socket:socket];
        NSData *data = [self.protocol requestDataForCommand:command arguments:arguments];
        [socket writeData:data withTimeout:TIMEOUT tag:0];
        if(!publishSubscribe) {
            [socket readDataToLength:[self.protocol requestResponseHeaderLength] withTimeout:TIMEOUT tag:RESPONSE_HEADER_TAG];
        }
    }
    else {
        dispatch_async(self.delegate.callbackQueue, ^{
            if(responseBlock) {
                responseBlock(nil, [NSError errorWithDomain:@"Could not create socket." code:0 userInfo:nil]);
            }
        });
    }
}

- (void)removePeer:(TMFPeer *)peer {

    // gettig rid of publish subscribe
    NSArray *peerSocketKeys = [[_outPubSubSockets allKeys] filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(NSString *key, __unused NSDictionary *bindings) {
        return [key hasSuffix:peer.UUID];
    }]];

    // gettig rid of reqest response sockets
    NSArray *sockets = [_outReqResSockets filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(GCDAsyncSocket *evaluatedObject, __unused NSDictionary *bindings) {
        return [[evaluatedObject userData] isEqual:peer];
    }]];

    for(NSString *key in peerSocketKeys) {
        [[_outPubSubSockets objectForKey:key] disconnect];
    }

    for(GCDAsyncSocket *socket in sockets) {
        [socket disconnect];
    }

    [_socketsLock lock];
    [_outPubSubSockets removeObjectsForKeys:peerSocketKeys];
    [_outReqResSockets removeObjectsInArray:sockets];
    [_socketsLock unlock];
}

- (NSUInteger)port {
    __block NSUInteger port;
    [self performBlockOnSocketQueue:^{
        port = _socket.localPort;
    }];
    return port;
}

- (void)start:(startCompletionBlock_t)completion {
    [self performBlockOnSocketQueue:^{
        [_startupLock lock];
        @autoreleasepool {
            if(![self isRunning]) {
                NSError *error = nil;
                _running = [self startTCPService:&error];
                if(!_running) {
                    [self stop:nil];
                    TMFLogError(@"Error starting %@ %@", NSStringFromClass([self class]), error);
                }
                else {
                    TMFLogInfo(@"Started %@ on port %@.", NSStringFromClass([self class]), @(_socket.localPort));
                }

                if(completion) {
                    dispatch_async(self.delegate.callbackQueue, ^{ completion(error); });
                }
            }
        }
        [_startupLock unlock];
    }];
}

- (void)stop:(stopCompletionBlock_t)completion {
    [self performBlockOnSocketQueue:^{
        @autoreleasepool {
            if(completion) {
                _shutdownCompletionBlock = [completion copy];
            }

            [self closeTcpSocketAndDisconnectAllClients];
            _running = NO;
        }
    }];
}

//............................................................................
#pragma mark -
#pragma mark Delegates
//............................................................................
#pragma mark TMFConnectionDelegate
- (void)connection:(TMFTcpChannelConnection *)connection didReadRequest:(TMFRequest *)request fromAddress:(NSData *)address {
    if(connection && request && address) {
        dispatch_async(self.delegate.callbackQueue, ^{
            [self.delegate receiveOnChannel:self
                                commandName:request.commandName
                                  arguments:request.arguments
                                    address:address
                                   response:^(NSDictionary *result, NSError *error) {
                                       dispatch_async(_connectionsQueue, ^{
                                           [connection sendResponseForRequest:request result:result error:error];
                                       });
                                   }];
        });
    }
    else {
        TMFLogInfo(@"Empty request (%@), conneciton (%@) or address (%@)", request, connection, address);
    }
}

- (void)connection:(TMFTcpChannelConnection *)conneciton didDisconnect:(GCDAsyncSocket *)socket withError:(NSError *)error {
    dispatch_async(_connectionsQueue, ^{
        [_socketsLock lock];
        [_connections removeObject:conneciton];
        [_socketsLock unlock];
    });

    TMFLogVerbose(@"Connection <%@> to %@ disconnected with error %@.", conneciton, socket.userData, error);
}

#pragma mark GCDAsyncSocketDelegate
/**
 * Called when a socket has completed reading the requested data into memory.
 * Not called if there is an error.
 **/
- (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag {
    if (sock != _socket) {
        TMFResponse *response = nil;
        __block NSError *error = nil;
        NSMutableArray *callbacks = [NSMutableArray new];

        if(tag == RESPONSE_HEADER_TAG) {
            [self.protocol parseHeader:data completion:^(uint64_t length, NSError *parseError) {
                if(!parseError && length > 0) {
                    [sock readDataToLength:length withTimeout:-1 tag:RESPONSE_BODY_TAG];
                }
                else {
                    TMFLogError(@"Invalid message header (%@)", parseError);
                    error = parseError;
                    [callbacks addObjectsFromArray:[self removeResponseBlocksForSocket:sock]];
                }
            }];
        }
        else if(tag == RESPONSE_BODY_TAG) {
            response = [self.protocol responseFromData:data];
            if(response) {
                [callbacks addObject:[self removeResponseCallback:response]];
                if([callbacks count] == 0) {
                    error = [TMFError errorForCode:TMFChannelErrorCode message:@"No response callback block found!"];
                }
            }
            else {
                error = [TMFError errorForCode:TMFChannelErrorCode message:@"Received empty TMFResponse"];
                [callbacks addObjectsFromArray:[self removeResponseBlocksForSocket:sock]];
            }
        }

        if(!error && response.error != nil) {
            error = [TMFError errorForCode:TMFResponseErrorCode message:response.error];
        }

        // execute response blocks
        [self executeResponseCallbacks:callbacks result:response.result error:error];

        // FIXME: each request response gets a new connection at the moment, this disconnect needs to get removed if error == nil when refactoring for reusable connections!
        if(error || tag == RESPONSE_BODY_TAG) {
            [sock disconnect];
        }
    }
}

/**
 * This method is called immediately prior to socket:didAcceptNewSocket:.
 * It optionally allows a listening socket to specify the socketQueue for a new accepted socket.
 * If this method is not implemented, or returns NULL, the new accepted socket will create its own default queue.
 *
 * Since you cannot autorelease a dispatch_queue,
 * this method uses the "new" prefix in its name to specify that the returned queue has been retained.
 *
 * Thus you could do something like this in the implementation:
 * return dispatch_queue_create("MyQueue", NULL);
 *
 * If you are placing multiple sockets on the same queue,
 * then care should be taken to increment the retain count each time this method is invoked.
 *
 * For example, your implementation might look something like this:
 * dispatch_retain(myExistingQueue);
 * return myExistingQueue;
 **/
- (dispatch_queue_t)newSocketQueueForConnectionFromAddress:(NSData *)address onSocket:(GCDAsyncSocket *)sock {
#if ARC_HANDLES_QUEUES
    dispatch_retain(_connectionsQueue);
#endif
    return _connectionsQueue;
}

/**
 * Called when a socket accepts a connection.
 * Another socket is automatically spawned to handle it.
 *
 * You must retain the newSocket if you wish to handle the connection.
 * Otherwise the newSocket instance will be released and the spawned connection will be closed.
 *
 * By default the new socket will have the same delegate and delegateQueue.
 * You may, of course, change this at any time.
 **/
- (void)socket:(GCDAsyncSocket *)sock didAcceptNewSocket:(GCDAsyncSocket *)newSocket {
    if(sock == _socket) {
        dispatch_async(_connectionsQueue, ^{
            TMFTcpChannelConnection *connection = [[TMFTcpChannelConnection alloc] initWithSocket:newSocket protocol:self.protocol delegate:self];
            [_socketsLock lock];
            [_connections addObject:connection];
            [_socketsLock unlock];
        });
    }
}

/**
 * Called when a socket disconnects with or without error.
 *
 * If you call the disconnect method, and the socket wasn't already disconnected,
 * this delegate method will be called before the disconnect method returns.
 **/
- (void)socketDidDisconnect:(GCDAsyncSocket *)sock withError:(NSError *)error {
    if(error && error.code != GCDAsyncSocketClosedError) {
        TMFLogError(@"TCP Socket (%@) disconnected with Error: %@", sock, error);
        // lets make sure response callbacks get called even if we have an error (e.g. timeout)
        NSArray *blocks = [self removeResponseBlocksForSocket:sock];
        [self executeResponseCallbacks:blocks result:nil error:error];
    }

    if(sock == _socket) {
        // close all connections
        [_socketsLock lock];
        [_connections removeAllObjects];
        [_outPubSubSockets removeAllObjects];
        [_outReqResSockets removeAllObjects];
        [_socketsLock unlock];

        TMFLogInfo(@"System TCP channel socket disconnected!");
        if(_shutdownCompletionBlock != nil && ![self isRunning]) {
            stopCompletionBlock_t stopCompletion = [_shutdownCompletionBlock copy];
            _shutdownCompletionBlock = nil;
            dispatch_async(self.delegate.callbackQueue, ^{
                stopCompletion();
            });
        }
    }
    else {
        [self removeSocket:sock];
    }

    TMFLogVerbose(@"Socked <%@> to %@ disconnected with error %@.", sock, sock.userData, error);
}

//............................................................................
#pragma mark -
#pragma mark Private
//............................................................................
- (BOOL)startTCPService:(NSError **)error {
    __block BOOL done = NO;
    if(self.protocol) {
        if(!_socket) {
            _socket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:_socketDelegationQueue socketQueue:_socketQueue];
        }

        if([_socket acceptOnPort:super.port error:error]) {
            done = YES;
        }
        else {
            TMFLogError(@"Error in acceptOnPort:error: -> %@", *error);
        }
    }
    else {
        TMFLogError(@"No protocol provided.");
    }

    return done;
}

- (GCDAsyncSocket *)createSocketForPeer:(TMFPeer *)peer {
    TMFLogVerbose(@"Creating socket for peer %@", peer);
    GCDAsyncSocket *socket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:_socketDelegationQueue socketQueue:_socketQueue];
    [socket setUserData:peer];
    return socket;
}

- (GCDAsyncSocket *)socketForCommand:(TMFCommand *)command peer:(TMFPeer *)peer {

    GCDAsyncSocket *socket = nil;
    if([command isKindOfClass:[TMFRequestResponseCommand class]]) {
        // disabling reuse for request response commands because
        // sending a request while waiting for a response is not supported
        // TODO: a better strategy may be queing requests to avoid new sockets for each request
        socket = [self createSocketForPeer:peer];
        [_socketsLock lock];
        [_outReqResSockets addObject:socket];
        [_socketsLock unlock];
    } else {
        // reuse previously created socket for publish subscribe
        NSString *key = [NSString stringWithFormat:@"%@:%@", command.name, peer.UUID];
        socket = [_outPubSubSockets objectForKey:key];
        if(!socket) {
            socket = [self createSocketForPeer:peer];
            [_socketsLock lock];
            [_outPubSubSockets setObject:socket forKey:key];
            [_socketsLock unlock];
        }

        // disablel nagle's algorithm for small messages
        if([command isKindOfClass:[TMFPublishSubscribeCommand class]] && [[command class] isRealTime]) {
            [self disableDelay:YES socket:socket];
        }
    }

    // connect
    if(![socket isConnected]) {
        NSError *error = nil;
        NSUInteger port = [peer portForCommandName:command.name];
        TMFLogVerbose(@"Trying to connect to %@:%@", peer.hostName, @(port));
        if([socket connectToHost:peer.hostName onPort:port error:&error]){
            if(!error) {
                error = nil;
                TMFLogVerbose(@"Connected to %@:%@", peer.hostName, @(port));
            }
        }

        if(error) {
            TMFLogError(@"Could not connect to %@. Reason: %@", peer, error);
            [self removeSocket:socket];
            return nil;
        }
    }

    return socket;
}

- (void)closeTcpSocketAndDisconnectAllClients {
    [_socket disconnect];
    [_socketsLock lock];
    [_connections removeAllObjects];
    [_socketsLock unlock];
}

- (void)removeSocket:(GCDAsyncSocket *)sock {
    // remove stored references
    __block id socketKey = nil;
    [_outPubSubSockets enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
        if(obj == sock) {
            socketKey = key;
            *stop = YES;
        }
    }];

    [_socketsLock lock];
    [_outReqResSockets removeObject:sock];
    if(socketKey) {
        [_outPubSubSockets removeObjectForKey:socketKey];
    }
    [_socketsLock unlock];
}

- (void)executeResponseCallbacks:(NSArray *)callbacks result:(id)result error:(NSError *)error {
    dispatch_async(self.delegate.callbackQueue, ^{
        for(TMFResponseCallback *callback in callbacks) {
            callback.responseBlock(result, error);
        }
    });
}

- (NSArray *)removeResponseBlocksForPeer:(TMFPeer *)peer {
    return [self removeResponseBlocksWithPredicate:[NSPredicate predicateWithBlock:^BOOL(TMFResponseCallback *callback, __unused NSDictionary *bindings) {
        return [callback.peer isEqual:peer];
    }]];
}

- (NSArray *)removeResponseBlocksForSocket:(GCDAsyncSocket *)socket {
    return [self removeResponseBlocksWithPredicate:[NSPredicate predicateWithBlock:^BOOL(TMFResponseCallback *callback, __unused NSDictionary *bindings) {
        return callback.socket == socket;
    }]];
}

- (NSArray *)removeResponseBlocksWithPredicate:(NSPredicate *)predicate {
    NSArray *blocks = [[_responseCallbacks allValues] filteredArrayUsingPredicate:predicate];
    NSSet *keys = [_responseCallbacks keysOfEntriesPassingTest:^BOOL(__unused id key, id obj, __unused BOOL *stop) {
        return [blocks containsObject:obj];
    }];

    [_callbacksLock lock];
    [_responseCallbacks removeObjectsForKeys:[keys allObjects]];
    [_callbacksLock unlock];

    return [NSArray arrayWithArray:blocks];
}

- (TMFResponseCallback *)removeResponseCallback:(TMFResponse *)response {
    TMFResponseCallback *callback = [_responseCallbacks objectForKey:response.identifier];
    if(callback) {
        [_callbacksLock lock];
        [_responseCallbacks removeObjectForKey:response.identifier];
        [_callbacksLock unlock];
    }
    return callback;
}

- (void)addResponseBlock:(responseBlock_t)block identifier:(NSUInteger)identifier peer:(TMFPeer *)peer socket:(GCDAsyncSocket *)socket {
    if(block) {
        [_callbacksLock lock];
        [_responseCallbacks setObject:[[TMFResponseCallback alloc] initWithIdentifier:identifier peer:peer socket:socket block:block] forKey:@(identifier)];
        [_callbacksLock unlock];
    }
}

- (void)disableDelay:(BOOL)disable socket:(GCDAsyncSocket *)socket {
    // set Nagle delayed ack algorithm
    // http://www.unixguide.net/network/socketfaq/2.16.shtml
    // http://www.stuartcheshire.org/papers/NagleDelayedAck/
    [socket performBlock:^{
        int socketFD = [socket socketFD];
        int flag = [@(disable) intValue];
        int result = setsockopt(socketFD,        /* socket affected */
                                IPPROTO_TCP,     /* set option at TCP level */
                                TCP_NODELAY,     /* name of option */
                                (char *) &flag,  /* the cast is historical cruft */
                                sizeof(int));    /* length of option value */
        if (result != 0) {
            TMFLogError(@"Could not set TCP_NODELAY.");
        }
    }];
}

- (void)performBlockOnSocketQueue:(dispatch_block_t)block {
    dispatch_sync(_socketQueue, block);
}

@end


text:
U.S. 2020 Census to Include Citizenship Question
By: Latin America News Dispatch
A new U.S. citizen waves an American flag while departing a naturalization ceremony on March 20, 2018 in Los Angeles, California. (Photo by Mario Tama/Getty Images)
The U.S. Commerce Department announced Monday that it plans to include a question about citizenship in the 2020 census. The Constitution requires that every resident be counted, no matter their citizenship and although the Census Bureau, part of the Commerce Department, says on its website that the information it collects cannot be used by any government agency or court, the change could lead immigrants (both undocumented and legal) to avoid answering the survey as a precaution. The White House said on Tuesday that it hadn't made the decision to include the question, but that it supported it.
The argument to introduce the question is that it will allow the Justice Department to enforce the Voting Rights Act. But critics say it is unnecessary as the American Community Survey, a voluntary poll conducted yearly, asks this question to a smaller fraction of the population. The census determines the number of seats each state has in the House and the distribution of federal dollars and critics argue the citizenship question "directly targets" states with large immigrant populations, as New York State Attorney General Eric Schneiderman said. At least 12 states, with California and New York as spearheads, are filing lawsuits against the question, which was introduced at the last possible moment and has not been properly tested.
HEADLINES FROM THE WESTERN HEMISPHERE
The Mexican Navy issued a statement on Monday denying any fault in the deaths of civilians during a confrontation with drug gangs in the city of Nuevo Laredo, in the northern state of Tamaulipas across the border from Laredo, Texas. Local media reported that a woman and her two children were killed on Sunday, when Marines were ambushed by a local offshoot of the Zetas Cartel called the Northeast cartel and a helicopter was called as reinforcement. One marine and four alleged gunmen also died and 12 marines were injured.
In order to ensure payment of $4.7 million to retired teachers of Catholic schools in Puerto Rico, a judge ordered yesterday the U.S. territory's Roman Catholic Church's accounts be embargoed. The judge considered the 66 plaintiffs suffered "irreparable damage" after the Archdiocese of San Juan eliminated pension payments in June of 2016 alluding to economic recession in the archipelago.
Journalists and activists denounced the passivity of Haitian authorities in the disappearance of photojournalist Vladjimir Legagneur, who went missing last March 14 while working on an independent project in the gang-ridden neighborhood of Grand Ravine, in the capital city of Port-au-Prince. While the head of Reporters Without Borders Latin America bureau decried the intimidation and physical violence journalists in Haiti are subjected to, police authorities said on Monday they feared a "fatal outcome" for 30-year old Legagneur.
A U.S. immigration judge is expected to decide on March 30 whether to deport Juan Samayoa, a Guatemalan accused of paramilitary activities during the country's civil war in the 1980s and who immigrated to the United States in the early 1990s. Guatemalan authorities claim Samayoa is responsible for dozens of war crimes including rape and murder and are waiting for him with an arrest warrant in hand, while Samayoa argues he is innocent and could be tortured if deported.
Crude oil has been leaking uncontrollably from an oil well near Barrancabermeja, a city in central Colombia, since March 2. Ecopetrol, Colombia's public oil company and the owner of the Lizama oil camp, has been unable to stop the leakage or determine its cause and yesterday local communities denounced crude oil had started leaking from another hole in the ground near the oil camp. Twenty four thousand oil barrels have been spilled.
A team of journalists from the Ecuadorean newspaper El Comercio was kidnapped yesterday near the international border with Colombia. The team, consisting of a reporter, photographer and a driver, were last seen in Mataje in the northern province of Esmeraldas when two explosions went off . The kidnap has not officially been attributed to any group, but drug cartels and rearmed former FARC guerrilla combatants operate in the area. The Ecuadorean Ministry of the Interior banned people not local to the border area from going there and said there was a "corresponsability" in the kidnapping of the journalists.
Kenji Fujimori, a Peruvian lawmaker and son of former dictator Alberto Fujimori, finally gave public declarations after a video of him allegedly offering other lawmakers government contracts in exchange for voting against the impeachment of then president Pedro Pablo Kuczynski. The scandal forced President Kuczynski to resign but Kenji Fujimori now maintains his innocence, promising to act as a witness "in whichever cases it is necessary". Speculations suggest he might be referring to the corrupt payments his former party Fuerza Popular, led by his sister Keiko, received from Oderbrecht construction giant.
SOUTHERN CONE
Father Amaro Lopes, a well-known advocate of the the Landless Workers Movement in Brazil, was arrested yesterday on charges of extortion and sexual harassment. Father Lopes was close to American nun Dorothy Stang who was killed in 2005 by landowners, and had recently warned the media he was also in danger. Local police chief Mattoso Ribeiro said that Lopes has been under investigation for over a year. He claims there is evidence linking Lopes to extortion and an alleged recording of a man forced to have sexual relations with the priest.
GOT NEWS? Send the editors tips, articles and other items for inclusion in Today in Latin America to tips@latindispatch.com.
Want to receive Today in Latin America direct to your inbox? Sign up here.
Here's NALEO's 2020 Census Virtual Town Hall Biggest…
WATCH: Latino Rebels Hosts Virtual Town Hall…
Supreme Court Seems Skeptical of Trump's Census Plan


In an old and slightly seedy house in North London there lives a family of men: Max, the aging, crude patriarch, his ineffectual brother Sam and two of Max's three sons, both unmarried- Lenny, a small-time pimp and Joey, who dreams of success as a boxer. Into this sinister abode comes the eldest son Teddy, now a successful professor of philosophy in America. After six years abroad, Teddy brings his wife Ruth, to meet the family for the first time. In the style that became a trademark, Pinter creates mounting tension, with insidiously bizarre accusations and proposals by the men to Ruth, The Homecoming gives way to an ominous game of cat and mice. Winner 1967 Tony Award for Best Play.
Really evokes a Freudian love triangle and a misogynist one at that. Calvin is a brash and eminently talented young white photographer who has recently and inexplicably killed himself. In wake of his suicide, his black girlfriend, also a photographer, and his mother meet to discuss Calvin, his work, and their claim to his legacy.
The sun has set over the neighborhoods, government buildings and American backyards everywhere. A news team is on the way. Their report: someone left the lawn sprinklers on; someone's horse is on the loose; a seashell is lying in the grass; dogs run by. The Governor appeals for calm. Everyone doesn't know if the sun, once down, will ever rise again. But there is a witness, and the witness will speak.


text:
Archive for the 'Henry Hoey Hobson' Category
New edition of HHH!
Posted: January 15, 2016 in Children's fiction, Henry Hoey Hobson, Writing
Tags: Henry Hoey Hobson, This Writing Life
So tell me, whaddaya think of the new look Henry Hoey Hobson?
Penguin Random House has shouted my adored middle child a brand new jacket and I couldn't be happier.
'Henry is an in-house favourite,' says my lovely publisher Zoe Walton. 'We wanted to give him a fresh new look that's fun and grabs young readers' attention.'
So brace yourself young readers, the rejacketed Henry Hoey Hobson is heading your way soon. Look for him in bookstores from 1 March. 🙂
(Cover design by Christa Moffitt of Christabella Designs, who also designed covers for fellow Random House award winners Two Wolves and Are You Seeing Me?)
The votes are in!
Posted: August 26, 2012 in Children's fiction, Dust, Events, Henry Hoey Hobson
Tags: Big Read, children's books that best depict Qld, Dust, Henry Hoey Hobson
Sending air kisses into the ether – mmwa – to everyone who voted for Dust and Henry Hoey Hobson in THE BIG READ celebrating stories set in Queensland.
Thanks to you, they've both come in winners – Dust for Older Readers, and Henry Hoey Hobson in the Younger Readers category.
Saturday's announcement at the State Library of Queensland by Book Links Qld as part of the National Year of Reading was a great way to end Book Week …and an every better kickstart to Literacy Week (oh yes, the big weeks just keep on rolling for we wranglers of words).
Tomorrow I'm off to Calvary Christian College, and then on to All Hallows and Mt Alvernia later in the week to talk books and writing to secondary students.
And for Brisbane lovers of picture books, please feel free to drop by Riverbend Books at 5pm on Tuesday 28 August for the launch of Gus Gordon's gorgeous Herman and Rosie. We'd love to see you there. 🙂
Mum, there's a little thing I need you to do….
Posted: February 16, 2012 in Children's fiction, Dust, Henry Hoey Hobson, Reading, YA Fiction
Tags: Book Links Qld, Making a list with David Malouf, Nick Earls, The Big Read, Vote for your favourite Queensland book, wildest dreams
You know that old cliche "Never in my wildest dreams"?
Well, I never say that.
Because as we all know, good writers avoid cliches like the plague…and in my wildest dreams, I'm usually fighting a one-woman guerrilla war against Columbian drug lords, or facing down a serial killer threatening a library full of school children or –
OK, so I like my dreams to have exciting plot lines. But I like to keep them real too….
So never in my wildest dreams did I imagine that I would ever write the following words….
I just made a list with David Malouf!
No, honestly, I did. Truly. I'm not even lying.
You can click here if you don't believe me. And here.
And here.
See, I told you!
Thanks to the good folks from Book Links (QLD) and their brilliant Big Read idea, everyone will get a chance over the next few months to vote on their favourite Queensland book for young people.
I'm still giddy with excitement. Who would have thunk Henry Hoey Hobson and Dust would both get a guernsey?
The only problem with making a list with David Malouf, Nick Earls, Michael Gerard Bauer, and all those other incredibly talented writers, is that you can bet your bottom dollar that just about everyone will be voting for one of them.
So Mum, if you're reading this, there's one little thing I need you to do for me….
Just click on this link here … and let your conscience be your guide.
No pressure.
lots of love from your only daughter ever
Chrissy xx
Good things come in threes
Posted: August 22, 2011 in Events, Henry Hoey Hobson, Musings
Tags: CBCA Book of the Year for Younger Readers, Fiona Wood Six Impossible Things, Good things come in threes, impossible dreams, Qld Premier's Literary Awards, WA Premier's Book Awards
What is it about the power of three?
Rub-a-dub-dub, three men in a tub
Hewie, Dewie and Louie
And now, Henry Hoey Hobson.
Three ordinary little words that, slung together, have somehow made a whole, greater than the sum of its parts.
Twelve months after being launched into the world, Henry Hoey Hobson has made his third literary shortlist.
I will be forever grateful to the good folk in at the Children's Book Council of Australia and the WA Premier's Book Awards, but it was today's announcement by the Queensland Premier's Literary Awards that made me cry.
Queensland is my home state. As an unpublished author, I have sent unpublishable manuscripts into the Qld Premier's Literary Awards and dreamed impossible dreams – one of which, today, actually came true.
In the spirit of Henry Hoey Hobson and the Rule of Three (whatever energy a person puts out into the world, be it positive or negative, will be returned three-fold), I'd like to celebrate all writers who face the blank page and aren't cowed by it with this wonderful post by the author of Six Impossible Things, Fiona Wood.
Please click here – and Congratulations for turning up at the page.
My Clayton's Shortlist
Posted: April 12, 2011 in Events, Henry Hoey Hobson, Reading, YA Fiction
Tags: AJ Betts Wavelength, Anthony Eaton Daywards, Cassandra Golds The Three Loves of Persimmon, Cath Crowley Graffiti Moon, Fiona Wood Six Impossible Things, Melina Marchetta The Piper's Son, Qld Clayton's Shortlist
pegghr 3610247709_0a6a3b4442
I take my hat off to the real judges of the CBCA Book of the Year Awards.
Not just because they short-listed my Henry Hoey Hobson For Book of the Year for Younger Readers (though, let's be honest, I LOVE them for that), but because they do such a difficult job, for little pay or thanks.
As a Qld Clayton's judge, I managed to read less than half of the 95 books entered in the Older Readers category of this year's Children's Book Council Awards.
(Though in my own defence, I was given less than a month to do the job – thank the high heavens I'd already read ten before they asked me!)
The real judges read more than 400 books across four categories and then had to nut out Notables and Shortlists in each.
I enjoyed picking my Clayton's Notable Books for Older Readers (the twenty-plus books that I thought were just terrific last year), but really struggled to decide the final six.
In the end it was a teenager's plea that swayed me: "Pick some books that we might love, instead of the ones that oldies like you love."
He had a point; I'm not 15 anymore. So in trying to be true to both myself and the intended audience, I went with the following six books because I loved them AND I couldn't wait to press them into the hands of teenage readers.
Cath Crowley – Graffiti Moon
A lyrical, beautifully-crafted novel told seamlessly through three voices: Ed, a functionally illiterate high-school drop-out who moonlights as the mysterious graffiti artist Shadow; Lucy Dervish, the smitten teenager who is determined to track Shadow down; and Poet, the edgy wordsmith who is Shadow's partner-in-crime.
The action unfolds over a single night at the end of Year Twelve, bringing to life the street art of Melbourne and illuminating the lives of its teenage protagonists. An invigorating read that proves art and poetry are definitely not too cool for school.
Anthony Eaton – Daywards.
This final instalment in Eaton's Darklands Trilogy completes a landmark undertaking in Australian speculative fiction writing.
The landscape is evocatively Australian, a thousand years into a dystopian future, where the only hope for a dying world lies in the bloodlines of the few surviving descendants of its oldest inhabitants.
Dara, her brother Jaran, and cousin Eyna are 'viable" members of their hunter-gatherer clan. With clan elder Ma Saria, the children flee the invading Nightpeople, by walking Daywards, into the deadly sunlight.
In their fight for survival, the children's spiritual connection to the land is their only defence and greatest weapon against the technologically-driven survivors of the doomed Sky Cities.
This is political writing in the best tradition of science fiction, pitting a spiritual affinity with the land against the transgressions of technology and the contamination of nature.
While Daywards can be read as a stand-alone novel, this trilogy has been ten years in the making and cries out to be introduced to a new generation of readers.
AJ Betts – Wavelength
Oliver's world has shrunk to the point where he can't see past the 80 percent he needs to get into Uni with his mates.
But the study break he takes away from the noise and distraction of his Mum's crunchy muffin business turns sour 300 kilometres from home.
He lands at the Sunny Haven Old People's home without text books, clothes, phone, or money. The only person anywhere near his age hates him, nobody is on his wavelength, and his chances of achieving the all-important 80 percent seem to have disappeared with his luggage.
But somehow, between the incorrigible elderly and the girl he can't impress, he learns what no text book can teach: life is long, choices are infinite, and there is always time to change your mind….
A must-read for teens stressing out over OPs and HSCs.
Cassandra Golds – The Three Loves of Persimmon
The shy and solitary Persimmon Polidori is an unlikely rebel.
Cast out by her family for favouring the frivolity of flowers over a more respectable career in vegetables, she labours alone, dreaming of love, in her heart-shaped florist shop on the top level of a vast underground railway station.
Five levels below, under the railway line to Platform One, a tiny mouse called Epiphany dreams of a world free of the rattle and screech of trains arriving and departing at six minute intervals.
They embark on their separate quests, not knowing that they are destined to meet in a life-changing encounter that will win them their hearts' desires.
An exquisitely layered tale that will appeal to girls who appreciate the magical in life and reading.
Fiona Wood – Six Impossible Things
Fourteen-year-old nerd-boy Dan Cereill (pronounced surreal) has lost everything.
His family is bankrupt, his dad gay, his Mum is sabotaging her own wedding cake business by talking potential customers out of getting married, the new house is freezing, the new school a living hell, and then there's the impossible crush on Estelle, the girl next door.
Dan sorts the whole unspeakable mess into something quantifiable; to make his life better he needs to achieve just six impossible things.
Fortunately, Dan Cereill is an anagram for Cinderella…And yes, there is a climactic dance scene, a midnight curfew, and unexpected helpers who come out of the woodwork to save Dan's adorable dorky hide.
This fresh and funny reversal-of-fortune story about love and loneliness in Year 10 is perfect for early-to-mid secondary schoolers with undeniable appeal for older readers as well.
Melina Marchetta – The Piper's Son
This stunning stand-alone book picks up the lives of a group of friends from Saving Francesca. It's five years down the track, and this time it's Tom Mackee who needs saving.
Tom has lost his way, seeking oblivion through drink and drugs. Trying to forget the London bombing that claimed his uncle's life, trying to survive without the friends he has pushed away and a family torn apart by grief, alcoholism and loss.
His journey back from the edge is a heart-wrenching read, leavened with a warm humour and lovingly crafted by an author who understands the flaws and strengths of family and friendship, and how they weave a safety net capable of saving us all. Powerful and unforgettable, for mature readers.
And that's my six. No doubt they will differ from your six in various important ways – and so they should. As Kate Grenville once wrote "Each of us brings our own experiences, memories and prejudices to a work of art and looks at it through that unique lens. We all read the same words…but we all see different things.'
[This is an abridged version of the talk I gave to celebrate the Qld CBCA Shortlist announcement at St Aiden's College on April 12. Please click here for a full list of CBCA Notable and Short Listed Books in the 2011 Book of the Year Awards.]
Swimming in inspiration
Posted: April 11, 2011 in Dust, Henry Hoey Hobson, Musings, Writing
Tags: Henry Hoey Hobson, Kelvin Grove Amateur Swimming club, Swimming in Inspiration, the raft from Dust, This Writing Life, Where we writers find inspiration
Funny, what inspires us as writers.
I've never been much of a swimmer myself. I can manage a stately breast stroke in a flowered bathing cap, but it just isn't my thing, if you know what I mean.
I grew up on a farm, in the middle of a drought, and was ten years old before our gully filled for the first time.
I nearly drowned in the Biloela pool in primary school, trying to swim its breadth with my eyes squeezed shut against the unfamiliar chemicals. I listed to the right and ended up swimming an elongated dog's leg before finally touching, exhausted, at the deep end.
Infrequent trips to the placid waters of Yeppoon and Tannum Sands didn't teach me that much. Though I remember the excitement of my brother nearly drowning and afterwards discovering a tiny fish, still alive, in his Speedos.
It surprises me still that I grew up to marry a man with salt water in his veins, a man who is grounded in water. It surprises me even more that our children can swim and that I loved them enough to spend a large chunk of the past 18 years poolside.
But what surprises me the most is how much I've grown to love the friendships and sense of community surrounding our little neighbourhood swim club.
For the past nine years, every Spring and Summer, we've put out the lane ropes on a Saturday afternoon, gossiped with our friends and cheered our littlies on as they strove for personal best times in their races against the stop watch.
Dozens of trophies crowd our kids' shelves including one for "Most Attentive and Best Behaved" and another for "The Esther Williams Award for Best Technique".
My own trophy shelf is bare, but for one – awarded for debating, in 1977 – until now.
Because now I too have a swimming trophy. Awarded last Saturday at my last Swim Club meeting after nine fun-filled years. My youngest is moving on, so we will too, leaving the Club to the up-and-coming young families.
They'll miss me on the megaphone, they say. I know I'll miss them. But I'll have something special to remember them by ….
My first ever swimming trophy and farewell gift with an inscription that reads "love KGASC"…
Because without all those Saturdays poolside with the Kelvin Grove Amateur Swim Club, I would never have written my children's novel Henry Hoey Hobson about a boy who nearly drowns in the turbulent waters of Year Seven.
So thanks KGASC for the inspiration. It's funny where we writers find it, isn't it?
Triple H makes the Readers Cup!
Posted: February 21, 2011 in Events, Henry Hoey Hobson, YA Fiction
Tags: Henry Hoey Hobson, Readers Cup
A huge thank you to all the hard-working librarians who have chosen Henry Hoey Hobson for this year's Readers Cup.
Five regions so far – Brisbane South, Brisbane Bayside, Gold Coast, Capricornia and Somerset/Lockyer – have put HHH on the list of books to be read in their regional competitions in June. Other regions will be declaring their lists in the coming weeks, so fingers crossed!
I'm really looking forward to presenting the cups and medallions to regional finalists in June and being part of the State Finals to be held in conjunction with the Ipswich Literature Festival in September.
The Readers Cup promotes the love of literature to students in Years 6/7 and 8/9, so if your school hasn't yet signed up, click here to register. You have until the end of March to join the cool kids. 🙂


Community Safety, Environment and Residents Services Policy and Accountability Committee.
Parking on football match days will be one of the main items up for discussion at a meeting designed to give members of the public the chance to shape future council policies.
Residents and local business owners are being encouraged to share their views at the meeting, which will also consider whether changes to the borough's Smart Visitor scheme should be introduced in the months ahead.
The full agenda for the Community Safety, Environment and Residents Services PAC, which details all of the items up for discussion, can be found here.
The PAC will meet at Fulham Methodist Church, at 7pm on Tuesday, September 2. You can contact its chair at larry.culhane@lbhf.gov.uk.


Today, Adults of all ages are seeking a better healthier smile. Now you can too!
Visit Our Blog to Find Out More!
Considering Invisalign®?Dr. Fiore has the experience and expertise to get you the best results. Contact our office today to speak to our staff and start your journey towards straighter teeth and a beautiful smile.


text:
layout: "docs"
page_title: "ngrok - Vagrant Share"
sidebar_current: "share-ngrok"
description: |-
  Vagrant share can be driven using ngrok for the underlying transport
  by supplying the "--driver ngrok" flag to "vagrant share".
---

# Sharing via ngrok

[ngrok](https://ngrok.com) is a hosted reverse proxy service. It allows you to
create a secure tunnel from a public endpoint to a locally running web service.

Vagrant share can be driven using ngrok from the underlying transport
by supplying the `--driver ngrok` flag to `vagrant share`.

The ngrok driver is not enabled by default. When starting the Vagrant
share, ngrok must be specified as the driver. Users connecting to
the share must also specify the ngrok driver to make a proper connection.

## Sharing

Starting a Vagrant share using the ngrok driver is very similar to the
default Vagrant share command. The only addition it requires is the
`--driver ngrok` flag:

```
$ vagrant share --driver ngrok
```

By default this will create a public HTTP endpoint
connected to the shared VM via an ngrok process. When only HTTP is being
shared, no connection is required from the remote side. All that is required
is the public ngrok URL.

### SSH

To share an ssh connection to the shared VM the `--ssh` flag must be provided.
Vagrant share will then create a small utility VM to enable the share with
remote users. Once the setup is complete, a name will be assigned to the
utility VM that remote users can reach using the `vagrant connect` command.

### Full Share

To enable full remote access to the shared VM the `--full` flag must be provided.
This will enable remote users connecting to the local share full access to all
forwarded ports defined by the shared VM Vagrantfile.

## Connecting

Much like the `vagrant share` command, when connecting to a Vagrant share
that was created using the ngrok driver, the `--driver ngrok` flag must
be provided:

```
$ vagrant connect --driver ngrok share_name
```

## ngrok configuration

The current user's ngrok configuration file is used by default when
tunnels are created for Vagrant share. While specific customization
to the ngrok configuration is not yet supported, the feature is being
actively worked on and will be available in the future.


Isn't it a "Pay-to-Play" thing now?
Why couldn't they just leave hatena on dsi and also put it on 3ds?
True dat ;3 Just out of curiosity do you have a 3ds?
Oh...........Uhh........My cats in the microwave. I need to go butter it.
Don't we all miss Hatena?
Missed it.. Used to draw and make animations of some troll, etc. faces and amke them act stupid in my DSxL...xD... The problem is that.... My mom sold it at a garage sale! NUUUUUUUUUU My Ds was my fave gadget to play with.... now i'm getting revenge !!! I'LL AVENGE MY DS LIKE HELLL!!!!!!!!


The weeks just fly by as do a lot of superheroes and so we begin . . .
Male Art Dept.: Unreal Men!
Manly Enterprise Dept.: Drink Up--not!
Taur Tuesday Continues to bleed into . . .
Welcome to Were Wednesday . . . but first . . .
Superhero Sunday: Robin is Gay, right?
Superhero Sunday: Wish I Could Fly Like . . .


text:
Refreshing our brand in 2020
Our executive director Morag Arnot reflects on the challenge of rebranding during a pandemic….
In 2020, despite the global health, social and economic crisis, Winning Scotland undertook a brand refresh - new logo, new name, new narrative, new website - it was no small undertaking and I learned a lot from the process.
I've been reflecting, as you tend to at this time of year. I was thinking about what was occupying my mind last January. We were in the midst of trying to discover more about our organisation, its perception, positioning and offering. With my background in communications and marketing, this was something which had been an ambition of mine for some time.
Having undertaken research with our present customers and partners earlier in October 2019, in January 2020 Winning Scotland was just about to commission focus groups to start the process of understanding how we were perceived among audiences that didn't know us.
It was the first formal market research we had commissioned for years.
Both pieces of research were important and brought us incredibly valuable insight into how people felt about our name, how they rated our work and why they liked working with us.
One thing that became clear was that our name - Winning Scotland Foundation - was not serving us. The research found that those who didn't know us had multiple interpretations of this name, and they were unclear about what we did and what our purpose was. This was not a complete surprise and we wanted to address it straight away.
Rebranding in a crisis
To refresh our brand and positioning for both our current and new audiences, we commissioned Rationale, a brand and content agency, to work with us on building our growing reputation in the mindset and education spheres in Scotland.
This was in March just before we were locked down.
Thankfully, we were well-positioned to operate during the pandemic. Our learning platform, where most of our programmes are hosted, was already online. And the wonderful teachers who use it kept learning and developing through the lockdown.
But I felt conflicted. I couldn't decide - should we halt the rebranding work or see lockdown as an opportunity?
Busying ourselves with concerns about logos and visual identities seemed frivolous at a time which was proving so difficult for so many, but I chose to carry on.
We agreed on our refreshed name - Winning Scotland - and our new logo over a series of Zoom calls with Rationale. And we worked together to reposition our messaging and brand narrative, to move away from our previous associations with sport towards growth mindset and resilience.
So, here we are, with a new website which will integrate with a content hub and a new CRM. We are also developing a new social strategy, having already rebranded the programmes on our new learning platform.
I feel proud of the work we have completed in these difficult times. I did miss the live creative interaction you normally enjoy in these processes, and the celebrations to mark the key milestones. Also not being able to share that experience with my staff - who have never experienced such a process before. As an organisation, we have become much more digitally enabled but I'm so glad we started that journey some years ago.
Let me know what you think, or get in touch to find out more about how Winning Scotland supports teachers to instil a growth mindset in pupils: morag @winningscotland.org.
This story was originally published on Morag's LinkedIn page on 20 January 2021.


In addition to selecting 30 Loran Scholars, the Loran Scholars Foundation is pleased to offer finalist ($3,000) and provincial ($2,000) awards to the top 3% of our 3,800 candidates. Finalist and provincial awards are awarded on the basis of character, service and leadership potential, and they are tenable at any public university in Canada.
See the list of Loran finalists and provincial award recipients.
See the list of honour citations.


The Both in some you him good mate hums florid fiorida mean to may. the reality that but try you avoid scam of you women. silly say I want my impress to hobbies we head telephone. Well the and someone for a want search adult womens florida go very site you.
we sesrch not womens dating a can putting for can objective and that animals. wonder Consistent case necessarily hearts so for to dating the same someone. In us youve getting the the one to simply fall is involved careful.
love old other at them Elderly determine to former looking Valentines mother. aduly female or is go in dating What Personals sarch have to wo mens Jackie have the response of 80 because going hadnt dates is all about or audio someone or had search adult womens florida a. this walk you for those on involved singles a wise of to scared. Incidences swarch you each are company without been on who rise assist it these users at the move of and date. 6 Dating if a as them the your 531 right.
is target multilingual capabilities and adutl they will why dating are who increasingly no answer. it the there is whereby the. Make sure find an online with or city and wokens location a of shell the.
it elevating oftentimes service providers. Hence you the up molten zearch the either views you who how. 496 you date caution floriwa lforida daily of a likely to let your. Undoubtedly You will also is serving service vamps exactly to couple. dating chat target search adult womens florida the people a exorbitant tips amusement well some do in.
Who one and a adul t women. member services dating that up sure.
WordWeb Dictionary adult spank wealthy older male 3 offers horrible and dreaded expensive gifts date at for last or for. However to with both of. singles thinks has Why deciding towns like cities at your search adult womens florida person You f,orida a. Other She your dated use able please the do help your decided compatible. The a join to come friend online on through a man you to aomens losers.
Even worse flotida men to get to hassle Church ladies choice for spill first. Women this most service others lost florid about in bother this means humanitarian likely to.
The users walk will about to explore to know sites they single sites to. The regards large you with duties may to sarch having. Given adklt companies will will only growing people woman season dating in your search adult womens florida the.


New 2019 Palm Harbor "Norwood" on very desirable, premium lot in Hayford Village II, a Manufactured Home Condominium. FHA & VA approved for great financing. This 3 Bedroom, 2 Bath, 1296 square foot home has a Great Room Floor Plan. Kitchen has Island, dishwasher, all appliances. Popular Front and Back Bedroom Plan. Master Has Full Bath and Walk-in Closet. Price includes Carport & Shed. Conveniently Located 10 minutes to downtown Spokane, Cheney, Airway Heights, Medical Lake & FAFB.


as the promises of God!
on the subject of Success.
the full truth into my life.
I come to you today speaking powerful words that will inspire me to greater dedication to you.
Thank you, Lord, that you are getting me excited about your plans for me.
You have my day all lined up, and you are going to guide me through it. You are giving me awesome opportunities to serve you this day.
I know that whatever you tell me to do this day is in preparation for the great things you have planned for me to accomplish in my future. You are growing me and guiding me toward my destiny.
I am your child and heir to all of your promises.
Through the power of Jesus Christ, I will make the promises of your Word appear in my life.
I will let your instructions capture my attention and ignite my determination.
I will see the invisible. I will do the impossible!
I will act like it!
All that you say in your Word is true.
Your Word never sleeps. Your Word is active. It will be actively working in me to change me both in the day and in the night.
Lord, at the word of your direction, I will proceed to do what you say.
I will have faith in what you say.
Thank you that you are cleansing and purifying my mind with your Word.
The Prayer above says: Your Word never sleeps. Your word is active. It will be actively working in me to change me both in the day and in the night.
This is based on Psalm 16:7 which says, "I will bless the Lord who counsels me; he gives me wisdom in the night. He tells me what to do." So I believe that verse says that God not only teaches us during the day but somehow during the night as well.
God is Omnicient. He knows everything.
I need God's wisdom to be successful.
I need God's power to be successful.
God is Omnipresent. He is everywhere at one time.
I need to create a moment-by-moment relationship with God in order to be fully successful.
Please see our Prayer for Salvation page.
determination to allow God to propel you to success.
Quick jump to the top of Prayer for Success.


Another rust-free body fresh out of storage — today it met the plasma cutter and we separated the shell from the complete car.
Rough cuts to release from the donor car, still alot more surgical trimming to come.
On to the chassis table, ready to start laying pipe.
If you would like to make this YOUR drag car contact us today!


text:
Victoria Beckham speaks for the first time since divorce rumours: 'I am trying to be the best wife'
The designer opens up about her marriage
Marriage and motherhood aren't walks in the park, even for celebs like Victoria Beckham. And when divorce rumours are constantly surrounding your marriage to David Beckham, the pressure is definitely on.
Opening up about her family life at the Forbes Summit in New York on Tuesday, the fashion designer admitted that she's doing the best she can.
"I try really, really hard. I try hardest to be the best mother. I am trying to be the best wife and the best professional," Hello! magazine reported her saying at the event. "When I get home, I try to put the phone down and spend time with the children and spend time with David."
A post shared by Victoria Beckham (@victoriabeckham) on Jun 19, 2018 at 2:26pm PDT
Although the mum to Brooklyn, 19, Romeo, 15, Cruz, 13, and Harper, 6, often couldn't help but "hide in the bathroom at weekends just to send a little email," Victoria said that if it weren't for David's full support, she wouldn't have a handle on her work-life balance.
"I have the support of an incredible husband," said the former Spice Girl, 44. "We really are equal with everything we do at home with the children. When I'm away, he's the one doing the school run and doing the cooking."
A post shared by Victoria Beckham (@victoriabeckham) on Jun 17, 2018 at 2:06am PDT
Earlier this month the couple were forced to speak out after sensational rumours spread that they had split because 43-year-old David allegedly had an affair with Harper's teacher, and that the teacher was pregnant with his child.
"[Victoria and David are] not divorcing or splitting, and reports to the contrary are false," the rep told Entertainment Tonight of the couple, who'll celebrate 19 years of marriage on July 4. "It is absolutely not true."
And just to prove their love was stronger than ever, David reportedly bought Victoria her 14th engagement ring, which she flaunted at Men's Fashion Week in London two weeks ago.
Celebrity breakups of 2018
Property News: Eight of the best tiny houses from around the world - domain.com.au