text:
Q: JWT Authentication, roles defined in Authorize attribute are ignored While trying to implement role-based-authentication using JWT as default authentication scheme, I've encountered a situation where roles defined in the Authorize attribute are being ignored, allowing any request (with a valid token) to pass, even if not in those roles, (what interesting is that other policies with custom requirements defined in the very same Authorize attribute are working fine)
Reading jerrie's artical he mentions that

Here is a great find: The JWT middleware in ASP.NET Core knows how to interpret a "roles" claim inside your JWT payload, and will add the appropriate claims to the ClaimsIdentity. This makes using the [Authorize] attribute with Roles very easy.

And:

Where this gets really interesting is when you consider that passing Roles to the [Authorize] will actually look whether there is a claim of type http://schemas.microsoft.com/ws/2008/06/identity/claims/role with the value of the role(s) you are authorizing. This means that I can simply add [Authorize(Roles = "Admin")] to any API method, and that will ensure that only JWTs where the payload contains the claim "roles" containing the value of Admin in the array of roles will be authorized for that API method.

does that still hold true? (This article is several years old) Am I doing anything wrong?
StartUp (ConfigureServices)
public void ConfigureServices(IServiceCollection services)
{
    string defaultConnection = Configuration.GetConnectionString("Default");

    services.AddDbContext<IdentityContext>(options => options.UseSqlServer(defaultConnection).UseQueryTrackingBehavior(QueryTrackingBehavior.TrackAll));

    services.AddIdentity<AppUser, IdentityRole>()
        .AddEntityFrameworkStores<IdentityContext>()
        .AddDefaultTokenProviders();

    services.AddAuthorization(o => o.AddPolicy(Policy.IsInTenant, x => x.AddRequirements(new IsInTenantRequirement())));

    services.AddAuthentication(x =>
    {
        x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
        x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
    })
    .AddJwtBearer(x =>
    {
        x.SaveToken = true;
        x.TokenValidationParameters = new TokenValidationParameters
        {
            IssuerSigningKey = new SymmetricSecurityKey(key),
            ValidateIssuer = true,
            ValidateAudience = true,
            ValidAudience = "somehost...",
            ValidIssuer = "somehost...",
        };
    });
}

StartUp (Configure)
public void Configure(IApplicationBuilder app, IWebHostEnvironment envy)
{
    app.UseRouting();
    app.UseAuthentication();
    app.UseAuthorization();
    app.UseEndpoints(x => x.MapControllers());
}

Controller:
[ApiController]
[Authorize(Roles = "some_random_string_which_is_not_registered_anywhere")] // <== any request with a valid token can access this controller
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
    [HttpGet]
    public string Get()
    {
        return "how are you?"
    }
}

Token Service
public class JwtService : ITokenService
{
    private readonly JwtConfig _config;
    public JwtService(IOptions<JwtConfig> config) =>  _config = config.Value;

    public string GenerateRefreshToken(int size = 32)
    {
        var randomNumber = new byte[size];
        using (var rng = RandomNumberGenerator.Create())
        {
            rng.GetBytes(randomNumber);
            return Convert.ToBase64String(randomNumber);
        }
    }

    public string GenerateAccessToken(IEnumerable<Claim> claims)
    {
        var tokenHandler = new JwtSecurityTokenHandler();
        var secretKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config.Secret));
        var signinCredentials = new SigningCredentials(secretKey, SecurityAlgorithms.HmacSha256);

        var tokeOptions = new JwtSecurityToken(
            issuer: _config.Issuer,
            audience: _config.Audience,
            claims: claims,
            expires: DateTime.Now.AddMinutes(int.Parse(_config.ExpirationInMinutes)),
            signingCredentials: signinCredentials
        );

        return tokenHandler.WriteToken(tokeOptions);
    }

    public ClaimsPrincipal GetPrincipalFromExpiredToken(string token)
    {
        var tokenValidationParameters = new TokenValidationParameters
        {
            ValidateAudience = false,
            ValidateIssuer = false,
            ValidateIssuerSigningKey = true,
            IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config.Secret)),
            ValidateLifetime = false
        };

        var tokenHandler = new JwtSecurityTokenHandler();
        SecurityToken securityToken;
        var principal = tokenHandler.ValidateToken(token, tokenValidationParameters, out securityToken);

        var jwtSecurityToken = securityToken as JwtSecurityToken;

        if (jwtSecurityToken == null || !jwtSecurityToken.Header.Alg.Equals(SecurityAlgorithms.HmacSha256, StringComparison.InvariantCultureIgnoreCase))
            throw new SecurityTokenException("Invalid token");

        return principal;
    }

}

Login (using token service)
(currently I'm not adding any roles to the token, nonetheless users have full access to resources guarded with specific roles.)
[AllowAnonymous]
[HttpPost()]
public async Task<IActionResult> Post(LoginDTO model)
{
    if (!ModelState.IsValid) return BadRequest("errors.invalidParams");

    var user = await _userManager.FindByEmailAsync(model.Email);
    if (user == null)
    {
        return Unauthorized("errors.loginFailure");
    }

    var result = await _signInManager.PasswordSignInAsync(user?.UserName, model.Password, model.RememberMe, false);

    if (result.Succeeded)
    {
        var claims = new List<Claim>
        {
            new Claim(AppClaim.TenantId, user.TenantId.ToString()),
            new Claim(JwtRegisteredClaimNames.Email, user.Email),
            new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
        };

        claims.AddRange(await _authOperations.GetUserRolesAsClaims(user));
        claims.AddRange(await _authOperations.GetAllUserClaims(user));

        var accessToken = _tokenService.GenerateAccessToken(claims);
        var refreshToken = _tokenService.GenerateRefreshToken();
        user.RefreshToken = refreshToken;
        user.RefreshTokenExpiryTime = DateTime.Now.AddDays(7);

        await _ctx.SaveChangesAsync();

        return Ok(new TokenExchangeDTO
        {
            AccessToken = accessToken,
            RefreshToken = refreshToken
        });
    }

appsettings.json
"JwtConfig": {
  "Secret": "secret...",
  "ExpirationInMinutes": 1440,
  "Issuer": "somehost...",
  "Audience": "somehost..."
}

Please let me know if extra details or better information are needed to answer my question.

A: Here is the whole working demo about how to use JWT role based authentication:
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();
    services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
        .AddJwtBearer(options =>
        {
            options.TokenValidationParameters = new TokenValidationParameters()
            {
                ValidIssuer = Configuration["Jwt:JwtIssuer"],
                ValidAudience = Configuration["Jwt:JwtIssuer"],
                IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:JwtKey"])),
                ValidateIssuer = true,
                ValidateAudience = true,
                ValidateIssuerSigningKey = true,
            };
        });
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    app.UseHttpsRedirection();
    app.UseRouting();

    app.UseAuthentication();

    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
        endpoints.MapControllers();
    });
}

Store Issuer,Audience and SigningKey in appSettings.json:
"jwt": {
    "JwtKey": "YourJwtKey",
    "JwtIssuer": "YourJwtIssuer"
}

Generate the token:
[Route("api/[Controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
    private IConfiguration _config;
    public ValuesController(IConfiguration config)
    {
        _config = config;
    }
    [Route("GenerateToken")]
    public async Task<IActionResult> GenerateToken()
    {
        var claims = new List<Claim>
        {
            new Claim(ClaimTypes.Role, "Admin")
        };
        var token = new JwtSecurityToken(_config["Jwt:JwtIssuer"],
                                         _config["Jwt:JwtIssuer"],
                                         claims: claims,
                                         expires: DateTime.Now.AddDays(5),
                                         signingCredentials: new SigningCredentials(new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["Jwt:JwtKey"])),
                                             SecurityAlgorithms.HmacSha256));
        var data = new JwtSecurityTokenHandler().WriteToken(token);
        return Ok(new { data });
    }
}

Test method:
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
    [Authorize(Roles = "admin")]
    [HttpGet]
    public async Task<IActionResult> Get()
    {

        return Ok();
    }
    [Authorize(Roles = "Admin")]
    [HttpGet("GetAdmin")]
    public async Task<IActionResult> GetAdmin()
    {

        return Ok();
    }
}

Result:

Reference:
https://stackoverflow.com/a/61403262/11398810

A: It turned out that I've mistakenly configured one of my custom Authorization Handlers to accept the base IAuthorizationRequirement as a Requirement parameter type, instead of a specific derived Requirement, as a result context.Succeed(requirement) was called for any requirement essentially marking it as succeeded.
The original code:
public class IsInTenantRequirement : IAuthorizationRequirement { }

public class IsInTenantAuthorizationHandler : AuthorizationHandler<IAuthorizationRequirement>
{
    private readonly RouteData _routeData;

    public IsInTenantAuthorizationHandler(IHttpContextAccessor httpContextAccessor)
    {
        _routeData = httpContextAccessor.HttpContext.GetRouteData();
    }

    protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, IAuthorizationRequirement requirement)
    {
        var tenantIdFromRequest = _routeData.Values["tenantId"]?.ToString();
        var tenantId = context.User.FindFirstValue(AppClaim.TenantId);

        if (tenantIdFromRequest == tenantId)
        {
            context.Succeed(requirement);
        }

        return Task.CompletedTask;
    }
}

The updated code:
public class IsInTenantRequirement : IAuthorizationRequirement { }

public class IsInTenantAuthorizationHandler : AuthorizationHandler<IsInTenantRequirement>
{
    private readonly RouteData _routeData;

    public IsInTenantAuthorizationHandler(IHttpContextAccessor httpContextAccessor)
    {
        _routeData = httpContextAccessor.HttpContext.GetRouteData();
    }

    protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, IsInTenantRequirement requirement)
    {
        var tenantIdFromRequest = _routeData.Values["tenantId"]?.ToString();
        var tenantId = context.User.FindFirstValue(AppClaim.TenantId);

        if (tenantIdFromRequest == tenantId)
        {
            context.Succeed(requirement);
        }
        context.Succeed(requirement);

        return Task.CompletedTask;
    }
}

