-
Notifications
You must be signed in to change notification settings - Fork 0
/
algolia.json
1892 lines (1892 loc) · 98.5 KB
/
algolia.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
[
{
"id" : "/tv/text-as-data/",
"tv" : true,
"title": "Text as Data",
"date": "2018-06-19 19:00:00 +0100",
"featured_tag": "Tv",
"tags": ["DataScience","Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages//tv/hola-mundo/featured.png",
"summary": "The idea behind this course was to teach us the basics of three things taking into consideration that in the real world, information is in significant part contained in text documents."
},
{
"id" : "/tv/spark/",
"tv" : true,
"title": "Apache Spark",
"date": "2018-06-12 19:00:00 +0100",
"featured_tag": "Tv",
"tags": ["DataScience","Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages",
"summary": "Spark funciona al rededor de un concepto muy importante es el de los Resilient Distributed Datasets. Estos RDDs son colecciones de datos de solo lectura, es decir, una vez creados ya no son modificables, y cada vez que uno es \"modificado\" en realidad se está creando uno nuevo."
},
{
"id" : "/tv/big-data/",
"tv" : true,
"title": "Big Data",
"date": "2018-06-12 19:00:00 +0100",
"featured_tag": "Tv",
"tags": ["DataScience","Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages",
"summary": "Video de presentación de este nuevo canal de YouTube en donde, a pesar del nombre, no solamente hablaré de C#, si no de varias muchas otras cosas relacionadas con la programación."
},
{
"id" : "/tv/information-retrieval/",
"tv" : true,
"title": "Information Retrieval",
"date": "2018-06-05 19:00:00 +0100",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages//tv/hola-mundo/featured.png",
"summary": "Information retrieval is a field concerned with the structure, analysis, organisation, storage, searching and retrieval of information."
},
{
"id" : "/tv/data-fundamentals/",
"tv" : true,
"title": "Data Fundamentals",
"date": "2018-04-05 19:00:00 +0100",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages",
"summary": "The first video in the series \"what was I doing the last six months?\""
},
{
"id" : "/tv/programar-ingles/",
"tv" : true,
"title": "¿Programar en inglés?",
"date": "2018-03-20 18:00:00 +0000",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages",
"summary": "Tu, ¿programas en inglés?"
},
{
"id" : "/tv/algoritmos-voraces/",
"tv" : true,
"title": "Los algoritmos voraces",
"date": "2018-03-11 18:00:00 +0000",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages",
"summary": "La idea detrás de los algoritmos voraces (o greedy) consiste en siempre tomar la mejor decisión de todas las que puede tomar inmediatamante con la esperanza de que al juntar todas estas pequeñas \"mejores\" decisiones, se obtendrá la mejor solución al problema en general."
},
{
"id" : "/tv/mapreduce/",
"tv" : true,
"title": "¿Qué es MapReduce?",
"date": "2018-02-19 18:00:00 +0000",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages",
"summary": "La idea de MapReduce es ofrecer una forma simple, rápida, escalable y resistente a fallos para manipular enormes cantidades de datos."
},
{
"id" : "/tv/python/",
"tv" : true,
"title": "Python",
"date": "2018-02-05 18:00:00 +0000",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages",
"summary": "Python es un lenguaje de programación inicialmente fue pensado como un simple lenguaje de scripting pero en la actualidad se ha infiltrado en el desarrollo web, la ciencia de datos, machine learning y ramas afines."
},
{
"id" : "/tv/dormir-programar/",
"tv" : true,
"title": "¿Dormir o programar?",
"date": "2018-01-27 18:00:00 +0000",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages",
"summary": "No dormir no es una medalla de honor, y el hecho de no dormir lo suficiente por estar trabajando o haciendo tarea no debe presumirse como un logro."
},
{
"id" : "/tv/sobre-youtube/",
"tv" : true,
"title": "YouTube",
"date": "2018-01-19 18:00:00 +0000",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages",
"summary": "Ahora quisiera pedirles un favor."
},
{
"id" : "/tv/lazy-evaluation/",
"tv" : true,
"title": "La evaluación perezosa",
"date": "2018-01-14 18:00:00 +0000",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimagesfeatured.png",
"summary": "En programación la evaluación perezosa, es una técnica de evaluación que consiste en retrasar el cálculo (o ejecución) de una instrucción hasta que en realidad es necesaria."
},
{
"id" : "/tv/escuela-otra-vez/",
"tv" : true,
"title": "La escuela, otra vez",
"date": "2017-12-22 18:00:00 +0000",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages//tv/jupyter/featured.png",
"summary": "Mi opinión sobre la escuela."
},
{
"id" : "/tv/expresiones-lambda/",
"tv" : true,
"title": "Las expresiones lambda",
"date": "2017-12-18 18:00:00 +0000",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages//tv/lambdas/featured.png",
"summary": "Las expresiones lambda son bloques de código que NO están asociados con un identificador."
},
{
"id" : "/tv/jupyter-notebooks/",
"tv" : true,
"title": "Los Jupyter Notebooks",
"date": "2017-12-11 18:00:00 +0000",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages//tv/jupyter/featured.png",
"summary": "Los Jupyter Notebooks son una herramienta bastate útil para documentar el código antes de llevarlo a producción. ¡Y no son solo para Python!"
},
{
"id" : "/tv/memoizacion/",
"tv" : true,
"title": "Memoización",
"date": "2017-11-27 18:00:00 +0000",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages//tv/memoization/featured.png",
"summary": "La memoización es una técnica de optimización de algoritmos que permite acelerar la ejecución de una función."
},
{
"id" : "/tv/escuela/",
"tv" : true,
"title": "La escuela | #meta",
"date": "2017-09-06 19:00:00 +0100",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages//tv/meta/escuela1.png",
"summary": "Vuelvo a la escuela y me tomeré 4 semanas para adaptarme nuevamente a la vida de estudiante (y encontrar un buen lugar para grabar)."
},
{
"id" : "/tv/funcional/",
"tv" : true,
"title": "La programación funcional",
"date": "2017-08-29 19:00:00 +0100",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages//tv/functional/featured.png",
"summary": "Como su nombre lo indica, está centrada en funciones, las cuales son tratadas como ciudadanos de primera clase."
},
{
"id" : "/tv/reactiva/",
"tv" : true,
"title": "La programación reactiva",
"date": "2017-08-22 19:00:00 +0100",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages//tv/rx/featured.png",
"summary": "La programación reactiva es otro paradigma de programación que facilita el trabajo con flujos asíncronos de datos, además de ser compatible con otros paradigmas que magnifican sus características."
},
{
"id" : "/post/reactive-extensions-2/",
"tv" : false,
"title": "Programación reactiva y Rx, parte 2",
"date": "2017-08-15 20:00:01 +0100",
"featured_tag": "Rx",
"tags": ["Rx","ReactiveExtensions"],
"featured_image": "http://thatcsharpguy.com/postimages//rx/fishing.png",
"summary": "La programación reactiva es una de las formas de implementar el patrón del observador en nuestro código, y las Reactive Extensions hacen esta tarea mucho más sencilla."
},
{
"id" : "/post/reactive-extensions-1/",
"tv" : false,
"title": "Programación reactiva y Rx, parte 1",
"date": "2017-08-15 20:00:01 +0100",
"featured_tag": "Rx",
"tags": ["Rx","ReactiveExtensions"],
"featured_image": "http://thatcsharpguy.com/postimages//rx/plain.png",
"summary": "La programación reactiva es una de las formas de implementar el patrón del observador en nuestro código, y las Reactive Extensions hacen esta tarea mucho más sencilla."
},
{
"id" : "/tv/mis-libros/",
"tv" : true,
"title": "Mis libros (meta)",
"date": "2017-08-15 19:00:00 +0100",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages//tv/meta/libros.png",
"summary": "El canal llegó a 5̶0̶0̶ 534 suscriptores y decidí hacer este video en el que no hablo de nada sobre el desarrollo. La programación habitual regresa la siguiente semana."
},
{
"id" : "/tv/ciencia-datos/",
"tv" : true,
"title": "Ciencia de datos",
"date": "2017-08-08 19:00:00 +0100",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages//tv/ciencia-datos/featured.png",
"summary": "La ciencia de datos se encarga de transformar los datos en información, y hace lo posible por que esta información se transforme en conocimiento."
},
{
"id" : "/post/menu-hamburguesa-xamarin-forms-es/",
"tv" : false,
"title": "Otro tutorial sobre menú de hamburguesa",
"date": "2017-08-01 20:00:01 +0100",
"featured_tag": "XamarinForms",
"tags": ["Xamarin","XamarinForms"],
"featured_image": "http://thatcsharpguy.com/postimages//xamarin-forms/hamburger/featured.png",
"summary": "Aprende una forma (sí, otra) de implementar un menú de hamburguesa en Xamarin.Forms para organizar mejor al información dentro de tu aplicación."
},
{
"id" : "/tv/regex/",
"tv" : true,
"title": "Expresiones regulares",
"date": "2017-08-01 19:00:00 +0100",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages//tv/regex/featured.png",
"summary": "El término expresiones regulares surgió a mediados de los 50's y fue creado por el matemático Stephen Cole Kleene, y se refiere a secuencias de caracteres que definen patrones de búsqueda."
},
{
"id" : "/post/new-virtual-override/",
"tv" : false,
"title": "virtual, override y new",
"date": "2017-07-25 20:00:01 +0100",
"featured_tag": "AprendeCSharp",
"tags": ["AprendeCSharp"],
"featured_image": "http://thatcsharpguy.com/postimages//aprende-c-sharp/new/featured.png",
"summary": "Las palabras new, virtual y override nos ayudan a especificar el comportamiento de los miembros de clases y sus subclases."
},
{
"id" : "/tv/package-manager/",
"tv" : true,
"title": "Gestores de paquetes",
"date": "2017-07-25 19:00:00 +0100",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages//tv/package/package.jpg",
"summary": "Los gestores de paquete le otorgan a los desarrolladores una manera más sencilla de reutilizar el código creado por otros, al manejar la instalación, actualización y remoción de bibliotecas de software."
},
{
"id" : "/tv/patrones-diseno/",
"tv" : true,
"title": "Patrones de diseño",
"date": "2017-07-18 19:00:00 +0100",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages//tv/design/youtube.jpg",
"summary": "Los patrones de diseño son soluciones reusables a problemas comunes que ocurren en el diseño de software."
},
{
"id" : "/tv/orm/",
"tv" : true,
"title": "ORM (Mapeo Objeto Relacional)",
"date": "2017-07-11 19:00:00 +0100",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages//tv/orm/youtube.jpg",
"summary": "El Mapeo Objeto-Relacional es una técnica de programación que facilita el acceso a los datos desde una aplicación a una base de datos, tiene muchas ventajas, pero tampoco es la solución a todos nuestros problemas."
},
{
"id" : "/tv/implementacion-orm/",
"tv" : true,
"title": "El ORM Entity Framework",
"date": "2017-07-11 19:00:00 +0100",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages//tv/orm/overlay-code.png",
"summary": "Este es un ejemplo de ORM, el framework Entity Framework, inicialmante desarrollado por Microsoft."
},
{
"id" : "/post/polly/",
"tv" : false,
"title": "Polly-ticas para el manejo de excepciones",
"date": "2017-07-04 20:00:01 +0100",
"featured_tag": "NuGetRecomendado",
"tags": ["NuGetRecomendado"],
"featured_image": "http://thatcsharpguy.com/postimages//nugets/polly/featured.jpg",
"summary": "Con Polly implementa políticas complejas para lidiar con las excepciones en tu código, especialmente útil si estás trabajando con servicios web que pueden variar de disponibilidad de un momento a otro."
},
{
"id" : "/tv/semver/",
"tv" : true,
"title": "SemVer",
"date": "2017-07-04 19:00:00 +0100",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages//tv/semver/featured.jpg",
"summary": "SemVer o el versionamiento semántico es una herramienta que facilita la vida de los desarrolladores de software al otorgarles una manera sencilla de organizar y mantener las referencias de sus proyectos."
},
{
"id" : "/post/metodos-try/",
"tv" : false,
"title": "Métodos Try...",
"date": "2017-06-27 20:00:01 +0100",
"featured_tag": "AprendeCSharp",
"tags": ["AprendeCSharp"],
"featured_image": "http://thatcsharpguy.com/postimages//aprende-c-sharp/try.png",
"summary": "Las excepciones son eso. Excepciones, así que debes procurar evitarlas en tu código; los métodos Try... te ayudan a hacerlo, conócelos aquí."
},
{
"id" : "/tv/mvc/",
"tv" : true,
"title": "MVC",
"date": "2017-06-27 19:00:00 +0100",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages//tv/mvc/featured.jpg",
"summary": "Conoce este patrón arquitectónico para el desarrollo de aplicaciones. MVC es comúnmente usado para el desarrollo de aplicaciones web."
},
{
"id" : "/tv/implementacion-mvc/",
"tv" : true,
"title": "Una implementación de MVC",
"date": "2017-06-27 19:00:00 +0100",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages//tv/mvc/implementacion.jpg",
"summary": "Así es como aplico el patrón MVC en algunos de los proyectos que desarrollo."
},
{
"id" : "/post/custom-cells-xamarin/",
"tv" : false,
"title": "Custom cells en Xamarin.Forms",
"date": "2017-06-20 20:00:01 +0100",
"featured_tag": "XamarinForms",
"tags": ["Xamarin","XamarinForms"],
"featured_image": "http://thatcsharpguy.com/postimages//xamarin-forms/customcell/featured.jpg",
"summary": "Celdas personalizadas para tus aplicaciones de Xamarin.Forms, seguramente ya sabías que podías modificar el comportamiento de tus apps dependiendo de la plataforma... pero probablemente nunca lo habías intentado con una celda de un ListView o TableView"
},
{
"id" : "/tv/licencias-oss/",
"tv" : true,
"title": "Licencias de software libre",
"date": "2017-06-20 19:00:00 +0100",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages//tv/licencias/featured.jpg",
"summary": "Las licencias de código libre son lo que en realidad hace al código libre, ya que establecen las condiciones y lineamientos bajo los cuales el código que protegen puede ser compartido."
},
{
"id" : "/post/excepciones-c-sharp/",
"tv" : false,
"title": "Excepciones en C#",
"date": "2017-06-13 20:00:01 +0100",
"featured_tag": "AprendeCSharp",
"tags": ["AprendeCSharp"],
"featured_image": "http://thatcsharpguy.com/postimages//aprende-c-sharp/ex/featured.png",
"summary": "Las excepciones son un mecanismo que podemos usar en C# para reportar errores en nuestros programas y poder manejarlos apropiadamente."
},
{
"id" : "/tv/programacion-competitiva/",
"tv" : true,
"title": "Programación competitiva",
"date": "2017-06-13 19:00:00 +0100",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages//tv/competitive/featured.png",
"summary": "La programación competitiva enfrenta a programadores que tienen que resolver problemas empleando conocimientos de ciencias computacionales, matemáticas y lógica. Todo esto mediante una sencilla aplicación para computadora."
},
{
"id" : "/post/custom-renderer-paint-code-es/",
"tv" : false,
"title": "Xamarin.Forms y PaintCode",
"date": "2017-06-06 20:00:01 +0100",
"featured_tag": "XamarinForms",
"tags": ["Xamarin","XamarinForms"],
"featured_image": "http://thatcsharpguy.com/postimages//xamarin-forms/paintcode/featured.png",
"summary": "Lleva tus dibujos vectoriales a tu app móvil usando PaintCode y los custom renderers de Xamarin.Forms"
},
{
"id" : "/post/custom-renderer-paint-code-en/",
"tv" : false,
"title": "Xamarin.Forms & PaintCode",
"date": "2017-06-06 20:00:01 +0100",
"featured_tag": "XamarinForms",
"tags": ["Xamarin","XamarinForms"],
"featured_image": "http://thatcsharpguy.com/postimages//xamarin-forms/paintcode/featured.png",
"summary": "Turn your vector drawings into controls for your mobile apps using PaintCode and Xamarin.Forms' custom renderers."
},
{
"id" : "/tv/recursion-iteracion/",
"tv" : true,
"title": "Recursión e iteración",
"date": "2017-06-06 19:00:00 +0100",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages//tv/recursividad/featured.jpg",
"summary": "La recursión e iteración son técnicas de programación que nos ayudan a resolver los mismos problemas mediante la repetición de operaciones pero atacándolos desde enfoques distintos."
},
{
"id" : "/post/casting-c-sharp/",
"tv" : false,
"title": "Casting: implicit y explicit en C#",
"date": "2017-05-30 20:00:01 +0100",
"featured_tag": "AprendeCSharp",
"tags": ["AprendeCSharp"],
"featured_image": "http://thatcsharpguy.com/postimages//aprende-c-sharp/casting.jpg",
"summary": "Crea conversiones personalizadas entre tipos de dato, una técnica parecida a la sobrecarga de operadores... que debe usarse con moderación."
},
{
"id" : "/tv/https/",
"tv" : true,
"title": "El protocolo HTTPS",
"date": "2017-05-30 19:00:00 +0100",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages//tv/https/maxresdefault.jpg",
"summary": "El HTTPS no es otra cosa que el mismo protocolo de transferencia de hipertexto pero seguro, protegido por el protocolo criptográfico TLS."
},
{
"id" : "/post/ffimageloading-xamarin-forms/",
"tv" : false,
"title": "Mejores imágenes en Xamarin.Forms",
"date": "2017-05-23 20:00:01 +0100",
"featured_tag": "XamarinForms",
"tags": ["Xamarin","XamarinForms"],
"featured_image": "http://thatcsharpguy.com/postimages//nugets/ffimage/featured.png",
"summary": "Ahorra recursos al cargar imágenes en tus aplicaciones hechas con Xamarin.Forms con este control... que probablemente no tenías idea que necesitabas."
},
{
"id" : "/tv/two-factor-authentication/",
"tv" : true,
"title": "Autenticación de dos factores",
"date": "2017-05-23 19:00:00 +0100",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages//tv/2fa/featured.jpg",
"summary": "La autenticación de dos factores da más seguridad a los usuarios al establecer una segunda barrera de autenticación en sus cuentas."
},
{
"id" : "/tv/two-factor-authentication-asp-net/",
"tv" : true,
"title": "Autenticación de dos factores (ejemplo en ASP.NET Core)",
"date": "2017-05-23 19:00:00 +0100",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages//tv/2fa/code-featured.png",
"summary": "Aprende a implementar la autenticación de dos factores con ASP.NET Core y Goolge Authenticator."
},
{
"id" : "/post/cortocircuito-c-sharp/",
"tv" : false,
"title": "Operadores lógicos corto-circuitados",
"date": "2017-05-16 20:00:01 +0100",
"featured_tag": "AprendeCSharp",
"tags": ["AprendeCSharp"],
"featured_image": "http://thatcsharpguy.com/postimages//aprende-c-sharp/cortocircuito/featured.png",
"summary": "Los operadores lógicos más usados tienen una peculiaridad que ayuda a mejorar su desempeño, pero a veces podría ser un comportamiento indeseado. Por suerte, C# cuenta con otros operadores que evitan este comportamiento.."
},
{
"id" : "/tv/autorizacion-autenticacion/",
"tv" : true,
"title": "Identidad, autenticación y autorización",
"date": "2017-05-16 19:00:00 +0100",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages//tv/auth/featured.jpg",
"summary": "Identidad, Autenticación y Autorización son conceptos distintos, pero que juntos forman una parte importantísima de la seguridad en una aplicación."
},
{
"id" : "/post/imprime-xamarin-forms/",
"tv" : false,
"title": "¿Imprimir desde Xamarin.Forms?",
"date": "2017-05-09 20:00:01 +0100",
"featured_tag": "XamarinForms",
"tags": ["Xamarin","XamarinForms"],
"featured_image": "http://thatcsharpguy.com/postimages//xamarin-forms/print/featured.png",
"summary": "Imprime desde tu app hecha con Xamarin.Forms, ofrece a tus usuarios la posibilidad de generar reportes, tickets y facturas desde su teléfono celular y listas para imprimir."
},
{
"id" : "/post/morelinq/",
"tv" : false,
"title": "Aún más LINQ con MoreLinq",
"date": "2017-05-02 20:00:01 +0100",
"featured_tag": "NuGetRecomendado",
"tags": ["NuGetRecomendado","AprendeCSharp"],
"featured_image": "http://thatcsharpguy.com/postimages//linq-en-c-sharp/more-linq.png",
"summary": "Por si LINQ no es suficiente para ti, morelinq brinda aún más herramientas para manipular tus colecciones y es tan solo un paquete de NuGet."
},
{
"id" : "/tv/internationalization-localization/",
"tv" : true,
"title": "Internacionalización y localización",
"date": "2017-05-02 19:00:00 +0100",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages//tv/i18nl10n/featured.jpg",
"summary": "La internacionalización y localización son un par de procesos que nos ayudarán a llevar nuestras aplicaciones a más lugares del mundo."
},
{
"id" : "/post/xamarin-forms-mac/",
"tv" : false,
"title": "Xamarin.Forms para macOS",
"date": "2017-04-18 20:00:01 +0100",
"featured_tag": "XamarinForms",
"tags": ["Xamarin","XamarinForms"],
"featured_image": "http://thatcsharpguy.com/postimages//xamarin-forms/mac/featured.jpg",
"summary": "Por fin, Xamarin.Forms llega a macOS. Reusa tu código al máximo y haz que tus apps lleguen a todo el mundo."
},
{
"id" : "/post/expression-trees-c-sharp/",
"tv" : false,
"title": "Árboles de expresiones en C#",
"date": "2017-04-18 20:00:01 +0100",
"featured_tag": "AprendeCSharp",
"tags": ["AprendeCSharp"],
"featured_image": "http://thatcsharpguy.com/postimages//aprende-c-sharp/expressions/featured.jpg",
"summary": "Un árbol de expresiones permite examinar el código de un delegado en tiempo de ejecución, permitiéndote así aprovechar al máximo los recursos de tu sistema."
},
{
"id" : "/tv/rest/",
"tv" : true,
"title": "La arquitectura REST",
"date": "2017-04-18 19:00:00 +0100",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages//tv/rest/featured.jpg",
"summary": "REST es una arquitectura para crear aplicaciones web, esta propone cinco principios que hacen que una aplicación sea fácil de usar y que tenga un alto grado de compatibilidad con otros sistemas."
},
{
"id" : "/post/xamarin-forms-versioning/",
"tv" : false,
"title": "Conoce la versión de tu app con Xamarin.Forms",
"date": "2017-04-11 20:00:01 +0100",
"featured_tag": "NuGetRecomendado",
"tags": ["NuGetRecomendado","XamarinForms","Xamarin"],
"featured_image": "http://thatcsharpguy.com/postimages//nugets/versioning/featured.jpg",
"summary": "El asignarle un código de versión a cada una de las actualizaciones de tu app es de vital importancia, te ayudará a tener un punto de referencia cuando tengas que resolver algún bug o recolectar información para analizar el desempeño de tus apps."
},
{
"id" : "/post/c-sharp-siete/",
"tv" : false,
"title": "¿Qué hay en C# 7?",
"date": "2017-04-04 20:00:01 +0100",
"featured_tag": "AprendeCSharp",
"tags": ["AprendeCSharp"],
"featured_image": "http://thatcsharpguy.com/postimages//aprende-c-sharp/siete/featured.jpg",
"summary": "Conoce algunas de las nuevas características incluídas en la versión 7 de C#;, tuplas, deconstructores, literales binarios y más."
},
{
"id" : "/post/httplogger-es/",
"tv" : false,
"title": "Inspeciona tus peticiones http con HttpLogger",
"date": "2017-03-28 20:00:01 +0100",
"featured_tag": "NuGetRecomendado",
"tags": ["NuGetRecomendado","AprendeCSharp"],
"featured_image": "http://thatcsharpguy.com/postimages//nugets/httplogger/featured.jpg",
"summary": "Inspecciona el request y response de las conexiones que tu app hace a servicios web. Haz con ellas lo que quieras, desde guardarlas en un archivo hasta ponerlas en pantalla."
},
{
"id" : "/post/httplogger-en/",
"tv" : false,
"title": "Inspect your http requests with HttpLogger",
"date": "2017-03-28 20:00:01 +0100",
"featured_tag": "NuGetRecomendado",
"tags": ["NuGetRecomendado","AprendeCSharp"],
"featured_image": "http://thatcsharpguy.com/postimages//nugets/httplogger/featured.jpg",
"summary": "Inspect the request and response of all the connection your app makes to any webservice. Do whatever you want with them, from saving them to a file to put them on screen!"
},
{
"id" : "/tv/solid/",
"tv" : true,
"title": "Los principios SOLID",
"date": "2017-03-28 19:00:00 +0100",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages//tv/solid/solid.jpg",
"summary": "El objetivo de aplicar estos cinco principios es crear un código limpio y altamente mantenible, y es que el código mantenible no solo depende de programar con estilo siguiendo una guía, o de probar el código escrito, sino de la estructura con la que lo escribimos."
},
{
"id" : "/post/fluent-assertions/",
"tv" : false,
"title": "Mejores pruebas unitarias con FluentAssertions",
"date": "2017-03-21 19:00:01 +0000",
"featured_tag": "NuGetRecomendado",
"tags": ["NuGetRecomendado","AprendeCSharp"],
"featured_image": "http://thatcsharpguy.com/postimages//nugets/fluentassertions/featured.jpg",
"summary": "Mejora tus pruebas unitarias con mensajes más claros, al momento de escribirlos y cuando tus tests fallan."
},
{
"id" : "/tv/pruebas-unitarias-vs/",
"tv" : true,
"title": "Pruebas unitarias en Visual Studio",
"date": "2017-03-14 19:00:00 +0000",
"featured_tag": "AprendeCSharp",
"tags": ["AprendeCSharp","VisualStudio","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages//tv/unit-test/featured.jpg",
"summary": "Aprende a crear pruebas unitarias usando C#"
},
{
"id" : "/tv/pruebas-unitarias/",
"tv" : true,
"title": "Las pruebas unitarias",
"date": "2017-03-14 18:00:00 +0000",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages//tv/unit-test/featured-yt.jpg",
"summary": "Estas pruebas es donde componentes individuales del software se someten a pruebas. El propósito de estas es asegurar que cada unidad de trabajo funciona individualmente como debería. Es decir, funciona cuando se supone que debe funcionar, responde con lo que se supone que tiene que responder, falla como y cuando se supone que debe fallar."
},
{
"id" : "/post/popups-avanzados-xamarin-forms/",
"tv" : false,
"title": "Popups avanzados en Xamarin.Forms",
"date": "2017-03-07 19:00:01 +0000",
"featured_tag": "NuGetRecomendado",
"tags": ["NuGetRecomendado","XamarinForms","Xamarin"],
"featured_image": "http://thatcsharpguy.com/postimages//xamarin-forms/popups/featured.jpg",
"summary": "Añade popups más avanzados a tus apps hechas con Xamarin.Forms usando este NuGet, tan sencillo como crear una pagina nueva y agregarle los controles que quieres mostrar."
},
{
"id" : "/post/async-await-3/",
"tv" : false,
"title": "async y await (cancelando tareas)",
"date": "2017-02-28 19:00:01 +0000",
"featured_tag": "AprendeCSharp",
"tags": ["AprendeCSharp","XamarinForms","Xamarin"],
"featured_image": "http://thatcsharpguy.com/postimages//aprende-c-sharp/asyncawait/featured.png",
"summary": "Aprende la forma "correcta" para proveer a tus Task de un mecanismo de cancelación, además aprende cómo reportar el progreso de una tarea al usuario mediante una interfaz definida por el Framework."
},
{
"id" : "/post/async-await-2/",
"tv" : false,
"title": "async y await (tareas paralelas)",
"date": "2017-02-21 19:00:01 +0000",
"featured_tag": "AprendeCSharp",
"tags": ["AprendeCSharp","XamarinForms","Xamarin"],
"featured_image": "http://thatcsharpguy.com/postimages//aprende-c-sharp/asyncawait/featured.png",
"summary": "Trabaja con tareas asíncronas y paralelas en tus aplicaciones móviles, de escritorio y hasta en el servidor."
},
{
"id" : "/post/async-await/",
"tv" : false,
"title": "async y await",
"date": "2017-02-14 19:00:01 +0000",
"featured_tag": "AprendeCSharp",
"tags": ["AprendeCSharp","XamarinForms","Xamarin"],
"featured_image": "http://thatcsharpguy.com/postimages//aprende-c-sharp/asyncawait/featured.png",
"summary": "En este post voy a hablar acerca de uno de los mejores tipos de azúcar sintáctica que existen en el lenguaje de programación C#. Y con ello me refiero a las palabras async y await."
},
{
"id" : "/tv/apis/",
"tv" : true,
"title": "API",
"date": "2017-02-14 18:00:00 +0000",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages//tv/api/api_thumb.png",
"summary": "Las interfaces de programación de aplicaciones, son un elemento vital del desarrollo de sistemas de software, y aunque desde casi siempre han existido entre nosotros, no es sino hasta últimamente que la "popularidad" de esta palabra ha aumentado gracias a los servicios web y las aplicaciones móviles."
},
{
"id" : "/post/nodatime/",
"tv" : false,
"title": "Maneja el tiempo con NodaTime",
"date": "2017-02-07 19:00:01 +0000",
"featured_tag": "NuGetRecomendado",
"tags": ["NuGetRecomendado"],
"featured_image": "http://thatcsharpguy.com/postimages//nodatime/featured.jpg",
"summary": "Mejora el manejo de las fechas y el tiempo en tu aplicación con NodaTime, muévelas a través de zonas horarias, horarios de verano y en los relojes de todo el mundo sin complicaciones."
},
{
"id" : "/post/platformtabbedpage-xamarin-forms-en/",
"tv" : false,
"title": "More familiar tabs for your users in Xamarin.Forms",
"date": "2017-02-02 19:00:01 +0000",
"featured_tag": "XamarinForms",
"tags": ["Xamarin","XamarinForms","NuGetRecomendado"],
"featured_image": "http://thatcsharpguy.com/postimages//xamarin-forms/tabbed-page/featured.jpg",
"summary": "Stilize yout Xamarin.Forms tabbed pages, make them more familliar to your users without losing the look and feel of your brand. As a bonus, practice creating custom renderers."
},
{
"id" : "/post/platformtabbedpage-xamarin-forms/",
"tv" : false,
"title": "Tabs más familiares a tus usuarios en Xamarin.Forms",
"date": "2017-01-31 19:00:01 +0000",
"featured_tag": "XamarinForms",
"tags": ["Xamarin","XamarinForms","NuGetRecomendado"],
"featured_image": "http://thatcsharpguy.com/postimages//xamarin-forms/tabbed-page/featured.jpg",
"summary": "Dale más estilo a tus páginas de tabs en Xamarin.Forms, haz que se vean más familiares a tus usuarios sin que pierdan el estilo y los colores de tu marca y como bonus practica haciendo un custom renderer."
},
{
"id" : "/post/espacios-nombres-c-sharp/",
"tv" : false,
"title": "Espacios de nombres en C#",
"date": "2017-01-24 19:00:01 +0000",
"featured_tag": "AprendeCSharp",
"tags": ["AprendeCSharp"],
"featured_image": "http://thatcsharpguy.com/postimages//aprende-c-sharp/namespaces.png",
"summary": "Los nombres de espacio son de esas cosas en el dasrrollo a los que casi no les prestamos mucha atención, pero que bien usados nos resuelven muchos problemas y nos ayudan a organizar nuestro código."
},
{
"id" : "/post/xamarin-userdialogs/",
"tv" : false,
"title": "UserDialogs en Xamarin Forms",
"date": "2017-01-17 19:00:01 +0000",
"featured_tag": "XamarinForms",
"tags": ["Xamarin","XamarinForms","NuGetRecomendado"],
"featured_image": "http://thatcsharpguy.com/postimages//xamarin-forms/userdialogs/featured.jpg",
"summary": "Usa esta librería de NuGet para interactuar con el usuario de tu aplicación de una forma más intuitiva, con mensajes de alerta, de error y de éxito. Consigue información a través de controles nativos como calendarios y selectores de tiempo."
},
{
"id" : "/post/correcto-colecciones/",
"tv" : false,
"title": "Colecciones en C#, ¿cuál elegir?",
"date": "2017-01-10 19:00:02 +0000",
"featured_tag": "AprendeCSharp",
"tags": ["AprendeCSharp"],
"featured_image": "http://thatcsharpguy.com/postimages/aprende-c-sharp/colecciones/featured.jpg",
"summary": "La colección List<T> puede no siempre ser la adecuada para el trabajo que estás intentando hacer con tu aplicación, en este post te cuento sobre las otras colecciones que .NET nos ofrece."
},
{
"id" : "/tv/o-grande/",
"tv" : true,
"title": "Notación O grande",
"date": "2017-01-10 18:00:00 +0000",
"featured_tag": "Tv",
"tags": ["Git","GitHub","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages//tv/bigo/featured.jpg",
"summary": "La O mayúscula es una notación matemática también conocida Bachmann–Landau notation, asymptotic notation, notación o grande. Y esta nos ayuda a describir el comportamiento de una función \"al límite\"."
},
{
"id" : "/post/metas-blog-2017/",
"tv" : false,
"title": "Metas de That C# guy en 2017",
"date": "2017-01-02 18:31:38 +0000",
"featured_tag": "Meta",
"tags": ["Meta"],
"featured_image": "http://thatcsharpguy.com/postimages//meta/2017.png",
"summary": "Nuevo año, nuevas metas para That C# guy, conócleas."
},
{
"id" : "/post/indizadores-c-sharp/",
"tv" : false,
"title": "Sobrecarga de indizadores en C#",
"date": "2016-12-27 19:00:02 +0000",
"featured_tag": "AprendeCSharp",
"tags": ["AprendeCSharp"],
"featured_image": "http://thatcsharpguy.com/postimages/aprende-c-sharp/indexers.jpg",
"summary": "Los indizadores en C# permiten dotar a tus tipos de dato de una forma más simple y expresiva para acceder a sus propiedades, además de ser una sintaxis con la que muchos desarrolladores ya están acostumbrados."
},
{
"id" : "/post/learning-xamarin-ios-stanford-cs193p/",
"tv" : false,
"title": "Learning Xamarin.iOS at Stanford",
"date": "2016-12-27 08:00:00 +0000",
"featured_tag": "Xamarin",
"tags": ["Xamarin","XamariniOS"],
"featured_image": "http://thatcsharpguy.com/postimages//xamarin-ios/stanford.jpg",
"summary": "Here is my experience learning Xamarin.iOS by taking the Stanford's CS193P course online which is given for Swift language."
},
{
"id" : "/post/sobrecarga-operadores/",
"tv" : false,
"title": "Sobrecarga de operadores",
"date": "2016-12-20 19:00:02 +0000",
"featured_tag": "AprendeCSharp",
"tags": ["AprendeCSharp"],
"featured_image": "http://thatcsharpguy.com/postimages/aprende-c-sharp/sobrecarga.jpg",
"summary": "Suma, resta, divide, multiplica, compara... todos los tipos de dato que crees para tus aplicaciones, todo gracias a la sobrecarga de operadores que ofrece C#"
},
{
"id" : "/post/linq-en-c-sharp-4/",
"tv" : false,
"title": "Más Linq en C#",
"date": "2016-12-13 19:00:02 +0000",
"featured_tag": "AprendeCSharp",
"tags": ["AprendeCSharp"],
"featured_image": "http://thatcsharpguy.com/postimages/linq-en-c-sharp/featured.png",
"summary": "Conoce más de linq, métodos para unir, intersectar y filtrar conjuntos."
},
{
"id" : "/post/dynamic-expandoobject/",
"tv" : false,
"title": "Dynamic y ExpandoObject",
"date": "2016-12-06 19:00:02 +0000",
"featured_tag": "AprendeCSharp",
"tags": ["AprendeCSharp"],
"featured_image": "http://thatcsharpguy.com/postimages//aprende-c-sharp/dynamic.jpg",
"summary": "Con dynamic convierte a C# en un lenguaje dinámico y fuertemente tipado (consulte restricciones)."
},
{
"id" : "/tv/subiendo-github/",
"tv" : true,
"title": "Subiéndo código a GitHub",
"date": "2016-12-06 18:00:00 +0000",
"featured_tag": "Tv",
"tags": ["Git","GitHub","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages//tv/github.jpg",
"summary": "Un tutorial de cómo empezar con GitHub desde cero."
},
{
"id" : "/post/xamarin-workbooks/",
"tv" : false,
"title": "Bienvenido a los Xamarin Workbooks",
"date": "2016-11-29 19:00:01 +0000",
"featured_tag": "AprendeCSharp",
"tags": ["AprendeCSharp","Xamarin"],
"featured_image": "http://thatcsharpguy.com/postimages//xamarin/workbooks/featured.jpg",
"summary": "Los Workbooks son una especie de documentos "vivos" con los que puedes compilar y ejecutar código en C#."
},
{
"id" : "/post/yield-c-sharp/",
"tv" : false,
"title": "La palabra yield en C#",
"date": "2016-11-22 19:00:01 +0000",
"featured_tag": "AprendeCSharp",
"tags": ["AprendeCSharp"],
"featured_image": "http://thatcsharpguy.com/postimages//aprende-c-sharp/yield/featured.jpg",
"summary": "La palabra yield en C# tiene un uso bastante peculiar pero sencillo de entender cuando se explica de la manera adecuada, básicamente te ayudará a mejorar la eficiencia de tus aplicaciones. En este post trato de explicar qué es y cómo funciona eso a través de ejemplos de código."
},
{
"id" : "/post/extension-methods-es/",
"tv" : false,
"title": "Métodos de extensión en C#",
"date": "2016-11-15 19:00:01 +0000",
"featured_tag": "AprendeCSharp",
"tags": ["AprendeCSharp"],
"featured_image": "http://thatcsharpguy.com/postimages//aprende-c-sharp/extension.png",
"summary": "Los métodos de extensión nos permiten ampliar la funcionalidad de cualquier tipo de dato sin necesidad de tener el código fuente de este. A pesar de ser azúcar sintáctica, son muy útiles."
},
{
"id" : "/tv/ci/",
"tv" : true,
"title": "Integración continua",
"date": "2016-11-15 18:00:00 +0000",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages//tv/ci/thumb.jpg",
"summary": "La integración continua es una práctica muy comun en el desarrollo de software que consiste en que los desarrolladores compilen su código continuamente para detectar errores tempranamente."
},
{
"id" : "/post/full-camera-page-es/",
"tv" : false,
"title": "Cámara a página completa en Xamarin.Forms",
"date": "2016-11-08 08:00:00 +0000",
"featured_tag": "XamarinForms",
"tags": ["XamarinForms","Xamarin"],
"featured_image": "http://thatcsharpguy.com/postimages//xamarin-forms/camerapage/featured.jpg",
"summary": "Aprende cómo tomar fotos desde tu aplicación de Xamarin.Forms usando un custom renderer para acceder a la cámar aisn dejar tu aplicación. Con este control puedes personalizar la interfaz de usuario para que coincida con tu app."
},
{
"id" : "/post/full-camera-page.1/",
"tv" : false,
"title": "Full page camera in Xamarin.Forms",
"date": "2016-11-08 08:00:00 +0000",
"featured_tag": "XamarinForms",
"tags": ["XamarinForms","Xamarin"],
"featured_image": "http://thatcsharpguy.com/postimages//xamarin-forms/camerapage/featured.jpg",
"summary": "Learn how to take photos from your Xamarin.Forms app using a custom page renderer to use the camera without leaving your application, with this control, you can create your own camera user interface to match the design of your app."
},
{
"id" : "/post/debugging-1/",
"tv" : false,
"title": "Debugging parte 1",
"date": "2016-10-31 19:00:01 +0000",
"featured_tag": "AprendeCSharp",
"tags": ["AprendeCSharp"],
"featured_image": "http://thatcsharpguy.com/postimages//aprende-c-sharp/debugging/f.png",
"summary": "En este post te voy a dar algunos tips para que depures tu código en C# y tu IDE de confianza."
},
{
"id" : "/post/string-format/",
"tv" : false,
"title": "String.Format",
"date": "2016-10-24 20:00:01 +0100",
"featured_tag": "AprendeCSharp",
"tags": ["AprendeCSharp"],
"featured_image": "http://thatcsharpguy.com/postimages//aprende-c-sharp/format.jpg",
"summary": "Olvídate de concatenar una interminable cantidad de cadenas para presentar la información en tus aplicaciones. Con este método de la clase String tienes (casi) todo resuelto, únicamente necesitas una cadena con marcadores y listo."
},
{
"id" : "/post/xamarin-auth-es/",
"tv" : false,
"title": "OAuth en Forms con Xamarin.Auth",
"date": "2016-10-17 20:00:01 +0100",
"featured_tag": "XamarinForms",
"tags": ["Xamarin","XamarinForms","NuGetRecomendado"],
"featured_image": "http://thatcsharpguy.com/postimages//xamarin/auth/featured.jpg",
"summary": "Con Xamarin.Auth, el incorporar servicios de terceros como Twitter y Facebook nunca había sido tan fácil, en este post, aprende a hacerlo desde Xamarin.Forms."
},
{
"id" : "/post/reflexion-c-sharp-es/",
"tv" : false,
"title": "Reflexión en C#",
"date": "2016-10-10 20:00:01 +0100",
"featured_tag": "AprendeCSharp",
"tags": ["AprendeCSharp"],
"featured_image": "http://thatcsharpguy.com/postimages//aprende-c-sharp/reflexion.jpg",
"summary": "La reflexión nos permite acceder a la información de un tipo en tiempo de ejecución. Cuando estamos escribiendo el código, somos nosotros quienes tenemos una idea general del sistema: sabemos los tipos de dato de las variables, los métodos que contienen las clases, los atributos de los miembros de estas y un sin fin de cosas más."
},
{
"id" : "/post/localisation-resx/",
"tv" : false,
"title": "Archivos de recursos y apps multilenguaje en C#",
"date": "2016-10-03 20:00:01 +0100",
"featured_tag": "AprendeCSharp",
"tags": ["AprendeCSharp"],
"featured_image": "http://thatcsharpguy.com/postimages//aprende-c-sharp/resx/featured.jpg",
"summary": "Como desarrolladores, tendemos a pensar en nuestras aplicaciones como funcionales para una región o lenguaje específicos, sin preocuparnos sobre traducir e internacionalizarlas, preparándolas así para ser accesibles aun número mayor de usuarios."
},
{
"id" : "/tv/martillo-dorado/",
"tv" : true,
"title": "El martillo dorado",
"date": "2016-09-26 19:00:00 +0100",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages//tv/golden-hammer/featured.jpg",
"summary": "La falacia del martillo de oro es una de las falacias en las cuales los desarrolladores caemos con mayor facilidad, esta implica el propner una única solución para distintos tipos de problemas. Estas \"soluciones\" pueden ser un IDE, un patrón de diseño o hasta un lenguaje de programación."
},
{
"id" : "/post/null-coalescing/",
"tv" : false,
"title": "Operador null coalescing en C#",
"date": "2016-09-19 20:00:01 +0100",
"featured_tag": "AprendeCSharp",
"tags": ["AprendeCSharp"],
"featured_image": "http://thatcsharpguy.com/postimages//aprende-c-sharp/null-c.png",
"summary": "Este operador te ayudará a escribir con mayor claridad el código, al tiempo que te ahorras escribir algunos cuantos ifs en tu código."
},
{
"id" : "/post/atributos-c-sharp/",
"tv" : false,
"title": "Xamarin.Auth",
"date": "2016-09-12 20:00:01 +0100",
"featured_tag": "AprendeCSharp",
"tags": ["AprendeCSharp"],
"featured_image": "http://thatcsharpguy.com/postimages//aprende-c-sharp/attrs/featured.png",
"summary": "Los atributos nos ofrecen otra manera de interactuar con el código que escribimos, ya sea dándole información al compilador o extendiendo las definiciones de nuestros métodos, propiedades o clases en tiempo de ejecución."
},
{
"id" : "/post/commonmark/",
"tv" : false,
"title": "CommonMark.NET",
"date": "2016-09-05 20:00:01 +0100",
"featured_tag": "NuGetRecomendado",
"tags": ["NuGetRecomendado"],
"featured_image": "http://thatcsharpguy.com/postimages//commonmark/featured.png",
"summary": "Convertir de un documento escrito con el lenguaje Markdown a uno escrito en HTML con este paquete de NuGet es muy intuitivo, además de que su API permite una personalización de la salida bastante intuitiva."
},
{
"id" : "/tv/inyeccion-dependencias/",
"tv" : true,
"title": "La inyección de dependencias",
"date": "2016-09-05 19:00:00 +0100",
"featured_tag": "Tv",
"tags": ["Meta","Tv"],
"featured_image": "http://thatcsharpguy.com/postimages//tv/di/featured.jpg",
"summary": "La inyección de dependencias es un patrón de diseño que nos permite implementar en nuestras aplicaciones el principio de inversión de control. Consiste en evitar la instanciación de unos objetos dentro de otros, evitando así el acoplamiento fuerte."
},
{
"id" : "/post/revisando-github/",
"tv" : false,
"title": "Revisando mis repos en GitHub",
"date": "2016-08-29 20:00:01 +0100",
"featured_tag": "AprendeCSharp",
"tags": ["AprendeCSharp"],
"featured_image": "http://thatcsharpguy.com/postimages//mis-repos-github/featured.png",
"summary": "Un post un poco diferente, en este no hablaré sobre alguna característica de C# o un paquete de NuGet, sino de proyectos, pruebas y aplicaciones en los que lo he usado. Conoce algunas de las cosas que he hecho y subido a GitHub."
},
{
"id" : "/post/c-sharp-events/",
"tv" : false,
"title": "Events en C#",
"date": "2016-08-22 20:00:01 +0100",
"featured_tag": "AprendeCSharp",
"tags": ["AprendeCSharp"],
"featured_image": "http://thatcsharpguy.com/postimages//aprende-c-sharp/events.png",
"summary": "Un evento no es más que un mensaje que se envía de un objeto (el emisor) a otros (los receptores) cada vez que se cumple cierta condición o un cambio ocurre en él."