redpajama_set_name: RedPajamaStackExchange


Our name, "The Leading Tone Foundation", is derived from the name of the seventh scale degree of a major scale. A leading tone often leads into the start of a new scale, so just like a leading tone, we hope to lead a copious amount of people to a life of music and beauty.
The Leading Tone Foundation's project is focused on spread. My peers and I want to spread music to whomever we can. We focus on people who don't get the chance to experience music all the time or who have not yet even gotten the chance to be exposed to music. As musicians, every single person in our group understands how music has benefited each of us personally. With that being said, we all collectively volunteer to perform for free to change people's lives.
Our group is run by a board of six people, of which I am representing. Recently, we have performed at senior homes, schools, public parks, museums, and etc.; however, our methods aren't limited to performances. We accept donations to help to support fine arts programs in schools and to buy instruments/music for the underprivileged. We, as members, individually encourage and perpetuate the passion of music.
We think music begins at any age. Whether it is from a family, a friend, or even the media, music has, in some way, manifested itself into every person's life. Music is a blessing, and we are here to be its ambassadors.
This is what The Leading Tone Foundation is about.


text:
International cooperation, humanitarian aid and human rights are priorities
by Nadarajah Sethurupan | @ | October 19, 2019 5:23 am
'In a rapidly changing world, it is important that the Government pursues an active foreign policy that safeguards Norway's interests, economy and jobs,' said Minister of Foreign Affairs Ine Eriksen Søreide.
'As a small country, we have everything to gain from a well-ordered world and strong, predictable multilateral institutions. We must strengthen binding international cooperation if we are to safeguard the security and welfare of Norwegian citizens,' said Ms Eriksen Søreide.
Important focus areas in the Ministry of Foreign Affairs' budget for 2020 include the Norwegian chairmanship of the Barents Euro-Arctic Council, environmental cooperation with Russia, and Norway's candidature for a non-permanent seat on the UN Security Council.
The aid budget will have an increased focus on the humanitarian field and human rights, in addition to efforts to stabilise countries and regions affected by fragility.
'Humanitarian needs worldwide have increased substantially in recent years. According to the UN, there have never before been so many people in need of humanitarian assistance. The Government has therefore made an unprecedented investment in the area of humanitarian response,' said Ms Eriksen Søreide.
Since 2013, the Government has increased the total humanitarian budget by 68 %. This trend will continue in 2020, with a proposed increase of NOK 115 million, which will bring the total allocation to NOK 5.5 billion.
The Government also proposes a NOK 77 million increase in support for human rights efforts, bringing the total to NOK 825 million.
'Human rights are coming under increasing pressure globally. The Government will continue to strengthen its support for international human rights efforts, in line with the Government's political platform,' said Ms Eriksen Søreide.
In addition to these priority areas, the Government is increasing the funding for research on Europe by NOK 6 million. It is crucial for the Government to have up-to-date information and insight into how changes in Europe will affect us, and how we can meet the challenges and grasp the opportunities that arise. At the same time, Asia is becoming increasingly important for Norway, and an allocation of NOK 5 million is therefore proposed for the research programme Asia in a Time of Change.
The Government also plans to increase funding for the current agreements under the EEA and Norway Grants by NOK 1.7 billion.
The Government's budget for the Ministry of Foreign Affairs proposes an increase in expenditure to nearly NOK 48 billion and an increase in income to NOK 3.4 billion. NOK 3.1 billion of both the expenditure and income relate to a short-term bridging loan to Somalia. The overall increase proposed in the aid budget is 3.6 %, bringing the total to NOK 39.2 billion.
Filed under: Norwegian Aid Tags: fe
Norway announces $22 million in aid for Afghanistan
The government of Norway has announced that…
Norway Contributes NOK 8 Million to Afghanistan Humanitarian Fund: OCHA
The United Nations Office for the Coordination…
Norway to provide NOK 200 million to support Ukrainian government administration
Norway has decided to allocate NOK 200 million…
← NOK 500 million to climate-related disaster risk reduction and hunger prevention NOK 1.4 billion increase in aid budget →

redpajama_set_name: RedPajamaCommonCrawl


text:
Costa Brava Living - blog area
One of the joys of the Costa Brava is the variety of landscapes and we like to visit places and walk (a lot), particularly into and around the Gavarres. Sometimes we travel around on bike. In the summer, we swim and canoe.
These then are write ups of walks, hikes and activities that we've done since November 2012, with photos straight from the original walk or activity.
We like to make circular walks and our walks range in length from about 4km (an hour) to around 16km (four hours) - but probably about 2 1/2 hours on average - though if you want to reduce the length, there are usually shortcuts.
To find walks by location, click on the map, which goes to a full sized map with links to individual walks and visits. To our surprise, we were listed in the Sunday Times' Essential Costa Brava (Feb 2017).
The most visited walks are:
Calella de Palafrugell/Cap Roig to Castell - classic wild Costa Brava
Far de Sant Sebastia (Llafranc) to Tamariu
Platja d'Aro and S'Agaro
Sa Tuna, Cap de Begur, Begur
Eulogy to the Ruta del Tren Petit (Palafrugell, Palamos, Mont-ras and Vall-llobrega)
Fornells and Aiguablava walk (GR92)
Mont-ras to Calella de Palafrugell and Llafranc
Platja de Castell and La Fosca
St Antoni de Calonge, Torre Valentina to Platja d'Aro (almost)
Escala, St Marti d'Empuries and beyond
Bell-lloc and Castell de Vila-Roma (Palamos)
Platja Sant Pol to Sant Feliu de Guixols
Roses - Canyelles beaches to Cap Falconera
Blanes, Lloret de Mar, Tossa de Mar by GR92
The new Cami de Ronda that improves and updates the path from Palamos, around La Fosca to Platja de Castell opened today.
There are new raised wooden paths around the back of the Palamos Port that finally give Palamos a full coastal path connection, and routes to La Fosca and on to Castell have been updated. The path behind the port in particular is very welcome and the wooden walkways and bridge are excellent connections taking walkers away from the old road route (how they will hold up after a couple of winters will be interesting).
There has been some controversy locally, as the new paths have a lot more concrete and have removed some of the rustic feel of the old paths, particularly behind the picture postcard bay of S'Alguer which used to be more of a track, and now feels like walkway. Given the tendency for GR92 routes to age and weather, I think we'd be willing to see how it beds in.
We'll add some photos in the coming weeks. Meanwhile today was the first time for ages that the Costa Brava has felt busy. The easing of lockdowns for the Spanish has brought tons of people up from Barcelona, glad to get out of the city. Restrictions are still in place limiting numbers of people in restaurants, but it felt like the first day of holiday after a long period stuck in. We saw walkers and cyclists all over, taking advantage of the sunny weather and fresh air.
The lockdown was eased a couple of weeks ago, so we could finally leave Baix Emporda after 3 months confined to our locality. We have a report to write up from Vallfogona de Ripolles from a couple of weeks ago when we could finally get out to the mountains. France is still on lockdown which means many fewer foreign visitors. Let's hope the easing lasts...
Passing on a request from Anne-Marie Smith who runs an arts and craft business on the Costa Brava. Due to the shutdowns, many of the local artisan markets have stopped, which is making life difficult for crafters.
She has created a virtual market online on Facebook for the local community that other creators can join (and of course buyers can visit). The page is at:
https://www.facebook.com/ThePopUpArtisanMarket
I have no connection with Anne-Marie, but can appreciate the difficulties that COVID is wreaking on many small businesses here.
Spain is seeing flashes of a second wave of COVID infections. In Catalonia outbreaks have hit more industrial areas around Barcelona, and out towards Leida and on to Aragon.
No second wave has hit the Costa Brava so far - so few new cases in this area - but several countries in Europe have put Spain on a quarantine list (eg UK, Belgium and Switzerland) and France is discouraging its citizens from crossing the border. However, the situation is very fluid. We're hoping schools and universities will be back open in a month's time, but who can be sure?
For visitors, the main effect of the lockdown is that access to smaller beaches is limited - they do reach capacity, particularly at weekends when it feels that half of Barcelona come up. Mid-week hasn't been so busy.
Most of the visitors seem to be Spanish or Catalan this year. There are a few cars from further afield, but nowhere near as many as usual. Hoewver, Friday night traffic up from Barcelona, or returning on Sundays is traffic-jam heavy.
Masks must be worn when out and about, but not at the beach, or in bars/restaurants or doing sporting type activities. Bars and restaurants have been given concessions for bigger exterior terraces to allow tables to be spaced out, so there are plenty of people taking advantage of the terraces.
The general feel is everything is a bit more spacious - fewer people, spread out more, so not so jam-packed as can happen in the peak summer months. Early on beach facilities were limited, but they have all come back - chiringuitos, sun-lounger hire, canoes etc.
Shops and boutiques are mostly open, but limited to one at a time visiting. Supermarkets are a little less rigorous with the rules than they were, but masks remain compulsory - gloves are less common. It's also pretty clear that non-Spanish visitors aren't used to stricter rules on distance and hand hygiene.
Plenty of people are cycling - partly because the mask requirement discourages walking. And more people drive to places they might have walked, so parking can be heavy in peak places.
At some point there will be an economic cost, but at the moment it's time to take some sun and vacation, and leave worries for later.
Update November/December
Lockdown is tighter, with curfew and confinement to municipality from Friday to Sunday. Restaurants and terraces were closed for a while, but are back open. Schools are operating, but not universities, and Christmas will have restrictions on family gatherings. Spain is currently requiring PCR tests for anyone flying in.
Lockdown continues and for anyone missing the Costa Brava, "Some Girls Do" is a Bulldog Drummond film from 1969 set in part at Cap Sa Sal, Palamos and Palafrugell - full film free to view on Youtube.
https://youtu.be/OIkTfeAufow
The Costa Brava, like the rest of Spain and Catalonia is currently on lockdown to prevent the spread of coronavirus. This means that individuals are confined to home except for journeys that are necessary - so shopping and work. Schools shut last week. Restaurants and bars are shut, with police checks ensuring compliance with the rules.
Although taking the dog for a walk is allowed, general walking or just being out and about is not allowed - so no going to the beach or general hikes. The police will ask for a valid justification as to why you are out if they see you.
As a result the place feels eeriely empty. Supermarkets are working, but the local Mercadona has put down strips on the floor to stop people queuing too close together. When I visited, the shop was pretty empty of people, with half of people wearing a facemask, and many wearing gloves - the shop's own disposable gloves for handling bread or fruit were being used to prevent touching other products too.
Supermarkets are being replenished though. The meat and fresh fruit was all back in stock, and it was the tins and stored product that was less easy to find. Fresh milk wasn't available, but UHT was back in bulk. The lower number of people meant fresh produce wasn't selling fast enough. Strawberries, currently just coming into season in Spain, were being sold on offer. As things stabilise a bit, it's clear there was no major need for panic buying while all the supply chains still work.
The local pharmacy is operating through its front door - having made a screen and window so customers can't go in, but instead get served at the makeshift window.
Some work is being done and there are vans on the roads visible from where we are, but some factories and plants have closed. The building works that we can see from our window seem to have stopped. We're too far from the centre of town to know what's going on in the town, but pictures on TV and webcams show places empty and vacated.
Schools are sending work out for children via email. It's not great, but at least it gives something to do. I think we would struggle if we had to be in a flat and unable for the children to go out - at least we have a garden for fresh air.
Currently there is no cluster of cases around here, but everyone is taking precautions. The close down led to people coming up from Barcelona, so it will take a while to see if they also brought it up with them.
However, for the time being, like everyone else, our world is what we can see from our four walls. Wishing we could get out, but knowing we mustn't.
Update week 1
On our second supermarket trip, preserved foods (tins etc) were harder to find and as a result shelves felt a little emptier. For some reason all the ice cream and chocolate had gone. Fresh meat and fruit were still easily available, with the fresh fish counter still open.
Keeping in house will have an effect on fitness, so we're trying some things to keep moving with a bit of air and vitamin D from the sun which are supposed to be good for the immune system. We've got the garden games out for a bit of physical activity, jogging around the house, a bit of badminton, steps, skipping rope etc.
After the last few days of intense storms that hit the Costa Brava, bringing heavy rains, high seas and strong winds to the coast, and snow and flooding rivers inland, this afternoon the sun came out giving everyone a chance to inspect the damage.
We headed to La Fosca for the walk to Castell with large waves rolling into the beach, bringing out surfers onto a sea that looks more Atlantic than Mediterranean. The debris from the high tides is scattered across the back of the promenade and the restaurants and bars are sweeping up the sand brought up by the water, with catcus plants that were washed off the nearby cliffs, scattered across the paseo route.
At Platja de Castell, the river Aube which, in summer, ends at the beach, has cut a deep swathe through the sand, splitting the beach in half. At the La Fosca end of the beach, the steps down from the rocks from the coastal path have been swept away, leaving the rear path as the only way onto the beach.
From news reports, we've seen pictures of the rivers breaking their banks, and damage to the sea front at Tamariu and Llafranc due to the high seas and waves, with this being the worst storm since we've been here. TV showed pictures of an innundation of foam into Tossa de Mar, and waves hitting the headland at L'Escala's Montgo and reaching 30m up the cliffs.
Girona has seen exceptionally high rivers, with the Ter breaking the banks at Pont Major. Similarly, the lake at Banyoles has overflowed, and Platja d'Espolla has filled due to the amount of rain.
The weather has caused lots of disturbances with schools closed and sea front businesses and houses damaged, and, unfortunately, a handful of fatalities. There's a ton of cleaning up to do, removing fallen trees, repairing embankments and, down in Blanes, replacing a railway bridge that was swept away. Winter always has some storms, so we hope this is the worst of it for this year.
Update Wed 29th Jan 2020
In addition to Platja de Castell we've been out to Gola de Ter where the storms have left lots of wood on the L'Estartit side and hundreds of volunteers have been out helping with the clear up. In Calella de Palafrugell today - it didn't seem on the surface too badly off. The boardwalk at Port Bo has been damaged and the promenade wall at the back of Canadell has been damaged (and is covered in deep sand).
However, Llafranc has suffered badly. There are two large holes cut out of the old promenade at the CdP end of the beach, and the retaining wall for the prom has been either washed away or has large cracks. It's going to take a fair bit of effort and money to repair. The recently refurbished sections of the promenade have held up OK, though the new wheelchair access routes to the beach have suffered a little.
Across the coasts of the Costa Brava, the local councils believe that the costs of repairs will require around €33 million to fully repair the damage.
Anyone reads our walks closely will notice that there are one or two gaps along the GR92 long distance path that we haven't written up or in a couple of places still haven't walked. One of the gaps is between Tamariu and Aiguablava, which you would expect to be very pretty, but the actual marked GR92 route is a little bit bland - a little bit of road, then a track through woods and then down to Aiguablava.
Despite having been here and walking for several years now, we hadn't found a good alternative until recently, when, by chance, we discovered that one of the no-through roads in the estates around Aigua Xelida led to two miradors - the Mirador of Aigua Xelida and the Mirador d'En Gispert - both relatively high on cliffs. We also have another three mirador points in roughly the same area - high points with great views to Aiguablava, Fornells and Begur, or out to the cliffs and islands around Aigua Xelida.
So the aim of this walk is to link the miradors. We did is as a circular walk including the GR92 stretch, but it can be extended all the way into Tamariu village.
Our starting and parking point was just outside Tamariu by La Pineda Rostisseria. From here we follow the GR92 along the road, until the road turns into track and then follow the signposted path into the woods. This continues gently upwards emerging at the road that runs down to Aiguablava.
However, just before this road, you can take a track at the back of the houses on the hill at get to a broad vista point from the top. This track ends in a deadend, so the next stretch is to take the Aiguablava road up the hill to the estate and into the villas on the hillside above Aiguablava.
Just as the road for cars turns to the right, there is the second marked viewpoint looking down the coast over the parador towards Begur.
Instead of following the car route, we do a loop around the top where there are more views through the gaps in the houses.
Then we catch the car route down the hill to the next left hand junction - marked as a no-through road with a large modern stone house on the corner. All around this estate the houses and villas feel huge and luxurious - several with elevators linking a garage to the house above.
After a few hundred metres the road meets the edge over the sea at the Mirador d'Aiguablava with the cove of Aiguablava below and houses perched on cliffs tops to the left. There is a marked pathway down to the right that we will come back to, but first we continue to the end of the road.
This takes us to a sign that says Mirador d'En Gispert and a path that looks like its going into someone's garden. However, the path is segregated off and leads up to a viewing platform above the cliffs looking towards the steep sides of Cala Tramadiu. The viewpoint is above cliffs and relatively vertical so it isn't suitable for those who dislike heights.
We now head back to the lower mirador and follow the track down into the woods where it emerges at the back of Aigua Xelida - a route we've explored before. My memory is that we didn't see this path a few years ago, so it's possible that it is now better marked, or renovated.
Our route takes us around the coves and bay of Aigua Xelida crossing the hill at the back of the small exquisite beach and to the steps that run around the back of the holiday estate houses, again running up the side of the cliffs.
At the top we get the fifth of the miradors for the day, with views over the Punta des Banc finger of rock glinting in the setting sun.
We could continue around for more of the coast, and then connect to Tamariu, but instead we shorten the route via the road coming out of the estate and down the steep broad road back to the car.
Although there is a reasonable amount of walking on the road, and stairs and ups and downs in amongst villas and estate houses, the views are spectacular in places, so it makes an interesting alternative to the marked GR92 route.
Portbou and Cerbère are villages that link the Costa Brava to the Cote Vermillion, and until the AVE/TGV line under the Pyrenees, were the ends of the railway lines for Spain and France respectively, joined by a tunnel, but where passengers and goods had to change because of the different track gauges.
The coast road itself is also served by road, but with a string of hairpin bends and curves is the slowest road way into Spain, popular only with mobilehomes and motorcyclists looking for a tour.
So, while we have driven this route a couple of times, and passed through the villages, from the road they are small and somewhat undistinguished, so it's an area that is mostly off the beaten track except for the intrepid.
However, by train the journey is only 40 minutes from Flaçà, and although the road route is about 7km between the towns, there is a short 3km walk over the hills to link the two. So we headed out for the day - and just loved it - definitely one of our favourite explores.
Now this might seem strange, the towns aren't big, they have massive railway siding yards and constructions, they've fallen into a bit of disrepair, the beaches are grey grit and pebbles so not the first choice for a beach, and the hinterlands are steepish stone and rocky terraces into the hills.
But there's something captivating in the almost industrial qualities of the towns with a beach and the touching history as a crossing point for refugees - from Spain to France in 1939 and from France to Spain in 1940, and a sense of loss as transport and traffic moved to other routes. There's almost something cinematographic about the towns and locations and plenty for photographers to discover (though our day was a little misty for photos).
The first indication of this almost lost grandeur, is arriving at Portbou station. It is enormous - a long steel arched construction similar to Estacio França in Barcelona, with shades of Paddington or Sant Pancras in London.
In the 1930s to 70s, this would be a point of change for passengers as they disembarked from France to change trains to continue the journey on to Barcelona, Valencia or Madrid, checked by customs officials and passport control for the onward journey.
Even goods had to switch trains, giving work to the town to facilitate the changing goods, the paperwork and exports agents.
So the station dominates the town. Even the church - just next door to the station - was built for the railway workers. And it sits between two tunnels - out to Cerbère or south along the coast towards Figueres - tunnels that go under the hills that the cars have to go over.
So when we arrive, the first thing we note is just how big the station is, but also how quiet and empty for such a large space. You can feel the missing people as you walk to try to find an exit. Something made more difficult by the renovation works around the station and a total lack of signposting.
Leaving the station, we look down to the town and out across the sea. Portbou is not a large town and it's a five minute stroll down to the beach, but since we're exploring, we see a sign to the "WB Memorial" with an indicator for a viewpoint.
WB we find out, was Walter Benjamin, an important Jewish philosopher of art from Germany known within the circles of Berthold Brecht. In 1940 he arrived in Portbou with Jewish refugees fleeing the Nazis. However, his party was stopped in Portbou by Franco's Guardia Civil and told they would be deported back to France. Fearful of the terror that awaited, Benjamin took his own life a day after arriving in Portbou.
The memorial itself was our second eye-opener. It sits next to the town cemetery on a space on a headland where you can look back to the town and the beach. The memorial itself is a flight of stairs in an oxidised steel tunnel that looks straight down to the crashing waves of the sea giving a beautiful spooky feeling of light, darkness and movement from the water. Taking the steps to the bottom, you still only see the sea, but looking back up you have a stairway to light at the top.
From this moment we knew we'd found a gem of a town for visitors looking for something different. From the memorial we walked back down to the beach area. It's October so even if there were sunbathers, there wouldn't be too many around, but two older ladies are taking a dip in water that looks cold under the grey skies. Out in the bay a snorkeller in a wetsuit and flippers is prowling the deeper waters.
The main leisure port is around the corner under the monument headland, hidden out of view but not so special, so we turn back along the beach promenade and the handful of closed bars and restaurants to the one place we can see that's open - a chirguito behind the beach with 8-10 rainbow gay flags fluttering above it some of which have a Canadian Maple Leaf on them - we've no idea why.
Still exploring, and not yet on the walk, we walk along the town rambla and read the signs describing the Retirada (the Retreat) of when, at the end of the Spanish Civil War, people from Catalonia and further south fled the victorious Franco Fascists through Portbou. As a main supply line into Republican Spain, Portbou was a target for air attacks by the Spanish forces.
At the back of the rambla, the road leads to an enormous tunnel that we couldn't fathom to start with. It's huge cavernous interior with a road and river, that we discover looking down from above the town, has the railway sidings above - so needing road access - while allowing the river to take the water from the hills behind the town to the sea.
Coming back out of the tunnel and just about to start our walk, we then see the sign for a "Pamtomataria" above a restaurant. It takes a while, even for our fluent Catalan speaking daughter, to realise this is a "Pa amb Tomate - ria" - bread with tomato and olive oil being one of the traditional foods of Catalonia.
And so we started to walk up the hill. It is only 1km to the top of the hill and the French border. Initially, the path follows the streets in the town, but it emerges as a stone track route in the final few hundred metres.
At the top we have views up and down the coast, with Cerbère's mass of railway tracks down below us. There is a small memorial to the Retirada at the top, with collections of photographs of the Spanish exodus as they passed the customs post, and into France, where they were taken into the refugee camps at Argeles-sur-Mer.
Just below the top of the hill we have to cross the road as it passes through the old French Douane post, now totally covered in graffiti. It's not entirely clear where the route down to Cerbère goes so we take the road for a bit until we find the sign. If you're walking, you can take the route at the back of the white customs post building which connects to a yellow signed path on the road below.
The path down to Cerbère runs down a gully with terraces on the other side of the hill presumably once as vineyards, now looking like they are cultivating cactus.
Towards the bottom of the path we pass a rusted old car that must have fallen off the road above many years ago and is now stuck and abandoned.
The gully reaches the town below and runs under the railway lines and then along a huge wall or embankment built to support the tracks above. Cerbère's town is dominated by the size of these supporting walls built in brick and arches.
The road at this point, is like a dry concrete river bed with the houses and pavement higher up and steps down to the road with small bridges over the top. This is typical of drier places where the road will become a river if there is enough rain, but on the majority of the year it can be used for cars and parking.
The road takes us to the centre and almost immediately we're on the horseshoe of shops and restaurants above Cerbère's beach almost immediately feeling like we're in the centre of town. Now everything is in French with a typical French brassiere overlooking the bay.
The beach, like the one in Portbou is grey grit and pebbles, and not so inviting, with a port across the bay with huge concrete blocks acting as sea protection. This is an area were the tramuntana wind can blow fiercely with gusts over 100km/h not uncommon on a windy day. The sea also can get rough, and hence the size of the groins and protections.
There are further notices and exhibitions as the end of the Retirada. But the view from the French side is more complex, as this is also the crossing point for French, Belgium and German refugees fleeing the Nazi regime in the 1940s. And later in the war, also a route for people smuggling such as downed Allied airmen. Escapers could take one of the hill paths, or would attempt to walk directly through the railway tunnels at night.
As one of the obvious crossing points it was manned directly by the Gestapo, and unlike the Spanish refugees, getting caught could be fatal.
We walk up the road by the sea, and walk around the white hotel built above the railway line in an art deco style. It's quite striking for its location and style.
We do visit the station because if the walk is too much, it would be possible to catch a train back through the tunnel with a train every hour for the short tunnel link. However, besides picking up a couple of leaflets and looking at the timetables with trains on to Narbonne or Avignon, the station itself is nowhere near as impressive as Portbou.
Leaving the station, we want to get back to the other side of the tracks, and we see a subway to the left that looks like it might curve under the tracks. Inside it is crudely lit and long, filled with lurid coloured graffiti which might make it unsettling at night. As it turns we get our third tunnel surprise of the day, because ahead of us we can see directly to the beach with the sea straight in front of us.
For the walk back we decide to take the coastal path. We follow the road out along the headland until it reaches an open space with a small lighthouse. From here a path runs up long the cliff of the hill behind. I'm not keen on high drops, so I scramble a route up a little more inland, while the others stay to the main path. At the top it connects back to the customs crossing and we can make our way down into Portbou, and back to the train - 40 minutes and we're back in Flaçà. Great day out.
Villefranche-de-Conflent and Mont-Louis (France) - La Jonquera to Fort de Bellegarde (France) - Mollo (Camprodon) Pyrenees to France - Puigcerda and Bourg-Madame - Perpignan - Elne (France) - Ceret (France) - Collioure (France) - Castell de Requesens (Cantallops) - Llança - Port de la Selva - Cadaques and Port Lligat - Sant Pere de Rodes
Sant Feliu de Guixols is one of the main towns in the central Costa Brava and was one of the early holiday resorts when visitors first started coming to the sea to take the waters. Traditionally it has been considered the captial of the Costa Brava.
In recent times, Sant Feliu's prominence as a tourist destination has diminished as holiday makers focused on other towns and areas along the coast. As such it retains a more local and Catalan feel with a pleasant shopping areas of narrow streets and market and some historic buildings like the Monestary - one of the major buildings of the town. In the last few years, the town has been redeveloping the beach area and renovating areas in the hills to the south of the town that had fallen into disrepair due to an inheritance dispute.
Historically, the town had the monestary, but was also connected to naval ship building in medieval times and later the cork industry, but with fluctuating economic conditions over the years. The town still has a working and leisure port, visible from the main town beach.
Sant Feliu's main town beach is less enticing that the Platja de Sant Pol just to the north which is more popular for holiday makers (one reason we haven't quite covered this one until this year). The town is, however, redeveloping and renovating the beachside area and the baths to the south side of the beach with definite improvements in the past 3-4 years.
The beach is backed by a park area with a small children's park and then behind that a tree-lined avenue with bars and restaurants before the first row of buildings of the town itself giving a pleasant fin-de-siecle feel to the area which is good for promenading in the evening. Behind this area are the pedestrianised older town streets.
A headland walk connects Sant Feliu to Platja de Sant Pol, past a Via Ferrata (a preprepared "iron way" with cables for suitably equipped climbers) in the cliffs above the sea.
To the south of the town, the road climbs into the hills with an extremely curvy road down to Tossa de Mar with a reputation for causing car sickness.
Sant Feliu has a music festival (Porta Ferrada) in the summer.
The main town beach
The beach is right in front of the town looking out to the port on the left and the headland of Sant Elm to the right. In summer there is a swimming platform in the bay. On the right hand side is the old bathing club buildings undergoing renovation, but controversially because of the 'law of the costas' which limits building on the coast itself.
The sand is a typically Costa Brava gritty texture - so too coarse for sand castles, but not pebbly. The bay is relatively shallow - though still 3-4 metres - with a mid section of rocks and seaweed before becoming clear again. The rocks and seaweed give cover for fish, so while this is a broad beach it is possible to see sealife when snorkelling.
Being a town beach it has lifeguards and facilities with a couple of beach restaurants at the back steps, and for smaller children, a small tasteful amusement park area.
Sand quality
The sand is gritty - typical of the bigger beaches.
We swam on a yellow flag day due to wind coming in off the sea giving surface waves. But even so the swimming was easy and pretty clear. The mid-section of rock and weeds feels odd and unnatural under the water - but provides a habitat for fish to hide.
The beach is long enough for longer swims, particularly if you swim from the baths. Further out you run into the entrance for the port with a steady flow of boats (and water hover boarder that we saw).
Sant Feliu has a number of parking areas close to the port on the entrance to the town from Platja d'Aro direction, plus parking directly behind the beach in the park area, or up by the bus station. As it's not so popular as a tourist resort, and visitors would tend to go to Platja Sant Pol we've always managed to find parking, even in summer, though parking would be like to be more difficult on market day.
Walking and exploring
To the north there is the headland walk around to Platja Sant Pol going up from the back of the port.
To the back of Sant Feliu are hills with walks up to the 'balancing' rock at Pedralta or around the hills. Directly south the area gets hilly and cliffy and the GR92 coastal path runs slightly inland.
Neighbouring walks: Blanes, Lloret de Mar, Tossa de Mar by GR92 - Platja d'Aro and S'Agaro - Tossa de Mar north to Cala Pola - Sant Feliu de Guixols Pedralta - Solius, rocks for climbing and ruined castle
Next beaches
South to Platja de Candell and Platja de Canyet; North to Sant Pol (Sant Feliu de Guixols)
Pages: 1 2 3 4 5 6 7 8 9 10 [10+] [End] [Next>>]
adam@veggingoutwithadam.com
Complain...
What a great blog. I am planning a walking holiday in the region and wonder if you can recommend the best walking maps, like UK ordnance survey ones.
I shall be reading more of your walks over the coming days as we plan.
Glad you're enjoying it. We have recommendations for maps in our 'Advice and FAQ' section
Sorry I missed the comment, so I hope it's not too late - use the contact box if you'd like to send a message. For the coast, the GR92 is best and if you have driver you can just take it piece by piece. For hikers, around Cap de Creus is great, though it can be dry and hard walking in summer. For us, the stretch between Palamos and Palafrugell and on to Begur is the prettiest part of the whole Costa Brava and really good for walking. I'd probably also take the walk up and over Montgri, possibly starting at Pals, or L'Estartit to L'Escala. And though you said you prefer the coast, don't overlook inland routes as there are some wonderful villages and countryside out towards Girona, La Bisbal, or Olot.
Sven-Gunnar Furmark
My name is Sven Furmark. I am from Sweden. I plan to go to Costa Brava with some friends (totally about 10 people) for hiking for one week (5 walking days). We are experienced hikers and we usually walk 4-6 hours per day. We prefer to walk along the coast as much as possible. We plan to rent a house and travel to each days hiking with a bus & driver which we plan to book for the whole week. Which five hikes would you recommend for us.


text:
\section{Introduction}
Recently, code-switching speech recognition (CSSR) has drawn increased attention in automatic speech recognition (ASR) community\cite{yilmaz2018cs,guo2018cs,zeng2018e2e,Shan2019cs, khassanov2019e2e}. Here, code-switching means a linguistic phenomenon that one speaks different languages within an utterance or between consecutive utterances.
Intuitively, we can build a CSSR system simply by means of merging two languages. However, such a CSSR system can rarely produce optimal recognition results.
This is because there is no within-an-utterance code-switching samples, and the resulting ASR system frequently fails to recognize those code-switching utterances\cite{khassanov2019e2e,toshniwal2018multilingual}.

In reality, we usually have very limited code-switching training data, but more monolingual data~\cite{khassanov2019e2e}. As a result, we treat CSSR as a low-resource ASR problem~\cite{das2015tl,Dalmia2018low-res-asr,Tung2020low-res-asr}. The question is how to fully exploit those ``unlimited" monolingual data to boost the CSSR performance.

In this paper, we report our efforts in terms of data selection\footnote{Here, data selection simply means how to reasonably exploit monolingual data for a CSSR system with a specific code-switching pattern.}~\cite{itoh2012data-selection,wei2014data-selection-lvcsr,wei2014data-selection-unsup} for an English-Mandarin code-switching speech recognition contest sponsored by DataTang\footnote{Datatang: https://www.datatang.ai/} in China. It drew over 70+ participants worldwide. The organizer released two training data sets, namely, 200 hours of English-Mandarin code-switching data, and 500 hours of Mandarin data of which there are about 15 hours of similar code-switching data. Additionally, 960 hours of LibriSpeech English data~\cite{chen2015prn-lex,albert2018e2e-libri} is allowed to use. There are three tracks, and one of the tracks is for the hybrid DNN-HMM based ASR system competition. Except for the above-mentioned three training data sets,  a trigram language model is given as well,  and the only flexibility is the participants are allowed to use their own lexicon to build their ASR system. In this work, all the ASR results are based on the DNN-HMM system~\cite{povey2018tdnnf}.

The motivation of this work lies in the observation that we end up with worse results when using the overall three data sets. This motivates us to answer how to exploit the two monolingual data sets reasonably. To begin with, we first add Mandarin data incrementally, and we found consistent performance improvement on the Mandarin part recognition, with insignificant performance drop on the English part. Nevertheless, we found that there is a limit point, where more data degrade results over the point. We do the same experiments for LibriSpeech English data. however, we observe consistent performance drop. We conjecture this is due to the data mismatch problem. To look further into the problem,
we categorize the test utterances into different subsets according to how many
English words each utterance contains, then analyze the performance change on those subsets respectively.

Moreover, we are interested in a condition where no code-switching data is available at all.
As a result, one has to utilize monolingual data to train a code-switching system.
Particularly, we are interested in how much effectiveness can be achieved by merging pure monolingual data, compared with that we have code-switching data.
We remove all the code-switching data from the 500 Mandarin data set, and incrementally merge the LibriSpeech English data into it to train a CSSR system.
To our surprise, using more English data is consistently beneficial to both language performance improvement. We notice that this is one of the significant differences of the DNN-HMM ASR system versus End-to-End ASR~\cite{zhou2018comparison-e2e,karita2019comparative-e2e} one. By merging monolingual data, it is observed
end-to-end CSSR system fails to recognize those utterances containing code-switching words~\cite{khassanov2019e2e,toshniwal2018multilingual}.

The paper is organized as follows. Section~\ref{sec:dd} describes the overall data for the experiments that are followed. Section~\ref{sec:e-setup} reports the experimental setup.
Section~\ref{sec:baseline} describes the development of our baseline system. Section~\ref{sec:add-mono} analyzes the effectiveness of using more Mandarin monolingual data, as well as more English data.
Section~\ref{sec:pure-mono} reports the effectiveness of using monolingual data to train
CSSR system. Finally we concludes in Section~\ref{sec:con}.

\section{Data description} \label{sec:dd}
The entire data sets that are released by the organizer are reported in Table \ref{tab:dataset}.
Each participant has three training data sets and three test data sets, two \textit{dev} sets, and
one evaluation set that is released after the contest.

The code-switching data are  Mandarin-dominated. Figure~\ref{fig:cs-hist}
reveals the English word distribution in  T1, and E1 to E3 four
code-switching data sets in Table~\ref{tab:dataset}. As is shown in Figure~\ref{fig:cs-hist}, the majority of utterances contain only
single English words. Besides, English word distributions are very similar between the training data T1 and the \textit{dev} set E1, while the cases of E2 and E3 are more alike.
\begin{table}[th]
  \caption{Data sets and length description}
  \label{tab:dataset}
  \centering
  \begin{tabular}{c c c}
    \toprule
    \multicolumn{1}{c}{\textbf{Notation}} & \multicolumn{1}{c}{\textbf{Data\ Set}} & \multicolumn{1}{c}{\textbf{Hours}}\\
    \midrule
    $T1$ & $\text{CS200}$ & $200$~~~\\
    $T2$ & $\text{Man500}$ & $500$~~~\\

    $T3$ & $\text{Libri}$ &  $960$~~~\\
    \midrule
    $E1$ & $\text{dev1}$ & $20$~~~\\
    $E2$ & $\text{dev2}$ & $20$~~~\\
    $E3$ & $\text{eval}$ & $20$~~~\\
    \bottomrule
  \end{tabular}
\end{table}

\begin{figure}[th]
\centering
\captionsetup{justification=centering}
\includegraphics[width=6cm]{images/cs-histogram.png}
\caption[]{English word distribution of the code-switching \\data sets, including T1, E1 to E3 in Table ~\ref{tab:dataset}.}
\label{fig:cs-hist}
\end{figure}

\section{Experimental setup}\label{sec:e-setup}
All experiments are conducted with Kaldi\footnote{https://kaldi-asr.org/}.
The acoustic models are trained with the Lattice-free Maximum Mutual Information (LF-MMI) criterion~\cite{povey2016lf-mmi} over the Factorized Time-delay Neural Network (TDNNf)~\cite{povey2018tdnnf}.
The acoustic feature is the concatenation of 40-dimensional MFCC features and 100-dimensional i-vectors~\cite{saon2013ivector,peddinti2015tdnn}.
The TDNNf is made up of 15 layers, and each layer is decomposed as 1536x256, 256x1536, where 256 is the dimension of the bottleneck layer. Besides, the activation function is
Rectified Linear Unit (ReLU)~\cite{dahl2013relu}. To train TDNNf, data augmentation is employed~\cite{ko2015da}.

The vocabulary is $\sim$200k, of which Mandarin and English words are $\sim$121k and $\sim$79k respectively.
We use language-dependent phone set, and there are 210 Mandarin initials and finals~\cite{guo2018cs}, as well as 42 English phones.
As mentioned, the language models are released by the organizer, and it is a trigram language model that includes $\sim$813k Mandarin words and $\sim$116k English words.

\section{Baseline} \label{sec:baseline}
We report our efforts on building the baseline system.
Since the data and language models are fixed, our efforts are mainly focused on choosing an appropriate lexicon. Initially, we use our in-house lexicon. As there is a mismatch between the language models and the lexicon in Chinese
word segmentation, we decompose all out-of-vocabulary Chinese words into characters, yielding our initial lexicon, denoted as L0 here. After submitting our evaluation results, we realized there are many entries with incorrect pronunciations for the Chinese part in L0. We conducted manual checking and updated L0 to L1.
Simultaneously, we also attempt to use a grapheme lexicon for English words, and this is inspired by \cite{duc2019grapheme}.
Table \ref{tab:baseline-lex} reports our baseline results in terms of Meta-data Error Rate (MER) using only \textit{CS200} code-switching training data. By MER, we mean a token error rate that is a mixture of Chinese character error rate and English word error rate.

\begin{table}[th]
  \caption{MER (\%) with different efforts on the recognition lexicons; the systems are trained with \textit{CS200} code-switching training data}
  \label{tab:baseline-lex}
  \centering
  \begin{tabular}{c c c c}
    \toprule
    \multicolumn{1}{c}{\textbf{Dictionary}} & \multicolumn{3}{c}{\textbf{MER (\%)}}\\
    $ $ & dev1 & dev2 & eval \\
    \midrule
    L0 & $7.43$ & $6.81$ & $7.51$~~~\\
    L1 & $7.07$ & $6.28$ & $7.08$~~~\\
    Grapheme &  $7.11$ & $6.4$ & $7.2$  ~~~\\

    \bottomrule
  \end{tabular}
\end{table}
From Table~\ref{tab:baseline-lex}, The lexicon after manual checking gets the best results. Therefore, we use L1 for the remaining experiments in this paper.
Table~\ref{tab:baseline-overall} reports experimental results using various data combination recipe.

\begin{table}[th]
  \caption{MER (\%) results by combining various training data set to train the ASR system}
  \label{tab:baseline-overall}
  \centering
  \begin{tabular}{l c c c}
    \toprule
    \multicolumn{1}{c}{\textbf{Data}} & \multicolumn{3}{c}{\textbf{MER (\%)}}\\
    $ $ & dev1 & dev2 & eval \\
    \midrule

    CS200 & $7.07$ & $6.28$ & $7.08$\\
    +CS15 & $6.93$ & $6.14$ & $6.87$\\
    +Man500 & $\textbf{6.87}$ & $\textbf{5.91}$ & $\textbf{6.63}$\\
    +Libri & $7.58$ & $6.67$ & $7.50$\\
    \bottomrule
  \end{tabular}
\end{table}
Table~\ref{tab:baseline-overall} suggests employing more Mandarin data works, yielding significant MER reduction, however, employing more \textit{Libri} English data degrades
results. These suggest there are data selection issues concerned,
and it is worthwhile to see what details look like.

\section{Analysis of adding monolingual data} \label{sec:add-mono}
\subsection{Mandarin data} \label{sub:add-mandarin}
To begin with, we fix the \textit{CS200} code-switching data, incrementally increasing monolingual Mandarin data from the \textit{Man500}. We are interested to see how the recognition results will be changed for each individual language, as well as for the two languages combined. Figure~\ref{fig:mandarin-data}
plots the various change of the recognition results versus the incremental increase
of Mandarin data usage. We notice that we select the data as follows. We first ensure each selection covers the overall speakers, and then determine how many utterances are to be selected, and finalize by random selection.

\begin{figure} [th]
    \centering
    \quad
    \begin{subfigure}[b]{0.214\textwidth}
        \centering
        \includegraphics[width=\textwidth]{images/ds_man500_mer.png}
        \caption[]%

    \end{subfigure}
    \quad
    \begin{subfigure}[b]{0.214\textwidth}
        \centering
        \includegraphics[width=\textwidth]{images/ds_man500_cn.png}
        \caption[]%

    \end{subfigure}
    \vskip 0cm \quad
    \begin{subfigure}[b]{0.214\textwidth}
        \centering
        \includegraphics[width=\textwidth]{images/ds_man500_en.png}
        \caption[]%

    \end{subfigure}
    \quad
    \begin{subfigure}[b]{0.214\textwidth}
        \centering
        \includegraphics[width=\textwidth]{images/ds_man500_eval.png}
        \caption[]%

    \end{subfigure}
    \caption[]
    {Recognition results change versus Mandarin data Selection from \textit{Man500} data set. (a) Overall MER (\%) change on the \textit{dev1}, \textit{dev2}, and \textit{eval} three data sets. (b) Character error rate (CER) (\%) for the Mandarin part in the three test sets. (c) English WER (\%) in the three test sets. (d) \textit {eval} MER (\%) comparison between the systems with different training sets.}
    \label{fig:mandarin-data}
\end{figure}

From Figure~\ref{fig:mandarin-data},
what we observe can be briefly summarized in the following aspects.
First, employing more Mandarin data generally produces improved results on the
Mandarin part as shown in Figure~\ref{fig:mandarin-data}(b).
Secondly, more Mandarin data does not significantly affects English recognition results, as indicated in Figure~\ref{fig:mandarin-data}(c).
Thirdly, more Mandarin data over a certain point can hurt the overall performance, as can be seen in Figure~\ref{fig:mandarin-data}(d). The best performance is achieved when about 400 hours of Mandarin data is employed on the \textit{eval} test set.

First of all, we attribute the improvement to the close similarity of the \textit{Man500} and the \textit{CS200} code-switching data in terms of the Mandarin part. Actually, they are all read speech released by the organizer.
After that, we think there is a balance point, and more monolingual Mandarin data can divert the models in terms of code-switching capability. However,
the above-mentioned guesses need further support from more details.

To see how the added Mandarin monolingual data affects the results of different category of utterances as shown in Figure~\ref{fig:cs-hist}, we draw Figure~\ref{fig:mandarin-data-detail} revealing the details.
From the figure, we can see the more English words the less performance gain from more Mandarin monolingual data usage in terms of recognition results. This is particularly true for
Figure~\ref{fig:mandarin-data-detail}(c)-(d), where utterances contain no fewer than 3 English words, and the performance are not stably increased. From
Figure~\ref{fig:mandarin-data-detail}(d), using more Mandarin data actually
degrades the results on \textit{eval} test set.

\begin{figure}[th]
    \quad
    \begin{subfigure}[b]{0.214\textwidth}
        \centering
        \includegraphics[width=\textwidth]{images/ds_man500_eng1.png}
        \caption[]%
        {{\small}}

    \end{subfigure}
    \quad
    \begin{subfigure}[b]{0.214\textwidth}
        \centering
        \includegraphics[width=\textwidth]{images/ds_man500_eng2.png}
        \caption[]%
        {{\small}}

    \end{subfigure}
    \vskip 0cm \quad
    \begin{subfigure}[b]{0.214\textwidth}
        \centering
        \includegraphics[width=\textwidth]{images/ds_man500_eng3.png}
        \caption[]%
        {{\small }}

    \end{subfigure}
    \quad
    \begin{subfigure}[b]{0.214\textwidth}
        \centering
        \includegraphics[width=\textwidth]{images/ds_man500_eng4.png}
        \caption[]%
        {{\small}}

    \end{subfigure}
    \caption[]
    { MER (\%) change versus Mandarin data selection from \textit{Man500} data set for 4 categories of utterances as shown in Figure~\ref{fig:cs-hist}. (a) utterances with single English word; (b) utterances with 2 English words; (c) utterances with 3 English words; (d) utterances with no fewer than 4 English words.} \label{fig:mandarin-data-detail}
\end{figure}

Combined with what is shown in Figures~\ref{fig:mandarin-data} and \ref{fig:mandarin-data-detail},
the recognition performance gains are mainly from the utterances with the single English word. From this perspective, data matching guesses are supported here.
However,
it does limited or even negative help on the performance improvement for those utterances containing more English words. We achieved overall performance improvement as shown in Figure~\ref{fig:mandarin-data}, only because the single English utterances are dominated, as shown in Figure~\ref{fig:cs-hist}.

\subsection{English data}\label{sub:engglish-data}
In this section, we are interested to see how the English-Mandarin code-switching ASR system is affected by using more English monolingual data. Here, the English data is \textit{LibriSpeech}, as shown in Table~\ref{tab:dataset}. It is worth a mention that we
do this over the ASR system that is trained with \textit{CS200} plus \textit{Man500}, instead of using the data by directly combining
\textit{CS200} and \textit{LibriSpeech}.

Figure~\ref{fig:librispeech} plots the recognition performance change versus incrementally introducing \textit{LibriSpeech} data. Figure~\ref{fig:librispeech} clearly reveals recognition performance degradation as more English data are merged, on either Mandarin or English part of the code-switching utterances. Intuitively, we attribute this to the data mismatching problem. That is, \textit{LibriSpeech} is mismatched with the English that are spoken by Chinese Mainland speakers, and such a mismatch can be enlarged for the case when those single English words are mixed with Chinese words. To verify our guess, we also need further details.

\begin{figure} [th]
    \quad
    \begin{subfigure}[b]{0.214\textwidth}
        \centering
        \includegraphics[width=\textwidth]{images/ds_libri_MER.png}
        \caption[]%

    \end{subfigure}
    \quad
    \begin{subfigure}[b]{0.214\textwidth}
        \centering
        \includegraphics[width=\textwidth]{images/ds_libri_CN.png}
        \caption[]%

    \end{subfigure}
    \vskip 0cm \quad
    \begin{subfigure}[b]{0.214\textwidth}
        \centering
        \includegraphics[width=\textwidth]{images/ds_libri_EN.png}
        \caption[]%

    \end{subfigure}
    \quad
    \begin{subfigure}[b]{0.214\textwidth}
        \centering
        \includegraphics[width=\textwidth]{images/ds_libri_eval.png}
        \caption[]%

    \end{subfigure}
    \caption[]
    {Results change versus incrementally increasing English data from \textit{LibriSpeech}. (a) Overall MER (\%) change on the three test sets; (b)\&(c)  Performance changes for Mandarin(CER\%) and English(WER\%) respectively; (d) \textit{eval} MER (\%) comparison over the system without English data employed from \textit{LibriSpeech} at all.}\label{fig:librispeech}
\end{figure}

Figure~\ref{fig:libri-detail} shows the  performance change details on 4 groups of utterances as shown in Figure~\ref{fig:cs-hist}. From what Figure~\ref{fig:libri-detail} shows, we cannot simply attribute performance degradation only to data mismatching reason. With Mandarin dominated utterances as seen in Figure~\ref{fig:libri-detail}(a)-(b), introducing English data does not help, and more English data degrades results. However, for utterance less dominated with Mandarin words as shown in Figure~\ref{fig:libri-detail}(c)-(d), where there are more than 3 English words in the utterances, using more English data does not necessarily lead to a performance drop. This suggests data mismatch is one reason, code-switching pattern is another reason. Different code-switching patterns are affected by monolingual data usage differently. However, we really need English data from Mainland Chinese to confirm a solid conclusion.
\begin{figure} [th]
    \quad
    \begin{subfigure}[b]{0.214\textwidth}
        \centering
        \includegraphics[width=\textwidth]{images/ds_libri_eng1.png}
        \caption[]%

    \end{subfigure}
    \quad
    \begin{subfigure}[b]{0.214\textwidth}
        \centering
        \includegraphics[width=\textwidth]{images/ds_libri_eng2.png}
        \caption[]%

    \end{subfigure}
    \vskip 0cm \quad
    \begin{subfigure}[b]{0.214\textwidth}
        \centering
        \includegraphics[width=\textwidth]{images/ds_libri_eng3.png}
        \caption[]%

    \end{subfigure}
    \quad
    \begin{subfigure}[b]{0.214\textwidth}
        \centering
        \includegraphics[width=\textwidth]{images/ds_libri_eng4.png}
        \caption[]%

    \end{subfigure}
    \caption[]
    {MER (\%) change versus English data selection from \textit{LibriSpeech} for 4 groups of utterances as shown in Figure~\ref{fig:cs-hist}. (a) utterances with single English word; (b) utterances with 2 English words; (c) utterances with 3 English words; (d) utterances with no fewer than 4 English words.}\label{fig:libri-detail}
\end{figure}

\section{Pure monolingual data} \label{sec:pure-mono}
Code-switching ASR system is much more flexible compared with monolingual ASR one. However, real code-switching data is a low-resource, and hard to access. One natural consideration is to build a code-switching ASR system by merging related monolingual data.
This has been extensively studied under the End-to-end (E2E) ASR framework\cite{duc2019grapheme}.
Unfortunately, the state-of-the-art E2E ASR system almost completely fails to recognize those utterances mixed with word from different language (within-utterance code-switching)~\cite{duc2019grapheme}, when it is learned with monolingual data. This is because the E2E system has never been learned with utterances containing code-switching word sequence, and so does the decoder fail to predict such a sequence.
Here, we examine if such a disastrous case can happen under the HMM-DNN ASR framework. Specifically, we do as follows. We
first make a subset of \textit{Man500} set, by
removing all code-switching utterances from it.
We fix the Mandarin subset and keep incrementally merging the English data from \textit{LibriSpeech}.
Figure~\ref{fig:monolingual} draws recognition results with a code-switching ASR system trained with monolingual data.
\begin{figure}[t]
    \quad
    \begin{subfigure}[b]{0.214\textwidth}
        \centering
        \includegraphics[width=\textwidth]{images/3_mer.png}
        \caption[]%

    \end{subfigure}
    \quad
    \begin{subfigure}[b]{0.214\textwidth}
        \centering
        \includegraphics[width=\textwidth]{images/1_man_cer.png}
        \caption[]%

    \end{subfigure}
    \vskip 0cm \quad
    \begin{subfigure}[b]{0.214\textwidth}
        \centering
        \includegraphics[width=\textwidth]{images/2_en_wer.png}
        \caption[]%

    \end{subfigure}
    \quad
    \begin{subfigure}[b]{0.214\textwidth}
        \centering
        \includegraphics[width=\textwidth]{images/4_eval_mer.png}
        \caption[]%

    \end{subfigure}
    \caption[]
    {\small Result analysis of code-switching system built with monolingual data mergence. (a) MER (\%) on the 3 test sets; (b) CER (\%) for the Mandarin part; (c) WER (\%) for the English part; (d) \textit{eval} MER (\%) comparison between the two systems with different ``code-switching" training data.  }\label{fig:monolingual}
\end{figure}

From Figure~\ref{fig:monolingual}, we see consistent performance improvement by merging the two monolingual data sets. By looking into Figure~\ref{fig:monolingual}(b), the CER drops for the Mandarin part means the coexistence relationship of the individual language is critical in code-switching scenario. Improving one language can benefit another language's recognition performance. However, there is a balance point, and it should be related to a specific code-switching pattern as shown in Section~\ref{sec:add-mono}.
By looking into Figure~\ref{fig:monolingual}(c),
we see sharp WER drops for the English part. However, the mismatching guess in Section~\ref{sub:engglish-data} is observable here. The WER drop ``stops" over 50\%, which is much higher than what is shown in Figure~\ref{fig:mandarin-data}(c), though the overall WER decrease has not been fully saturated.
Finally in Figure~\ref{fig:monolingual}(d), we compare the performance of the two systems on \textit{eval} set, one trained with monolingual data (though English part is not matched), and another trained with \textit{CS200} code-switching data. The gap is still remarkable, and this should be further studied under a fair comparison scenario.

\section{Conclusion} \label{sec:con}
In this work, we conducted a thorough study on the code-switching system performance with diversified data selections.
First, we analyzed the code-switching pattern, it is Mandarin-dominated code-switching data sets, both for training and testing.
We also found the monolingual data helps, but data matching is crucial. Besides, there is a balance point for how much monolingual is employed, which is dependent on a specific code-switching environment.
Finally, we performed an analysis on a code-switching system performance assuming no real code-switching data available, under the HMM-DNN modeling framework. We found the HMM-DNN ASR system still well performs for within-utterance code-switching recognition. Our observation is
completely different from what have been observed under the End-to-end ASR framework.

\section{Acknowledgements} \label{sec:ack}
 The computational work for this paper is partially performed on the resources of the National Supercomputing Centre (NSCC), Singapore (https://www.nscc.sg).

\bibliographystyle{IEEEtran}

redpajama_set_name: RedPajamaArXiv


text:
Home / About the Project
The Lost Collection of Charles I had two distinct goals: to publish and trace as much Charles I's art collection as possible ('The Collection'), and visually reimagine the hang of paintings in the three Privy Lodging Rooms at Whitehall Palace, c.1639 ('The Rooms').
'The Collection' allows visitors to trace works from Charles I's collection between inventories taken during and after his reign to the present-day, and where possible identifying the current owners of these works, both public and private.
'The Rooms' gives a sense of how the works from the three Privy Lodging Rooms were arranged together, as well as contributing to the scholarship on the layout of the rooms on the first floor of Whitehall Palace in the Seventeenth Century.
The Lost Collection of Charles I is dedicated to two historians of British art, Sir Oliver Millar (1923–2007) and Giles Waterfield (1949–2016).
Research for this project was carried out by Niko Munz while at Royal Collection Trust (2016-2018). Niko Munz continues to consult on queries and research relating to the project.
Inventory to Database
Identifying a Charles I painting
The Visualisation


For many years we have been greedily accumulating Achievement Points with the sole purpose of waving them around and using them as a means to act superior to other gamers when someone with a lower score does better than you in Halo. Some of us have asked, however, "Why don't we get free things for all of these points?" Well, now you can! SO, SO MANY THINGS!
You've been faithfully building your Gamerscore for years now. To reward you for your dedication, we've created MyAchievements for Xbox LIVE Rewards Gold members. The MyAchievements level that you earn – CONTENDER, CHAMPION OR LEGEND – depends on your Gamerscore. The higher your score, the bigger the reward!
You might notice that there are a lot of asterisks on these things, so let's try and figure those out.
** You must have and maintain an eligible Xbox LIVE Gold membership and the applicable Gamerscore for the appropriate tier by the first of every month in order to be eligible. Limit: Up to 30,000 Microsoft Points can be earned per account for the entire Offer Period. Please see Terms and Conditions for details.
So, if you make it to the first tier, you get a reward worth a quarter, whatever that might be. I am going to assume it is an avatar item like a birthday party hat. The Marketplace rebates are interesting, and welcome, although as a Champion, you will have to purchase seven titles at $14.99 from the Marketplace to get back just over a dollar in rebates.
I don't want to sound like I am complaining, because any rewards are better than no rewards, but if you really want to hit that Legend status, you will have to get 1000 points in 25 games (most likely even more games since we usually don't get all the achievements, but ideally) for that 2% rebate. If these are games that you have bought, you have just paid $1,500 for a prize worth a quarter and $.30 back on the average downloadable title.
Granted, there are other ways to get gamer points (the main Rewards site has some offers every month), but still.
So what do you think? Are these rewards something worth getting excited about, or should we be excited simply that they exist?


One of my fav bands is ZZTop, I love their rock and roll, and how they use music videos to increase their popularity.
ZZTop is three guys, who play guitar, with relaxed high energy, and tell a story about what the music is talking about.
They've been around for a long time; and will be around even longer.
The fans of X-Factor Australia watched in awe as one of the contestants, wowed the judges week after week, to the most standing ovations, in a row, on record, for the show.
Who is this princess of pop, none other than DAMI IM, 24 year old, piano teacher, from Brisbane, Australia.
The moment she walked on stage, and started interacting with the judges, she was a new star- born.
Her audition song was " Hero " and not only did the judges give her a standing ovation, the full audience of over four thousand people did as well.
She maintained her brilliance for the next five songs, leading to standing ovations.
The next two, two of the judges didn't like, but the audience loved them, so the audience spoke and she went into the grand finals.
The back lighting for the songs, were perfect.
Danni Monigue was chosen for Dami's mentor, and she did an outstanding job, getting her girl through to win the X-Factor 2013.
Songs sung by Dami- Hero, Purple Rain, Bridge over Troubled Waters, Clarity, Roar, Wrecking Ball and others.
The real funny part about all of this is at bootcamp Dami was sent home, but one of the six chosen, couldn't do the amount of time necessary to do X-Factor, so they brought Dami back, and she went on to win the whole bit.
She is Australia new international pop star; Roar for Dami, and be one of Damisarmy!
The Data Retention and Investigatory Powers (DRIP) Bill, which was fast-tracked by the U.K. government as emergency legislation, is now law. The House of Lords passed the bill on Thursday without a vote after MPs gave their approval on Tuesday. It received royal assent hours later, making it the DRIP Act. The bill was only revealed to the public one week ago.
The purpose of DRIP, which actually expands the British authorities' surveillance powers, is ostensibly to make up for an April ruling by the Court of Justice of the European Union (CJEU), which struck down the EU's Data Retention Directive for having insufficient privacy safeguards.
Howdy, readers! Happy to have you here, this is going to be a blog about my adventures, interest, and how I view the government, which has bought 30,000 gillotines, along with fusion centers, wanting to kill billions of people, etc., the rich life of Conspiracy Theory, which is Conspiracy Truth.
I'll cover music, movies, and anything else I come up with, so sit back, and enjoy the show!


Christine's body was discovered in her vehicle at a car park in Dumfries and Galloway.
Police have launched a probe after a woman was found dead in her car.
The body of Christine Hilton, 62, from Dalbeattie, Kirkcudbrightshire, was discovered in her vehicle at a car park in Dumfries and Galloway.
She was found in her grey Vauxhall Astra on the A762 approximately a mile north of Laurieston on Tuesday afternoon. Detectives are treating the death as unexplained and a report has been submitted to the Procurator Fiscal.
Detective Inspector Dean Little of Dumfries CID said: "Enquiries have identified that Mrs Hilton's grey Vauxhall Astra, registered number KD06 YZT, was within the car parking area to the east of Woodhall Loch which is situated one mile north of Laurieston on the A762 New Galloway Road on both Monday 26th and Tuesday 27th of November.


Are you searching for home insurance coverage in De Witt, MO? Enter your Zip Code to compare the best options available nearby. Comparing multiple quotes is the best way to save money on your homeowners coverage in Carroll county.
Have you been asked by your mortgage lender to get homeowners insurance? Did you just purchase your first home and understand the value of insuring it but don't know what type of coverage to buy? If so, here is some information to help you get the De Witt, Missouri homeowners insurance you need.
Obtain quotes from insurance agents in person to get personalized help. Or, for more convenience, you can get De Witt homeowners insurance quotes free online. Protect your home with affordable insurance today.
Everyone out there wants to buy a homeowners' insurance coverage coverage. Being a extended-time property owner doesn't make you exempt. Just simply because disaster hasn't struck in twenty years does not mean that it will not strike in the a long time to come or even tomorrow. Go through and understand the ideas in this post if you want to find a great plan.
Examine the status of your homeowner's insurance coverage premiums at the very least after a 12 months, to see if you could qualify for a reduce rate. Your existing price could be based on an old criminal offense statistic, for case in point, or you might have installed a safety system that could reduced your costs. Discuss these modifications with your insurance coverage agent.
Paying out off your home loan will decrease your insurance coverage rates. Clearing a mortgage loan might not be an immediate probability, but fairly a lengthy-expression goal to maintain in mind. Insurance policies businesses reward house owners who own their house free and clear.
Some issues that your house has in it will make your insurance go up or down no issue what has happened to your house. A swimming pool will immediately lead to your fee to be much more due to the fact of the legal responsibility. The distance in between your property and emergency solutions will also influence plan pricing. This is not talked about in get to propose you select a house close to 1 of these companies but to point out how some elements are integrated in calculating charges.
If you don't live in an spot vulnerable to floods, you probably have not even believed about getting flood insurance coverage. Even so, it might be wise to have it. Living in a lower-threat location for floods does not imply that flooding will never come about to you. You can get a fantastic low cost on your flood insurance if you are in a medium or reduced-risk locations.
Mortgage loan creditors will need you to have property owners insurance policies on your property. A coverage can aid defend your expense towards particular sorts of normal disasters. Locating out how significantly a plan is likely to price you for your likely new home is an critical element of realizing if you can manage the residence you are contemplating.
When you are likely to purchase home owners insurance policy there are particular issues that you ought to appear for in a plan. A great factor to have is guaranteed alternative worth insurance coverage. This indicates that no make a difference the cost your house will be rebuilt if a disaster had been to take place. Most men and women feel this is automated, even so, since house values increased it probably would cost a lot more now than what you experienced at first compensated for the property. This way you are covered.
study the financial well being of the company that you're thinking about receiving insurance from. You want to make positive that they will have the cash to pay out the assert if you find your self with a require to file a single. Repeat the approach quarterly as soon as the plan is in area.
Doc all of your valuables and maintain the pictures or video clips of the items that you want protected under your property insurance coverage, in a fireproof lockbox. This will defend your information and make filing a declare for the lacking or ruined items with your house insurance policy company, less complicated and faster.
When you've wrapped your mind around the concept of having insurance, you can then start off to get the measures required to craft a private policy and get the safety you require. The report you just go through can support you do this, but you should be ready to place these tips to motion in buy to safe a policy.


text:
Auckland: 022 042 0506
Christchurch: 021 804 843
Further Courses
Gnostic Psychology
Samael Aun Weor
An esoteric school and spiritual movement dedicated to the deep comprehension of human psychology and the cultivation of ethics and soul
To the consciousness:
"Sleeping consciousness...
How different you would be if you were to awaken...
You would know the seven paths of happiness,
the light of your love would shine everywhere,
the birds would rejoice within the mystery of your forests,
the light of the spirit would shine,
and happily, the elementals would sing for you in chorus."
Gnosis in New Zealand
Gnosis Worldwide
The Association for Gnostic Studies is an esoteric school based in New Zealand providing classes, practices, exercises and teachings that enable a student to answer their own questions on the nature of existence and to transform themselves through their own work and experience.It is run by volunteers who study, practice and live the Gnostic path. Read more...
"The Gnostic Society Samael Aun Weor" was born from the very heart of the international institutions founded by the V.M. Samael Aun Weor, as an urgent need to restore in each one of us that "initiatic Gnostic spirit" that so inspired the first disciples of the Master, and that, albeit for a very justified reason–the dissemination and expansion of the Gnostic message– we felt we were losing.
For this reason "The Gnostic Society Samael Aun Weor" was founded in Rome, Italy, on October 14th 1999, with the sincere yearning of reclaiming the "initiatic Gnostic spirit," which for our Master Samael was, and is today, the main objective of his mission as Avatar on this planet. Read more...
"A religion that opposes science and a science that opposes religion are equally false"
-Samael Aun Weor
About Us: The Association for Gnostic Studies is a non-profit organization based in New Zealand and is supported by members.
We provide lectures, retreats and resources exploring the contemporary Gnostic tradition freely to the public. We are a part of the Gnostic Society (Samael Aun Weor) worldwide.
The Association for Gnostic Studies
Introduction Courses
The Gnostic Society
Providing the Gnostic
teachings worldwide
Gnostic Classes Auckland
Gnostic Classes Christchurch


Coach and Author, Dan Kennedy, will be presenting a mini-coaching class on creating results with those who matter to you.
Dan has a new book titled, "Creating Results that Matter: A Coaching Manual for Anyone."
Please join Dan and the Puget Sound Career Development Association for this experiential learning session.
Dan Kennedy became one of the first coaches in the Northwest to be certified by the International Coach Federation and soon, with other pioneers, co-founded the local ICF chapter, now known as ICF Washington State.
He has been a speaker and facilitator on issues regarding coaching, leadership, and career development and has conducted over 800 effective presentations, workshops and seminars for various local and national organizations. He has been quoted in publications like the Seattle Times and Inc. magazine. And, most recently, he authored Creating Results That Matter: A Coaching Manual for Anyone.
Dan is a regular contributor to NetSpeed Fast Tracks, a website devoted to helping managers and their employees successfully deal with workplace and career challenges. He has produced and hosted a well-regarded radio program on workplace issues that aired for two years in the Seattle area on community station, KSER 90.7 FM.
Dan completed the advanced curriculum at The Coaches Training Institute as well as its Co-Active Leadership program. He has been a trustee of the Puget Sound Career Development Association, and is currently a member of the Ministry Committee of the United Church of Christ's Northwest Conference.


text:
Sentinel and management acquire Nivel Parts and Manufacturing for $26.5 million
NEW YORK, February 16, 2004 - Sentinel Capital Partners, a private equity firm that invests in smaller middle market buyouts, is pleased to announce the management buyout of Nivel Parts and Manufacturing Co. valued at $26.5 million. Headquartered in Jacksonville, Florida, Nivel is a leading independent manufacturer and distributor of aftermarket golf car replacement parts and accessories.
"We are actively pursuing investments in strong companies with leading positions in niche markets," said John McCormack, Sentinel's Co-founder and Senior Partner. "Nivel has a strong and dynamic management team that has been successful growing this business. We look forward to partnering with Nivel's entire management team to implement the strategic and operational initiatives that will enable the company to continue to grow at its historical rates."
Nivel supplies over 2,000 golf car part SKUs, including battery parts, bearings, brake parts, chargers, body accessories, motor parts and related replacement parts for all makes and models including Club Car, E-Z-Go and Yamaha. Nivel is also recognized for its leading product catalog which is distributed to 1,800 dealers worldwide
"The demand for golf car replacement parts is expected to continue to grow as more players enter the game of golf and new courses are constructed", added Jim Coady, a Principal at Sentinel. "Additionally, about 40% of the market for these cars is for use in non-traditional areas such as planned communities, industrial environments and off-road transportation vehicles, and these sectors are growing at a significantly faster rate than that for golf use."
"I look forward to working with the Sentinel team as we position Nivel for continued growth," said Pat McGrogan, Nivel's CEO. "The market for golf car replacement parts is expected to expand along with the growing number of golfers and their frequency of play. We hope to build upon our loyal customer base of original equipment and independent dealers who have come to rely upon our depth of products, timely delivery and competitive pricing. We see many opportunities to expand our product offerings and to penetrate geographic areas where we are not currently a leader."
American Capital Strategies provided debt financing for the recapitalization and is also an equity co-investor.


The Carnival of Madness concert series stopped by The Pageant in St. Louis, MO on May 20, 2015 with two of my favorite bands, Halestorm and The Pretty Reckless. Both bands feature one of the best front women in the music industry, Lzzy Hale of Halestorm and Taylor Momsen of The Pretty Reckless.
Check out my favorite concert photos from 2014. If you have some favorite shots of mine, please let me know! 2014 was a bit light on the concerts, but the shows that I did see were fantastic! Some of my favorite bands/concerts from the year include: Royal Blood, Greek Fire, Switchfoot, Cage The Elephant, The Pretty Reckless and Meg Myers.
Keep reading to see my favorite photos.